feat(bond): 支持债券与股票基金公司行为现金流计算的差异化处理 - init2
- 修改 CalcPayment 方法添加 useBondPriceScale 参数区分债券和股票/基金的金额计算口径 - 债券利息按每100元面值票息通过BondPriceConverter转为入库金额,股票基金分红直接计算 - 在BondPaymentService中添加详细的参数说明文档注释 - 更新SwapDealService中分红计算逻辑,根据标的类型自动选择合适的金额转换方式 - 新增CorporateActionEventLifecycleTest单元测试验证公司行为事件生命周期管理 - 添加SplitCorporateActionTddTest测试验证拆合股功能 - 优化FundCorporateActionRollbackAndUnwindTest扩展到股票类型测试 - 更新前端OperationHistory页面表格列宽和显示格式支持更长的说明信息
This commit is contained in:
@@ -1547,8 +1547,25 @@ namespace YLErp.Modules.SwapModule
|
||||
{
|
||||
swapEventService.DeleteExtensionTime(swapEvent.id);
|
||||
}
|
||||
var corporateActionEvents = DbContext.swap_event
|
||||
.Where(x => !x.Invalid
|
||||
&& x.SwapTradeId == tradeId
|
||||
&& x.EventType == (int)SwapEventTypeEnum.公司行为
|
||||
&& x.ValueDate >= valueDate)
|
||||
.OrderByDescending(x => x.id)
|
||||
.ToList();
|
||||
InvalidTradeOptionDatasByDate(tradeId, valueDate, backToBegin);
|
||||
swapEventService.AddSwapEventDate(valueDate, tradeId, (int)SwapEventTypeEnum.回退, string.Empty, 0, false, $"交易回退至{valueDate:yyyy年MM月dd日}");
|
||||
var rollbackEvent = swapEventService.AddSwapEventDate(
|
||||
valueDate,
|
||||
tradeId,
|
||||
(int)SwapEventTypeEnum.回退,
|
||||
string.Empty,
|
||||
0,
|
||||
false,
|
||||
$"交易回退至{valueDate:yyyy年MM月dd日}");
|
||||
// 公司行为原事件保持有效作为不可篡改审计;回退事件通过 BackId 指向本次
|
||||
// 回退影响的最新公司行为事件,后续重收盘会追加新的公司行为事件。
|
||||
rollbackEvent.BackId = corporateActionEvents.FirstOrDefault()?.id ?? 0;
|
||||
DbContext.SaveChanges();
|
||||
if (del)
|
||||
{
|
||||
@@ -1762,6 +1779,12 @@ namespace YLErp.Modules.SwapModule
|
||||
var firstConfirm = false;
|
||||
swapEvents.ForEach(x =>
|
||||
{
|
||||
// 公司行为事件是不可篡改审计日志。回退只追加回退事件,不把原始公司
|
||||
// 行为事件置无效;否则无法追溯交易曾经经历过的调整。
|
||||
if (x.EventType == (int)SwapEventTypeEnum.公司行为)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (backToBegin && !firstConfirm && x.EventType == (int)SwapEventTypeEnum.确认交易)
|
||||
{
|
||||
firstConfirm = true;
|
||||
|
||||
Reference in New Issue
Block a user