fix(trade): 标的除权0覆盖旧值

- 重命名 MergeNonZeroDividendValues 方法为 MergeDividendValues
- 修改合并逻辑,数值字段(包括 0)都作为有效覆盖值进行合并
- 更新注释说明合并规则的变化
- 添加零现金分红覆盖现有值的单元测试
- 修复数据库记录合并时的字段覆盖逻辑
This commit is contained in:
张名锐
2026-08-26 11:09:12 +08:00
parent 6c582ac958
commit 1c879c0b65
2 changed files with 21 additions and 28 deletions
@@ -133,6 +133,17 @@ namespace YLErp.Modules.SwapModule
Assert.AreEqual(1m, GetSplit(target));
}
[TestMethod]
public void ZeroCashDividendOverridesExistingValueDuringMerge()
{
var target = CreateCorporateAction(cash: 10m);
var source = CreateCorporateAction(cash: 0m);
InvokeMerge(target, source);
Assert.AreEqual(0m, target.GiveCashAmount);
}
private static ex_dividend_info CreateCorporateAction(
decimal cash = 0m,
decimal giveShare = 0m,
@@ -188,7 +199,7 @@ namespace YLErp.Modules.SwapModule
private static void InvokeMerge(ex_dividend_info target, ex_dividend_info source)
{
var method = typeof(DividendService).GetMethod(
"MergeNonZeroDividendValues",
"MergeDividendValues",
BindingFlags.Static | BindingFlags.NonPublic);
Assert.IsNotNull(method, "公司行为存量合并方法不存在");
method.Invoke(null, new object[] { target, source });