Просмотр исходного кода

fix(core): Correctly remove invalid promotion couponCodes from Order

Using the `removeCouponCode` method will create an order history entry, making it easier to track
and debug an order.
Michael Bromley 2 лет назад
Родитель
Сommit
7a1c1277f3
1 измененных файлов с 3 добавлено и 7 удалено
  1. 3 7
      packages/core/src/service/services/order.service.ts

+ 3 - 7
packages/core/src/service/services/order.service.ts

@@ -1422,8 +1422,8 @@ export class OrderService {
         await this.connection.getRepository(ctx, Order).save(order, { reload: false });
         // Check that any applied couponCodes are still valid now that
         // we know the Customer.
+        let updatedOrder = order;
         if (order.couponCodes) {
-            let codesRemoved = false;
             for (const couponCode of order.couponCodes.slice()) {
                 const validationResult = await this.promotionService.validateCouponCode(
                     ctx,
@@ -1431,15 +1431,11 @@ export class OrderService {
                     customer.id,
                 );
                 if (isGraphQlErrorResult(validationResult)) {
-                    order.couponCodes = order.couponCodes.filter(c => c !== couponCode);
-                    codesRemoved = true;
+                    updatedOrder = await this.removeCouponCode(ctx, orderId, couponCode);
                 }
             }
-            if (codesRemoved) {
-                return this.applyPriceAdjustments(ctx, order);
-            }
         }
-        return order;
+        return updatedOrder;
     }
 
     /**