refactor(return-leg): 新增 DividendCalc 分红增值税后计算 + 修复 MtmCalc 参数类型

DividendCalc: 增值税后票息 = payment/(1+tax)*(1-tax),
原 SwapEodPositionService 4处重复此公式(1804/1894/1906/2095)。
本次先建纯函数+测试, 4处inline替换下次做。

附带修复: MtmCalc shortRatio 参数从 decimal 改为 int
(原代码6处声明中5处是int, 仅1696是decimal, 统一为int)。
1696行 shortRatio 声明同步改为 int。

验证: 编译0错误, DividendCalc 4个测试全过,
全量507测试7失败(基线一致)。
This commit is contained in:
hjhan
2026-08-11 11:04:08 +08:00
parent 946cbbb66d
commit 963f7a04e5
4 changed files with 59 additions and 2 deletions
@@ -0,0 +1,37 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using YLErp.Modules.SwapModule.ReturnLegs;
namespace UnitTestProject.Modules.SwapModule.ReturnLegs
{
[TestClass]
public class DividendCalcTest
{
[TestMethod]
public void AfterTax_零税率_等于原值()
{
Assert.AreEqual(1000m, DividendCalc.AfterTax(1000m, 0m));
}
[TestMethod]
public void AfterTax_6pct增值税()
{
// 1000 / 1.06 * 0.94 = 886.79...
Assert.AreEqual(886.79m, DividendCalc.AfterTax(1000m, 0.06m));
}
[TestMethod]
public void AfterTax_负票息()
{
// -500 / 1.06 * 0.94 = -443.40
Assert.AreEqual(-443.40m, DividendCalc.AfterTax(-500m, 0.06m));
}
[TestMethod]
public void AfterTaxRaw_不四舍五入()
{
var raw = DividendCalc.AfterTaxRaw(1000m, 0.06m);
Assert.AreNotEqual(886.79m, raw, "Raw 版本不四舍五入");
Assert.IsTrue(raw > 886.79m && raw < 886.80m);
}
}
}