From 726858d847c0152abc1c77799091f15c9910ea00 Mon Sep 17 00:00:00 2001 From: "Carlos R. L. Rodrigues" <37986729+carlos-r-l-rodrigues@users.noreply.github.com> Date: Thu, 22 Dec 2022 13:07:41 -0300 Subject: [PATCH] chore: complete payment collection on order edit even if confirmed (#2877) --- .../store/order-edits/complete-order-edit.ts | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/packages/medusa/src/api/routes/store/order-edits/complete-order-edit.ts b/packages/medusa/src/api/routes/store/order-edits/complete-order-edit.ts index 0908ebc1e8..3c8f723d4b 100644 --- a/packages/medusa/src/api/routes/store/order-edits/complete-order-edit.ts +++ b/packages/medusa/src/api/routes/store/order-edits/complete-order-edit.ts @@ -1,10 +1,6 @@ import { Request, Response } from "express" import { EntityManager } from "typeorm" -import { - OrderEditService, - OrderService, - PaymentProviderService, -} from "../../../../services" +import { OrderEditService, PaymentProviderService } from "../../../../services" import { defaultStoreOrderEditFields, defaultStoreOrderEditRelations, @@ -60,8 +56,6 @@ export default async (req: Request, res: Response) => { const orderEditService: OrderEditService = req.scope.resolve("orderEditService") - const orderService: OrderService = req.scope.resolve("orderService") - const paymentProviderService: PaymentProviderService = req.scope.resolve( "paymentProviderService" ) @@ -72,7 +66,6 @@ export default async (req: Request, res: Response) => { await manager.transaction(async (manager) => { const orderEditServiceTx = orderEditService.withTransaction(manager) - const orderServiceTx = orderService.withTransaction(manager) const paymentProviderServiceTx = paymentProviderService.withTransaction(manager) @@ -80,6 +73,32 @@ export default async (req: Request, res: Response) => { relations: ["payment_collection", "payment_collection.payments"], }) + const allowedStatus = [OrderEditStatus.REQUESTED, OrderEditStatus.CONFIRMED] + if ( + orderEdit.payment_collection && + allowedStatus.includes(orderEdit.status) + ) { + if ( + orderEdit.payment_collection.status !== + PaymentCollectionStatus.AUTHORIZED + ) { + throw new MedusaError( + MedusaError.Types.NOT_ALLOWED, + "Unable to complete an order edit if the payment is not authorized" + ) + } + + if (orderEdit.payment_collection) { + for (const payment of orderEdit.payment_collection.payments) { + if (payment.order_id !== orderEdit.order_id) { + await paymentProviderServiceTx.updatePayment(payment.id, { + order_id: orderEdit.order_id, + }) + } + } + } + } + if (orderEdit.status === OrderEditStatus.CONFIRMED) { return orderEdit } @@ -91,30 +110,10 @@ export default async (req: Request, res: Response) => { ) } - if (orderEdit.payment_collection) { - if ( - orderEdit.payment_collection.status !== - PaymentCollectionStatus.AUTHORIZED - ) { - throw new MedusaError( - MedusaError.Types.NOT_ALLOWED, - "Unable to complete an order edit if the payment is not authorized" - ) - } - } - const returned = await orderEditServiceTx.confirm(id, { loggedInUserId: userId, }) - if (orderEdit.payment_collection) { - for (const payment of orderEdit.payment_collection.payments) { - await paymentProviderServiceTx.updatePayment(payment.id, { - order_id: orderEdit.order_id, - }) - } - } - return returned })