feat(web-admin): sync lump-sum deadline to last due date

Add applyLumpSumDeadlineToLastDueDate for dj payment schedules,
skipping locked or void rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-10-13 14:50:41 +08:00
1 parent 5fd5550e0d
commit 6ec4ec6730
2 files changed
+64 -1

No files matched your search

@@ -440,3 +440,22 @@ export function shouldAutoFillLastPeriodDue(opts: {
}): boolean {
return !opts.lastManualOverride && !opts.lastLocked
}
/** 趸交:将截止时间写入未作废批次中的最后一期 dueDate;锁定则跳过 */
export function applyLumpSumDeadlineToLastDueDate<T extends ScheduleLike>(
schedules: T[],
deadline: string | null | undefined,
isLocked: (sch: T) => boolean
): T[] {
const due = String(deadline || '').trim()
const activeIdx: number[] = []
schedules.forEach((s, i) => {
if (String(s.scheduleStatus || 'open') !== 'void') activeIdx.push(i)
})
if (!activeIdx.length) return schedules.map((s) => ({ ...s }))
const lastIdx = activeIdx[activeIdx.length - 1]
if (isLocked(schedules[lastIdx])) {
return schedules.map((s) => ({ ...s }))
}
return schedules.map((s, i) => (i === lastIdx ? { ...s, dueDate: due } : { ...s }))
}