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:
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 }))
|
||||
}
|
||||
Reference in new issue
Block a user