Merge branch 'glms/feature/1.4.2' into glms/feature/0812_zmr_divPower

# Conflicts:
#	YLErpDAL/Modules/EodModule/BondPaymentService.cs
#	YLErpDAL/Modules/SwapModule/SwapDealService.cs
This commit is contained in:
张名锐
2026-08-20 16:21:13 +08:00
158 changed files with 7931 additions and 3252 deletions
@@ -376,19 +376,18 @@ namespace YLErp.Modules.SwapModule
/// <param name="interestMode">计息方式</param>
/// <param name="interestStart">计息开始日期</param>
/// <param name="interestEnd">计息结束日期</param>
/// <returns>true=计息窗口为空(interestStart&gt;interestEnd,本次不计利息,调用方将利率与金额归零);
/// 典型触发=①不算头首日(valueDate==StartDate → StartDate+1&gt;StartDate) ②不算尾到期日回拨后窗口翻转
/// (interestEnd=到期日−1 &lt; interestStart)。判定只看日期窗口,与事件类型无关。
/// 注:当日已结息(preSettleDate==valueDate)日期相等时本函数返回 false——利息归零由
/// GetInterests 的 closeList 净额层处理,不在本判定。</returns>
public bool InitInterestDate(DateTime valueDate, DateTime? preSettleDate, trade td, bool tdClose, out DateTime interestStart, out DateTime interestEnd)
{
interestStart = td.StartDate.Value;
var exerciseDate = td.ExerciseDate.Value;
interestEnd = valueDate > exerciseDate ? exerciseDate : valueDate;
bool calcFirst = true;
bool calcLast = true;
if (td.trade_extend != null)
{
calcFirst = td.trade_extend.ExtendObj.InterestCalcMode.StartsWith("1");//算头
calcLast = td.trade_extend.ExtendObj.InterestCalcMode.EndsWith("1");//算尾
}
bool calcFirst = td.trade_extend?.ExtendObj.CalcFirst ?? true;
bool calcLast = td.trade_extend?.ExtendObj.CalcLast ?? true;
interestStart = calcFirst ? interestStart : interestStart.AddDays(1);
if (preSettleDate.HasValue && preSettleDate >= interestStart)
{
@@ -398,7 +397,9 @@ namespace YLErp.Modules.SwapModule
{
interestEnd = interestEnd.AddDays(-1);
}
if (interestStart > interestEnd || td.StartDate > interestStart)
// 原第二 OR 子句 td.StartDate > interestStart 恒 falseinterestStart 经上面调整恒 ≥ td.StartDate
// =开始日 / 不算头+1天 / preSettleDate 且仅当 ≥interestStart 才覆盖),死代码已删(2026-08-19)。
if (interestStart > interestEnd)
{
interestStart = interestEnd;
return true;//不记利息