From db74dec6ac2681deddbeb07482d5acbba7278057 Mon Sep 17 00:00:00 2001 From: lxy Date: Thu, 17 Jul 2025 16:07:16 +0800 Subject: [PATCH] =?UTF-8?q?settlePlan=20checker=E3=80=81trigger=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checkers/index.ts | 2 ++ src/checkers/settlePlan.ts | 11 +++++++++++ src/triggers/settlePlan.ts | 1 + 3 files changed, 14 insertions(+) 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;