@medusajs/medusa 1.3.4 → 2.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +27 -0
- package/dist/api/middlewares/await-middleware.js +7 -0
- package/dist/api/middlewares/await-middleware.js.map +1 -1
- package/dist/api/middlewares/error-handler.d.ts +1 -1
- package/dist/api/middlewares/error-handler.js.map +1 -1
- package/dist/api/middlewares/transform-query.d.ts +1 -1
- package/dist/api/middlewares/transform-query.js +2 -0
- package/dist/api/middlewares/transform-query.js.map +1 -1
- package/dist/api/middlewares/validators/product-existence.d.ts +3 -0
- package/dist/api/middlewares/validators/product-existence.js +86 -0
- package/dist/api/middlewares/validators/product-existence.js.map +1 -0
- package/dist/api/middlewares/validators/sales-channel-existence.d.ts +3 -0
- package/dist/api/middlewares/validators/sales-channel-existence.js +86 -0
- package/dist/api/middlewares/validators/sales-channel-existence.js.map +1 -0
- package/dist/api/routes/admin/auth/create-session.js +10 -2
- package/dist/api/routes/admin/auth/create-session.js.map +1 -1
- package/dist/api/routes/admin/batch/cancel-batch-job.js +12 -2
- package/dist/api/routes/admin/batch/cancel-batch-job.js.map +1 -1
- package/dist/api/routes/admin/batch/confirm-batch-job.js +12 -2
- package/dist/api/routes/admin/batch/confirm-batch-job.js.map +1 -1
- package/dist/api/routes/admin/batch/create-batch-job.js +10 -2
- package/dist/api/routes/admin/batch/create-batch-job.js.map +1 -1
- package/dist/api/routes/admin/collections/add-products.js +10 -2
- package/dist/api/routes/admin/collections/add-products.js.map +1 -1
- package/dist/api/routes/admin/collections/create-collection.js +10 -2
- package/dist/api/routes/admin/collections/create-collection.js.map +1 -1
- package/dist/api/routes/admin/collections/delete-collection.js +10 -2
- package/dist/api/routes/admin/collections/delete-collection.js.map +1 -1
- package/dist/api/routes/admin/collections/remove-products.js +10 -2
- package/dist/api/routes/admin/collections/remove-products.js.map +1 -1
- package/dist/api/routes/admin/collections/update-collection.js +10 -2
- package/dist/api/routes/admin/collections/update-collection.js.map +1 -1
- package/dist/api/routes/admin/customer-groups/add-customers-batch.js +15 -5
- package/dist/api/routes/admin/customer-groups/add-customers-batch.js.map +1 -1
- package/dist/api/routes/admin/customer-groups/create-customer-group.js +12 -2
- package/dist/api/routes/admin/customer-groups/create-customer-group.js.map +1 -1
- package/dist/api/routes/admin/customer-groups/delete-customer-group.js +12 -2
- package/dist/api/routes/admin/customer-groups/delete-customer-group.js.map +1 -1
- package/dist/api/routes/admin/customer-groups/delete-customers-batch.js +15 -5
- package/dist/api/routes/admin/customer-groups/delete-customers-batch.js.map +1 -1
- package/dist/api/routes/admin/customer-groups/update-customer-group.js +12 -2
- package/dist/api/routes/admin/customer-groups/update-customer-group.js.map +1 -1
- package/dist/api/routes/admin/customers/create-customer.js +12 -2
- package/dist/api/routes/admin/customers/create-customer.js.map +1 -1
- package/dist/api/routes/admin/customers/update-customer.js +12 -2
- package/dist/api/routes/admin/customers/update-customer.js.map +1 -1
- package/dist/api/routes/admin/discounts/add-region.js +12 -2
- package/dist/api/routes/admin/discounts/add-region.js.map +1 -1
- package/dist/api/routes/admin/discounts/create-condition.d.ts +1 -1
- package/dist/api/routes/admin/discounts/create-condition.js +13 -3
- package/dist/api/routes/admin/discounts/create-condition.js.map +1 -1
- package/dist/api/routes/admin/discounts/create-discount.d.ts +1 -2
- package/dist/api/routes/admin/discounts/create-discount.js +12 -3
- package/dist/api/routes/admin/discounts/create-discount.js.map +1 -1
- package/dist/api/routes/admin/discounts/create-dynamic-code.js +12 -2
- package/dist/api/routes/admin/discounts/create-dynamic-code.js.map +1 -1
- package/dist/api/routes/admin/discounts/delete-condition.js +12 -2
- package/dist/api/routes/admin/discounts/delete-condition.js.map +1 -1
- package/dist/api/routes/admin/discounts/delete-discount.js +12 -2
- package/dist/api/routes/admin/discounts/delete-discount.js.map +1 -1
- package/dist/api/routes/admin/discounts/delete-dynamic-code.js +12 -2
- package/dist/api/routes/admin/discounts/delete-dynamic-code.js.map +1 -1
- package/dist/api/routes/admin/discounts/remove-region.js +12 -2
- package/dist/api/routes/admin/discounts/remove-region.js.map +1 -1
- package/dist/api/routes/admin/discounts/update-condition.js +12 -2
- package/dist/api/routes/admin/discounts/update-condition.js.map +1 -1
- package/dist/api/routes/admin/discounts/update-discount.d.ts +1 -1
- package/dist/api/routes/admin/discounts/update-discount.js +13 -3
- package/dist/api/routes/admin/discounts/update-discount.js.map +1 -1
- package/dist/api/routes/admin/draft-orders/create-draft-order.js +12 -2
- package/dist/api/routes/admin/draft-orders/create-draft-order.js.map +1 -1
- package/dist/api/routes/admin/draft-orders/create-line-item.js +4 -2
- package/dist/api/routes/admin/draft-orders/create-line-item.js.map +1 -1
- package/dist/api/routes/admin/draft-orders/delete-draft-order.js +12 -2
- package/dist/api/routes/admin/draft-orders/delete-draft-order.js.map +1 -1
- package/dist/api/routes/admin/draft-orders/register-payment.js +6 -3
- package/dist/api/routes/admin/draft-orders/register-payment.js.map +1 -1
- package/dist/api/routes/admin/draft-orders/update-draft-order.js +28 -12
- package/dist/api/routes/admin/draft-orders/update-draft-order.js.map +1 -1
- package/dist/api/routes/admin/gift-cards/create-gift-card.js +10 -2
- package/dist/api/routes/admin/gift-cards/create-gift-card.js.map +1 -1
- package/dist/api/routes/admin/gift-cards/delete-gift-card.js +10 -2
- package/dist/api/routes/admin/gift-cards/delete-gift-card.js.map +1 -1
- package/dist/api/routes/admin/gift-cards/update-gift-card.js +12 -2
- package/dist/api/routes/admin/gift-cards/update-gift-card.js.map +1 -1
- package/dist/api/routes/admin/invites/accept-invite.js +12 -2
- package/dist/api/routes/admin/invites/accept-invite.js.map +1 -1
- package/dist/api/routes/admin/invites/create-invite.js +12 -2
- package/dist/api/routes/admin/invites/create-invite.js.map +1 -1
- package/dist/api/routes/admin/invites/delete-invite.js +12 -2
- package/dist/api/routes/admin/invites/delete-invite.js.map +1 -1
- package/dist/api/routes/admin/invites/resend-invite.js +12 -2
- package/dist/api/routes/admin/invites/resend-invite.js.map +1 -1
- package/dist/api/routes/admin/notes/create-note.js +15 -7
- package/dist/api/routes/admin/notes/create-note.js.map +1 -1
- package/dist/api/routes/admin/notes/delete-note.js +10 -2
- package/dist/api/routes/admin/notes/delete-note.js.map +1 -1
- package/dist/api/routes/admin/notes/update-note.js +12 -2
- package/dist/api/routes/admin/notes/update-note.js.map +1 -1
- package/dist/api/routes/admin/notifications/list-notifications.js +8 -7
- package/dist/api/routes/admin/notifications/list-notifications.js.map +1 -1
- package/dist/api/routes/admin/notifications/resend-notification.js +12 -2
- package/dist/api/routes/admin/notifications/resend-notification.js.map +1 -1
- package/dist/api/routes/admin/orders/add-shipping-method.js +14 -4
- package/dist/api/routes/admin/orders/add-shipping-method.js.map +1 -1
- package/dist/api/routes/admin/orders/archive-order.js +10 -2
- package/dist/api/routes/admin/orders/archive-order.js.map +1 -1
- package/dist/api/routes/admin/orders/cancel-claim.js +12 -2
- package/dist/api/routes/admin/orders/cancel-claim.js.map +1 -1
- package/dist/api/routes/admin/orders/cancel-fulfillment-claim.js +12 -2
- package/dist/api/routes/admin/orders/cancel-fulfillment-claim.js.map +1 -1
- package/dist/api/routes/admin/orders/cancel-fulfillment-swap.js +12 -2
- package/dist/api/routes/admin/orders/cancel-fulfillment-swap.js.map +1 -1
- package/dist/api/routes/admin/orders/cancel-fulfillment.js +12 -2
- package/dist/api/routes/admin/orders/cancel-fulfillment.js.map +1 -1
- package/dist/api/routes/admin/orders/cancel-order.js +10 -2
- package/dist/api/routes/admin/orders/cancel-order.js.map +1 -1
- package/dist/api/routes/admin/orders/cancel-swap.js +10 -2
- package/dist/api/routes/admin/orders/cancel-swap.js.map +1 -1
- package/dist/api/routes/admin/orders/capture-payment.js +12 -2
- package/dist/api/routes/admin/orders/capture-payment.js.map +1 -1
- package/dist/api/routes/admin/orders/complete-order.js +12 -2
- package/dist/api/routes/admin/orders/complete-order.js.map +1 -1
- package/dist/api/routes/admin/orders/create-claim-shipment.js +18 -8
- package/dist/api/routes/admin/orders/create-claim-shipment.js.map +1 -1
- package/dist/api/routes/admin/orders/create-claim.js +199 -140
- package/dist/api/routes/admin/orders/create-claim.js.map +1 -1
- package/dist/api/routes/admin/orders/create-fulfillment.d.ts +1 -1
- package/dist/api/routes/admin/orders/create-fulfillment.js +15 -5
- package/dist/api/routes/admin/orders/create-fulfillment.js.map +1 -1
- package/dist/api/routes/admin/orders/create-shipment.js +23 -8
- package/dist/api/routes/admin/orders/create-shipment.js.map +1 -1
- package/dist/api/routes/admin/orders/create-swap-shipment.js +16 -8
- package/dist/api/routes/admin/orders/create-swap-shipment.js.map +1 -1
- package/dist/api/routes/admin/orders/create-swap.js +150 -101
- package/dist/api/routes/admin/orders/create-swap.js.map +1 -1
- package/dist/api/routes/admin/orders/fulfill-swap.js +8 -9
- package/dist/api/routes/admin/orders/fulfill-swap.js.map +1 -1
- package/dist/api/routes/admin/orders/index.d.ts +1 -3
- package/dist/api/routes/admin/orders/index.js +0 -10
- package/dist/api/routes/admin/orders/index.js.map +1 -1
- package/dist/api/routes/admin/orders/list-orders.d.ts +1 -0
- package/dist/api/routes/admin/orders/list-orders.js +1 -0
- package/dist/api/routes/admin/orders/list-orders.js.map +1 -1
- package/dist/api/routes/admin/orders/refund-payment.js +14 -4
- package/dist/api/routes/admin/orders/refund-payment.js.map +1 -1
- package/dist/api/routes/admin/orders/request-return.js +180 -131
- package/dist/api/routes/admin/orders/request-return.js.map +1 -1
- package/dist/api/routes/admin/orders/update-claim.js +12 -2
- package/dist/api/routes/admin/orders/update-claim.js.map +1 -1
- package/dist/api/routes/admin/orders/update-order.d.ts +9 -9
- package/dist/api/routes/admin/orders/update-order.js +16 -6
- package/dist/api/routes/admin/orders/update-order.js.map +1 -1
- package/dist/api/routes/admin/price-lists/add-prices-batch.js +12 -2
- package/dist/api/routes/admin/price-lists/add-prices-batch.js.map +1 -1
- package/dist/api/routes/admin/price-lists/create-price-list.js +12 -2
- package/dist/api/routes/admin/price-lists/create-price-list.js.map +1 -1
- package/dist/api/routes/admin/price-lists/delete-price-list.js +10 -2
- package/dist/api/routes/admin/price-lists/delete-price-list.js.map +1 -1
- package/dist/api/routes/admin/price-lists/delete-prices-batch.js +12 -2
- package/dist/api/routes/admin/price-lists/delete-prices-batch.js.map +1 -1
- package/dist/api/routes/admin/price-lists/delete-product-prices.js +12 -4
- package/dist/api/routes/admin/price-lists/delete-product-prices.js.map +1 -1
- package/dist/api/routes/admin/price-lists/delete-variant-prices.js +12 -4
- package/dist/api/routes/admin/price-lists/delete-variant-prices.js.map +1 -1
- package/dist/api/routes/admin/price-lists/list-price-list-products.d.ts +2 -2
- package/dist/api/routes/admin/price-lists/list-price-list-products.js +1 -2
- package/dist/api/routes/admin/price-lists/list-price-list-products.js.map +1 -1
- package/dist/api/routes/admin/price-lists/list-price-lists.js.map +1 -1
- package/dist/api/routes/admin/price-lists/update-price-list.js +12 -2
- package/dist/api/routes/admin/price-lists/update-price-list.js.map +1 -1
- package/dist/api/routes/admin/products/add-option.js +12 -2
- package/dist/api/routes/admin/products/add-option.js.map +1 -1
- package/dist/api/routes/admin/products/create-product.d.ts +10 -8
- package/dist/api/routes/admin/products/create-product.js +36 -37
- package/dist/api/routes/admin/products/create-product.js.map +1 -1
- package/dist/api/routes/admin/products/create-variant.js +12 -2
- package/dist/api/routes/admin/products/create-variant.js.map +1 -1
- package/dist/api/routes/admin/products/delete-option.js +12 -2
- package/dist/api/routes/admin/products/delete-option.js.map +1 -1
- package/dist/api/routes/admin/products/delete-product.js +10 -2
- package/dist/api/routes/admin/products/delete-product.js.map +1 -1
- package/dist/api/routes/admin/products/delete-variant.js +14 -2
- package/dist/api/routes/admin/products/delete-variant.js.map +1 -1
- package/dist/api/routes/admin/products/index.d.ts +2 -2
- package/dist/api/routes/admin/products/index.js +6 -31
- package/dist/api/routes/admin/products/index.js.map +1 -1
- package/dist/api/routes/admin/products/list-products.d.ts +3 -20
- package/dist/api/routes/admin/products/list-products.js +15 -103
- package/dist/api/routes/admin/products/list-products.js.map +1 -1
- package/dist/api/routes/admin/products/set-metadata.js +18 -10
- package/dist/api/routes/admin/products/set-metadata.js.map +1 -1
- package/dist/api/routes/admin/products/update-option.js +12 -2
- package/dist/api/routes/admin/products/update-option.js.map +1 -1
- package/dist/api/routes/admin/products/update-product.d.ts +10 -8
- package/dist/api/routes/admin/products/update-product.js +40 -33
- package/dist/api/routes/admin/products/update-product.js.map +1 -1
- package/dist/api/routes/admin/products/update-variant.js +14 -2
- package/dist/api/routes/admin/products/update-variant.js.map +1 -1
- package/dist/api/routes/admin/regions/add-country.js +12 -2
- package/dist/api/routes/admin/regions/add-country.js.map +1 -1
- package/dist/api/routes/admin/regions/add-fulfillment-provider.js +12 -2
- package/dist/api/routes/admin/regions/add-fulfillment-provider.js.map +1 -1
- package/dist/api/routes/admin/regions/add-payment-provider.js +12 -2
- package/dist/api/routes/admin/regions/add-payment-provider.js.map +1 -1
- package/dist/api/routes/admin/regions/create-region.js +12 -2
- package/dist/api/routes/admin/regions/create-region.js.map +1 -1
- package/dist/api/routes/admin/regions/delete-region.js +12 -2
- package/dist/api/routes/admin/regions/delete-region.js.map +1 -1
- package/dist/api/routes/admin/regions/index.d.ts +0 -1
- package/dist/api/routes/admin/regions/index.js +0 -9
- package/dist/api/routes/admin/regions/index.js.map +1 -1
- package/dist/api/routes/admin/regions/remove-country.js +12 -2
- package/dist/api/routes/admin/regions/remove-country.js.map +1 -1
- package/dist/api/routes/admin/regions/remove-fulfillment-provider.js +12 -2
- package/dist/api/routes/admin/regions/remove-fulfillment-provider.js.map +1 -1
- package/dist/api/routes/admin/regions/remove-payment-provider.js +12 -2
- package/dist/api/routes/admin/regions/remove-payment-provider.js.map +1 -1
- package/dist/api/routes/admin/regions/update-region.js +12 -2
- package/dist/api/routes/admin/regions/update-region.js.map +1 -1
- package/dist/api/routes/admin/return-reasons/create-reason.js +12 -2
- package/dist/api/routes/admin/return-reasons/create-reason.js.map +1 -1
- package/dist/api/routes/admin/return-reasons/delete-reason.js +12 -2
- package/dist/api/routes/admin/return-reasons/delete-reason.js.map +1 -1
- package/dist/api/routes/admin/return-reasons/update-reason.js +12 -2
- package/dist/api/routes/admin/return-reasons/update-reason.js.map +1 -1
- package/dist/api/routes/admin/returns/cancel-return.js +10 -2
- package/dist/api/routes/admin/returns/cancel-return.js.map +1 -1
- package/dist/api/routes/admin/sales-channels/add-product-batch.d.ts +28 -0
- package/dist/api/routes/admin/sales-channels/add-product-batch.js +111 -0
- package/dist/api/routes/admin/sales-channels/add-product-batch.js.map +1 -0
- package/dist/api/routes/admin/sales-channels/create-sales-channel.d.ts +2 -1
- package/dist/api/routes/admin/sales-channels/create-sales-channel.js +19 -3
- package/dist/api/routes/admin/sales-channels/create-sales-channel.js.map +1 -1
- package/dist/api/routes/admin/sales-channels/delete-products-batch.d.ts +28 -0
- package/dist/api/routes/admin/sales-channels/delete-products-batch.js +111 -0
- package/dist/api/routes/admin/sales-channels/delete-products-batch.js.map +1 -0
- package/dist/api/routes/admin/sales-channels/delete-sales-channel.js +12 -2
- package/dist/api/routes/admin/sales-channels/delete-sales-channel.js.map +1 -1
- package/dist/api/routes/admin/sales-channels/index.d.ts +7 -3
- package/dist/api/routes/admin/sales-channels/index.js +18 -8
- package/dist/api/routes/admin/sales-channels/index.js.map +1 -1
- package/dist/api/routes/admin/sales-channels/list-sales-channels.d.ts +57 -0
- package/dist/api/routes/admin/sales-channels/list-sales-channels.js +197 -0
- package/dist/api/routes/admin/sales-channels/list-sales-channels.js.map +1 -0
- package/dist/api/routes/admin/sales-channels/update-sales-channel.js +12 -2
- package/dist/api/routes/admin/sales-channels/update-sales-channel.js.map +1 -1
- package/dist/api/routes/admin/shipping-options/create-shipping-option.js +13 -2
- package/dist/api/routes/admin/shipping-options/create-shipping-option.js.map +1 -1
- package/dist/api/routes/admin/shipping-options/delete-shipping-option.js +12 -2
- package/dist/api/routes/admin/shipping-options/delete-shipping-option.js.map +1 -1
- package/dist/api/routes/admin/shipping-options/update-shipping-option.js +12 -2
- package/dist/api/routes/admin/shipping-options/update-shipping-option.js.map +1 -1
- package/dist/api/routes/admin/shipping-profiles/create-shipping-profile.js +12 -2
- package/dist/api/routes/admin/shipping-profiles/create-shipping-profile.js.map +1 -1
- package/dist/api/routes/admin/shipping-profiles/delete-shipping-profile.js +12 -2
- package/dist/api/routes/admin/shipping-profiles/delete-shipping-profile.js.map +1 -1
- package/dist/api/routes/admin/shipping-profiles/update-shipping-profile.js +12 -2
- package/dist/api/routes/admin/shipping-profiles/update-shipping-profile.js.map +1 -1
- package/dist/api/routes/admin/store/add-currency.js +12 -2
- package/dist/api/routes/admin/store/add-currency.js.map +1 -1
- package/dist/api/routes/admin/store/get-store.js +6 -2
- package/dist/api/routes/admin/store/get-store.js.map +1 -1
- package/dist/api/routes/admin/store/remove-currency.js +12 -2
- package/dist/api/routes/admin/store/remove-currency.js.map +1 -1
- package/dist/api/routes/admin/store/update-store.js +12 -2
- package/dist/api/routes/admin/store/update-store.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/add-to-product-types.js +12 -2
- package/dist/api/routes/admin/tax-rates/add-to-product-types.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/add-to-products.js +12 -2
- package/dist/api/routes/admin/tax-rates/add-to-products.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/add-to-shipping-options.js +12 -2
- package/dist/api/routes/admin/tax-rates/add-to-shipping-options.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/delete-tax-rate.js +10 -2
- package/dist/api/routes/admin/tax-rates/delete-tax-rate.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/remove-from-product-types.js +12 -2
- package/dist/api/routes/admin/tax-rates/remove-from-product-types.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/remove-from-products.js +12 -2
- package/dist/api/routes/admin/tax-rates/remove-from-products.js.map +1 -1
- package/dist/api/routes/admin/tax-rates/remove-from-shipping-options.js +12 -2
- package/dist/api/routes/admin/tax-rates/remove-from-shipping-options.js.map +1 -1
- package/dist/api/routes/admin/users/create-user.js +12 -2
- package/dist/api/routes/admin/users/create-user.js.map +1 -1
- package/dist/api/routes/admin/users/delete-user.js +10 -2
- package/dist/api/routes/admin/users/delete-user.js.map +1 -1
- package/dist/api/routes/admin/users/reset-password-token.js +12 -4
- package/dist/api/routes/admin/users/reset-password-token.js.map +1 -1
- package/dist/api/routes/admin/users/reset-password.js +17 -8
- package/dist/api/routes/admin/users/reset-password.js.map +1 -1
- package/dist/api/routes/admin/users/update-user.js +12 -2
- package/dist/api/routes/admin/users/update-user.js.map +1 -1
- package/dist/api/routes/store/auth/create-session.js +12 -2
- package/dist/api/routes/store/auth/create-session.js.map +1 -1
- package/dist/api/routes/store/carts/calculate-taxes.js +84 -49
- package/dist/api/routes/store/carts/calculate-taxes.js.map +1 -1
- package/dist/api/routes/store/carts/complete-cart.js +10 -2
- package/dist/api/routes/store/carts/complete-cart.js.map +1 -1
- package/dist/api/routes/store/carts/create-cart.d.ts +4 -0
- package/dist/api/routes/store/carts/create-cart.js +72 -85
- package/dist/api/routes/store/carts/create-cart.js.map +1 -1
- package/dist/api/routes/store/carts/create-line-item.js +6 -3
- package/dist/api/routes/store/carts/create-line-item.js.map +1 -1
- package/dist/api/routes/store/carts/create-payment-sessions.js +10 -2
- package/dist/api/routes/store/carts/create-payment-sessions.js.map +1 -1
- package/dist/api/routes/store/carts/decorate-line-items-with-totals.js +20 -10
- package/dist/api/routes/store/carts/decorate-line-items-with-totals.js.map +1 -1
- package/dist/api/routes/store/carts/delete-payment-session.js +10 -2
- package/dist/api/routes/store/carts/delete-payment-session.js.map +1 -1
- package/dist/api/routes/store/carts/index.js +6 -30
- package/dist/api/routes/store/carts/index.js.map +1 -1
- package/dist/api/routes/store/carts/refresh-payment-session.js +10 -2
- package/dist/api/routes/store/carts/refresh-payment-session.js.map +1 -1
- package/dist/api/routes/store/carts/set-payment-session.js +11 -3
- package/dist/api/routes/store/carts/set-payment-session.js.map +1 -1
- package/dist/api/routes/store/carts/update-cart.d.ts +4 -0
- package/dist/api/routes/store/carts/update-cart.js +49 -64
- package/dist/api/routes/store/carts/update-cart.js.map +1 -1
- package/dist/api/routes/store/carts/update-line-item.js +1 -1
- package/dist/api/routes/store/carts/update-line-item.js.map +1 -1
- package/dist/api/routes/store/carts/update-payment-session.js +17 -7
- package/dist/api/routes/store/carts/update-payment-session.js.map +1 -1
- package/dist/api/routes/store/customers/create-address.js +13 -3
- package/dist/api/routes/store/customers/create-address.js.map +1 -1
- package/dist/api/routes/store/customers/create-customer.js +12 -2
- package/dist/api/routes/store/customers/create-customer.js.map +1 -1
- package/dist/api/routes/store/customers/delete-address.js +12 -2
- package/dist/api/routes/store/customers/delete-address.js.map +1 -1
- package/dist/api/routes/store/customers/list-orders.js.map +1 -1
- package/dist/api/routes/store/customers/reset-password-token.js +12 -4
- package/dist/api/routes/store/customers/reset-password-token.js.map +1 -1
- package/dist/api/routes/store/customers/reset-password.js +14 -4
- package/dist/api/routes/store/customers/reset-password.js.map +1 -1
- package/dist/api/routes/store/customers/update-address.js +12 -2
- package/dist/api/routes/store/customers/update-address.js.map +1 -1
- package/dist/api/routes/store/customers/update-customer.js +12 -2
- package/dist/api/routes/store/customers/update-customer.js.map +1 -1
- package/dist/api/routes/store/orders/index.d.ts +1 -1
- package/dist/api/routes/store/orders/index.js.map +1 -1
- package/dist/api/routes/store/returns/create-return.js +145 -100
- package/dist/api/routes/store/returns/create-return.js.map +1 -1
- package/dist/api/routes/store/shipping-options/list-shipping-options.js +7 -1
- package/dist/api/routes/store/shipping-options/list-shipping-options.js.map +1 -1
- package/dist/api/routes/store/swaps/create-swap.js +148 -99
- package/dist/api/routes/store/swaps/create-swap.js.map +1 -1
- package/dist/interfaces/base-repository.d.ts +3 -0
- package/dist/interfaces/base-repository.js +28 -0
- package/dist/interfaces/base-repository.js.map +1 -0
- package/dist/interfaces/index.d.ts +3 -0
- package/dist/interfaces/index.js +3 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/notification-service.d.ts +18 -0
- package/dist/interfaces/notification-service.js +40 -0
- package/dist/interfaces/notification-service.js.map +1 -0
- package/dist/interfaces/search-service.d.ts +78 -0
- package/dist/interfaces/search-service.js +42 -0
- package/dist/interfaces/search-service.js.map +1 -0
- package/dist/loaders/index.js +1 -1
- package/dist/loaders/index.js.map +1 -1
- package/dist/loaders/plugins.js +10 -12
- package/dist/loaders/plugins.js.map +1 -1
- package/dist/loaders/search-index.d.ts +1 -0
- package/dist/loaders/search-index.js +7 -64
- package/dist/loaders/search-index.js.map +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +1 -0
- package/dist/models/index.js.map +1 -1
- package/dist/models/notification.d.ts +1 -1
- package/dist/models/notification.js +1 -1
- package/dist/models/notification.js.map +1 -1
- package/dist/models/order.d.ts +1 -1
- package/dist/models/payment-session.d.ts +1 -1
- package/dist/models/payment-session.js +4 -4
- package/dist/models/payment-session.js.map +1 -1
- package/dist/models/product.js +1 -1
- package/dist/models/product.js.map +1 -1
- package/dist/repositories/claim.js.map +1 -1
- package/dist/repositories/order.d.ts +3 -3
- package/dist/repositories/order.js +2 -2
- package/dist/repositories/order.js.map +1 -1
- package/dist/repositories/price-list.js.map +1 -1
- package/dist/repositories/product.d.ts +2 -2
- package/dist/repositories/product.js +19 -11
- package/dist/repositories/product.js.map +1 -1
- package/dist/repositories/sales-channel.d.ts +5 -1
- package/dist/repositories/sales-channel.js +116 -0
- package/dist/repositories/sales-channel.js.map +1 -1
- package/dist/services/batch-job.js +18 -32
- package/dist/services/batch-job.js.map +1 -1
- package/dist/services/cart.d.ts +37 -10
- package/dist/services/cart.js +293 -161
- package/dist/services/cart.js.map +1 -1
- package/dist/services/claim.js +18 -32
- package/dist/services/claim.js.map +1 -1
- package/dist/services/custom-shipping-option.js +28 -53
- package/dist/services/custom-shipping-option.js.map +1 -1
- package/dist/services/customer.js +33 -78
- package/dist/services/customer.js.map +1 -1
- package/dist/services/discount-condition.js +12 -19
- package/dist/services/discount-condition.js.map +1 -1
- package/dist/services/discount.js +67 -91
- package/dist/services/discount.js.map +1 -1
- package/dist/services/draft-order.js +57 -85
- package/dist/services/draft-order.js.map +1 -1
- package/dist/services/fulfillment.d.ts +1 -1
- package/dist/services/fulfillment.js +12 -19
- package/dist/services/fulfillment.js.map +1 -1
- package/dist/services/gift-card.js +67 -116
- package/dist/services/gift-card.js.map +1 -1
- package/dist/services/idempotency-key.d.ts +2 -3
- package/dist/services/idempotency-key.js +3 -3
- package/dist/services/idempotency-key.js.map +1 -1
- package/dist/services/inventory.d.ts +22 -21
- package/dist/services/inventory.js +57 -55
- package/dist/services/inventory.js.map +1 -1
- package/dist/services/line-item.js +19 -33
- package/dist/services/line-item.js.map +1 -1
- package/dist/services/note.d.ts +43 -48
- package/dist/services/note.js +106 -118
- package/dist/services/note.js.map +1 -1
- package/dist/services/notification.d.ts +54 -51
- package/dist/services/notification.js +118 -113
- package/dist/services/notification.js.map +1 -1
- package/dist/services/order.d.ts +163 -184
- package/dist/services/order.js +1248 -1319
- package/dist/services/order.js.map +1 -1
- package/dist/services/price-list.js +35 -45
- package/dist/services/price-list.js.map +1 -1
- package/dist/services/pricing.js +32 -35
- package/dist/services/pricing.js.map +1 -1
- package/dist/services/product.d.ts +7 -4
- package/dist/services/product.js +151 -170
- package/dist/services/product.js.map +1 -1
- package/dist/services/sales-channel.d.ts +22 -1
- package/dist/services/sales-channel.js +130 -28
- package/dist/services/sales-channel.js.map +1 -1
- package/dist/services/search.d.ts +23 -19
- package/dist/services/search.js +10 -9
- package/dist/services/search.js.map +1 -1
- package/dist/services/shipping-option.d.ts +1 -1
- package/dist/services/shipping-option.js +77 -84
- package/dist/services/shipping-option.js.map +1 -1
- package/dist/services/shipping-profile.js +37 -30
- package/dist/services/shipping-profile.js.map +1 -1
- package/dist/services/store.d.ts +5 -5
- package/dist/services/store.js +13 -20
- package/dist/services/store.js.map +1 -1
- package/dist/services/swap.js +3 -1
- package/dist/services/swap.js.map +1 -1
- package/dist/services/tax-provider.d.ts +18 -19
- package/dist/services/tax-provider.js +81 -61
- package/dist/services/tax-provider.js.map +1 -1
- package/dist/services/tax-rate.js +23 -46
- package/dist/services/tax-rate.js.map +1 -1
- package/dist/services/totals.d.ts +7 -4
- package/dist/services/totals.js +19 -7
- package/dist/services/totals.js.map +1 -1
- package/dist/services/user.d.ts +3 -0
- package/dist/services/user.js +70 -76
- package/dist/services/user.js.map +1 -1
- package/dist/strategies/__fixtures__/order-export-data.js +11 -0
- package/dist/strategies/__fixtures__/order-export-data.js.map +1 -1
- package/dist/strategies/__fixtures__/product-export-data.d.ts +10 -0
- package/dist/strategies/__fixtures__/product-export-data.js +7 -0
- package/dist/strategies/__fixtures__/product-export-data.js.map +1 -1
- package/dist/strategies/batch-jobs/order/export.d.ts +10 -4
- package/dist/strategies/batch-jobs/order/export.js +29 -11
- package/dist/strategies/batch-jobs/order/export.js.map +1 -1
- package/dist/strategies/batch-jobs/order/index.js +1 -1
- package/dist/strategies/batch-jobs/order/index.js.map +1 -1
- package/dist/strategies/batch-jobs/product/export.d.ts +13 -1
- package/dist/strategies/batch-jobs/product/export.js +137 -80
- package/dist/strategies/batch-jobs/product/export.js.map +1 -1
- package/dist/strategies/batch-jobs/product/index.d.ts +1 -0
- package/dist/strategies/batch-jobs/product/index.js.map +1 -1
- package/dist/subscribers/search-indexing.d.ts +18 -0
- package/dist/subscribers/search-indexing.js +126 -0
- package/dist/subscribers/search-indexing.js.map +1 -0
- package/dist/types/cart.d.ts +7 -4
- package/dist/types/common.d.ts +10 -1
- package/dist/types/common.js +63 -1
- package/dist/types/common.js.map +1 -1
- package/dist/types/gift-card.d.ts +3 -1
- package/dist/types/global.d.ts +3 -2
- package/dist/types/orders.d.ts +80 -3
- package/dist/types/orders.js +8 -2
- package/dist/types/orders.js.map +1 -1
- package/dist/types/product.d.ts +16 -0
- package/dist/types/product.js +46 -1
- package/dist/types/product.js.map +1 -1
- package/dist/types/sales-channels.d.ts +3 -0
- package/dist/types/sales-channels.js +21 -0
- package/dist/types/sales-channels.js.map +1 -1
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/remove-undefined-properties.d.ts +1 -0
- package/dist/utils/remove-undefined-properties.js +46 -0
- package/dist/utils/remove-undefined-properties.js.map +1 -0
- package/jest.config.js +6 -6
- package/package.json +4 -5
- package/yarn-error.log +29038 -0
package/dist/services/order.js
CHANGED
|
@@ -110,94 +110,48 @@ var __values = (this && this.__values) || function(o) {
|
|
|
110
110
|
};
|
|
111
111
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
112
112
|
var medusa_core_utils_1 = require("medusa-core-utils");
|
|
113
|
-
var medusa_interfaces_1 = require("medusa-interfaces");
|
|
114
113
|
var typeorm_1 = require("typeorm");
|
|
114
|
+
var interfaces_1 = require("../interfaces");
|
|
115
|
+
var utils_1 = require("../utils");
|
|
116
|
+
var models_1 = require("../models");
|
|
115
117
|
var OrderService = /** @class */ (function (_super) {
|
|
116
118
|
__extends(OrderService, _super);
|
|
117
119
|
function OrderService(_a) {
|
|
118
120
|
var manager = _a.manager, orderRepository = _a.orderRepository, customerService = _a.customerService, paymentProviderService = _a.paymentProviderService, shippingOptionService = _a.shippingOptionService, shippingProfileService = _a.shippingProfileService, discountService = _a.discountService, fulfillmentProviderService = _a.fulfillmentProviderService, fulfillmentService = _a.fulfillmentService, lineItemService = _a.lineItemService, totalsService = _a.totalsService, regionService = _a.regionService, cartService = _a.cartService, addressRepository = _a.addressRepository, giftCardService = _a.giftCardService, draftOrderService = _a.draftOrderService, inventoryService = _a.inventoryService, eventBusService = _a.eventBusService;
|
|
119
|
-
var _this =
|
|
120
|
-
|
|
121
|
+
var _this =
|
|
122
|
+
// eslint-disable-next-line prefer-rest-params
|
|
123
|
+
_super.call(this, arguments[0]) || this;
|
|
121
124
|
_this.manager_ = manager;
|
|
122
|
-
/** @private @constant {OrderRepository} */
|
|
123
125
|
_this.orderRepository_ = orderRepository;
|
|
124
|
-
/** @private @constant {CustomerService} */
|
|
125
126
|
_this.customerService_ = customerService;
|
|
126
|
-
/** @private @constant {PaymentProviderService} */
|
|
127
127
|
_this.paymentProviderService_ = paymentProviderService;
|
|
128
|
-
/** @private @constant {ShippingProvileService} */
|
|
129
128
|
_this.shippingProfileService_ = shippingProfileService;
|
|
130
|
-
/** @private @constant {FulfillmentProviderService} */
|
|
131
129
|
_this.fulfillmentProviderService_ = fulfillmentProviderService;
|
|
132
|
-
/** @private @constant {LineItemService} */
|
|
133
130
|
_this.lineItemService_ = lineItemService;
|
|
134
|
-
/** @private @constant {TotalsService} */
|
|
135
131
|
_this.totalsService_ = totalsService;
|
|
136
|
-
/** @private @constant {RegionService} */
|
|
137
132
|
_this.regionService_ = regionService;
|
|
138
|
-
/** @private @constant {FulfillmentService} */
|
|
139
133
|
_this.fulfillmentService_ = fulfillmentService;
|
|
140
|
-
/** @private @constant {DiscountService} */
|
|
141
134
|
_this.discountService_ = discountService;
|
|
142
|
-
/** @private @constant {DiscountService} */
|
|
143
135
|
_this.giftCardService_ = giftCardService;
|
|
144
|
-
/** @private @constant {EventBus} */
|
|
145
136
|
_this.eventBus_ = eventBusService;
|
|
146
|
-
/** @private @constant {ShippingOptionService} */
|
|
147
137
|
_this.shippingOptionService_ = shippingOptionService;
|
|
148
|
-
/** @private @constant {CartService} */
|
|
149
138
|
_this.cartService_ = cartService;
|
|
150
|
-
/** @private @constant {AddressRepository} */
|
|
151
139
|
_this.addressRepository_ = addressRepository;
|
|
152
|
-
/** @private @constant {DraftOrderService} */
|
|
153
140
|
_this.draftOrderService_ = draftOrderService;
|
|
154
|
-
/** @private @constant {InventoryService} */
|
|
155
141
|
_this.inventoryService_ = inventoryService;
|
|
156
142
|
return _this;
|
|
157
143
|
}
|
|
158
|
-
OrderService.prototype.withTransaction = function (manager) {
|
|
159
|
-
if (!manager) {
|
|
160
|
-
return this;
|
|
161
|
-
}
|
|
162
|
-
var cloned = new OrderService({
|
|
163
|
-
manager: manager,
|
|
164
|
-
orderRepository: this.orderRepository_,
|
|
165
|
-
eventBusService: this.eventBus_,
|
|
166
|
-
paymentProviderService: this.paymentProviderService_,
|
|
167
|
-
regionService: this.regionService_,
|
|
168
|
-
lineItemService: this.lineItemService_,
|
|
169
|
-
shippingOptionService: this.shippingOptionService_,
|
|
170
|
-
shippingProfileService: this.shippingProfileService_,
|
|
171
|
-
fulfillmentProviderService: this.fulfillmentProviderService_,
|
|
172
|
-
fulfillmentService: this.fulfillmentService_,
|
|
173
|
-
customerService: this.customerService_,
|
|
174
|
-
discountService: this.discountService_,
|
|
175
|
-
totalsService: this.totalsService_,
|
|
176
|
-
cartService: this.cartService_,
|
|
177
|
-
giftCardService: this.giftCardService_,
|
|
178
|
-
addressRepository: this.addressRepository_,
|
|
179
|
-
draftOrderService: this.draftOrderService_,
|
|
180
|
-
inventoryService: this.inventoryService_,
|
|
181
|
-
});
|
|
182
|
-
cloned.transactionManager_ = manager;
|
|
183
|
-
cloned.manager_ = manager;
|
|
184
|
-
return cloned;
|
|
185
|
-
};
|
|
186
144
|
/**
|
|
187
|
-
*
|
|
188
|
-
* @param
|
|
189
|
-
* @return
|
|
190
|
-
*/
|
|
191
|
-
OrderService.prototype.validateId_ = function (rawId) {
|
|
192
|
-
return rawId;
|
|
193
|
-
};
|
|
194
|
-
/**
|
|
195
|
-
* @param {Object} selector - the query object for find
|
|
196
|
-
* @param {Object} config - the config to be used for find
|
|
197
|
-
* @return {Promise} the result of the find operation
|
|
145
|
+
* @param selector the query object for find
|
|
146
|
+
* @param config the config to be used for find
|
|
147
|
+
* @return the result of the find operation
|
|
198
148
|
*/
|
|
199
149
|
OrderService.prototype.list = function (selector, config) {
|
|
200
|
-
if (config === void 0) { config = {
|
|
150
|
+
if (config === void 0) { config = {
|
|
151
|
+
skip: 0,
|
|
152
|
+
take: 50,
|
|
153
|
+
order: { created_at: "DESC" },
|
|
154
|
+
}; }
|
|
201
155
|
return __awaiter(this, void 0, void 0, function () {
|
|
202
156
|
var orderRepo, query, _a, select, relations, totalsToSelect, raw;
|
|
203
157
|
var _this = this;
|
|
@@ -205,8 +159,8 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
205
159
|
switch (_b.label) {
|
|
206
160
|
case 0:
|
|
207
161
|
orderRepo = this.manager_.getCustomRepository(this.orderRepository_);
|
|
208
|
-
query =
|
|
209
|
-
_a = this.
|
|
162
|
+
query = (0, utils_1.buildQuery)(selector, config);
|
|
163
|
+
_a = this.transformQueryForTotals(config), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
|
|
210
164
|
if (select && select.length) {
|
|
211
165
|
query.select = select;
|
|
212
166
|
}
|
|
@@ -218,7 +172,7 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
218
172
|
raw = _b.sent();
|
|
219
173
|
return [4 /*yield*/, Promise.all(raw.map(function (r) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
220
174
|
switch (_a.label) {
|
|
221
|
-
case 0: return [4 /*yield*/, this.
|
|
175
|
+
case 0: return [4 /*yield*/, this.decorateTotals(r, totalsToSelect)];
|
|
222
176
|
case 1: return [2 /*return*/, _a.sent()];
|
|
223
177
|
}
|
|
224
178
|
}); }); }))];
|
|
@@ -228,7 +182,11 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
228
182
|
});
|
|
229
183
|
};
|
|
230
184
|
OrderService.prototype.listAndCount = function (selector, config) {
|
|
231
|
-
if (config === void 0) { config = {
|
|
185
|
+
if (config === void 0) { config = {
|
|
186
|
+
skip: 0,
|
|
187
|
+
take: 50,
|
|
188
|
+
order: { created_at: "DESC" },
|
|
189
|
+
}; }
|
|
232
190
|
return __awaiter(this, void 0, void 0, function () {
|
|
233
191
|
var orderRepo, q, query, where_1, _a, select, relations, totalsToSelect, rels, raw, count, orders;
|
|
234
192
|
var _this = this;
|
|
@@ -240,7 +198,7 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
240
198
|
q = selector.q;
|
|
241
199
|
delete selector.q;
|
|
242
200
|
}
|
|
243
|
-
query =
|
|
201
|
+
query = (0, utils_1.buildQuery)(selector, config);
|
|
244
202
|
if (q) {
|
|
245
203
|
where_1 = query.where;
|
|
246
204
|
delete where_1.display_id;
|
|
@@ -262,7 +220,7 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
262
220
|
}));
|
|
263
221
|
};
|
|
264
222
|
}
|
|
265
|
-
_a = this.
|
|
223
|
+
_a = this.transformQueryForTotals(config), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
|
|
266
224
|
if (select && select.length) {
|
|
267
225
|
query.select = select;
|
|
268
226
|
}
|
|
@@ -276,7 +234,7 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
276
234
|
count = _b.sent();
|
|
277
235
|
return [4 /*yield*/, Promise.all(raw.map(function (r) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
278
236
|
switch (_a.label) {
|
|
279
|
-
case 0: return [4 /*yield*/, this.
|
|
237
|
+
case 0: return [4 /*yield*/, this.decorateTotals(r, totalsToSelect)];
|
|
280
238
|
case 1: return [2 /*return*/, _a.sent()];
|
|
281
239
|
}
|
|
282
240
|
}); }); }))];
|
|
@@ -287,7 +245,7 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
287
245
|
});
|
|
288
246
|
});
|
|
289
247
|
};
|
|
290
|
-
OrderService.prototype.
|
|
248
|
+
OrderService.prototype.transformQueryForTotals = function (config) {
|
|
291
249
|
var select = config.select, relations = config.relations;
|
|
292
250
|
if (!select) {
|
|
293
251
|
return {
|
|
@@ -347,22 +305,21 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
347
305
|
};
|
|
348
306
|
/**
|
|
349
307
|
* Gets an order by id.
|
|
350
|
-
* @param
|
|
351
|
-
* @param
|
|
352
|
-
* @return
|
|
308
|
+
* @param orderId - id of order to retrieve
|
|
309
|
+
* @param config - config of order to retrieve
|
|
310
|
+
* @return the order document
|
|
353
311
|
*/
|
|
354
312
|
OrderService.prototype.retrieve = function (orderId, config) {
|
|
355
313
|
if (config === void 0) { config = {}; }
|
|
356
314
|
return __awaiter(this, void 0, void 0, function () {
|
|
357
|
-
var orderRepo,
|
|
315
|
+
var orderRepo, _a, select, relations, totalsToSelect, query, rels, raw;
|
|
358
316
|
return __generator(this, function (_b) {
|
|
359
317
|
switch (_b.label) {
|
|
360
318
|
case 0:
|
|
361
319
|
orderRepo = this.manager_.getCustomRepository(this.orderRepository_);
|
|
362
|
-
|
|
363
|
-
_a = this.transformQueryForTotals_(config), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
|
|
320
|
+
_a = this.transformQueryForTotals(config), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
|
|
364
321
|
query = {
|
|
365
|
-
where: { id:
|
|
322
|
+
where: { id: orderId },
|
|
366
323
|
};
|
|
367
324
|
if (relations && relations.length > 0) {
|
|
368
325
|
query.relations = relations;
|
|
@@ -378,7 +335,7 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
378
335
|
if (!raw) {
|
|
379
336
|
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Order with ".concat(orderId, " was not found"));
|
|
380
337
|
}
|
|
381
|
-
return [4 /*yield*/, this.
|
|
338
|
+
return [4 /*yield*/, this.decorateTotals(raw, totalsToSelect)];
|
|
382
339
|
case 2: return [2 /*return*/, _b.sent()];
|
|
383
340
|
}
|
|
384
341
|
});
|
|
@@ -386,19 +343,19 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
386
343
|
};
|
|
387
344
|
/**
|
|
388
345
|
* Gets an order by cart id.
|
|
389
|
-
* @param
|
|
390
|
-
* @param
|
|
391
|
-
* @return
|
|
346
|
+
* @param cartId - cart id to find order
|
|
347
|
+
* @param config - the config to be used to find order
|
|
348
|
+
* @return the order document
|
|
392
349
|
*/
|
|
393
350
|
OrderService.prototype.retrieveByCartId = function (cartId, config) {
|
|
394
351
|
if (config === void 0) { config = {}; }
|
|
395
352
|
return __awaiter(this, void 0, void 0, function () {
|
|
396
|
-
var orderRepo, _a, select, relations, totalsToSelect, query, raw
|
|
353
|
+
var orderRepo, _a, select, relations, totalsToSelect, query, raw;
|
|
397
354
|
return __generator(this, function (_b) {
|
|
398
355
|
switch (_b.label) {
|
|
399
356
|
case 0:
|
|
400
357
|
orderRepo = this.manager_.getCustomRepository(this.orderRepository_);
|
|
401
|
-
_a = this.
|
|
358
|
+
_a = this.transformQueryForTotals(config), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
|
|
402
359
|
query = {
|
|
403
360
|
where: { cart_id: cartId },
|
|
404
361
|
};
|
|
@@ -414,29 +371,27 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
414
371
|
if (!raw) {
|
|
415
372
|
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Order with cart id: ".concat(cartId, " was not found"));
|
|
416
373
|
}
|
|
417
|
-
return [4 /*yield*/, this.
|
|
418
|
-
case 2:
|
|
419
|
-
order = _b.sent();
|
|
420
|
-
return [2 /*return*/, order];
|
|
374
|
+
return [4 /*yield*/, this.decorateTotals(raw, totalsToSelect)];
|
|
375
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
421
376
|
}
|
|
422
377
|
});
|
|
423
378
|
});
|
|
424
379
|
};
|
|
425
380
|
/**
|
|
426
381
|
* Gets an order by id.
|
|
427
|
-
* @param
|
|
428
|
-
* @param
|
|
429
|
-
* @return
|
|
382
|
+
* @param externalId - id of order to retrieve
|
|
383
|
+
* @param config - query config to get order by
|
|
384
|
+
* @return the order document
|
|
430
385
|
*/
|
|
431
386
|
OrderService.prototype.retrieveByExternalId = function (externalId, config) {
|
|
432
387
|
if (config === void 0) { config = {}; }
|
|
433
388
|
return __awaiter(this, void 0, void 0, function () {
|
|
434
|
-
var orderRepo, _a, select, relations, totalsToSelect, query, rels, raw
|
|
389
|
+
var orderRepo, _a, select, relations, totalsToSelect, query, rels, raw;
|
|
435
390
|
return __generator(this, function (_b) {
|
|
436
391
|
switch (_b.label) {
|
|
437
392
|
case 0:
|
|
438
393
|
orderRepo = this.manager_.getCustomRepository(this.orderRepository_);
|
|
439
|
-
_a = this.
|
|
394
|
+
_a = this.transformQueryForTotals(config), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
|
|
440
395
|
query = {
|
|
441
396
|
where: { external_id: externalId },
|
|
442
397
|
};
|
|
@@ -454,354 +409,350 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
454
409
|
if (!raw) {
|
|
455
410
|
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Order with external id ".concat(externalId, " was not found"));
|
|
456
411
|
}
|
|
457
|
-
return [4 /*yield*/, this.
|
|
458
|
-
case 2:
|
|
459
|
-
order = _b.sent();
|
|
460
|
-
return [2 /*return*/, order];
|
|
412
|
+
return [4 /*yield*/, this.decorateTotals(raw, totalsToSelect)];
|
|
413
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
461
414
|
}
|
|
462
415
|
});
|
|
463
416
|
});
|
|
464
417
|
};
|
|
465
418
|
/**
|
|
466
419
|
* Checks the existence of an order by cart id.
|
|
467
|
-
* @param
|
|
468
|
-
* @return
|
|
420
|
+
* @param cartId - cart id to find order
|
|
421
|
+
* @return the order document
|
|
469
422
|
*/
|
|
470
423
|
OrderService.prototype.existsByCartId = function (cartId) {
|
|
471
424
|
return __awaiter(this, void 0, void 0, function () {
|
|
472
425
|
var order;
|
|
473
426
|
return __generator(this, function (_a) {
|
|
474
427
|
switch (_a.label) {
|
|
475
|
-
case 0: return [4 /*yield*/, this.retrieveByCartId(cartId).catch(function (
|
|
428
|
+
case 0: return [4 /*yield*/, this.retrieveByCartId(cartId).catch(function () { return undefined; })];
|
|
476
429
|
case 1:
|
|
477
430
|
order = _a.sent();
|
|
478
|
-
|
|
479
|
-
return [2 /*return*/, false];
|
|
480
|
-
}
|
|
481
|
-
return [2 /*return*/, true];
|
|
431
|
+
return [2 /*return*/, !!order];
|
|
482
432
|
}
|
|
483
433
|
});
|
|
484
434
|
});
|
|
485
435
|
};
|
|
486
436
|
/**
|
|
487
|
-
* @param
|
|
488
|
-
* @return
|
|
437
|
+
* @param orderId - id of the order to complete
|
|
438
|
+
* @return the result of the find operation
|
|
489
439
|
*/
|
|
490
440
|
OrderService.prototype.completeOrder = function (orderId) {
|
|
491
441
|
return __awaiter(this, void 0, void 0, function () {
|
|
492
442
|
var _this = this;
|
|
493
443
|
return __generator(this, function (_a) {
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
});
|
|
520
|
-
}); })];
|
|
444
|
+
switch (_a.label) {
|
|
445
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
446
|
+
var order, orderRepo;
|
|
447
|
+
return __generator(this, function (_a) {
|
|
448
|
+
switch (_a.label) {
|
|
449
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId)];
|
|
450
|
+
case 1:
|
|
451
|
+
order = _a.sent();
|
|
452
|
+
if (order.status === "canceled") {
|
|
453
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot be completed");
|
|
454
|
+
}
|
|
455
|
+
return [4 /*yield*/, this.eventBus_.emit(OrderService.Events.COMPLETED, {
|
|
456
|
+
id: orderId,
|
|
457
|
+
no_notification: order.no_notification,
|
|
458
|
+
})];
|
|
459
|
+
case 2:
|
|
460
|
+
_a.sent();
|
|
461
|
+
order.status = models_1.OrderStatus.COMPLETED;
|
|
462
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
463
|
+
return [2 /*return*/, orderRepo.save(order)];
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
}); })];
|
|
467
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
468
|
+
}
|
|
521
469
|
});
|
|
522
470
|
});
|
|
523
471
|
};
|
|
524
472
|
/**
|
|
525
473
|
* Creates an order from a cart
|
|
526
|
-
* @param
|
|
527
|
-
* @return
|
|
474
|
+
* @param cartId - id of the cart to create an order from
|
|
475
|
+
* @return resolves to the creation result.
|
|
528
476
|
*/
|
|
529
477
|
OrderService.prototype.createFromCart = function (cartId) {
|
|
530
478
|
return __awaiter(this, void 0, void 0, function () {
|
|
531
479
|
var _this = this;
|
|
532
480
|
return __generator(this, function (_a) {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
481
|
+
switch (_a.label) {
|
|
482
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
483
|
+
var cartService, inventoryService, cart, payment, region, total, _a, _b, item, err_1, e_1_1, exists, paymentStatus, orderRepo, toCreate, draft, o, result, gcBalance, gcService, _c, _d, g, newBalance, usage, e_2_1, _e, _f, method, e_3_1, lineItemService, _g, _h, item, e_4_1, _j, _k, item, e_5_1;
|
|
484
|
+
var e_1, _l, e_2, _m, e_3, _o, e_4, _p, e_5, _q;
|
|
485
|
+
return __generator(this, function (_r) {
|
|
486
|
+
switch (_r.label) {
|
|
487
|
+
case 0:
|
|
488
|
+
cartService = this.cartService_.withTransaction(manager);
|
|
489
|
+
inventoryService = this.inventoryService_.withTransaction(manager);
|
|
490
|
+
return [4 /*yield*/, cartService.retrieve(cartId, {
|
|
491
|
+
select: ["subtotal", "total"],
|
|
492
|
+
relations: [
|
|
493
|
+
"region",
|
|
494
|
+
"payment",
|
|
495
|
+
"items",
|
|
496
|
+
"discounts",
|
|
497
|
+
"discounts.rule",
|
|
498
|
+
"gift_cards",
|
|
499
|
+
"shipping_methods",
|
|
500
|
+
],
|
|
501
|
+
})];
|
|
502
|
+
case 1:
|
|
503
|
+
cart = _r.sent();
|
|
504
|
+
if (cart.items.length === 0) {
|
|
505
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "Cannot create order from empty cart");
|
|
506
|
+
}
|
|
507
|
+
payment = cart.payment, region = cart.region, total = cart.total;
|
|
508
|
+
_r.label = 2;
|
|
509
|
+
case 2:
|
|
510
|
+
_r.trys.push([2, 12, 13, 14]);
|
|
511
|
+
_a = __values(cart.items), _b = _a.next();
|
|
512
|
+
_r.label = 3;
|
|
513
|
+
case 3:
|
|
514
|
+
if (!!_b.done) return [3 /*break*/, 11];
|
|
515
|
+
item = _b.value;
|
|
516
|
+
_r.label = 4;
|
|
517
|
+
case 4:
|
|
518
|
+
_r.trys.push([4, 6, , 10]);
|
|
519
|
+
return [4 /*yield*/, inventoryService.confirmInventory(item.variant_id, item.quantity)];
|
|
520
|
+
case 5:
|
|
521
|
+
_r.sent();
|
|
522
|
+
return [3 /*break*/, 10];
|
|
523
|
+
case 6:
|
|
524
|
+
err_1 = _r.sent();
|
|
525
|
+
if (!payment) return [3 /*break*/, 8];
|
|
526
|
+
return [4 /*yield*/, this.paymentProviderService_
|
|
527
|
+
.withTransaction(manager)
|
|
528
|
+
.cancelPayment(payment)];
|
|
529
|
+
case 7:
|
|
530
|
+
_r.sent();
|
|
531
|
+
_r.label = 8;
|
|
532
|
+
case 8: return [4 /*yield*/, cartService.update(cart.id, { payment_authorized_at: null })];
|
|
533
|
+
case 9:
|
|
534
|
+
_r.sent();
|
|
535
|
+
throw err_1;
|
|
536
|
+
case 10:
|
|
537
|
+
_b = _a.next();
|
|
538
|
+
return [3 /*break*/, 3];
|
|
539
|
+
case 11: return [3 /*break*/, 14];
|
|
540
|
+
case 12:
|
|
541
|
+
e_1_1 = _r.sent();
|
|
542
|
+
e_1 = { error: e_1_1 };
|
|
543
|
+
return [3 /*break*/, 14];
|
|
544
|
+
case 13:
|
|
545
|
+
try {
|
|
546
|
+
if (_b && !_b.done && (_l = _a.return)) _l.call(_a);
|
|
547
|
+
}
|
|
548
|
+
finally { if (e_1) throw e_1.error; }
|
|
549
|
+
return [7 /*endfinally*/];
|
|
550
|
+
case 14: return [4 /*yield*/, this.existsByCartId(cart.id)];
|
|
551
|
+
case 15:
|
|
552
|
+
exists = _r.sent();
|
|
553
|
+
if (exists) {
|
|
554
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.DUPLICATE_ERROR, "Order from cart already exists");
|
|
555
|
+
}
|
|
556
|
+
if (!(total !== 0)) return [3 /*break*/, 17];
|
|
557
|
+
// Throw if payment method does not exist
|
|
558
|
+
if (!payment) {
|
|
559
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_ARGUMENT, "Cart does not contain a payment method");
|
|
560
|
+
}
|
|
561
|
+
return [4 /*yield*/, this.paymentProviderService_
|
|
562
|
+
.withTransaction(manager)
|
|
563
|
+
.getStatus(payment)
|
|
564
|
+
// If payment status is not authorized, we throw
|
|
565
|
+
];
|
|
566
|
+
case 16:
|
|
567
|
+
paymentStatus = _r.sent();
|
|
615
568
|
// If payment status is not authorized, we throw
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
569
|
+
if (paymentStatus !== "authorized") {
|
|
570
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_ARGUMENT, "Payment method is not authorized");
|
|
571
|
+
}
|
|
572
|
+
_r.label = 17;
|
|
573
|
+
case 17:
|
|
574
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
575
|
+
toCreate = {
|
|
576
|
+
payment_status: "awaiting",
|
|
577
|
+
discounts: cart.discounts,
|
|
578
|
+
gift_cards: cart.gift_cards,
|
|
579
|
+
shipping_methods: cart.shipping_methods,
|
|
580
|
+
shipping_address_id: cart.shipping_address_id,
|
|
581
|
+
billing_address_id: cart.billing_address_id,
|
|
582
|
+
region_id: cart.region_id,
|
|
583
|
+
email: cart.email,
|
|
584
|
+
customer_id: cart.customer_id,
|
|
585
|
+
cart_id: cart.id,
|
|
586
|
+
currency_code: region.currency_code,
|
|
587
|
+
metadata: cart.metadata || {},
|
|
588
|
+
};
|
|
589
|
+
if (!(cart.type === "draft_order")) return [3 /*break*/, 19];
|
|
590
|
+
return [4 /*yield*/, this.draftOrderService_
|
|
591
|
+
.withTransaction(manager)
|
|
592
|
+
.retrieveByCartId(cart.id)];
|
|
593
|
+
case 18:
|
|
594
|
+
draft = _r.sent();
|
|
595
|
+
toCreate.draft_order_id = draft.id;
|
|
596
|
+
toCreate.no_notification = draft.no_notification_order;
|
|
597
|
+
_r.label = 19;
|
|
598
|
+
case 19:
|
|
599
|
+
o = orderRepo.create(toCreate);
|
|
600
|
+
return [4 /*yield*/, orderRepo.save(o)];
|
|
601
|
+
case 20:
|
|
602
|
+
result = _r.sent();
|
|
603
|
+
if (!(total !== 0 && payment)) return [3 /*break*/, 22];
|
|
604
|
+
return [4 /*yield*/, this.paymentProviderService_
|
|
605
|
+
.withTransaction(manager)
|
|
606
|
+
.updatePayment(payment.id, {
|
|
607
|
+
order_id: result.id,
|
|
608
|
+
})];
|
|
609
|
+
case 21:
|
|
610
|
+
_r.sent();
|
|
611
|
+
_r.label = 22;
|
|
612
|
+
case 22: return [4 /*yield*/, this.totalsService_.getGiftCardableAmount(cart)];
|
|
613
|
+
case 23:
|
|
614
|
+
gcBalance = _r.sent();
|
|
615
|
+
gcService = this.giftCardService_.withTransaction(manager);
|
|
616
|
+
_r.label = 24;
|
|
617
|
+
case 24:
|
|
618
|
+
_r.trys.push([24, 30, 31, 32]);
|
|
619
|
+
_c = __values(cart.gift_cards), _d = _c.next();
|
|
620
|
+
_r.label = 25;
|
|
621
|
+
case 25:
|
|
622
|
+
if (!!_d.done) return [3 /*break*/, 29];
|
|
623
|
+
g = _d.value;
|
|
624
|
+
newBalance = Math.max(0, g.balance - gcBalance);
|
|
625
|
+
usage = g.balance - newBalance;
|
|
626
|
+
return [4 /*yield*/, gcService.update(g.id, {
|
|
627
|
+
balance: newBalance,
|
|
628
|
+
is_disabled: newBalance === 0,
|
|
629
|
+
})];
|
|
630
|
+
case 26:
|
|
631
|
+
_r.sent();
|
|
632
|
+
return [4 /*yield*/, gcService.createTransaction({
|
|
633
|
+
gift_card_id: g.id,
|
|
634
|
+
order_id: result.id,
|
|
635
|
+
amount: usage,
|
|
636
|
+
is_taxable: cart.region.gift_cards_taxable,
|
|
637
|
+
tax_rate: cart.region.gift_cards_taxable
|
|
638
|
+
? cart.region.tax_rate
|
|
639
|
+
: null,
|
|
640
|
+
})];
|
|
641
|
+
case 27:
|
|
642
|
+
_r.sent();
|
|
643
|
+
gcBalance = gcBalance - usage;
|
|
644
|
+
_r.label = 28;
|
|
645
|
+
case 28:
|
|
646
|
+
_d = _c.next();
|
|
647
|
+
return [3 /*break*/, 25];
|
|
648
|
+
case 29: return [3 /*break*/, 32];
|
|
649
|
+
case 30:
|
|
650
|
+
e_2_1 = _r.sent();
|
|
651
|
+
e_2 = { error: e_2_1 };
|
|
652
|
+
return [3 /*break*/, 32];
|
|
653
|
+
case 31:
|
|
654
|
+
try {
|
|
655
|
+
if (_d && !_d.done && (_m = _c.return)) _m.call(_c);
|
|
656
|
+
}
|
|
657
|
+
finally { if (e_2) throw e_2.error; }
|
|
658
|
+
return [7 /*endfinally*/];
|
|
659
|
+
case 32:
|
|
660
|
+
_r.trys.push([32, 37, 38, 39]);
|
|
661
|
+
_e = __values(cart.shipping_methods), _f = _e.next();
|
|
662
|
+
_r.label = 33;
|
|
663
|
+
case 33:
|
|
664
|
+
if (!!_f.done) return [3 /*break*/, 36];
|
|
665
|
+
method = _f.value;
|
|
666
|
+
return [4 /*yield*/, this.shippingOptionService_
|
|
667
|
+
.withTransaction(manager)
|
|
668
|
+
.updateShippingMethod(method.id, { order_id: result.id })];
|
|
669
|
+
case 34:
|
|
670
|
+
_r.sent();
|
|
671
|
+
_r.label = 35;
|
|
672
|
+
case 35:
|
|
673
|
+
_f = _e.next();
|
|
674
|
+
return [3 /*break*/, 33];
|
|
675
|
+
case 36: return [3 /*break*/, 39];
|
|
676
|
+
case 37:
|
|
677
|
+
e_3_1 = _r.sent();
|
|
678
|
+
e_3 = { error: e_3_1 };
|
|
679
|
+
return [3 /*break*/, 39];
|
|
680
|
+
case 38:
|
|
681
|
+
try {
|
|
682
|
+
if (_f && !_f.done && (_o = _e.return)) _o.call(_e);
|
|
683
|
+
}
|
|
684
|
+
finally { if (e_3) throw e_3.error; }
|
|
685
|
+
return [7 /*endfinally*/];
|
|
686
|
+
case 39:
|
|
687
|
+
lineItemService = this.lineItemService_.withTransaction(manager);
|
|
688
|
+
_r.label = 40;
|
|
689
|
+
case 40:
|
|
690
|
+
_r.trys.push([40, 45, 46, 47]);
|
|
691
|
+
_g = __values(cart.items), _h = _g.next();
|
|
692
|
+
_r.label = 41;
|
|
693
|
+
case 41:
|
|
694
|
+
if (!!_h.done) return [3 /*break*/, 44];
|
|
695
|
+
item = _h.value;
|
|
696
|
+
return [4 /*yield*/, lineItemService.update(item.id, { order_id: result.id })];
|
|
697
|
+
case 42:
|
|
698
|
+
_r.sent();
|
|
699
|
+
_r.label = 43;
|
|
700
|
+
case 43:
|
|
701
|
+
_h = _g.next();
|
|
702
|
+
return [3 /*break*/, 41];
|
|
703
|
+
case 44: return [3 /*break*/, 47];
|
|
704
|
+
case 45:
|
|
705
|
+
e_4_1 = _r.sent();
|
|
706
|
+
e_4 = { error: e_4_1 };
|
|
707
|
+
return [3 /*break*/, 47];
|
|
708
|
+
case 46:
|
|
709
|
+
try {
|
|
710
|
+
if (_h && !_h.done && (_p = _g.return)) _p.call(_g);
|
|
711
|
+
}
|
|
712
|
+
finally { if (e_4) throw e_4.error; }
|
|
713
|
+
return [7 /*endfinally*/];
|
|
714
|
+
case 47:
|
|
715
|
+
_r.trys.push([47, 52, 53, 54]);
|
|
716
|
+
_j = __values(cart.items), _k = _j.next();
|
|
717
|
+
_r.label = 48;
|
|
718
|
+
case 48:
|
|
719
|
+
if (!!_k.done) return [3 /*break*/, 51];
|
|
720
|
+
item = _k.value;
|
|
721
|
+
return [4 /*yield*/, inventoryService.adjustInventory(item.variant_id, -item.quantity)];
|
|
722
|
+
case 49:
|
|
723
|
+
_r.sent();
|
|
724
|
+
_r.label = 50;
|
|
725
|
+
case 50:
|
|
726
|
+
_k = _j.next();
|
|
727
|
+
return [3 /*break*/, 48];
|
|
728
|
+
case 51: return [3 /*break*/, 54];
|
|
729
|
+
case 52:
|
|
730
|
+
e_5_1 = _r.sent();
|
|
731
|
+
e_5 = { error: e_5_1 };
|
|
732
|
+
return [3 /*break*/, 54];
|
|
733
|
+
case 53:
|
|
734
|
+
try {
|
|
735
|
+
if (_k && !_k.done && (_q = _j.return)) _q.call(_j);
|
|
736
|
+
}
|
|
737
|
+
finally { if (e_5) throw e_5.error; }
|
|
738
|
+
return [7 /*endfinally*/];
|
|
739
|
+
case 54: return [4 /*yield*/, this.eventBus_
|
|
656
740
|
.withTransaction(manager)
|
|
657
|
-
.
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
case 21:
|
|
661
|
-
_r.sent();
|
|
662
|
-
_r.label = 22;
|
|
663
|
-
case 22: return [4 /*yield*/, this.totalsService_.getGiftCardableAmount(cart)];
|
|
664
|
-
case 23:
|
|
665
|
-
gcBalance = _r.sent();
|
|
666
|
-
gcService = this.giftCardService_.withTransaction(manager);
|
|
667
|
-
_r.label = 24;
|
|
668
|
-
case 24:
|
|
669
|
-
_r.trys.push([24, 30, 31, 32]);
|
|
670
|
-
_c = __values(cart.gift_cards), _d = _c.next();
|
|
671
|
-
_r.label = 25;
|
|
672
|
-
case 25:
|
|
673
|
-
if (!!_d.done) return [3 /*break*/, 29];
|
|
674
|
-
g = _d.value;
|
|
675
|
-
newBalance = Math.max(0, g.balance - gcBalance);
|
|
676
|
-
usage = g.balance - newBalance;
|
|
677
|
-
return [4 /*yield*/, gcService.update(g.id, {
|
|
678
|
-
balance: newBalance,
|
|
679
|
-
disabled: newBalance === 0,
|
|
680
|
-
})];
|
|
681
|
-
case 26:
|
|
682
|
-
_r.sent();
|
|
683
|
-
return [4 /*yield*/, gcService.createTransaction({
|
|
684
|
-
gift_card_id: g.id,
|
|
685
|
-
order_id: result.id,
|
|
686
|
-
amount: usage,
|
|
687
|
-
is_taxable: cart.region.gift_cards_taxable,
|
|
688
|
-
tax_rate: cart.region.gift_cards_taxable
|
|
689
|
-
? cart.region.tax_rate
|
|
690
|
-
: null,
|
|
741
|
+
.emit(OrderService.Events.PLACED, {
|
|
742
|
+
id: result.id,
|
|
743
|
+
no_notification: result.no_notification,
|
|
691
744
|
})];
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
return [3 /*break*/, 32];
|
|
704
|
-
case 31:
|
|
705
|
-
try {
|
|
706
|
-
if (_d && !_d.done && (_m = _c.return)) _m.call(_c);
|
|
707
|
-
}
|
|
708
|
-
finally { if (e_2) throw e_2.error; }
|
|
709
|
-
return [7 /*endfinally*/];
|
|
710
|
-
case 32:
|
|
711
|
-
_r.trys.push([32, 37, 38, 39]);
|
|
712
|
-
_e = __values(cart.shipping_methods), _f = _e.next();
|
|
713
|
-
_r.label = 33;
|
|
714
|
-
case 33:
|
|
715
|
-
if (!!_f.done) return [3 /*break*/, 36];
|
|
716
|
-
method = _f.value;
|
|
717
|
-
return [4 /*yield*/, this.shippingOptionService_
|
|
718
|
-
.withTransaction(manager)
|
|
719
|
-
.updateShippingMethod(method.id, { order_id: result.id })];
|
|
720
|
-
case 34:
|
|
721
|
-
_r.sent();
|
|
722
|
-
_r.label = 35;
|
|
723
|
-
case 35:
|
|
724
|
-
_f = _e.next();
|
|
725
|
-
return [3 /*break*/, 33];
|
|
726
|
-
case 36: return [3 /*break*/, 39];
|
|
727
|
-
case 37:
|
|
728
|
-
e_3_1 = _r.sent();
|
|
729
|
-
e_3 = { error: e_3_1 };
|
|
730
|
-
return [3 /*break*/, 39];
|
|
731
|
-
case 38:
|
|
732
|
-
try {
|
|
733
|
-
if (_f && !_f.done && (_o = _e.return)) _o.call(_e);
|
|
734
|
-
}
|
|
735
|
-
finally { if (e_3) throw e_3.error; }
|
|
736
|
-
return [7 /*endfinally*/];
|
|
737
|
-
case 39:
|
|
738
|
-
lineItemService = this.lineItemService_.withTransaction(manager);
|
|
739
|
-
_r.label = 40;
|
|
740
|
-
case 40:
|
|
741
|
-
_r.trys.push([40, 45, 46, 47]);
|
|
742
|
-
_g = __values(cart.items), _h = _g.next();
|
|
743
|
-
_r.label = 41;
|
|
744
|
-
case 41:
|
|
745
|
-
if (!!_h.done) return [3 /*break*/, 44];
|
|
746
|
-
item = _h.value;
|
|
747
|
-
return [4 /*yield*/, lineItemService.update(item.id, { order_id: result.id })];
|
|
748
|
-
case 42:
|
|
749
|
-
_r.sent();
|
|
750
|
-
_r.label = 43;
|
|
751
|
-
case 43:
|
|
752
|
-
_h = _g.next();
|
|
753
|
-
return [3 /*break*/, 41];
|
|
754
|
-
case 44: return [3 /*break*/, 47];
|
|
755
|
-
case 45:
|
|
756
|
-
e_4_1 = _r.sent();
|
|
757
|
-
e_4 = { error: e_4_1 };
|
|
758
|
-
return [3 /*break*/, 47];
|
|
759
|
-
case 46:
|
|
760
|
-
try {
|
|
761
|
-
if (_h && !_h.done && (_p = _g.return)) _p.call(_g);
|
|
762
|
-
}
|
|
763
|
-
finally { if (e_4) throw e_4.error; }
|
|
764
|
-
return [7 /*endfinally*/];
|
|
765
|
-
case 47:
|
|
766
|
-
_r.trys.push([47, 52, 53, 54]);
|
|
767
|
-
_j = __values(cart.items), _k = _j.next();
|
|
768
|
-
_r.label = 48;
|
|
769
|
-
case 48:
|
|
770
|
-
if (!!_k.done) return [3 /*break*/, 51];
|
|
771
|
-
item = _k.value;
|
|
772
|
-
return [4 /*yield*/, inventoryService.adjustInventory(item.variant_id, -item.quantity)];
|
|
773
|
-
case 49:
|
|
774
|
-
_r.sent();
|
|
775
|
-
_r.label = 50;
|
|
776
|
-
case 50:
|
|
777
|
-
_k = _j.next();
|
|
778
|
-
return [3 /*break*/, 48];
|
|
779
|
-
case 51: return [3 /*break*/, 54];
|
|
780
|
-
case 52:
|
|
781
|
-
e_5_1 = _r.sent();
|
|
782
|
-
e_5 = { error: e_5_1 };
|
|
783
|
-
return [3 /*break*/, 54];
|
|
784
|
-
case 53:
|
|
785
|
-
try {
|
|
786
|
-
if (_k && !_k.done && (_q = _j.return)) _q.call(_j);
|
|
787
|
-
}
|
|
788
|
-
finally { if (e_5) throw e_5.error; }
|
|
789
|
-
return [7 /*endfinally*/];
|
|
790
|
-
case 54: return [4 /*yield*/, this.eventBus_
|
|
791
|
-
.withTransaction(manager)
|
|
792
|
-
.emit(OrderService.Events.PLACED, {
|
|
793
|
-
id: result.id,
|
|
794
|
-
no_notification: result.no_notification,
|
|
795
|
-
})];
|
|
796
|
-
case 55:
|
|
797
|
-
_r.sent();
|
|
798
|
-
return [4 /*yield*/, cartService.update(cart.id, { completed_at: new Date() })];
|
|
799
|
-
case 56:
|
|
800
|
-
_r.sent();
|
|
801
|
-
return [2 /*return*/, result];
|
|
802
|
-
}
|
|
803
|
-
});
|
|
804
|
-
}); })];
|
|
745
|
+
case 55:
|
|
746
|
+
_r.sent();
|
|
747
|
+
return [4 /*yield*/, cartService.update(cart.id, { completed_at: new Date() })];
|
|
748
|
+
case 56:
|
|
749
|
+
_r.sent();
|
|
750
|
+
return [2 /*return*/, result];
|
|
751
|
+
}
|
|
752
|
+
});
|
|
753
|
+
}); })];
|
|
754
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
755
|
+
}
|
|
805
756
|
});
|
|
806
757
|
});
|
|
807
758
|
};
|
|
@@ -809,14 +760,12 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
809
760
|
* Adds a shipment to the order to indicate that an order has left the
|
|
810
761
|
* warehouse. Will ask the fulfillment provider for any documents that may
|
|
811
762
|
* have been created in regards to the shipment.
|
|
812
|
-
* @param
|
|
813
|
-
* @param
|
|
814
|
-
* @param
|
|
763
|
+
* @param orderId - the id of the order that has been shipped
|
|
764
|
+
* @param fulfillmentId - the fulfillment that has now been shipped
|
|
765
|
+
* @param trackingLinks - array of tracking numebers
|
|
815
766
|
* associated with the shipment
|
|
816
|
-
* @param
|
|
817
|
-
* @
|
|
818
|
-
* the fulfillment
|
|
819
|
-
* @return {order} the resulting order following the update.
|
|
767
|
+
* @param config - the config of the order that has been shipped
|
|
768
|
+
* @return the resulting order following the update.
|
|
820
769
|
*/
|
|
821
770
|
OrderService.prototype.createShipment = function (orderId, fulfillmentId, trackingLinks, config) {
|
|
822
771
|
if (config === void 0) { config = {
|
|
@@ -827,187 +776,162 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
827
776
|
var metadata, no_notification;
|
|
828
777
|
var _this = this;
|
|
829
778
|
return __generator(this, function (_a) {
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
779
|
+
switch (_a.label) {
|
|
780
|
+
case 0:
|
|
781
|
+
metadata = config.metadata, no_notification = config.no_notification;
|
|
782
|
+
return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
783
|
+
var order, shipment, evaluatedNoNotification, shipmentRes, _loop_1, this_1, _a, _b, item, e_6_1, orderRepo, result;
|
|
784
|
+
var e_6, _c;
|
|
785
|
+
return __generator(this, function (_d) {
|
|
786
|
+
switch (_d.label) {
|
|
787
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId, { relations: ["items"] })];
|
|
788
|
+
case 1:
|
|
789
|
+
order = _d.sent();
|
|
790
|
+
return [4 /*yield*/, this.fulfillmentService_
|
|
791
|
+
.withTransaction(manager)
|
|
792
|
+
.retrieve(fulfillmentId)];
|
|
793
|
+
case 2:
|
|
794
|
+
shipment = _d.sent();
|
|
795
|
+
if (order.status === "canceled") {
|
|
796
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot be fulfilled as shipped");
|
|
797
|
+
}
|
|
798
|
+
if (!shipment || shipment.order_id !== orderId) {
|
|
799
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Could not find fulfillment");
|
|
800
|
+
}
|
|
801
|
+
evaluatedNoNotification = no_notification !== undefined
|
|
802
|
+
? no_notification
|
|
803
|
+
: shipment.no_notification;
|
|
804
|
+
return [4 /*yield*/, this.fulfillmentService_
|
|
805
|
+
.withTransaction(manager)
|
|
806
|
+
.createShipment(fulfillmentId, trackingLinks, {
|
|
807
|
+
metadata: metadata,
|
|
808
|
+
no_notification: evaluatedNoNotification,
|
|
809
|
+
})];
|
|
810
|
+
case 3:
|
|
811
|
+
shipmentRes = _d.sent();
|
|
812
|
+
order.fulfillment_status = models_1.FulfillmentStatus.SHIPPED;
|
|
813
|
+
_loop_1 = function (item) {
|
|
814
|
+
var shipped, shippedQty;
|
|
815
|
+
return __generator(this, function (_e) {
|
|
816
|
+
switch (_e.label) {
|
|
817
|
+
case 0:
|
|
818
|
+
shipped = shipmentRes.items.find(function (si) { return si.item_id === item.id; });
|
|
819
|
+
if (!shipped) return [3 /*break*/, 2];
|
|
820
|
+
shippedQty = (item.shipped_quantity || 0) + shipped.quantity;
|
|
821
|
+
if (shippedQty !== item.quantity) {
|
|
822
|
+
order.fulfillment_status = models_1.FulfillmentStatus.PARTIALLY_SHIPPED;
|
|
823
|
+
}
|
|
824
|
+
return [4 /*yield*/, this_1.lineItemService_.withTransaction(manager).update(item.id, {
|
|
825
|
+
shipped_quantity: shippedQty,
|
|
826
|
+
})];
|
|
827
|
+
case 1:
|
|
828
|
+
_e.sent();
|
|
829
|
+
return [3 /*break*/, 3];
|
|
830
|
+
case 2:
|
|
831
|
+
if (item.shipped_quantity !== item.quantity) {
|
|
832
|
+
order.fulfillment_status = models_1.FulfillmentStatus.PARTIALLY_SHIPPED;
|
|
833
|
+
}
|
|
834
|
+
_e.label = 3;
|
|
835
|
+
case 3: return [2 /*return*/];
|
|
880
836
|
}
|
|
881
|
-
|
|
882
|
-
|
|
837
|
+
});
|
|
838
|
+
};
|
|
839
|
+
this_1 = this;
|
|
840
|
+
_d.label = 4;
|
|
841
|
+
case 4:
|
|
842
|
+
_d.trys.push([4, 9, 10, 11]);
|
|
843
|
+
_a = __values(order.items), _b = _a.next();
|
|
844
|
+
_d.label = 5;
|
|
845
|
+
case 5:
|
|
846
|
+
if (!!_b.done) return [3 /*break*/, 8];
|
|
847
|
+
item = _b.value;
|
|
848
|
+
return [5 /*yield**/, _loop_1(item)];
|
|
849
|
+
case 6:
|
|
850
|
+
_d.sent();
|
|
851
|
+
_d.label = 7;
|
|
852
|
+
case 7:
|
|
853
|
+
_b = _a.next();
|
|
854
|
+
return [3 /*break*/, 5];
|
|
855
|
+
case 8: return [3 /*break*/, 11];
|
|
856
|
+
case 9:
|
|
857
|
+
e_6_1 = _d.sent();
|
|
858
|
+
e_6 = { error: e_6_1 };
|
|
859
|
+
return [3 /*break*/, 11];
|
|
860
|
+
case 10:
|
|
861
|
+
try {
|
|
862
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
883
863
|
}
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
return [3 /*break*/, 5];
|
|
902
|
-
case 8: return [3 /*break*/, 11];
|
|
903
|
-
case 9:
|
|
904
|
-
e_6_1 = _d.sent();
|
|
905
|
-
e_6 = { error: e_6_1 };
|
|
906
|
-
return [3 /*break*/, 11];
|
|
907
|
-
case 10:
|
|
908
|
-
try {
|
|
909
|
-
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
864
|
+
finally { if (e_6) throw e_6.error; }
|
|
865
|
+
return [7 /*endfinally*/];
|
|
866
|
+
case 11:
|
|
867
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
868
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
869
|
+
case 12:
|
|
870
|
+
result = _d.sent();
|
|
871
|
+
return [4 /*yield*/, this.eventBus_
|
|
872
|
+
.withTransaction(manager)
|
|
873
|
+
.emit(OrderService.Events.SHIPMENT_CREATED, {
|
|
874
|
+
id: orderId,
|
|
875
|
+
fulfillment_id: shipmentRes.id,
|
|
876
|
+
no_notification: evaluatedNoNotification,
|
|
877
|
+
})];
|
|
878
|
+
case 13:
|
|
879
|
+
_d.sent();
|
|
880
|
+
return [2 /*return*/, result];
|
|
910
881
|
}
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
return [4 /*yield*/, orderRepo.save(order)];
|
|
916
|
-
case 12:
|
|
917
|
-
result = _d.sent();
|
|
918
|
-
return [4 /*yield*/, this.eventBus_
|
|
919
|
-
.withTransaction(manager)
|
|
920
|
-
.emit(OrderService.Events.SHIPMENT_CREATED, {
|
|
921
|
-
id: orderId,
|
|
922
|
-
fulfillment_id: shipmentRes.id,
|
|
923
|
-
no_notification: evaluatedNoNotification,
|
|
924
|
-
})];
|
|
925
|
-
case 13:
|
|
926
|
-
_d.sent();
|
|
927
|
-
return [2 /*return*/, result];
|
|
928
|
-
}
|
|
929
|
-
});
|
|
930
|
-
}); })];
|
|
931
|
-
});
|
|
932
|
-
});
|
|
933
|
-
};
|
|
934
|
-
/**
|
|
935
|
-
* Creates an order
|
|
936
|
-
* @param {object} data - the data to create an order
|
|
937
|
-
* @return {Promise} resolves to the creation result.
|
|
938
|
-
*/
|
|
939
|
-
OrderService.prototype.create = function (data) {
|
|
940
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
941
|
-
var _this = this;
|
|
942
|
-
return __generator(this, function (_a) {
|
|
943
|
-
return [2 /*return*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
944
|
-
var orderRepo, order, result;
|
|
945
|
-
return __generator(this, function (_a) {
|
|
946
|
-
switch (_a.label) {
|
|
947
|
-
case 0:
|
|
948
|
-
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
949
|
-
order = orderRepo.create(data);
|
|
950
|
-
return [4 /*yield*/, orderRepo.save(order)];
|
|
951
|
-
case 1:
|
|
952
|
-
result = _a.sent();
|
|
953
|
-
return [4 /*yield*/, this.eventBus_
|
|
954
|
-
.withTransaction(manager)
|
|
955
|
-
.emit(OrderService.Events.PLACED, {
|
|
956
|
-
id: result.id,
|
|
957
|
-
no_notification: order.no_notification,
|
|
958
|
-
})];
|
|
959
|
-
case 2:
|
|
960
|
-
_a.sent();
|
|
961
|
-
return [2 /*return*/, result];
|
|
962
|
-
}
|
|
963
|
-
});
|
|
964
|
-
}); })];
|
|
882
|
+
});
|
|
883
|
+
}); })];
|
|
884
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
885
|
+
}
|
|
965
886
|
});
|
|
966
887
|
});
|
|
967
888
|
};
|
|
968
889
|
/**
|
|
969
890
|
* Updates the order's billing address.
|
|
970
|
-
* @param
|
|
971
|
-
* @param
|
|
972
|
-
* @return
|
|
891
|
+
* @param order - the order to update
|
|
892
|
+
* @param address - the value to set the billing address to
|
|
893
|
+
* @return the result of the update operation
|
|
973
894
|
*/
|
|
974
|
-
OrderService.prototype.
|
|
895
|
+
OrderService.prototype.updateBillingAddress = function (order, address) {
|
|
896
|
+
var _a, _b, _c, _d;
|
|
975
897
|
return __awaiter(this, void 0, void 0, function () {
|
|
976
898
|
var addrRepo, region, addr, created;
|
|
977
|
-
return __generator(this, function (
|
|
978
|
-
switch (
|
|
899
|
+
return __generator(this, function (_e) {
|
|
900
|
+
switch (_e.label) {
|
|
979
901
|
case 0:
|
|
980
902
|
addrRepo = this.manager_.getCustomRepository(this.addressRepository_);
|
|
981
|
-
address.country_code = address.country_code.toLowerCase();
|
|
982
|
-
return [4 /*yield*/, this.regionService_
|
|
903
|
+
address.country_code = (_b = (_a = address.country_code) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : null;
|
|
904
|
+
return [4 /*yield*/, this.regionService_
|
|
905
|
+
.withTransaction(this.manager_)
|
|
906
|
+
.retrieve(order.region_id, {
|
|
983
907
|
relations: ["countries"],
|
|
984
908
|
})];
|
|
985
909
|
case 1:
|
|
986
|
-
region =
|
|
910
|
+
region = _e.sent();
|
|
987
911
|
if (!region.countries.find(function (_a) {
|
|
988
912
|
var iso_2 = _a.iso_2;
|
|
989
913
|
return address.country_code === iso_2;
|
|
990
914
|
})) {
|
|
991
915
|
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "Shipping country must be in the order region");
|
|
992
916
|
}
|
|
993
|
-
address.country_code = address.country_code.toLowerCase();
|
|
917
|
+
address.country_code = (_d = (_c = address.country_code) === null || _c === void 0 ? void 0 : _c.toLowerCase()) !== null && _d !== void 0 ? _d : null;
|
|
994
918
|
if (!order.billing_address_id) return [3 /*break*/, 4];
|
|
995
919
|
return [4 /*yield*/, addrRepo.findOne({
|
|
996
920
|
where: { id: order.billing_address_id },
|
|
997
921
|
})];
|
|
998
922
|
case 2:
|
|
999
|
-
addr =
|
|
923
|
+
addr = _e.sent();
|
|
1000
924
|
return [4 /*yield*/, addrRepo.save(__assign(__assign({}, addr), address))];
|
|
1001
925
|
case 3:
|
|
1002
|
-
|
|
926
|
+
_e.sent();
|
|
1003
927
|
return [3 /*break*/, 7];
|
|
1004
928
|
case 4: return [4 /*yield*/, addrRepo.create(__assign({}, address))];
|
|
1005
929
|
case 5:
|
|
1006
|
-
created =
|
|
930
|
+
created = _e.sent();
|
|
1007
931
|
return [4 /*yield*/, addrRepo.save(created)];
|
|
1008
932
|
case 6:
|
|
1009
|
-
|
|
1010
|
-
|
|
933
|
+
_e.sent();
|
|
934
|
+
_e.label = 7;
|
|
1011
935
|
case 7: return [2 /*return*/];
|
|
1012
936
|
}
|
|
1013
937
|
});
|
|
@@ -1015,23 +939,26 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1015
939
|
};
|
|
1016
940
|
/**
|
|
1017
941
|
* Updates the order's shipping address.
|
|
1018
|
-
* @param
|
|
1019
|
-
* @param
|
|
1020
|
-
* @return
|
|
942
|
+
* @param order - the order to update
|
|
943
|
+
* @param address - the value to set the shipping address to
|
|
944
|
+
* @return the result of the update operation
|
|
1021
945
|
*/
|
|
1022
|
-
OrderService.prototype.
|
|
946
|
+
OrderService.prototype.updateShippingAddress = function (order, address) {
|
|
947
|
+
var _a, _b;
|
|
1023
948
|
return __awaiter(this, void 0, void 0, function () {
|
|
1024
949
|
var addrRepo, region, addr, created;
|
|
1025
|
-
return __generator(this, function (
|
|
1026
|
-
switch (
|
|
950
|
+
return __generator(this, function (_c) {
|
|
951
|
+
switch (_c.label) {
|
|
1027
952
|
case 0:
|
|
1028
953
|
addrRepo = this.manager_.getCustomRepository(this.addressRepository_);
|
|
1029
|
-
address.country_code = address.country_code.toLowerCase();
|
|
1030
|
-
return [4 /*yield*/, this.regionService_
|
|
954
|
+
address.country_code = (_b = (_a = address.country_code) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : null;
|
|
955
|
+
return [4 /*yield*/, this.regionService_
|
|
956
|
+
.withTransaction(this.manager_)
|
|
957
|
+
.retrieve(order.region_id, {
|
|
1031
958
|
relations: ["countries"],
|
|
1032
959
|
})];
|
|
1033
960
|
case 1:
|
|
1034
|
-
region =
|
|
961
|
+
region = _c.sent();
|
|
1035
962
|
if (!region.countries.find(function (_a) {
|
|
1036
963
|
var iso_2 = _a.iso_2;
|
|
1037
964
|
return address.country_code === iso_2;
|
|
@@ -1043,17 +970,17 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1043
970
|
where: { id: order.shipping_address_id },
|
|
1044
971
|
})];
|
|
1045
972
|
case 2:
|
|
1046
|
-
addr =
|
|
973
|
+
addr = _c.sent();
|
|
1047
974
|
return [4 /*yield*/, addrRepo.save(__assign(__assign({}, addr), address))];
|
|
1048
975
|
case 3:
|
|
1049
|
-
|
|
976
|
+
_c.sent();
|
|
1050
977
|
return [3 /*break*/, 6];
|
|
1051
978
|
case 4:
|
|
1052
979
|
created = addrRepo.create(__assign({}, address));
|
|
1053
980
|
return [4 /*yield*/, addrRepo.save(created)];
|
|
1054
981
|
case 5:
|
|
1055
|
-
|
|
1056
|
-
|
|
982
|
+
_c.sent();
|
|
983
|
+
_c.label = 6;
|
|
1057
984
|
case 6: return [2 /*return*/];
|
|
1058
985
|
}
|
|
1059
986
|
});
|
|
@@ -1064,79 +991,82 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1064
991
|
return __awaiter(this, void 0, void 0, function () {
|
|
1065
992
|
var _this = this;
|
|
1066
993
|
return __generator(this, function (_a) {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
994
|
+
switch (_a.label) {
|
|
995
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
996
|
+
var order, shipping_methods, newMethod, methods, shipping_methods_1, shipping_methods_1_1, sm, e_7_1, result;
|
|
997
|
+
var e_7, _a;
|
|
998
|
+
return __generator(this, function (_b) {
|
|
999
|
+
switch (_b.label) {
|
|
1000
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId, {
|
|
1001
|
+
select: ["subtotal"],
|
|
1002
|
+
relations: [
|
|
1003
|
+
"shipping_methods",
|
|
1004
|
+
"shipping_methods.shipping_option",
|
|
1005
|
+
"items",
|
|
1006
|
+
"items.variant",
|
|
1007
|
+
"items.variant.product",
|
|
1008
|
+
],
|
|
1009
|
+
})];
|
|
1010
|
+
case 1:
|
|
1011
|
+
order = _b.sent();
|
|
1012
|
+
shipping_methods = order.shipping_methods;
|
|
1013
|
+
if (order.status === "canceled") {
|
|
1014
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A shipping method cannot be added to a canceled order");
|
|
1015
|
+
}
|
|
1016
|
+
return [4 /*yield*/, this.shippingOptionService_
|
|
1017
|
+
.withTransaction(manager)
|
|
1018
|
+
.createShippingMethod(optionId, data !== null && data !== void 0 ? data : {}, __assign({ order: order }, config))];
|
|
1019
|
+
case 2:
|
|
1020
|
+
newMethod = _b.sent();
|
|
1021
|
+
methods = [newMethod];
|
|
1022
|
+
if (!shipping_methods.length) return [3 /*break*/, 11];
|
|
1023
|
+
_b.label = 3;
|
|
1024
|
+
case 3:
|
|
1025
|
+
_b.trys.push([3, 9, 10, 11]);
|
|
1026
|
+
shipping_methods_1 = __values(shipping_methods), shipping_methods_1_1 = shipping_methods_1.next();
|
|
1027
|
+
_b.label = 4;
|
|
1028
|
+
case 4:
|
|
1029
|
+
if (!!shipping_methods_1_1.done) return [3 /*break*/, 8];
|
|
1030
|
+
sm = shipping_methods_1_1.value;
|
|
1031
|
+
if (!(sm.shipping_option.profile_id ===
|
|
1032
|
+
newMethod.shipping_option.profile_id)) return [3 /*break*/, 6];
|
|
1033
|
+
return [4 /*yield*/, this.shippingOptionService_
|
|
1034
|
+
.withTransaction(manager)
|
|
1035
|
+
.deleteShippingMethods(sm)];
|
|
1036
|
+
case 5:
|
|
1037
|
+
_b.sent();
|
|
1038
|
+
return [3 /*break*/, 7];
|
|
1039
|
+
case 6:
|
|
1040
|
+
methods.push(sm);
|
|
1041
|
+
_b.label = 7;
|
|
1042
|
+
case 7:
|
|
1043
|
+
shipping_methods_1_1 = shipping_methods_1.next();
|
|
1044
|
+
return [3 /*break*/, 4];
|
|
1045
|
+
case 8: return [3 /*break*/, 11];
|
|
1046
|
+
case 9:
|
|
1047
|
+
e_7_1 = _b.sent();
|
|
1048
|
+
e_7 = { error: e_7_1 };
|
|
1049
|
+
return [3 /*break*/, 11];
|
|
1050
|
+
case 10:
|
|
1051
|
+
try {
|
|
1052
|
+
if (shipping_methods_1_1 && !shipping_methods_1_1.done && (_a = shipping_methods_1.return)) _a.call(shipping_methods_1);
|
|
1053
|
+
}
|
|
1054
|
+
finally { if (e_7) throw e_7.error; }
|
|
1055
|
+
return [7 /*endfinally*/];
|
|
1056
|
+
case 11: return [4 /*yield*/, this.retrieve(orderId)];
|
|
1057
|
+
case 12:
|
|
1058
|
+
result = _b.sent();
|
|
1059
|
+
return [4 /*yield*/, this.eventBus_
|
|
1060
|
+
.withTransaction(manager)
|
|
1061
|
+
.emit(OrderService.Events.UPDATED, { id: result.id })];
|
|
1062
|
+
case 13:
|
|
1063
|
+
_b.sent();
|
|
1064
|
+
return [2 /*return*/, result];
|
|
1065
|
+
}
|
|
1066
|
+
});
|
|
1067
|
+
}); })];
|
|
1068
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1069
|
+
}
|
|
1140
1070
|
});
|
|
1141
1071
|
});
|
|
1142
1072
|
};
|
|
@@ -1144,111 +1074,114 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1144
1074
|
* Updates an order. Metadata updates should
|
|
1145
1075
|
* use dedicated method, e.g. `setMetadata` etc. The function
|
|
1146
1076
|
* will throw errors if metadata updates are attempted.
|
|
1147
|
-
* @param
|
|
1077
|
+
* @param orderId - the id of the order. Must be a string that
|
|
1148
1078
|
* can be casted to an ObjectId
|
|
1149
|
-
* @param
|
|
1150
|
-
* @return
|
|
1079
|
+
* @param update - an object with the update values.
|
|
1080
|
+
* @return resolves to the update result.
|
|
1151
1081
|
*/
|
|
1152
1082
|
OrderService.prototype.update = function (orderId, update) {
|
|
1153
1083
|
return __awaiter(this, void 0, void 0, function () {
|
|
1154
1084
|
var _this = this;
|
|
1155
1085
|
return __generator(this, function (_a) {
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
if ((update.payment || update.items) &&
|
|
1168
|
-
(order.fulfillment_status !== "not_fulfilled" ||
|
|
1169
|
-
order.payment_status !== "awaiting" ||
|
|
1170
|
-
order.status !== "pending")) {
|
|
1171
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Can't update shipping, billing, items and payment method when order is processed");
|
|
1172
|
-
}
|
|
1173
|
-
if (update.status || update.fulfillment_status || update.payment_status) {
|
|
1174
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Can't update order statuses. This will happen automatically. Use metadata in order for additional statuses");
|
|
1175
|
-
}
|
|
1176
|
-
metadata = update.metadata, shipping_address = update.shipping_address, billing_address = update.billing_address, no_notification = update.no_notification, items = update.items, rest = __rest(update, ["metadata", "shipping_address", "billing_address", "no_notification", "items"]);
|
|
1177
|
-
if (update.metadata) {
|
|
1178
|
-
order.metadata = this.setMetadata_(order, metadata);
|
|
1179
|
-
}
|
|
1180
|
-
if (!update.shipping_address) return [3 /*break*/, 3];
|
|
1181
|
-
return [4 /*yield*/, this.updateShippingAddress_(order, shipping_address)];
|
|
1182
|
-
case 2:
|
|
1183
|
-
_f.sent();
|
|
1184
|
-
_f.label = 3;
|
|
1185
|
-
case 3:
|
|
1186
|
-
if (!update.billing_address) return [3 /*break*/, 5];
|
|
1187
|
-
return [4 /*yield*/, this.updateBillingAddress_(order, billing_address)];
|
|
1188
|
-
case 4:
|
|
1189
|
-
_f.sent();
|
|
1190
|
-
_f.label = 5;
|
|
1191
|
-
case 5:
|
|
1192
|
-
if (update.no_notification) {
|
|
1193
|
-
order.no_notification = no_notification;
|
|
1194
|
-
}
|
|
1195
|
-
if (!update.items) return [3 /*break*/, 13];
|
|
1196
|
-
_f.label = 6;
|
|
1197
|
-
case 6:
|
|
1198
|
-
_f.trys.push([6, 11, 12, 13]);
|
|
1199
|
-
items_1 = __values(items), items_1_1 = items_1.next();
|
|
1200
|
-
_f.label = 7;
|
|
1201
|
-
case 7:
|
|
1202
|
-
if (!!items_1_1.done) return [3 /*break*/, 10];
|
|
1203
|
-
item = items_1_1.value;
|
|
1204
|
-
return [4 /*yield*/, this.lineItemService_.withTransaction(manager).create(__assign(__assign({}, item), { order_id: orderId }))];
|
|
1205
|
-
case 8:
|
|
1206
|
-
_f.sent();
|
|
1207
|
-
_f.label = 9;
|
|
1208
|
-
case 9:
|
|
1209
|
-
items_1_1 = items_1.next();
|
|
1210
|
-
return [3 /*break*/, 7];
|
|
1211
|
-
case 10: return [3 /*break*/, 13];
|
|
1212
|
-
case 11:
|
|
1213
|
-
e_8_1 = _f.sent();
|
|
1214
|
-
e_8 = { error: e_8_1 };
|
|
1215
|
-
return [3 /*break*/, 13];
|
|
1216
|
-
case 12:
|
|
1217
|
-
try {
|
|
1218
|
-
if (items_1_1 && !items_1_1.done && (_d = items_1.return)) _d.call(items_1);
|
|
1219
|
-
}
|
|
1220
|
-
finally { if (e_8) throw e_8.error; }
|
|
1221
|
-
return [7 /*endfinally*/];
|
|
1222
|
-
case 13:
|
|
1223
|
-
try {
|
|
1224
|
-
for (_a = __values(Object.entries(rest)), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
1225
|
-
_c = __read(_b.value, 2), key = _c[0], value = _c[1];
|
|
1226
|
-
order[key] = value;
|
|
1086
|
+
switch (_a.label) {
|
|
1087
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1088
|
+
var order, metadata, shipping_address, billing_address, no_notification, items, rest, _a, _b, item, e_8_1, _c, _d, _e, key, value, orderRepo, result;
|
|
1089
|
+
var e_8, _f, e_9, _g;
|
|
1090
|
+
return __generator(this, function (_h) {
|
|
1091
|
+
switch (_h.label) {
|
|
1092
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId)];
|
|
1093
|
+
case 1:
|
|
1094
|
+
order = _h.sent();
|
|
1095
|
+
if (order.status === "canceled") {
|
|
1096
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot be updated");
|
|
1227
1097
|
}
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1098
|
+
if ((update.payment || update.items) &&
|
|
1099
|
+
(order.fulfillment_status !== "not_fulfilled" ||
|
|
1100
|
+
order.payment_status !== "awaiting" ||
|
|
1101
|
+
order.status !== "pending")) {
|
|
1102
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Can't update shipping, billing, items and payment method when order is processed");
|
|
1103
|
+
}
|
|
1104
|
+
if (update.status || update.fulfillment_status || update.payment_status) {
|
|
1105
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Can't update order statuses. This will happen automatically. Use metadata in order for additional statuses");
|
|
1106
|
+
}
|
|
1107
|
+
metadata = update.metadata, shipping_address = update.shipping_address, billing_address = update.billing_address, no_notification = update.no_notification, items = update.items, rest = __rest(update, ["metadata", "shipping_address", "billing_address", "no_notification", "items"]);
|
|
1108
|
+
if (update.metadata) {
|
|
1109
|
+
order.metadata = (0, utils_1.setMetadata)(order, metadata !== null && metadata !== void 0 ? metadata : {});
|
|
1110
|
+
}
|
|
1111
|
+
if (!update.shipping_address) return [3 /*break*/, 3];
|
|
1112
|
+
return [4 /*yield*/, this.updateShippingAddress(order, shipping_address)];
|
|
1113
|
+
case 2:
|
|
1114
|
+
_h.sent();
|
|
1115
|
+
_h.label = 3;
|
|
1116
|
+
case 3:
|
|
1117
|
+
if (!update.billing_address) return [3 /*break*/, 5];
|
|
1118
|
+
return [4 /*yield*/, this.updateBillingAddress(order, billing_address)];
|
|
1119
|
+
case 4:
|
|
1120
|
+
_h.sent();
|
|
1121
|
+
_h.label = 5;
|
|
1122
|
+
case 5:
|
|
1123
|
+
if (update.no_notification) {
|
|
1124
|
+
order.no_notification = no_notification !== null && no_notification !== void 0 ? no_notification : false;
|
|
1125
|
+
}
|
|
1126
|
+
if (!update.items) return [3 /*break*/, 13];
|
|
1127
|
+
_h.label = 6;
|
|
1128
|
+
case 6:
|
|
1129
|
+
_h.trys.push([6, 11, 12, 13]);
|
|
1130
|
+
_a = __values(items), _b = _a.next();
|
|
1131
|
+
_h.label = 7;
|
|
1132
|
+
case 7:
|
|
1133
|
+
if (!!_b.done) return [3 /*break*/, 10];
|
|
1134
|
+
item = _b.value;
|
|
1135
|
+
return [4 /*yield*/, this.lineItemService_.withTransaction(manager).create(__assign(__assign({}, item), { order_id: orderId }))];
|
|
1136
|
+
case 8:
|
|
1137
|
+
_h.sent();
|
|
1138
|
+
_h.label = 9;
|
|
1139
|
+
case 9:
|
|
1140
|
+
_b = _a.next();
|
|
1141
|
+
return [3 /*break*/, 7];
|
|
1142
|
+
case 10: return [3 /*break*/, 13];
|
|
1143
|
+
case 11:
|
|
1144
|
+
e_8_1 = _h.sent();
|
|
1145
|
+
e_8 = { error: e_8_1 };
|
|
1146
|
+
return [3 /*break*/, 13];
|
|
1147
|
+
case 12:
|
|
1231
1148
|
try {
|
|
1232
|
-
if (_b && !_b.done && (
|
|
1149
|
+
if (_b && !_b.done && (_f = _a.return)) _f.call(_a);
|
|
1233
1150
|
}
|
|
1234
|
-
finally { if (
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1151
|
+
finally { if (e_8) throw e_8.error; }
|
|
1152
|
+
return [7 /*endfinally*/];
|
|
1153
|
+
case 13:
|
|
1154
|
+
try {
|
|
1155
|
+
for (_c = __values(Object.entries(rest)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
1156
|
+
_e = __read(_d.value, 2), key = _e[0], value = _e[1];
|
|
1157
|
+
order[key] = value;
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
catch (e_9_1) { e_9 = { error: e_9_1 }; }
|
|
1161
|
+
finally {
|
|
1162
|
+
try {
|
|
1163
|
+
if (_d && !_d.done && (_g = _c.return)) _g.call(_c);
|
|
1164
|
+
}
|
|
1165
|
+
finally { if (e_9) throw e_9.error; }
|
|
1166
|
+
}
|
|
1167
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1168
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
1169
|
+
case 14:
|
|
1170
|
+
result = _h.sent();
|
|
1171
|
+
return [4 /*yield*/, this.eventBus_
|
|
1172
|
+
.withTransaction(manager)
|
|
1173
|
+
.emit(OrderService.Events.UPDATED, {
|
|
1174
|
+
id: orderId,
|
|
1175
|
+
no_notification: order.no_notification,
|
|
1176
|
+
})];
|
|
1177
|
+
case 15:
|
|
1178
|
+
_h.sent();
|
|
1179
|
+
return [2 /*return*/, result];
|
|
1180
|
+
}
|
|
1181
|
+
});
|
|
1182
|
+
}); })];
|
|
1183
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1184
|
+
}
|
|
1252
1185
|
});
|
|
1253
1186
|
});
|
|
1254
1187
|
};
|
|
@@ -1256,229 +1189,235 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1256
1189
|
* Cancels an order.
|
|
1257
1190
|
* Throws if fulfillment process has been initiated.
|
|
1258
1191
|
* Throws if payment process has been initiated.
|
|
1259
|
-
* @param
|
|
1260
|
-
* @return
|
|
1192
|
+
* @param orderId - id of order to cancel.
|
|
1193
|
+
* @return result of the update operation.
|
|
1261
1194
|
*/
|
|
1262
1195
|
OrderService.prototype.cancel = function (orderId) {
|
|
1263
1196
|
return __awaiter(this, void 0, void 0, function () {
|
|
1264
1197
|
var _this = this;
|
|
1265
1198
|
return __generator(this, function (_a) {
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
case 1:
|
|
1283
|
-
order = _h.sent();
|
|
1284
|
-
if (((_g = order.refunds) === null || _g === void 0 ? void 0 : _g.length) > 0) {
|
|
1285
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Order with refund(s) cannot be canceled");
|
|
1286
|
-
}
|
|
1287
|
-
throwErrorIf = function (arr, pred, type) {
|
|
1288
|
-
return arr === null || arr === void 0 ? void 0 : arr.filter(pred).find(function (_) {
|
|
1289
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "All ".concat(type, " must be canceled before canceling an order"));
|
|
1290
|
-
});
|
|
1291
|
-
};
|
|
1292
|
-
notCanceled = function (o) { return !o.canceled_at; };
|
|
1293
|
-
throwErrorIf(order.fulfillments, notCanceled, "fulfillments");
|
|
1294
|
-
throwErrorIf(order.returns, function (r) { return r.status !== "canceled"; }, "returns");
|
|
1295
|
-
throwErrorIf(order.swaps, notCanceled, "swaps");
|
|
1296
|
-
throwErrorIf(order.claims, notCanceled, "claims");
|
|
1297
|
-
_h.label = 2;
|
|
1298
|
-
case 2:
|
|
1299
|
-
_h.trys.push([2, 7, 8, 9]);
|
|
1300
|
-
_a = __values(order.items), _b = _a.next();
|
|
1301
|
-
_h.label = 3;
|
|
1302
|
-
case 3:
|
|
1303
|
-
if (!!_b.done) return [3 /*break*/, 6];
|
|
1304
|
-
item = _b.value;
|
|
1305
|
-
return [4 /*yield*/, this.inventoryService_
|
|
1306
|
-
.withTransaction(manager)
|
|
1307
|
-
.adjustInventory(item.variant_id, item.quantity)];
|
|
1308
|
-
case 4:
|
|
1309
|
-
_h.sent();
|
|
1310
|
-
_h.label = 5;
|
|
1311
|
-
case 5:
|
|
1312
|
-
_b = _a.next();
|
|
1313
|
-
return [3 /*break*/, 3];
|
|
1314
|
-
case 6: return [3 /*break*/, 9];
|
|
1315
|
-
case 7:
|
|
1316
|
-
e_10_1 = _h.sent();
|
|
1317
|
-
e_10 = { error: e_10_1 };
|
|
1318
|
-
return [3 /*break*/, 9];
|
|
1319
|
-
case 8:
|
|
1320
|
-
try {
|
|
1321
|
-
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
1322
|
-
}
|
|
1323
|
-
finally { if (e_10) throw e_10.error; }
|
|
1324
|
-
return [7 /*endfinally*/];
|
|
1325
|
-
case 9:
|
|
1326
|
-
_h.trys.push([9, 14, 15, 16]);
|
|
1327
|
-
_c = __values(order.payments), _d = _c.next();
|
|
1328
|
-
_h.label = 10;
|
|
1329
|
-
case 10:
|
|
1330
|
-
if (!!_d.done) return [3 /*break*/, 13];
|
|
1331
|
-
p = _d.value;
|
|
1332
|
-
return [4 /*yield*/, this.paymentProviderService_
|
|
1333
|
-
.withTransaction(manager)
|
|
1334
|
-
.cancelPayment(p)];
|
|
1335
|
-
case 11:
|
|
1336
|
-
_h.sent();
|
|
1337
|
-
_h.label = 12;
|
|
1338
|
-
case 12:
|
|
1339
|
-
_d = _c.next();
|
|
1340
|
-
return [3 /*break*/, 10];
|
|
1341
|
-
case 13: return [3 /*break*/, 16];
|
|
1342
|
-
case 14:
|
|
1343
|
-
e_11_1 = _h.sent();
|
|
1344
|
-
e_11 = { error: e_11_1 };
|
|
1345
|
-
return [3 /*break*/, 16];
|
|
1346
|
-
case 15:
|
|
1347
|
-
try {
|
|
1348
|
-
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
1349
|
-
}
|
|
1350
|
-
finally { if (e_11) throw e_11.error; }
|
|
1351
|
-
return [7 /*endfinally*/];
|
|
1352
|
-
case 16:
|
|
1353
|
-
order.status = "canceled";
|
|
1354
|
-
order.fulfillment_status = "canceled";
|
|
1355
|
-
order.payment_status = "canceled";
|
|
1356
|
-
order.canceled_at = new Date();
|
|
1357
|
-
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1358
|
-
return [4 /*yield*/, orderRepo.save(order)];
|
|
1359
|
-
case 17:
|
|
1360
|
-
result = _h.sent();
|
|
1361
|
-
return [4 /*yield*/, this.eventBus_
|
|
1362
|
-
.withTransaction(manager)
|
|
1363
|
-
.emit(OrderService.Events.CANCELED, {
|
|
1364
|
-
id: order.id,
|
|
1365
|
-
no_notification: order.no_notification,
|
|
1199
|
+
switch (_a.label) {
|
|
1200
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1201
|
+
var order, throwErrorIf, notCanceled, _a, _b, item, e_10_1, _c, _d, p, e_11_1, orderRepo, result;
|
|
1202
|
+
var e_10, _e, e_11, _f;
|
|
1203
|
+
var _g;
|
|
1204
|
+
return __generator(this, function (_h) {
|
|
1205
|
+
switch (_h.label) {
|
|
1206
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId, {
|
|
1207
|
+
relations: [
|
|
1208
|
+
"fulfillments",
|
|
1209
|
+
"payments",
|
|
1210
|
+
"returns",
|
|
1211
|
+
"claims",
|
|
1212
|
+
"swaps",
|
|
1213
|
+
"items",
|
|
1214
|
+
],
|
|
1366
1215
|
})];
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1216
|
+
case 1:
|
|
1217
|
+
order = _h.sent();
|
|
1218
|
+
if (((_g = order.refunds) === null || _g === void 0 ? void 0 : _g.length) > 0) {
|
|
1219
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Order with refund(s) cannot be canceled");
|
|
1220
|
+
}
|
|
1221
|
+
throwErrorIf = function (arr, pred, type) {
|
|
1222
|
+
if (arr === null || arr === void 0 ? void 0 : arr.filter(pred).length) {
|
|
1223
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "All ".concat(type, " must be canceled before canceling an order"));
|
|
1224
|
+
}
|
|
1225
|
+
};
|
|
1226
|
+
notCanceled = function (o) { return !o.canceled_at; };
|
|
1227
|
+
throwErrorIf(order.fulfillments, notCanceled, "fulfillments");
|
|
1228
|
+
throwErrorIf(order.returns, function (r) { return r.status !== "canceled"; }, "returns");
|
|
1229
|
+
throwErrorIf(order.swaps, notCanceled, "swaps");
|
|
1230
|
+
throwErrorIf(order.claims, notCanceled, "claims");
|
|
1231
|
+
_h.label = 2;
|
|
1232
|
+
case 2:
|
|
1233
|
+
_h.trys.push([2, 7, 8, 9]);
|
|
1234
|
+
_a = __values(order.items), _b = _a.next();
|
|
1235
|
+
_h.label = 3;
|
|
1236
|
+
case 3:
|
|
1237
|
+
if (!!_b.done) return [3 /*break*/, 6];
|
|
1238
|
+
item = _b.value;
|
|
1239
|
+
return [4 /*yield*/, this.inventoryService_
|
|
1240
|
+
.withTransaction(manager)
|
|
1241
|
+
.adjustInventory(item.variant_id, item.quantity)];
|
|
1242
|
+
case 4:
|
|
1243
|
+
_h.sent();
|
|
1244
|
+
_h.label = 5;
|
|
1245
|
+
case 5:
|
|
1246
|
+
_b = _a.next();
|
|
1247
|
+
return [3 /*break*/, 3];
|
|
1248
|
+
case 6: return [3 /*break*/, 9];
|
|
1249
|
+
case 7:
|
|
1250
|
+
e_10_1 = _h.sent();
|
|
1251
|
+
e_10 = { error: e_10_1 };
|
|
1252
|
+
return [3 /*break*/, 9];
|
|
1253
|
+
case 8:
|
|
1254
|
+
try {
|
|
1255
|
+
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
1256
|
+
}
|
|
1257
|
+
finally { if (e_10) throw e_10.error; }
|
|
1258
|
+
return [7 /*endfinally*/];
|
|
1259
|
+
case 9:
|
|
1260
|
+
_h.trys.push([9, 14, 15, 16]);
|
|
1261
|
+
_c = __values(order.payments), _d = _c.next();
|
|
1262
|
+
_h.label = 10;
|
|
1263
|
+
case 10:
|
|
1264
|
+
if (!!_d.done) return [3 /*break*/, 13];
|
|
1265
|
+
p = _d.value;
|
|
1266
|
+
return [4 /*yield*/, this.paymentProviderService_
|
|
1267
|
+
.withTransaction(manager)
|
|
1268
|
+
.cancelPayment(p)];
|
|
1269
|
+
case 11:
|
|
1270
|
+
_h.sent();
|
|
1271
|
+
_h.label = 12;
|
|
1272
|
+
case 12:
|
|
1273
|
+
_d = _c.next();
|
|
1274
|
+
return [3 /*break*/, 10];
|
|
1275
|
+
case 13: return [3 /*break*/, 16];
|
|
1276
|
+
case 14:
|
|
1277
|
+
e_11_1 = _h.sent();
|
|
1278
|
+
e_11 = { error: e_11_1 };
|
|
1279
|
+
return [3 /*break*/, 16];
|
|
1280
|
+
case 15:
|
|
1281
|
+
try {
|
|
1282
|
+
if (_d && !_d.done && (_f = _c.return)) _f.call(_c);
|
|
1283
|
+
}
|
|
1284
|
+
finally { if (e_11) throw e_11.error; }
|
|
1285
|
+
return [7 /*endfinally*/];
|
|
1286
|
+
case 16:
|
|
1287
|
+
order.status = models_1.OrderStatus.CANCELED;
|
|
1288
|
+
order.fulfillment_status = models_1.FulfillmentStatus.CANCELED;
|
|
1289
|
+
order.payment_status = models_1.PaymentStatus.CANCELED;
|
|
1290
|
+
order.canceled_at = new Date();
|
|
1291
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1292
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
1293
|
+
case 17:
|
|
1294
|
+
result = _h.sent();
|
|
1295
|
+
return [4 /*yield*/, this.eventBus_
|
|
1296
|
+
.withTransaction(manager)
|
|
1297
|
+
.emit(OrderService.Events.CANCELED, {
|
|
1298
|
+
id: order.id,
|
|
1299
|
+
no_notification: order.no_notification,
|
|
1300
|
+
})];
|
|
1301
|
+
case 18:
|
|
1302
|
+
_h.sent();
|
|
1303
|
+
return [2 /*return*/, result];
|
|
1304
|
+
}
|
|
1305
|
+
});
|
|
1306
|
+
}); })];
|
|
1307
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1308
|
+
}
|
|
1373
1309
|
});
|
|
1374
1310
|
});
|
|
1375
1311
|
};
|
|
1376
1312
|
/**
|
|
1377
1313
|
* Captures payment for an order.
|
|
1378
|
-
* @param
|
|
1379
|
-
* @return
|
|
1314
|
+
* @param orderId - id of order to capture payment for.
|
|
1315
|
+
* @return result of the update operation.
|
|
1380
1316
|
*/
|
|
1381
1317
|
OrderService.prototype.capturePayment = function (orderId) {
|
|
1382
1318
|
return __awaiter(this, void 0, void 0, function () {
|
|
1383
1319
|
var _this = this;
|
|
1384
1320
|
return __generator(this, function (_a) {
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
.capturePayment(p)
|
|
1409
|
-
.catch(function (err) {
|
|
1410
|
-
_this.eventBus_
|
|
1321
|
+
switch (_a.label) {
|
|
1322
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1323
|
+
var orderRepo, order, payments, _loop_2, this_2, _a, _b, p, e_12_1, result;
|
|
1324
|
+
var e_12, _c;
|
|
1325
|
+
var _this = this;
|
|
1326
|
+
return __generator(this, function (_d) {
|
|
1327
|
+
switch (_d.label) {
|
|
1328
|
+
case 0:
|
|
1329
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1330
|
+
return [4 /*yield*/, this.retrieve(orderId, { relations: ["payments"] })];
|
|
1331
|
+
case 1:
|
|
1332
|
+
order = _d.sent();
|
|
1333
|
+
if (order.status === "canceled") {
|
|
1334
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot capture payment");
|
|
1335
|
+
}
|
|
1336
|
+
payments = [];
|
|
1337
|
+
_loop_2 = function (p) {
|
|
1338
|
+
var result_1;
|
|
1339
|
+
return __generator(this, function (_e) {
|
|
1340
|
+
switch (_e.label) {
|
|
1341
|
+
case 0:
|
|
1342
|
+
if (!(p.captured_at === null)) return [3 /*break*/, 2];
|
|
1343
|
+
return [4 /*yield*/, this_2.paymentProviderService_
|
|
1411
1344
|
.withTransaction(manager)
|
|
1412
|
-
.
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1345
|
+
.capturePayment(p)
|
|
1346
|
+
.catch(function (err) {
|
|
1347
|
+
_this.eventBus_
|
|
1348
|
+
.withTransaction(manager)
|
|
1349
|
+
.emit(OrderService.Events.PAYMENT_CAPTURE_FAILED, {
|
|
1350
|
+
id: orderId,
|
|
1351
|
+
payment_id: p.id,
|
|
1352
|
+
error: err,
|
|
1353
|
+
no_notification: order.no_notification,
|
|
1354
|
+
});
|
|
1355
|
+
})];
|
|
1356
|
+
case 1:
|
|
1357
|
+
result_1 = _e.sent();
|
|
1358
|
+
if (result_1) {
|
|
1359
|
+
payments.push(result_1);
|
|
1360
|
+
}
|
|
1361
|
+
else {
|
|
1362
|
+
payments.push(p);
|
|
1363
|
+
}
|
|
1364
|
+
return [3 /*break*/, 3];
|
|
1365
|
+
case 2:
|
|
1425
1366
|
payments.push(p);
|
|
1426
|
-
|
|
1427
|
-
return [
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
});
|
|
1481
|
-
}); })];
|
|
1367
|
+
_e.label = 3;
|
|
1368
|
+
case 3: return [2 /*return*/];
|
|
1369
|
+
}
|
|
1370
|
+
});
|
|
1371
|
+
};
|
|
1372
|
+
this_2 = this;
|
|
1373
|
+
_d.label = 2;
|
|
1374
|
+
case 2:
|
|
1375
|
+
_d.trys.push([2, 7, 8, 9]);
|
|
1376
|
+
_a = __values(order.payments), _b = _a.next();
|
|
1377
|
+
_d.label = 3;
|
|
1378
|
+
case 3:
|
|
1379
|
+
if (!!_b.done) return [3 /*break*/, 6];
|
|
1380
|
+
p = _b.value;
|
|
1381
|
+
return [5 /*yield**/, _loop_2(p)];
|
|
1382
|
+
case 4:
|
|
1383
|
+
_d.sent();
|
|
1384
|
+
_d.label = 5;
|
|
1385
|
+
case 5:
|
|
1386
|
+
_b = _a.next();
|
|
1387
|
+
return [3 /*break*/, 3];
|
|
1388
|
+
case 6: return [3 /*break*/, 9];
|
|
1389
|
+
case 7:
|
|
1390
|
+
e_12_1 = _d.sent();
|
|
1391
|
+
e_12 = { error: e_12_1 };
|
|
1392
|
+
return [3 /*break*/, 9];
|
|
1393
|
+
case 8:
|
|
1394
|
+
try {
|
|
1395
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
1396
|
+
}
|
|
1397
|
+
finally { if (e_12) throw e_12.error; }
|
|
1398
|
+
return [7 /*endfinally*/];
|
|
1399
|
+
case 9:
|
|
1400
|
+
order.payments = payments;
|
|
1401
|
+
order.payment_status = payments.every(function (p) { return p.captured_at !== null; })
|
|
1402
|
+
? models_1.PaymentStatus.CAPTURED
|
|
1403
|
+
: models_1.PaymentStatus.REQUIRES_ACTION;
|
|
1404
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
1405
|
+
case 10:
|
|
1406
|
+
result = _d.sent();
|
|
1407
|
+
if (order.payment_status === models_1.PaymentStatus.CAPTURED) {
|
|
1408
|
+
this.eventBus_
|
|
1409
|
+
.withTransaction(manager)
|
|
1410
|
+
.emit(OrderService.Events.PAYMENT_CAPTURED, {
|
|
1411
|
+
id: result.id,
|
|
1412
|
+
no_notification: order.no_notification,
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1415
|
+
return [2 /*return*/, result];
|
|
1416
|
+
}
|
|
1417
|
+
});
|
|
1418
|
+
}); })];
|
|
1419
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1420
|
+
}
|
|
1482
1421
|
});
|
|
1483
1422
|
});
|
|
1484
1423
|
};
|
|
@@ -1487,13 +1426,13 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1487
1426
|
* fulfillable quantity is lower than the requested fulfillment quantity.
|
|
1488
1427
|
* Fulfillable quantity is calculated by subtracting the already fulfilled
|
|
1489
1428
|
* quantity from the quantity that was originally purchased.
|
|
1490
|
-
* @param
|
|
1429
|
+
* @param item - the line item to check has sufficient fulfillable
|
|
1491
1430
|
* quantity.
|
|
1492
|
-
* @param
|
|
1493
|
-
* @return
|
|
1431
|
+
* @param quantity - the quantity that is requested to be fulfilled.
|
|
1432
|
+
* @return a line item that has the requested fulfillment quantity
|
|
1494
1433
|
* set.
|
|
1495
1434
|
*/
|
|
1496
|
-
OrderService.prototype.
|
|
1435
|
+
OrderService.prototype.validateFulfillmentLineItem = function (item, quantity) {
|
|
1497
1436
|
if (!item) {
|
|
1498
1437
|
// This will in most cases be called by a webhook so to ensure that
|
|
1499
1438
|
// things go through smoothly in instances where extra items outside
|
|
@@ -1510,10 +1449,10 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1510
1449
|
* In a situation where the order has more than one shipping method,
|
|
1511
1450
|
* we need to partition the order items, such that they can be sent
|
|
1512
1451
|
* to their respective fulfillment provider.
|
|
1513
|
-
* @param
|
|
1514
|
-
* @param
|
|
1515
|
-
* @param
|
|
1516
|
-
* @return
|
|
1452
|
+
* @param orderId - id of order to cancel.
|
|
1453
|
+
* @param itemsToFulfill - items to fulfil.
|
|
1454
|
+
* @param config - the config to cancel.
|
|
1455
|
+
* @return result of the update operation.
|
|
1517
1456
|
*/
|
|
1518
1457
|
OrderService.prototype.createFulfillment = function (orderId, itemsToFulfill, config) {
|
|
1519
1458
|
if (config === void 0) { config = {
|
|
@@ -1524,229 +1463,235 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1524
1463
|
var metadata, no_notification;
|
|
1525
1464
|
var _this = this;
|
|
1526
1465
|
return __generator(this, function (_a) {
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1466
|
+
switch (_a.label) {
|
|
1467
|
+
case 0:
|
|
1468
|
+
metadata = config.metadata, no_notification = config.no_notification;
|
|
1469
|
+
return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1470
|
+
var order, fulfillments, successfullyFulfilled, fulfillments_1, fulfillments_1_1, f, _loop_3, this_3, _a, _b, item, e_13_1, orderRepo, result, evaluatedNoNotification, fulfillments_2, fulfillments_2_1, fulfillment, e_14_1;
|
|
1471
|
+
var e_15, _c, e_13, _d, e_14, _e;
|
|
1472
|
+
var _f;
|
|
1473
|
+
return __generator(this, function (_g) {
|
|
1474
|
+
switch (_g.label) {
|
|
1475
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId, {
|
|
1476
|
+
select: [
|
|
1477
|
+
"subtotal",
|
|
1478
|
+
"shipping_total",
|
|
1479
|
+
"discount_total",
|
|
1480
|
+
"tax_total",
|
|
1481
|
+
"gift_card_total",
|
|
1482
|
+
"total",
|
|
1483
|
+
],
|
|
1484
|
+
relations: [
|
|
1485
|
+
"discounts",
|
|
1486
|
+
"discounts.rule",
|
|
1487
|
+
"region",
|
|
1488
|
+
"fulfillments",
|
|
1489
|
+
"shipping_address",
|
|
1490
|
+
"billing_address",
|
|
1491
|
+
"shipping_methods",
|
|
1492
|
+
"shipping_methods.shipping_option",
|
|
1493
|
+
"items",
|
|
1494
|
+
"items.adjustments",
|
|
1495
|
+
"items.variant",
|
|
1496
|
+
"items.variant.product",
|
|
1497
|
+
"payments",
|
|
1498
|
+
],
|
|
1499
|
+
})];
|
|
1500
|
+
case 1:
|
|
1501
|
+
order = _g.sent();
|
|
1502
|
+
if (order.status === models_1.OrderStatus.CANCELED) {
|
|
1503
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot be fulfilled");
|
|
1504
|
+
}
|
|
1505
|
+
if (!((_f = order.shipping_methods) === null || _f === void 0 ? void 0 : _f.length)) {
|
|
1506
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Cannot fulfill an order that lacks shipping methods");
|
|
1507
|
+
}
|
|
1508
|
+
return [4 /*yield*/, this.fulfillmentService_
|
|
1509
|
+
.withTransaction(manager)
|
|
1510
|
+
.createFulfillment(order, itemsToFulfill, {
|
|
1511
|
+
metadata: metadata,
|
|
1512
|
+
no_notification: no_notification,
|
|
1513
|
+
order_id: orderId,
|
|
1514
|
+
})];
|
|
1515
|
+
case 2:
|
|
1516
|
+
fulfillments = _g.sent();
|
|
1517
|
+
successfullyFulfilled = [];
|
|
1518
|
+
try {
|
|
1519
|
+
for (fulfillments_1 = __values(fulfillments), fulfillments_1_1 = fulfillments_1.next(); !fulfillments_1_1.done; fulfillments_1_1 = fulfillments_1.next()) {
|
|
1520
|
+
f = fulfillments_1_1.value;
|
|
1521
|
+
successfullyFulfilled = __spreadArray(__spreadArray([], __read(successfullyFulfilled), false), __read(f.items), false);
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
catch (e_15_1) { e_15 = { error: e_15_1 }; }
|
|
1525
|
+
finally {
|
|
1526
|
+
try {
|
|
1527
|
+
if (fulfillments_1_1 && !fulfillments_1_1.done && (_c = fulfillments_1.return)) _c.call(fulfillments_1);
|
|
1528
|
+
}
|
|
1529
|
+
finally { if (e_15) throw e_15.error; }
|
|
1530
|
+
}
|
|
1531
|
+
order.fulfillment_status = models_1.FulfillmentStatus.FULFILLED;
|
|
1532
|
+
_loop_3 = function (item) {
|
|
1533
|
+
var fulfillmentItem, fulfilledQuantity;
|
|
1534
|
+
return __generator(this, function (_h) {
|
|
1535
|
+
switch (_h.label) {
|
|
1536
|
+
case 0:
|
|
1537
|
+
fulfillmentItem = successfullyFulfilled.find(function (f) { return item.id === f.item_id; });
|
|
1538
|
+
if (!fulfillmentItem) return [3 /*break*/, 2];
|
|
1539
|
+
fulfilledQuantity = (item.fulfilled_quantity || 0) + fulfillmentItem.quantity;
|
|
1540
|
+
// Update the fulfilled quantity
|
|
1541
|
+
return [4 /*yield*/, this_3.lineItemService_.withTransaction(manager).update(item.id, {
|
|
1542
|
+
fulfilled_quantity: fulfilledQuantity,
|
|
1543
|
+
})];
|
|
1544
|
+
case 1:
|
|
1545
|
+
// Update the fulfilled quantity
|
|
1546
|
+
_h.sent();
|
|
1547
|
+
if (item.quantity !== fulfilledQuantity) {
|
|
1548
|
+
order.fulfillment_status = models_1.FulfillmentStatus.PARTIALLY_FULFILLED;
|
|
1549
|
+
}
|
|
1550
|
+
return [3 /*break*/, 3];
|
|
1551
|
+
case 2:
|
|
1552
|
+
if (item.quantity !== item.fulfilled_quantity) {
|
|
1553
|
+
order.fulfillment_status = models_1.FulfillmentStatus.PARTIALLY_FULFILLED;
|
|
1554
|
+
}
|
|
1555
|
+
_h.label = 3;
|
|
1556
|
+
case 3: return [2 /*return*/];
|
|
1613
1557
|
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1558
|
+
});
|
|
1559
|
+
};
|
|
1560
|
+
this_3 = this;
|
|
1561
|
+
_g.label = 3;
|
|
1562
|
+
case 3:
|
|
1563
|
+
_g.trys.push([3, 8, 9, 10]);
|
|
1564
|
+
_a = __values(order.items), _b = _a.next();
|
|
1565
|
+
_g.label = 4;
|
|
1566
|
+
case 4:
|
|
1567
|
+
if (!!_b.done) return [3 /*break*/, 7];
|
|
1568
|
+
item = _b.value;
|
|
1569
|
+
return [5 /*yield**/, _loop_3(item)];
|
|
1570
|
+
case 5:
|
|
1571
|
+
_g.sent();
|
|
1572
|
+
_g.label = 6;
|
|
1573
|
+
case 6:
|
|
1574
|
+
_b = _a.next();
|
|
1575
|
+
return [3 /*break*/, 4];
|
|
1576
|
+
case 7: return [3 /*break*/, 10];
|
|
1577
|
+
case 8:
|
|
1578
|
+
e_13_1 = _g.sent();
|
|
1579
|
+
e_13 = { error: e_13_1 };
|
|
1580
|
+
return [3 /*break*/, 10];
|
|
1581
|
+
case 9:
|
|
1582
|
+
try {
|
|
1583
|
+
if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
|
|
1616
1584
|
}
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
if (!!fulfillments_2_1.done) return [3 /*break*/, 16];
|
|
1660
|
-
fulfillment = fulfillments_2_1.value;
|
|
1661
|
-
return [4 /*yield*/, this.eventBus_
|
|
1662
|
-
.withTransaction(manager)
|
|
1663
|
-
.emit(OrderService.Events.FULFILLMENT_CREATED, {
|
|
1664
|
-
id: orderId,
|
|
1665
|
-
fulfillment_id: fulfillment.id,
|
|
1666
|
-
no_notification: evaluatedNoNotification,
|
|
1667
|
-
})];
|
|
1668
|
-
case 14:
|
|
1669
|
-
_g.sent();
|
|
1670
|
-
_g.label = 15;
|
|
1671
|
-
case 15:
|
|
1672
|
-
fulfillments_2_1 = fulfillments_2.next();
|
|
1673
|
-
return [3 /*break*/, 13];
|
|
1674
|
-
case 16: return [3 /*break*/, 19];
|
|
1675
|
-
case 17:
|
|
1676
|
-
e_14_1 = _g.sent();
|
|
1677
|
-
e_14 = { error: e_14_1 };
|
|
1678
|
-
return [3 /*break*/, 19];
|
|
1679
|
-
case 18:
|
|
1680
|
-
try {
|
|
1681
|
-
if (fulfillments_2_1 && !fulfillments_2_1.done && (_e = fulfillments_2.return)) _e.call(fulfillments_2);
|
|
1585
|
+
finally { if (e_13) throw e_13.error; }
|
|
1586
|
+
return [7 /*endfinally*/];
|
|
1587
|
+
case 10:
|
|
1588
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1589
|
+
order.fulfillments = __spreadArray(__spreadArray([], __read(order.fulfillments), false), __read(fulfillments), false);
|
|
1590
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
1591
|
+
case 11:
|
|
1592
|
+
result = _g.sent();
|
|
1593
|
+
evaluatedNoNotification = no_notification !== undefined ? no_notification : order.no_notification;
|
|
1594
|
+
_g.label = 12;
|
|
1595
|
+
case 12:
|
|
1596
|
+
_g.trys.push([12, 17, 18, 19]);
|
|
1597
|
+
fulfillments_2 = __values(fulfillments), fulfillments_2_1 = fulfillments_2.next();
|
|
1598
|
+
_g.label = 13;
|
|
1599
|
+
case 13:
|
|
1600
|
+
if (!!fulfillments_2_1.done) return [3 /*break*/, 16];
|
|
1601
|
+
fulfillment = fulfillments_2_1.value;
|
|
1602
|
+
return [4 /*yield*/, this.eventBus_
|
|
1603
|
+
.withTransaction(manager)
|
|
1604
|
+
.emit(OrderService.Events.FULFILLMENT_CREATED, {
|
|
1605
|
+
id: orderId,
|
|
1606
|
+
fulfillment_id: fulfillment.id,
|
|
1607
|
+
no_notification: evaluatedNoNotification,
|
|
1608
|
+
})];
|
|
1609
|
+
case 14:
|
|
1610
|
+
_g.sent();
|
|
1611
|
+
_g.label = 15;
|
|
1612
|
+
case 15:
|
|
1613
|
+
fulfillments_2_1 = fulfillments_2.next();
|
|
1614
|
+
return [3 /*break*/, 13];
|
|
1615
|
+
case 16: return [3 /*break*/, 19];
|
|
1616
|
+
case 17:
|
|
1617
|
+
e_14_1 = _g.sent();
|
|
1618
|
+
e_14 = { error: e_14_1 };
|
|
1619
|
+
return [3 /*break*/, 19];
|
|
1620
|
+
case 18:
|
|
1621
|
+
try {
|
|
1622
|
+
if (fulfillments_2_1 && !fulfillments_2_1.done && (_e = fulfillments_2.return)) _e.call(fulfillments_2);
|
|
1623
|
+
}
|
|
1624
|
+
finally { if (e_14) throw e_14.error; }
|
|
1625
|
+
return [7 /*endfinally*/];
|
|
1626
|
+
case 19: return [2 /*return*/, result];
|
|
1682
1627
|
}
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
});
|
|
1688
|
-
}); })];
|
|
1628
|
+
});
|
|
1629
|
+
}); })];
|
|
1630
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1631
|
+
}
|
|
1689
1632
|
});
|
|
1690
1633
|
});
|
|
1691
1634
|
};
|
|
1692
1635
|
/**
|
|
1693
1636
|
* Cancels a fulfillment (if related to an order)
|
|
1694
|
-
* @param
|
|
1695
|
-
* @return
|
|
1637
|
+
* @param fulfillmentId - the ID of the fulfillment to cancel
|
|
1638
|
+
* @return updated order
|
|
1696
1639
|
*/
|
|
1697
1640
|
OrderService.prototype.cancelFulfillment = function (fulfillmentId) {
|
|
1698
1641
|
return __awaiter(this, void 0, void 0, function () {
|
|
1699
1642
|
var _this = this;
|
|
1700
1643
|
return __generator(this, function (_a) {
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
.cancelFulfillment(fulfillmentId)];
|
|
1708
|
-
case 1:
|
|
1709
|
-
canceled = _a.sent();
|
|
1710
|
-
if (!canceled.order_id) {
|
|
1711
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Fufillment not related to an order");
|
|
1712
|
-
}
|
|
1713
|
-
return [4 /*yield*/, this.retrieve(canceled.order_id)];
|
|
1714
|
-
case 2:
|
|
1715
|
-
order = _a.sent();
|
|
1716
|
-
order.fulfillment_status = "canceled";
|
|
1717
|
-
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1718
|
-
return [4 /*yield*/, orderRepo.save(order)];
|
|
1719
|
-
case 3:
|
|
1720
|
-
updated = _a.sent();
|
|
1721
|
-
return [4 /*yield*/, this.eventBus_
|
|
1644
|
+
switch (_a.label) {
|
|
1645
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1646
|
+
var canceled, order, orderRepo, updated;
|
|
1647
|
+
return __generator(this, function (_a) {
|
|
1648
|
+
switch (_a.label) {
|
|
1649
|
+
case 0: return [4 /*yield*/, this.fulfillmentService_
|
|
1722
1650
|
.withTransaction(manager)
|
|
1723
|
-
.
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1651
|
+
.cancelFulfillment(fulfillmentId)];
|
|
1652
|
+
case 1:
|
|
1653
|
+
canceled = _a.sent();
|
|
1654
|
+
if (!canceled.order_id) {
|
|
1655
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Fufillment not related to an order");
|
|
1656
|
+
}
|
|
1657
|
+
return [4 /*yield*/, this.retrieve(canceled.order_id)];
|
|
1658
|
+
case 2:
|
|
1659
|
+
order = _a.sent();
|
|
1660
|
+
order.fulfillment_status = models_1.FulfillmentStatus.CANCELED;
|
|
1661
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1662
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
1663
|
+
case 3:
|
|
1664
|
+
updated = _a.sent();
|
|
1665
|
+
return [4 /*yield*/, this.eventBus_
|
|
1666
|
+
.withTransaction(manager)
|
|
1667
|
+
.emit(OrderService.Events.FULFILLMENT_CANCELED, {
|
|
1668
|
+
id: order.id,
|
|
1669
|
+
fulfillment_id: canceled.id,
|
|
1670
|
+
no_notification: canceled.no_notification,
|
|
1671
|
+
})];
|
|
1672
|
+
case 4:
|
|
1673
|
+
_a.sent();
|
|
1674
|
+
return [2 /*return*/, updated];
|
|
1675
|
+
}
|
|
1676
|
+
});
|
|
1677
|
+
}); })];
|
|
1678
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1679
|
+
}
|
|
1734
1680
|
});
|
|
1735
1681
|
});
|
|
1736
1682
|
};
|
|
1737
1683
|
/**
|
|
1738
1684
|
* Retrieves the order line items, given an array of items.
|
|
1739
|
-
* @param
|
|
1740
|
-
* @param
|
|
1741
|
-
* @param
|
|
1685
|
+
* @param order - the order to get line items from
|
|
1686
|
+
* @param items - the items to get
|
|
1687
|
+
* @param transformer - a function to apply to each of the items
|
|
1742
1688
|
* retrieved from the order, should return a line item. If the transformer
|
|
1743
1689
|
* returns an undefined value the line item will be filtered from the
|
|
1744
1690
|
* returned array.
|
|
1745
|
-
* @return
|
|
1691
|
+
* @return the line items generated by the transformer.
|
|
1746
1692
|
*/
|
|
1747
|
-
OrderService.prototype.
|
|
1693
|
+
OrderService.prototype.getFulfillmentItems = function (order, items, transformer) {
|
|
1748
1694
|
return __awaiter(this, void 0, void 0, function () {
|
|
1749
|
-
var toReturn;
|
|
1750
1695
|
var _this = this;
|
|
1751
1696
|
return __generator(this, function (_a) {
|
|
1752
1697
|
switch (_a.label) {
|
|
@@ -1755,14 +1700,12 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1755
1700
|
return __awaiter(_this, void 0, void 0, function () {
|
|
1756
1701
|
var item;
|
|
1757
1702
|
return __generator(this, function (_b) {
|
|
1758
|
-
item = order.items.find(function (i) { return i.id
|
|
1703
|
+
item = order.items.find(function (i) { return i.id === item_id; });
|
|
1759
1704
|
return [2 /*return*/, transformer(item, quantity)];
|
|
1760
1705
|
});
|
|
1761
1706
|
});
|
|
1762
1707
|
}))];
|
|
1763
|
-
case 1:
|
|
1764
|
-
toReturn = _a.sent();
|
|
1765
|
-
return [2 /*return*/, toReturn.filter(function (i) { return !!i; })];
|
|
1708
|
+
case 1: return [2 /*return*/, (_a.sent()).filter(function (i) { return !!i; })];
|
|
1766
1709
|
}
|
|
1767
1710
|
});
|
|
1768
1711
|
});
|
|
@@ -1770,43 +1713,44 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1770
1713
|
/**
|
|
1771
1714
|
* Archives an order. It only alloved, if the order has been fulfilled
|
|
1772
1715
|
* and payment has been captured.
|
|
1773
|
-
* @param
|
|
1774
|
-
* @return
|
|
1716
|
+
* @param orderId - the order to archive
|
|
1717
|
+
* @return the result of the update operation
|
|
1775
1718
|
*/
|
|
1776
1719
|
OrderService.prototype.archive = function (orderId) {
|
|
1777
1720
|
return __awaiter(this, void 0, void 0, function () {
|
|
1778
1721
|
var _this = this;
|
|
1779
1722
|
return __generator(this, function (_a) {
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
}
|
|
1797
|
-
});
|
|
1798
|
-
|
|
1723
|
+
switch (_a.label) {
|
|
1724
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1725
|
+
var order, orderRepo;
|
|
1726
|
+
return __generator(this, function (_a) {
|
|
1727
|
+
switch (_a.label) {
|
|
1728
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId)];
|
|
1729
|
+
case 1:
|
|
1730
|
+
order = _a.sent();
|
|
1731
|
+
if (order.status !== ("completed" || "refunded")) {
|
|
1732
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Can't archive an unprocessed order");
|
|
1733
|
+
}
|
|
1734
|
+
order.status = models_1.OrderStatus.ARCHIVED;
|
|
1735
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1736
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
1737
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
1738
|
+
}
|
|
1739
|
+
});
|
|
1740
|
+
}); })];
|
|
1741
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1742
|
+
}
|
|
1799
1743
|
});
|
|
1800
1744
|
});
|
|
1801
1745
|
};
|
|
1802
1746
|
/**
|
|
1803
1747
|
* Refunds a given amount back to the customer.
|
|
1804
|
-
* @param
|
|
1805
|
-
* @param
|
|
1806
|
-
* @param
|
|
1807
|
-
* @param
|
|
1808
|
-
* @param
|
|
1809
|
-
* @return
|
|
1748
|
+
* @param orderId - id of the order to refund.
|
|
1749
|
+
* @param refundAmount - the amount to refund.
|
|
1750
|
+
* @param reason - the reason to refund.
|
|
1751
|
+
* @param note - note for refund.
|
|
1752
|
+
* @param config - the config for refund.
|
|
1753
|
+
* @return the result of the refund operation.
|
|
1810
1754
|
*/
|
|
1811
1755
|
OrderService.prototype.createRefund = function (orderId, refundAmount, reason, note, config) {
|
|
1812
1756
|
if (config === void 0) { config = {
|
|
@@ -1816,45 +1760,49 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1816
1760
|
var no_notification;
|
|
1817
1761
|
var _this = this;
|
|
1818
1762
|
return __generator(this, function (_a) {
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
return
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1763
|
+
switch (_a.label) {
|
|
1764
|
+
case 0:
|
|
1765
|
+
no_notification = config.no_notification;
|
|
1766
|
+
return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1767
|
+
var order, refund, result, evaluatedNoNotification;
|
|
1768
|
+
return __generator(this, function (_a) {
|
|
1769
|
+
switch (_a.label) {
|
|
1770
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId, {
|
|
1771
|
+
select: ["refundable_amount", "total", "refunded_total"],
|
|
1772
|
+
relations: ["payments"],
|
|
1773
|
+
})];
|
|
1774
|
+
case 1:
|
|
1775
|
+
order = _a.sent();
|
|
1776
|
+
if (order.status === "canceled") {
|
|
1777
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot be refunded");
|
|
1778
|
+
}
|
|
1779
|
+
if (refundAmount > order.refundable_amount) {
|
|
1780
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Cannot refund more than the original order amount");
|
|
1781
|
+
}
|
|
1782
|
+
return [4 /*yield*/, this.paymentProviderService_
|
|
1783
|
+
.withTransaction(manager)
|
|
1784
|
+
.refundPayment(order.payments, refundAmount, reason, note)];
|
|
1785
|
+
case 2:
|
|
1786
|
+
refund = _a.sent();
|
|
1787
|
+
return [4 /*yield*/, this.retrieve(orderId)];
|
|
1788
|
+
case 3:
|
|
1789
|
+
result = _a.sent();
|
|
1790
|
+
evaluatedNoNotification = no_notification !== undefined ? no_notification : order.no_notification;
|
|
1791
|
+
this.eventBus_.emit(OrderService.Events.REFUND_CREATED, {
|
|
1792
|
+
id: result.id,
|
|
1793
|
+
refund_id: refund.id,
|
|
1794
|
+
no_notification: evaluatedNoNotification,
|
|
1795
|
+
});
|
|
1796
|
+
return [2 /*return*/, result];
|
|
1835
1797
|
}
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
refund = _a.sent();
|
|
1841
|
-
return [4 /*yield*/, this.retrieve(orderId)];
|
|
1842
|
-
case 3:
|
|
1843
|
-
result = _a.sent();
|
|
1844
|
-
evaluatedNoNotification = no_notification !== undefined ? no_notification : order.no_notification;
|
|
1845
|
-
this.eventBus_.emit(OrderService.Events.REFUND_CREATED, {
|
|
1846
|
-
id: result.id,
|
|
1847
|
-
refund_id: refund.id,
|
|
1848
|
-
no_notification: evaluatedNoNotification,
|
|
1849
|
-
});
|
|
1850
|
-
return [2 /*return*/, result];
|
|
1851
|
-
}
|
|
1852
|
-
});
|
|
1853
|
-
}); })];
|
|
1798
|
+
});
|
|
1799
|
+
}); })];
|
|
1800
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
1801
|
+
}
|
|
1854
1802
|
});
|
|
1855
1803
|
});
|
|
1856
1804
|
};
|
|
1857
|
-
OrderService.prototype.
|
|
1805
|
+
OrderService.prototype.decorateTotals = function (order, totalsFields) {
|
|
1858
1806
|
if (totalsFields === void 0) { totalsFields = []; }
|
|
1859
1807
|
return __awaiter(this, void 0, void 0, function () {
|
|
1860
1808
|
var totalsFields_1, totalsFields_1_1, totalField, _a, giftCardBreakdown, _b, _c, paid_total, refunded_total, _d, _e, s, _f, _g, c, e_16_1;
|
|
@@ -1919,7 +1867,9 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
1919
1867
|
_l.label = 8;
|
|
1920
1868
|
case 8:
|
|
1921
1869
|
_c = order;
|
|
1922
|
-
return [4 /*yield*/, this.totalsService_
|
|
1870
|
+
return [4 /*yield*/, this.totalsService_
|
|
1871
|
+
.withTransaction(this.manager_)
|
|
1872
|
+
.getTotal(order)];
|
|
1923
1873
|
case 9:
|
|
1924
1874
|
_c.total = _l.sent();
|
|
1925
1875
|
return [3 /*break*/, 17];
|
|
@@ -2017,119 +1967,98 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
2017
1967
|
* retuned items are not matching the requested items. Setting the
|
|
2018
1968
|
* allowMismatch argument to true, will process the return, ignoring any
|
|
2019
1969
|
* mismatches.
|
|
2020
|
-
* @param
|
|
2021
|
-
* @param
|
|
2022
|
-
* @param
|
|
2023
|
-
* @return
|
|
1970
|
+
* @param orderId - the order to return.
|
|
1971
|
+
* @param receivedReturn - the received return
|
|
1972
|
+
* @param customRefundAmount - the custom refund amount return
|
|
1973
|
+
* @return the result of the update operation
|
|
2024
1974
|
*/
|
|
2025
1975
|
OrderService.prototype.registerReturnReceived = function (orderId, receivedReturn, customRefundAmount) {
|
|
2026
1976
|
return __awaiter(this, void 0, void 0, function () {
|
|
2027
1977
|
var _this = this;
|
|
2028
1978
|
return __generator(this, function (_a) {
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
if (!receivedReturn || receivedReturn.order_id !== orderId) {
|
|
2044
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Received return does not exist");
|
|
2045
|
-
}
|
|
2046
|
-
refundAmount = customRefundAmount || receivedReturn.refund_amount;
|
|
2047
|
-
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
2048
|
-
if (!(refundAmount > order.refundable_amount)) return [3 /*break*/, 3];
|
|
2049
|
-
order.fulfillment_status = "requires_action";
|
|
2050
|
-
return [4 /*yield*/, orderRepo.save(order)];
|
|
2051
|
-
case 2:
|
|
2052
|
-
result_2 = _d.sent();
|
|
2053
|
-
this.eventBus_
|
|
2054
|
-
.withTransaction(manager)
|
|
2055
|
-
.emit(OrderService.Events.RETURN_ACTION_REQUIRED, {
|
|
2056
|
-
id: result_2.id,
|
|
2057
|
-
return_id: receivedReturn.id,
|
|
2058
|
-
no_notification: receivedReturn.no_notification,
|
|
2059
|
-
});
|
|
2060
|
-
return [2 /*return*/, result_2];
|
|
2061
|
-
case 3:
|
|
2062
|
-
isFullReturn = true;
|
|
2063
|
-
try {
|
|
2064
|
-
for (_a = __values(order.items), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
2065
|
-
i = _b.value;
|
|
2066
|
-
if (i.returned_quantity !== i.quantity) {
|
|
2067
|
-
isFullReturn = false;
|
|
2068
|
-
}
|
|
1979
|
+
switch (_a.label) {
|
|
1980
|
+
case 0: return [4 /*yield*/, this.atomicPhase_(function (manager) { return __awaiter(_this, void 0, void 0, function () {
|
|
1981
|
+
var order, refundAmount, orderRepo, result_2, isFullReturn, _a, _b, i, refund, result;
|
|
1982
|
+
var e_19, _c;
|
|
1983
|
+
return __generator(this, function (_d) {
|
|
1984
|
+
switch (_d.label) {
|
|
1985
|
+
case 0: return [4 /*yield*/, this.retrieve(orderId, {
|
|
1986
|
+
select: ["total", "refunded_total", "refundable_amount"],
|
|
1987
|
+
relations: ["items", "returns", "payments"],
|
|
1988
|
+
})];
|
|
1989
|
+
case 1:
|
|
1990
|
+
order = _d.sent();
|
|
1991
|
+
if (order.status === "canceled") {
|
|
1992
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "A canceled order cannot be registered as received");
|
|
2069
1993
|
}
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
finally {
|
|
2073
|
-
try {
|
|
2074
|
-
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
1994
|
+
if (!receivedReturn || receivedReturn.order_id !== orderId) {
|
|
1995
|
+
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Received return does not exist");
|
|
2075
1996
|
}
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
order.refunds = __spreadArray(__spreadArray([], __read((order.refunds || [])), false), [refund], false);
|
|
2085
|
-
_d.label = 5;
|
|
2086
|
-
case 5:
|
|
2087
|
-
if (isFullReturn) {
|
|
2088
|
-
order.fulfillment_status = "returned";
|
|
2089
|
-
}
|
|
2090
|
-
else {
|
|
2091
|
-
order.fulfillment_status = "partially_returned";
|
|
2092
|
-
}
|
|
2093
|
-
return [4 /*yield*/, orderRepo.save(order)];
|
|
2094
|
-
case 6:
|
|
2095
|
-
result = _d.sent();
|
|
2096
|
-
return [4 /*yield*/, this.eventBus_
|
|
1997
|
+
refundAmount = customRefundAmount || receivedReturn.refund_amount;
|
|
1998
|
+
orderRepo = manager.getCustomRepository(this.orderRepository_);
|
|
1999
|
+
if (!(refundAmount > order.refundable_amount)) return [3 /*break*/, 3];
|
|
2000
|
+
order.fulfillment_status = models_1.FulfillmentStatus.REQUIRES_ACTION;
|
|
2001
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
2002
|
+
case 2:
|
|
2003
|
+
result_2 = _d.sent();
|
|
2004
|
+
this.eventBus_
|
|
2097
2005
|
.withTransaction(manager)
|
|
2098
|
-
.emit(OrderService.Events.
|
|
2099
|
-
id:
|
|
2006
|
+
.emit(OrderService.Events.RETURN_ACTION_REQUIRED, {
|
|
2007
|
+
id: result_2.id,
|
|
2100
2008
|
return_id: receivedReturn.id,
|
|
2101
2009
|
no_notification: receivedReturn.no_notification,
|
|
2102
|
-
})
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2010
|
+
});
|
|
2011
|
+
return [2 /*return*/, result_2];
|
|
2012
|
+
case 3:
|
|
2013
|
+
isFullReturn = true;
|
|
2014
|
+
try {
|
|
2015
|
+
for (_a = __values(order.items), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
2016
|
+
i = _b.value;
|
|
2017
|
+
if (i.returned_quantity !== i.quantity) {
|
|
2018
|
+
isFullReturn = false;
|
|
2019
|
+
}
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
catch (e_19_1) { e_19 = { error: e_19_1 }; }
|
|
2023
|
+
finally {
|
|
2024
|
+
try {
|
|
2025
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
2026
|
+
}
|
|
2027
|
+
finally { if (e_19) throw e_19.error; }
|
|
2028
|
+
}
|
|
2029
|
+
if (!(receivedReturn.refund_amount > 0)) return [3 /*break*/, 5];
|
|
2030
|
+
return [4 /*yield*/, this.paymentProviderService_
|
|
2031
|
+
.withTransaction(manager)
|
|
2032
|
+
.refundPayment(order.payments, receivedReturn.refund_amount, "return")];
|
|
2033
|
+
case 4:
|
|
2034
|
+
refund = _d.sent();
|
|
2035
|
+
order.refunds = __spreadArray(__spreadArray([], __read((order.refunds || [])), false), [refund], false);
|
|
2036
|
+
_d.label = 5;
|
|
2037
|
+
case 5:
|
|
2038
|
+
if (isFullReturn) {
|
|
2039
|
+
order.fulfillment_status = models_1.FulfillmentStatus.RETURNED;
|
|
2040
|
+
}
|
|
2041
|
+
else {
|
|
2042
|
+
order.fulfillment_status = models_1.FulfillmentStatus.PARTIALLY_RETURNED;
|
|
2043
|
+
}
|
|
2044
|
+
return [4 /*yield*/, orderRepo.save(order)];
|
|
2045
|
+
case 6:
|
|
2046
|
+
result = _d.sent();
|
|
2047
|
+
return [4 /*yield*/, this.eventBus_
|
|
2048
|
+
.withTransaction(manager)
|
|
2049
|
+
.emit(OrderService.Events.ITEMS_RETURNED, {
|
|
2050
|
+
id: order.id,
|
|
2051
|
+
return_id: receivedReturn.id,
|
|
2052
|
+
no_notification: receivedReturn.no_notification,
|
|
2053
|
+
})];
|
|
2054
|
+
case 7:
|
|
2055
|
+
_d.sent();
|
|
2056
|
+
return [2 /*return*/, result];
|
|
2057
|
+
}
|
|
2058
|
+
});
|
|
2059
|
+
}); })];
|
|
2060
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
2126
2061
|
}
|
|
2127
|
-
keyPath = "metadata.".concat(key);
|
|
2128
|
-
return [2 /*return*/, this.orderModel_
|
|
2129
|
-
.updateOne({ _id: validatedId }, { $unset: (_a = {}, _a[keyPath] = "", _a) })
|
|
2130
|
-
.catch(function (err) {
|
|
2131
|
-
throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.DB_ERROR, err.message);
|
|
2132
|
-
})];
|
|
2133
2062
|
});
|
|
2134
2063
|
});
|
|
2135
2064
|
};
|
|
@@ -2152,6 +2081,6 @@ var OrderService = /** @class */ (function (_super) {
|
|
|
2152
2081
|
COMPLETED: "order.completed",
|
|
2153
2082
|
};
|
|
2154
2083
|
return OrderService;
|
|
2155
|
-
}(
|
|
2084
|
+
}(interfaces_1.TransactionBaseService));
|
|
2156
2085
|
exports.default = OrderService;
|
|
2157
2086
|
//# sourceMappingURL=order.js.map
|