feat(bond): 支持债券与股票基金公司行为现金流计算的差异化处理 - init2

- 修改 CalcPayment 方法添加 useBondPriceScale 参数区分债券和股票/基金的金额计算口径
- 债券利息按每100元面值票息通过BondPriceConverter转为入库金额,股票基金分红直接计算
- 在BondPaymentService中添加详细的参数说明文档注释
- 更新SwapDealService中分红计算逻辑,根据标的类型自动选择合适的金额转换方式
- 新增CorporateActionEventLifecycleTest单元测试验证公司行为事件生命周期管理
- 添加SplitCorporateActionTddTest测试验证拆合股功能
- 优化FundCorporateActionRollbackAndUnwindTest扩展到股票类型测试
- 更新前端OperationHistory页面表格列宽和显示格式支持更长的说明信息
This commit is contained in:
张名锐
2026-08-19 17:48:34 +08:00
parent ddf233678d
commit aa3548e77f
19 changed files with 1342 additions and 104 deletions
@@ -20,6 +20,7 @@ namespace YLErp.DBModels
=9,
=10,
=11,
=12
=12,
=13
}
}
@@ -82,6 +82,37 @@ namespace YLErp.DBModels
[NotMapped]
public UnwindData unwindData { get; set; }
}
/// <summary>
/// 公司行为事件快照。登记日先写入待生效快照,真实除权日补齐调整后数据;
/// 已应用快照只允许追加回退事件,不覆盖原记录。
/// ExDividendDate 是登记日,EffectiveDate 是 Q/P 真实切换日;GiveShareAmount
/// 表示每 10 份增减数量,Split 表示独立拆/合股倍数(null 按 1)。Before/After
/// 分别保存调整前后名义本金、价格、数量和待实现分红,CashFlowChange 保存现金变化。
/// </summary>
public class CorporateActionEventData
{
public int ExDividendInfoId { get; set; }
public long PositionId { get; set; }
public string UnderlyingCode { get; set; }
public DateTime? ExDividendDate { get; set; }
public DateTime? EffectiveDate { get; set; }
public decimal GiveCashAmount { get; set; }
public decimal GiveShareAmount { get; set; }
public decimal? Split { get; set; }
public decimal RationedSharesAmount { get; set; }
public decimal RationedSharesPrice { get; set; }
public decimal BeforeNotional { get; set; }
public decimal BeforePrice { get; set; }
public decimal BeforeQuantity { get; set; }
public decimal AfterNotional { get; set; }
public decimal AfterPrice { get; set; }
public decimal AfterQuantity { get; set; }
public decimal BeforePendingDividend { get; set; }
public decimal AfterPendingDividend { get; set; }
public decimal CashFlowChange { get; set; }
public bool Applied { get; set; }
}
/// <summary>
/// 展期信息
/// </summary>