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
@@ -17,7 +17,8 @@ import {
|
||||
availableSamplePayModes,
|
||||
samplePaymentHasConfirmedTransfer,
|
||||
calcLastPeriodDueAmount,
|
||||
shouldAutoFillLastPeriodDue
|
||||
shouldAutoFillLastPeriodDue,
|
||||
applyLumpSumDeadlineToLastDueDate
|
||||
} from './protocol-sample-payment'
|
||||
|
||||
describe('parsePreferentialPrice', () => {
|
||||
@@ -372,3 +373,46 @@ describe('shouldAutoFillLastPeriodDue', () => {
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('applyLumpSumDeadlineToLastDueDate', () => {
|
||||
it('writes deadline to last unlocked schedule', () => {
|
||||
const next = applyLumpSumDeadlineToLastDueDate(
|
||||
[
|
||||
{ scheduleNo: 1, dueDate: '', scheduleStatus: 'open' },
|
||||
{ scheduleNo: 2, dueDate: '20260101', scheduleStatus: 'open' }
|
||||
],
|
||||
'20261231',
|
||||
(s) => false
|
||||
)
|
||||
assert.equal(next[0].dueDate, '')
|
||||
assert.equal(next[1].dueDate, '20261231')
|
||||
})
|
||||
it('clears dueDate when deadline empty', () => {
|
||||
const next = applyLumpSumDeadlineToLastDueDate(
|
||||
[{ scheduleNo: 1, dueDate: '20261231', scheduleStatus: 'open' }],
|
||||
'',
|
||||
() => false
|
||||
)
|
||||
assert.equal(next[0].dueDate, '')
|
||||
})
|
||||
it('skips when last schedule locked', () => {
|
||||
const next = applyLumpSumDeadlineToLastDueDate(
|
||||
[{ scheduleNo: 1, dueDate: '20260101', scheduleStatus: 'open' }],
|
||||
'20261231',
|
||||
() => true
|
||||
)
|
||||
assert.equal(next[0].dueDate, '20260101')
|
||||
})
|
||||
it('ignores void schedules when picking last', () => {
|
||||
const next = applyLumpSumDeadlineToLastDueDate(
|
||||
[
|
||||
{ scheduleNo: 1, dueDate: '', scheduleStatus: 'open' },
|
||||
{ scheduleNo: 2, dueDate: 'old', scheduleStatus: 'void' }
|
||||
],
|
||||
'20261231',
|
||||
() => false
|
||||
)
|
||||
assert.equal(next[0].dueDate, '20261231')
|
||||
assert.equal(next[1].dueDate, 'old')
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user