BugFix 追加预付金腿生成
This commit is contained in:
@@ -2046,6 +2046,44 @@ namespace YLErp.Modules.SwapModule
|
||||
FinalizeInterestEodRoll(eodPayPosition, newEodPayPosition, ratio, td, valueDate, position.InterestDirection);
|
||||
PersistEodSwapPosition(newEodPayPosition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EOD 追保腿化·方案A:SettleAdditionalMargin 在当日 SwapPositionCompose/SwapEodCompose 之后生成 mode6 追保腿
|
||||
/// (增量依赖当日 trade_span,无法前移),当日快照已落表,显式补写当日 eod_swap_position 行,
|
||||
/// 使当日报表明细(风险页 PostionMarginGain 等按快照腿汇总的列)不漏计。
|
||||
/// 字段填充参照 SaveEodInterestPosition 新腿形态(无当日流水、无上日归档:利息/损益字段为 0,TdCurrency 取当日汇率)。
|
||||
/// 幂等:先清(PositionId+ValueDate)后建;下一结算日 SwapPositionCompose 先清(ClearSwapPositions ValueDate>=当日)
|
||||
/// 再从实时腿重建,补写行不会跨日残留。
|
||||
/// </summary>
|
||||
public void SaveEodAdditionalMarginPosition(trade td, swap_position leg, DateTime valueDate)
|
||||
{
|
||||
var existing = DbContext.eod_swap_position
|
||||
.Where(x => x.SwapTradeId == td.id && x.PositionId == leg.id && x.ValueDate == valueDate)
|
||||
.ToList();
|
||||
DbContext.eod_swap_position.RemoveRange(existing);
|
||||
var row = new eod_swap_position
|
||||
{
|
||||
ClientId = td.ClientId,
|
||||
SwapTradeId = td.id,
|
||||
PosiStartDate = leg.PosiStartDate,
|
||||
PosiMatuirityDate = td.ExerciseDate,
|
||||
ValueDate = valueDate,
|
||||
PositionId = leg.id,
|
||||
PosiStatus = 0,
|
||||
Invalid = false
|
||||
};
|
||||
UpdateDbOption(row);
|
||||
//持仓内容-利息腿(无当日流水,FloatRate 取 0)
|
||||
CopyInterestLegFields(row, leg, 0);
|
||||
row.InterestFeePending = 0;
|
||||
var ratio = DirectionRatio.InterestLegPnl(leg.InterestDirection, leg.InterestMode);
|
||||
row.SwapPositionValue = PositionValueCalc.Calc(row.InterestProfitSum, row.PosiProfitSum, ratio);
|
||||
row.RealizedPnl = row.RealizedInterest + row.RealizedInterestFee;
|
||||
row.TdCurrency = Convert.ToDecimal(GetCurrencyRate(td.QuoteCurrency, td.SettlementCurrency, valueDate, true,
|
||||
DirectionRatio.RateType(leg.InterestDirection)));
|
||||
PersistEodSwapPosition(row);
|
||||
SaveAllChanges();
|
||||
}
|
||||
/// <summary>
|
||||
/// 自动互换用,当日无互换,当日无平仓
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user