diff --git a/src/checkers/index.ts b/src/checkers/index.ts index 42408b7e..cfe6f35f 100644 --- a/src/checkers/index.ts +++ b/src/checkers/index.ts @@ -12,6 +12,7 @@ import withdrawAccounts from './withdrawAccount'; import refundCheckers from './refund'; import withdrawTransferCheckers from './withdrawTransfer'; import shipCheckers from './ship'; +import settlePlanCheckers from './settlePlan'; const checkers = [ ...refundCheckers, @@ -25,6 +26,7 @@ const checkers = [ ...wpProductCheckers, ...withdrawTransferCheckers, ...shipCheckers, + ...settlePlanCheckers, ] as Checker[]; export default checkers; diff --git a/src/checkers/settlePlan.ts b/src/checkers/settlePlan.ts index 80fd2c67..6c63f931 100644 --- a/src/checkers/settlePlan.ts +++ b/src/checkers/settlePlan.ts @@ -13,6 +13,7 @@ const checkers: Checker[] = [ entity: 'settlePlan', action: 'create', type: 'logicalData', + priority: 1, checker: (operation, context) => { const { data } = operation as EntityDict['settlePlan']['Create']; const checkfn = (settlePlan: EntityDict['settlePlan']['CreateOperationData']) => { @@ -51,6 +52,16 @@ const checkers: Checker[] = [ settlements!.forEach( (settlement) => amount += settlement.price ); + if (settlePlan.settlement$plan && settlePlan.settlement$plan.length > 0) { + for (const settlementOper of settlePlan.settlement$plan) { + const settlementData = settlementOper.data; + if (settlementData instanceof Array) { + settlementData.forEach((s) => amount += s.price ?? 0); + } else { + amount += settlementData?.price ?? 0; + } + } + } assert(amount === settlePlan.price!, '结算计划金额需等于关联的结算明细金额总和'); } ) diff --git a/src/triggers/settlePlan.ts b/src/triggers/settlePlan.ts index ad70f811..7f56e0ea 100644 --- a/src/triggers/settlePlan.ts +++ b/src/triggers/settlePlan.ts @@ -11,6 +11,7 @@ const triggers: Trigger[] = [ action: 'create', when: 'before', asRoot: true, + priority: 99, fn: async ({ operation }, context, option) => { const { data } = operation; let count = 0;