feat(bond): 支持债券与股票基金公司行为现金流计算的差异化处理 - init2
- 修改 CalcPayment 方法添加 useBondPriceScale 参数区分债券和股票/基金的金额计算口径 - 债券利息按每100元面值票息通过BondPriceConverter转为入库金额,股票基金分红直接计算 - 在BondPaymentService中添加详细的参数说明文档注释 - 更新SwapDealService中分红计算逻辑,根据标的类型自动选择合适的金额转换方式 - 新增CorporateActionEventLifecycleTest单元测试验证公司行为事件生命周期管理 - 添加SplitCorporateActionTddTest测试验证拆合股功能 - 优化FundCorporateActionRollbackAndUnwindTest扩展到股票类型测试 - 更新前端OperationHistory页面表格列宽和显示格式支持更长的说明信息
This commit is contained in:
@@ -2005,10 +2005,20 @@ namespace YLErp.Modules.SwapModule
|
||||
|
||||
int shortRatio = DirectionRatio.LongShort(flowEvent.PositionType);
|
||||
int directionRatio = DirectionRatio.ReceivePay(flowEvent.PayDirection);
|
||||
// + 付息日>上日日终且小于等于平仓日期的分红数据
|
||||
var dividendIn = servie.CalcPayment(payments, unwindQty, shortRatio, directionRatio);
|
||||
var um = DataCacheProvider.GetUnderlyingDataSource().GetData(flowEvent.UnderlyingCode);
|
||||
decimal tax = um.ValueAddedTax ?? 0;
|
||||
// 债券付息按每百元票息存储,继续走 BondPriceConverter;Stock/Fund 的公司行为
|
||||
// 现金分红按每 10 份金额存储,实际现金就是 payment_interest * qty,不能 /100。
|
||||
// 标的资料缺失时保持旧债券口径,避免未知标的的历史平仓金额被放大。
|
||||
var useBondPriceScale = um == null
|
||||
|| !SwapEodPositionService.IsCorporateActionInstrument(um.UnderlyingInstrumentType);
|
||||
// + 付息日>上日日终且小于等于平仓日期的分红数据
|
||||
var dividendIn = servie.CalcPayment(
|
||||
payments,
|
||||
unwindQty,
|
||||
shortRatio,
|
||||
directionRatio,
|
||||
useBondPriceScale);
|
||||
decimal tax = um?.ValueAddedTax ?? 0;
|
||||
dividendIn = DividendCalc.AfterTaxRaw(dividendIn, tax);
|
||||
|
||||
flowEvent.DividendIn = Math.Round(dividendIn, 2, MidpointRounding.AwayFromZero);
|
||||
|
||||
Reference in New Issue
Block a user