diff --git a/packages/core/core-flows/src/order/utils/__tests__/aggregate-status.spec.ts b/packages/core/core-flows/src/order/utils/__tests__/aggregate-status.spec.ts index e095a3016b..111675ac8b 100644 --- a/packages/core/core-flows/src/order/utils/__tests__/aggregate-status.spec.ts +++ b/packages/core/core-flows/src/order/utils/__tests__/aggregate-status.spec.ts @@ -100,6 +100,16 @@ describe("Aggregate Order Status", () => { } as any) ).toEqual("captured") + expect( + getLastPaymentStatus({ + payment_collections: [ + { status: "authorized", captured_amount: 0, amount: 0 }, + { status: "authorized", captured_amount: 12, amount: 12 }, + { status: "canceled" }, + ], + } as any) + ).toEqual("captured") + expect( getLastPaymentStatus({ payment_collections: [ diff --git a/packages/core/core-flows/src/order/utils/aggregate-status.ts b/packages/core/core-flows/src/order/utils/aggregate-status.ts index 1b3e7a9e64..3b5585dfa5 100644 --- a/packages/core/core-flows/src/order/utils/aggregate-status.ts +++ b/packages/core/core-flows/src/order/utils/aggregate-status.ts @@ -21,7 +21,11 @@ export const getLastPaymentStatus = (order: OrderDetailDTO) => { } for (const paymentCollection of order.payment_collections) { - if (MathBN.gt(paymentCollection.captured_amount ?? 0, 0)) { + if ( + MathBN.gt(paymentCollection.captured_amount ?? 0, 0) || + (isDefined(paymentCollection.amount) && + MathBN.eq(paymentCollection.amount, 0)) + ) { paymentStatus[PaymentStatus.CAPTURED] += MathBN.eq( paymentCollection.captured_amount as number, paymentCollection.amount