fix: 协议子资源单事务保存,并补齐样本编码/OA/质检等近期能力

锁定缴费校验失败时整单回滚,避免样本半成功落库;前端禁止删除锁定缴费样本,改码走更正编码。同步落地样本更正、采集微信通知、OA提及未读、细胞产品套餐与相关迁移文档。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-10-26 11:02:25 +08:00
1 parent 19bc66ba45
commit 5dad1bb0e3
142 files changed
+95584 -65717

No files matched your search

@@ -16,6 +16,8 @@ import {
applyExpandRemainingToInstallment,
availableSamplePayModes,
samplePaymentHasConfirmedTransfer,
isSamplePaymentTransferLocked,
samplePaymentHasLockedTransfer,
calcLastPeriodDueAmount,
shouldAutoFillLastPeriodDue,
applyLumpSumDeadlineToLastDueDate
@@ -231,6 +233,30 @@ describe('availableSamplePayModes', () => {
})
})
describe('samplePaymentHasLockedTransfer', () => {
it('locks jfqrz / yjf / tfqrz / ytf like backend', () => {
for (const payStatus of ['jfqrz', 'yjf', 'tfqrz', 'ytf']) {
assert.equal(isSamplePaymentTransferLocked(payStatus), true)
assert.equal(
samplePaymentHasLockedTransfer({
schedules: [{ transfers: [{ payStatus }] }]
}),
true
)
}
})
it('dfj / empty are not locked', () => {
assert.equal(isSamplePaymentTransferLocked('dfj'), false)
assert.equal(isSamplePaymentTransferLocked(''), false)
assert.equal(
samplePaymentHasLockedTransfer({
schedules: [{ transfers: [{ payStatus: 'dfj' }] }]
}),
false
)
})
})
describe('applyConsolidateRemainingToPayment', () => {
it('fq→dj keeps paid and consolidates remaining', () => {
const next = applyConsolidateRemainingToPayment(