feat(swap): EQD-6953 平仓期末结算收益率字段载体+结算确认书Excel导出——[NotMapped]ExitYtm随UnwindData进swap_event.EventData(零表结构变更);生成器从浮动腿回读导出固定4位不去零(0.0000);模板nodma_01.xlsx新增S列;命名遵《互换价格字段命名规范决策文档》平仓=Exit(非End/Close/Final)
This commit is contained in:
@@ -400,5 +400,18 @@ namespace YLErp.DBModels
|
||||
[NotMapped]
|
||||
public decimal? InitYtm { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 期末标的结算收益率(EQD-6953 平仓)。普通债券类收益互换平仓时由债券计算器按
|
||||
/// 期末标的交割全价反算(估值日=平仓日 ValueDate),允许手工覆盖。
|
||||
/// 命名遵循《互换价格字段命名规范决策文档》时点维度:平仓/了结用 Exit(勿用 End/Close/Final)。
|
||||
/// [NotMapped]:不落 swap_flow_event 表列;仅随 UnwindData 序列化进 swap_event.EventData JSON,
|
||||
/// 由平仓待复核回显(GetSwapEvent)与结算确认书 Excel(TradeSettleBillGenerator) 消费。
|
||||
/// ⚠️ 存储口径为【展示态百分数】(如 6.3721 表示 6.3721%),与同页期末交割全价(展示态)一致,
|
||||
/// 区别于录入页 trade.InitYtm 的存储态小数(0.063721)——两者载体不同、互不干扰,勿"顺手统一"。
|
||||
/// 精度:确认书导出固定 4 位小数不去零(ToString("0.0000"));本字段保留 4 位(四舍五入)。
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public decimal? ExitYtm { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,5 +45,11 @@ namespace YLErp.Models
|
||||
public string DividendIn { get; set; }
|
||||
|
||||
public string Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 期末标的结算收益率(EQD-6953)。普通债券类收益互换平仓收益率,展示态百分数,
|
||||
/// 固定 4 位小数不去零("0.0000");非债券/历史无值时为空串。
|
||||
/// </summary>
|
||||
public string ExitYtm { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -67,6 +67,9 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator
|
||||
decimal interestRate = unwindFlowEvents.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)).Sum(s => s.InterestRate);
|
||||
row.InterestRate = interestRate.ToString("0.00%");
|
||||
var PosiNotionalValue = flowEventGroup.Quantity * flowEventGroup.ContractSize * posi.PosiGrossPrice;
|
||||
// EQD-6953 期末标的结算收益率:平仓簿记时随 UnwindData 存进 swap_event.EventData,
|
||||
// 此处从浮动腿(PositionType>0)回读。存储态=展示态百分数(6.3721),导出固定 4 位不去零。
|
||||
decimal? exitYtm = null;
|
||||
if (flowEventGroup.EventId.HasValue)
|
||||
{
|
||||
var swapEvent = Context.GetEvent(flowEventGroup.EventId.Value);
|
||||
@@ -74,8 +77,12 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator
|
||||
{
|
||||
swapEvent.unwindData = JsonHelper.Deserialize<UnwindData>(swapEvent.EventData);
|
||||
PosiNotionalValue = swapEvent.unwindData.CloseNotionalValue;
|
||||
exitYtm = swapEvent.unwindData.FlowEvents?
|
||||
.FirstOrDefault(f => f.PositionType > 0)?
|
||||
.ExitYtm;
|
||||
}
|
||||
}
|
||||
row.ExitYtm = exitYtm?.ToString("0.0000") ?? string.Empty;
|
||||
|
||||
row.Quantity = flowEventGroup.Quantity.ToString("0.00");
|
||||
row.PosiNotionalValue = PosiNotionalValue.ToString("0.00");
|
||||
|
||||
Reference in New Issue
Block a user