fix(bond): #JTZG-136 国联民生-有期间付息,自动互换的的时候互换日期不正确
- 将 BondPaymentService.GetBondPayments 方法的过滤条件从 reg_date 改为 payment_date - 更新相关日志信息显示 [分红-付息日口径] 替代 [分红-登记日口径] - 修正单元测试中的注释和变量名,统一使用 payment_date 口径描述 - 修改测试数据构造,验证按实际付息日进行票息计提的逻辑 - 更新相关文档注释,明确日期口径变更的具体实现方式
This commit is contained in:
@@ -92,19 +92,18 @@ namespace YLErp.Modules.EodModule
|
||||
/// <summary>
|
||||
/// 获取某债券的期间付息情况集合
|
||||
/// </summary>
|
||||
/// <param name="underylingCode"></param>
|
||||
/// <param name="underlyingCode"></param>
|
||||
/// <param name="startDate"></param>
|
||||
/// <param name="endDate"></param>
|
||||
/// <returns></returns>
|
||||
public List<BondPayment> GetBondPayments(string underlyingCode, DateTime startDate, DateTime endDate)
|
||||
{
|
||||
// GLMS-20260105-0006:票息归属按债权登记日(reg_date)判定,而非支付日(pay_date_PL/pay_date_act)。
|
||||
// 登记日当天 EOD 即应计提;原按支付日口径会让"登记日≠支付日"的债券漏计(二者恰差一工作日时缺陷被掩盖)。
|
||||
// 票息归属按实际付息日(payment_date)判定
|
||||
var result = QueryBondPayments(underlyingCode)
|
||||
.Where(x => x.reg_date > startDate && x.reg_date <= endDate)
|
||||
.Where(x => x.payment_date > startDate && x.payment_date <= endDate)
|
||||
.AsNoTracking().ToList();
|
||||
Log.Info($"[分红-登记日口径] GetBondPayments underlyingCode={underlyingCode} 区间=({startDate:yyyy-MM-dd},{endDate:yyyy-MM-dd}] 按reg_date过滤, 命中 {result.Count} 条: " +
|
||||
string.Join(",", result.Select(r => r.reg_date?.ToString("yyyy-MM-dd"))));
|
||||
Log.Info($"[分红-付息日口径] GetBondPayments underlyingCode={underlyingCode} 区间=({startDate:yyyy-MM-dd},{endDate:yyyy-MM-dd}] 按payment_date过滤, 命中 {result.Count} 条: " +
|
||||
string.Join(",", result.Select(r => r.payment_date?.ToString("yyyy-MM-dd"))));
|
||||
|
||||
// 让 Copy/Update EOD 始终只依赖 BondPaymentService,而不必在收盘链路直接累加 ex_dividend_info。
|
||||
// Stock/Fund 公司行为直接从 ex_dividend_info 读取,内部仍按“每 10 份派现金额”保存 GiveCashAmount 原值,
|
||||
@@ -142,7 +141,7 @@ namespace YLErp.Modules.EodModule
|
||||
|
||||
/// <summary>
|
||||
/// 可测性 seam:返回某债券的全部付息记录(未做日期过滤)。测试可 override 注入内存数据,
|
||||
/// 以验证日期口径(GLMS-20260105-0006:应按债权登记日 reg_date 而非支付日 pay_date_PL/pay_date_act 判定)。
|
||||
/// 以验证日期口径(按付息日 payment_date 判定)。
|
||||
/// </summary>
|
||||
protected virtual IQueryable<BondPayment> QueryBondPayments(string underlyingCode)
|
||||
=> DbContext.bondPayment.Where(x => x.underlyingCode == underlyingCode);
|
||||
@@ -157,7 +156,7 @@ namespace YLErp.Modules.EodModule
|
||||
/// <summary>
|
||||
/// 计算某债券某段时间的期间付息
|
||||
/// </summary>
|
||||
/// <param name="underylingCode">债券代码</param>
|
||||
/// <param name="underlyingCode">债券代码</param>
|
||||
/// <param name="startDate">计息开始日</param>
|
||||
/// <param name="endDate">计息结束日</param>
|
||||
/// <param name="qty">持仓数量</param>
|
||||
|
||||
Reference in New Issue
Block a user