@mercurjs/core 2.3.6-canary.1 → 2.3.6-canary.11
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/.medusa/server/src/api/admin/campaigns/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/collections/middlewares.js +8 -33
- package/.medusa/server/src/api/admin/commission-rates/middlewares.js +9 -39
- package/.medusa/server/src/api/admin/core-route-permissions.d.ts +18 -0
- package/.medusa/server/src/api/admin/core-route-permissions.js +82 -0
- package/.medusa/server/src/api/admin/customer-groups/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/inventory-items/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/members/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/middlewares.js +8 -2
- package/.medusa/server/src/api/admin/offers/middlewares.js +10 -21
- package/.medusa/server/src/api/admin/order-groups/middlewares.js +10 -15
- package/.medusa/server/src/api/admin/orders/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/payouts/middlewares.js +4 -15
- package/.medusa/server/src/api/admin/price-lists/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/product-attributes/middlewares.js +11 -51
- package/.medusa/server/src/api/admin/product-categories/middlewares.js +14 -45
- package/.medusa/server/src/api/admin/product-changes/middlewares.js +8 -15
- package/.medusa/server/src/api/admin/products/[id]/route.js +8 -3
- package/.medusa/server/src/api/admin/products/middlewares.js +21 -99
- package/.medusa/server/src/api/admin/products/validators.d.ts +3 -3
- package/.medusa/server/src/api/admin/products/validators.js +4 -3
- package/.medusa/server/src/api/admin/promotions/middlewares.js +7 -21
- package/.medusa/server/src/api/admin/reservations/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/reviews/middlewares.js +8 -33
- package/.medusa/server/src/api/admin/sellers/middlewares.js +32 -117
- package/.medusa/server/src/api/admin/sellers/query-config.js +3 -3
- package/.medusa/server/src/api/admin/shipping-options/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/shipping-profiles/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/stock-locations/middlewares.js +3 -9
- package/.medusa/server/src/api/admin/users/me/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/users/me/route.js +42 -0
- package/.medusa/server/src/api/admin/users/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/users/middlewares.js +17 -0
- package/.medusa/server/src/api/utils/ensure-seller-middleware.js +1 -15
- package/.medusa/server/src/api/utils/index.d.ts +1 -2
- package/.medusa/server/src/api/utils/index.js +2 -3
- package/.medusa/server/src/api/utils/permissions-middleware.d.ts +32 -0
- package/.medusa/server/src/api/utils/permissions-middleware.js +133 -0
- package/.medusa/server/src/api/utils/scan-unauthenticated-routes.d.ts +6 -0
- package/.medusa/server/src/api/utils/scan-unauthenticated-routes.js +29 -6
- package/.medusa/server/src/api/utils/split-order-payment-status.d.ts +3 -1
- package/.medusa/server/src/api/utils/split-order-payment-status.js +25 -21
- package/.medusa/server/src/api/utils/unless-base-url.d.ts +4 -2
- package/.medusa/server/src/api/utils/unless-base-url.js +12 -4
- package/.medusa/server/src/api/vendor/campaigns/middlewares.js +9 -39
- package/.medusa/server/src/api/vendor/claims/middlewares.js +37 -129
- package/.medusa/server/src/api/vendor/collections/middlewares.js +5 -21
- package/.medusa/server/src/api/vendor/currencies/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/customer-groups/middlewares.js +9 -39
- package/.medusa/server/src/api/vendor/customers/middlewares.js +5 -21
- package/.medusa/server/src/api/vendor/exchanges/middlewares.js +31 -105
- package/.medusa/server/src/api/vendor/fulfillment-providers/middlewares.js +3 -9
- package/.medusa/server/src/api/vendor/fulfillment-sets/middlewares.js +8 -33
- package/.medusa/server/src/api/vendor/inventory-items/middlewares.js +14 -69
- package/.medusa/server/src/api/vendor/members/invites/accept/route.js +2 -1
- package/.medusa/server/src/api/vendor/members/me/route.js +6 -3
- package/.medusa/server/src/api/vendor/members/middlewares.js +3 -17
- package/.medusa/server/src/api/vendor/members/validators.d.ts +4 -2
- package/.medusa/server/src/api/vendor/members/validators.js +3 -2
- package/.medusa/server/src/api/vendor/middlewares.js +8 -3
- package/.medusa/server/src/api/vendor/offers/middlewares.js +10 -45
- package/.medusa/server/src/api/vendor/order-edits/middlewares.js +23 -69
- package/.medusa/server/src/api/vendor/orders/middlewares.js +18 -63
- package/.medusa/server/src/api/vendor/payments/helpers.js +22 -16
- package/.medusa/server/src/api/vendor/payments/middlewares.js +7 -33
- package/.medusa/server/src/api/vendor/payout-accounts/middlewares.js +6 -27
- package/.medusa/server/src/api/vendor/payouts/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/price-lists/middlewares.js +11 -51
- package/.medusa/server/src/api/vendor/price-preferences/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/product-attributes/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/product-categories/middlewares.js +5 -21
- package/.medusa/server/src/api/vendor/product-tags/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/product-types/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/product-variants/middlewares.js +3 -9
- package/.medusa/server/src/api/vendor/products/middlewares.js +24 -75
- package/.medusa/server/src/api/vendor/products/validators.d.ts +2 -2
- package/.medusa/server/src/api/vendor/products/validators.js +4 -3
- package/.medusa/server/src/api/vendor/promotions/middlewares.js +14 -69
- package/.medusa/server/src/api/vendor/refund-reasons/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/regions/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/reservations/middlewares.js +9 -33
- package/.medusa/server/src/api/vendor/return-reasons/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/returns/middlewares.js +26 -135
- package/.medusa/server/src/api/vendor/reviews/middlewares.js +5 -21
- package/.medusa/server/src/api/vendor/sales-channels/middlewares.js +5 -21
- package/.medusa/server/src/api/vendor/sellers/me/route.js +1 -1
- package/.medusa/server/src/api/vendor/sellers/middlewares.js +15 -92
- package/.medusa/server/src/api/vendor/sellers/query-config.d.ts +0 -4
- package/.medusa/server/src/api/vendor/sellers/query-config.js +8 -11
- package/.medusa/server/src/api/vendor/shipping-option-types/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/shipping-options/middlewares.js +9 -39
- package/.medusa/server/src/api/vendor/shipping-profiles/middlewares.js +4 -15
- package/.medusa/server/src/api/vendor/stock-locations/middlewares.js +11 -51
- package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +2 -2
- package/.medusa/server/src/api/vendor/uploads/middlewares.js +9 -9
- package/.medusa/server/src/modules/payout/migrations/Migration20260928120000.d.ts +5 -0
- package/.medusa/server/src/modules/payout/migrations/Migration20260928120000.js +14 -0
- package/.medusa/server/src/modules/payout/models/payout-account.js +2 -2
- package/.medusa/server/src/modules/seller/repositories/order-group.js +9 -1
- package/.medusa/server/src/patches/index.d.ts +11 -1
- package/.medusa/server/src/patches/index.js +52 -13
- package/.medusa/server/src/patches/loader.d.ts +10 -0
- package/.medusa/server/src/patches/loader.js +46 -4
- package/.medusa/server/src/patches/manifest.js +12 -3
- package/.medusa/server/src/patches/patches/@medusajs+core-flows@2.20.1-delivery-hook.patch +39 -0
- package/.medusa/server/src/patches/register.d.ts +1 -0
- package/.medusa/server/src/patches/register.js +10 -0
- package/.medusa/server/src/permissions/definitions/api-keys.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/api-keys.js +8 -0
- package/.medusa/server/src/permissions/definitions/commissions.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/commissions.js +9 -0
- package/.medusa/server/src/permissions/definitions/customers.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/customers.js +9 -0
- package/.medusa/server/src/permissions/definitions/fulfillment.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/fulfillment.js +10 -0
- package/.medusa/server/src/permissions/definitions/inventory.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/inventory.js +10 -0
- package/.medusa/server/src/permissions/definitions/members.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/members.js +9 -0
- package/.medusa/server/src/permissions/definitions/notifications.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/notifications.js +8 -0
- package/.medusa/server/src/permissions/definitions/offers.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/offers.js +8 -0
- package/.medusa/server/src/permissions/definitions/orders.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/orders.js +12 -0
- package/.medusa/server/src/permissions/definitions/payments.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/payments.js +8 -0
- package/.medusa/server/src/permissions/definitions/payouts.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/payouts.js +9 -0
- package/.medusa/server/src/permissions/definitions/price-lists.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/price-lists.js +9 -0
- package/.medusa/server/src/permissions/definitions/product-attributes.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/product-attributes.js +8 -0
- package/.medusa/server/src/permissions/definitions/products.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/products.js +14 -0
- package/.medusa/server/src/permissions/definitions/promotions.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/promotions.js +9 -0
- package/.medusa/server/src/permissions/definitions/refund-reasons.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/refund-reasons.js +8 -0
- package/.medusa/server/src/permissions/definitions/regions.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/regions.js +9 -0
- package/.medusa/server/src/permissions/definitions/return-reasons.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/return-reasons.js +8 -0
- package/.medusa/server/src/permissions/definitions/reviews.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/reviews.js +8 -0
- package/.medusa/server/src/permissions/definitions/roles.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/roles.js +9 -0
- package/.medusa/server/src/permissions/definitions/sales-channels.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/sales-channels.js +8 -0
- package/.medusa/server/src/permissions/definitions/sellers.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/sellers.js +10 -0
- package/.medusa/server/src/permissions/definitions/store.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/store.js +8 -0
- package/.medusa/server/src/permissions/definitions/translations.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/translations.js +8 -0
- package/.medusa/server/src/permissions/definitions/users.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/users.js +8 -0
- package/.medusa/server/src/permissions/definitions/workflow-executions.d.ts +1 -0
- package/.medusa/server/src/permissions/definitions/workflow-executions.js +8 -0
- package/.medusa/server/src/permissions/index.d.ts +27 -0
- package/.medusa/server/src/permissions/index.js +44 -0
- package/.medusa/server/src/permissions/registry.d.ts +18 -0
- package/.medusa/server/src/permissions/registry.js +86 -0
- package/.medusa/server/src/subscribers/split-order-canceled.d.ts +5 -0
- package/.medusa/server/src/subscribers/split-order-canceled.js +24 -0
- package/.medusa/server/src/subscribers/split-order-payment-captured.d.ts +5 -0
- package/.medusa/server/src/subscribers/split-order-payment-captured.js +24 -0
- package/.medusa/server/src/utils/sanitize-rich-text.d.ts +2 -0
- package/.medusa/server/src/utils/sanitize-rich-text.js +50 -0
- package/.medusa/server/src/with-mercur.d.ts +5 -3
- package/.medusa/server/src/with-mercur.js +4 -23
- package/.medusa/server/src/workflows/cart/workflows/complete-cart-with-split-orders.js +18 -31
- package/.medusa/server/src/workflows/index.d.ts +1 -0
- package/.medusa/server/src/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/offer/workflows/create-offers.js +34 -4
- package/.medusa/server/src/workflows/order/workflows/fulfillment-hooks.d.ts +9 -0
- package/.medusa/server/src/workflows/order/workflows/fulfillment-hooks.js +9 -0
- package/.medusa/server/src/workflows/order/workflows/index.d.ts +1 -0
- package/.medusa/server/src/workflows/order/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/order-group/workflows/get-order-group-detail.js +8 -8
- package/.medusa/server/src/workflows/order-group/workflows/get-order-groups-list.js +8 -8
- package/.medusa/server/src/workflows/payment/index.d.ts +2 -0
- package/.medusa/server/src/workflows/payment/index.js +3 -1
- package/.medusa/server/src/workflows/payment/steps/create-order-payments.d.ts +44 -0
- package/.medusa/server/src/workflows/payment/steps/create-order-payments.js +48 -0
- package/.medusa/server/src/workflows/payment/steps/index.d.ts +2 -0
- package/.medusa/server/src/workflows/payment/steps/index.js +19 -0
- package/.medusa/server/src/workflows/payment/steps/record-payment-captures.d.ts +29 -0
- package/.medusa/server/src/workflows/payment/steps/record-payment-captures.js +28 -0
- package/.medusa/server/src/workflows/payment/utils/index.d.ts +2 -0
- package/.medusa/server/src/workflows/payment/utils/index.js +19 -0
- package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.d.ts +141 -0
- package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.js +234 -0
- package/.medusa/server/src/workflows/payment/utils/split-order-payment.d.ts +15 -0
- package/.medusa/server/src/workflows/payment/utils/split-order-payment.js +65 -0
- package/.medusa/server/src/workflows/payment/workflows/index.d.ts +1 -0
- package/.medusa/server/src/workflows/payment/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/payment/workflows/split-order-payments.d.ts +66 -0
- package/.medusa/server/src/workflows/payment/workflows/split-order-payments.js +164 -0
- package/.medusa/server/src/workflows/payout/workflows/create-payout.d.ts +4 -1
- package/.medusa/server/src/workflows/payout/workflows/create-payout.js +6 -2
- package/.medusa/server/src/workflows/product-edit/workflows/apply-product-change-actions.js +18 -2
- package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.d.ts +1 -0
- package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.js +2 -2
- package/.medusa/server/src/workflows/seller/steps/index.d.ts +0 -1
- package/.medusa/server/src/workflows/seller/steps/index.js +1 -2
- package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.d.ts +17 -2
- package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.js +14 -3
- package/.medusa/server/src/workflows/seller/workflows/create-seller-account.d.ts +16 -1
- package/.medusa/server/src/workflows/seller/workflows/create-seller-account.js +6 -3
- package/.medusa/server/src/workflows/seller/workflows/index.d.ts +0 -1
- package/.medusa/server/src/workflows/seller/workflows/index.js +1 -2
- package/package.json +13 -11
- package/.medusa/server/src/api/utils/policy-resources.d.ts +0 -59
- package/.medusa/server/src/api/utils/policy-resources.js +0 -64
- package/.medusa/server/src/api/utils/rbac-role-fields.d.ts +0 -1
- package/.medusa/server/src/api/utils/rbac-role-fields.js +0 -10
- package/.medusa/server/src/api/utils/resolve-admin-roles-middleware.d.ts +0 -19
- package/.medusa/server/src/api/utils/resolve-admin-roles-middleware.js +0 -55
- package/.medusa/server/src/api/vendor/rbac/me/permissions/route.d.ts +0 -16
- package/.medusa/server/src/api/vendor/rbac/me/permissions/route.js +0 -58
- package/.medusa/server/src/links/seller-member-rbac-role.d.ts +0 -2
- package/.medusa/server/src/links/seller-member-rbac-role.js +0 -41
- package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.d.ts +0 -11
- package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.js +0 -128
- package/.medusa/server/src/policies/commission.d.ts +0 -1
- package/.medusa/server/src/policies/commission.js +0 -12
- package/.medusa/server/src/policies/offer.d.ts +0 -1
- package/.medusa/server/src/policies/offer.js +0 -7
- package/.medusa/server/src/policies/payout.d.ts +0 -1
- package/.medusa/server/src/policies/payout.js +0 -7
- package/.medusa/server/src/policies/product-attribute.d.ts +0 -1
- package/.medusa/server/src/policies/product-attribute.js +0 -7
- package/.medusa/server/src/policies/product-edit.d.ts +0 -1
- package/.medusa/server/src/policies/product-edit.js +0 -7
- package/.medusa/server/src/policies/review.d.ts +0 -1
- package/.medusa/server/src/policies/review.js +0 -7
- package/.medusa/server/src/policies/seller.d.ts +0 -1
- package/.medusa/server/src/policies/seller.js +0 -13
- package/.medusa/server/src/utils/generate-resource-policies.d.ts +0 -7
- package/.medusa/server/src/utils/generate-resource-policies.js +0 -30
- package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.d.ts +0 -2
- package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.js +0 -16
- package/.medusa/server/src/workflows/seller/workflows/create-seller-defaults.d.ts +0 -2
- package/.medusa/server/src/workflows/seller/workflows/create-seller-defaults.js +0 -11
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.planCartPaymentVoid = exports.buildOrderPaymentCollectionLinks = exports.planCartPaymentSplit = exports.resolveSplitOrderCartId = exports.resolveOrderPaymentCollections = exports.hasSplitOrderCollections = exports.isOrderCanceled = exports.isPaymentCaptured = exports.cartOrderFields = exports.cartPaymentCollectionFields = exports.CART_PAYMENT_COLLECTION_KEY = exports.SPLIT_ORDER_COLLECTIONS_FLAG = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const split_order_payment_1 = require("./split-order-payment");
|
|
6
|
+
/** Set on a cart's payment collection once it is split into its orders'. */
|
|
7
|
+
exports.SPLIT_ORDER_COLLECTIONS_FLAG = "split_order_collections";
|
|
8
|
+
/** Set on an order's payment collection, pointing at the cart's. */
|
|
9
|
+
exports.CART_PAYMENT_COLLECTION_KEY = "cart_payment_collection_id";
|
|
10
|
+
const PAYMENT_FIELDS = [
|
|
11
|
+
"id",
|
|
12
|
+
"provider_id",
|
|
13
|
+
"currency_code",
|
|
14
|
+
"amount",
|
|
15
|
+
"raw_amount",
|
|
16
|
+
"data",
|
|
17
|
+
"captured_at",
|
|
18
|
+
"canceled_at",
|
|
19
|
+
"captures.id",
|
|
20
|
+
"captures.amount",
|
|
21
|
+
"captures.raw_amount",
|
|
22
|
+
"refunds.id",
|
|
23
|
+
"refunds.amount",
|
|
24
|
+
"refunds.raw_amount",
|
|
25
|
+
];
|
|
26
|
+
const COLLECTION_FIELDS = [
|
|
27
|
+
"id",
|
|
28
|
+
"currency_code",
|
|
29
|
+
"metadata",
|
|
30
|
+
...PAYMENT_FIELDS.map((field) => `payments.${field}`),
|
|
31
|
+
];
|
|
32
|
+
/** Fields to query on `cart_payment_collection` to plan a split or a void. */
|
|
33
|
+
exports.cartPaymentCollectionFields = COLLECTION_FIELDS.map((field) => `payment_collection.${field}`);
|
|
34
|
+
/** Fields to query on `order_cart` to plan a split or a void. */
|
|
35
|
+
exports.cartOrderFields = [
|
|
36
|
+
"order.id",
|
|
37
|
+
"order.status",
|
|
38
|
+
"order.canceled_at",
|
|
39
|
+
"order.total",
|
|
40
|
+
...COLLECTION_FIELDS.map((field) => `order.payment_collections.${field}`),
|
|
41
|
+
];
|
|
42
|
+
const amountOf = (movement) => movement.raw_amount ?? movement.amount;
|
|
43
|
+
const sum = (movements) => (movements ?? []).reduce((acc, movement) => utils_1.MathBN.add(acc, amountOf(movement)), utils_1.MathBN.convert(0));
|
|
44
|
+
const isPaymentCaptured = (payment) => !!payment.captured_at || (payment.captures ?? []).length > 0;
|
|
45
|
+
exports.isPaymentCaptured = isPaymentCaptured;
|
|
46
|
+
const isOrderCanceled = (order) => order.status === utils_1.OrderStatus.CANCELED || !!order.canceled_at;
|
|
47
|
+
exports.isOrderCanceled = isOrderCanceled;
|
|
48
|
+
const hasSplitOrderCollections = (paymentCollection) => paymentCollection?.metadata?.[exports.SPLIT_ORDER_COLLECTIONS_FLAG] === true;
|
|
49
|
+
exports.hasSplitOrderCollections = hasSplitOrderCollections;
|
|
50
|
+
/**
|
|
51
|
+
* The payment collections that pay for an order. Until the cart payment is
|
|
52
|
+
* captured that is the cart's shared collection; afterwards the order has its
|
|
53
|
+
* own. An order canceled before the capture never gets one and keeps showing
|
|
54
|
+
* the cart's.
|
|
55
|
+
*/
|
|
56
|
+
const resolveOrderPaymentCollections = (order) => {
|
|
57
|
+
const own = order.payment_collections ?? [];
|
|
58
|
+
const cartPaymentCollection = order.cart?.payment_collection;
|
|
59
|
+
if (!cartPaymentCollection) {
|
|
60
|
+
return own;
|
|
61
|
+
}
|
|
62
|
+
return (0, exports.hasSplitOrderCollections)(cartPaymentCollection) && own.length
|
|
63
|
+
? own
|
|
64
|
+
: [cartPaymentCollection];
|
|
65
|
+
};
|
|
66
|
+
exports.resolveOrderPaymentCollections = resolveOrderPaymentCollections;
|
|
67
|
+
/**
|
|
68
|
+
* Resolves the cart a payment or an order belongs to. A payment can be the
|
|
69
|
+
* cart's own or one created for an order when the cart payment was split.
|
|
70
|
+
*/
|
|
71
|
+
const resolveSplitOrderCartId = async (container, input) => {
|
|
72
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
73
|
+
if ("order_id" in input) {
|
|
74
|
+
const { data: [orderCart], } = await query.graph({
|
|
75
|
+
entity: "order_cart",
|
|
76
|
+
fields: ["cart_id"],
|
|
77
|
+
filters: { order_id: input.order_id },
|
|
78
|
+
});
|
|
79
|
+
return orderCart?.cart_id;
|
|
80
|
+
}
|
|
81
|
+
const { data: [payment], } = await query.graph({
|
|
82
|
+
entity: "payment",
|
|
83
|
+
fields: ["id", "payment_collection.id", "payment_collection.metadata"],
|
|
84
|
+
filters: { id: input.payment_id },
|
|
85
|
+
});
|
|
86
|
+
const collection = payment?.payment_collection;
|
|
87
|
+
if (!collection) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
const { data: [cartLink], } = await query.graph({
|
|
91
|
+
entity: "cart_payment_collection",
|
|
92
|
+
fields: ["cart_id"],
|
|
93
|
+
filters: {
|
|
94
|
+
payment_collection_id: collection.metadata?.[exports.CART_PAYMENT_COLLECTION_KEY] ?? collection.id,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
return cartLink?.cart_id;
|
|
98
|
+
};
|
|
99
|
+
exports.resolveSplitOrderCartId = resolveSplitOrderCartId;
|
|
100
|
+
const getCartPayment = (collection) => (collection?.payments ?? []).find((payment) => !payment.canceled_at);
|
|
101
|
+
const getOrderCollection = (order, cartCollectionId) => (order.payment_collections ?? []).find((collection) => collection.metadata?.[exports.CART_PAYMENT_COLLECTION_KEY] === cartCollectionId);
|
|
102
|
+
const EMPTY_PLAN = {
|
|
103
|
+
collections: [],
|
|
104
|
+
payments: [],
|
|
105
|
+
captures: [],
|
|
106
|
+
recorded: [],
|
|
107
|
+
refunds: [],
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Works out what is missing for every order of a cart to hold its share of
|
|
111
|
+
* what the cart payment has captured. Only ever plans the difference, so a
|
|
112
|
+
* cart that is already split yields an empty plan.
|
|
113
|
+
*/
|
|
114
|
+
const planCartPaymentSplit = (cartCollection, orders) => {
|
|
115
|
+
const cartPayment = getCartPayment(cartCollection);
|
|
116
|
+
if (!cartCollection || !cartPayment || !orders.length) {
|
|
117
|
+
return EMPTY_PLAN;
|
|
118
|
+
}
|
|
119
|
+
const captured = sum(cartPayment.captures);
|
|
120
|
+
if (!utils_1.MathBN.gt(captured, 0)) {
|
|
121
|
+
return EMPTY_PLAN;
|
|
122
|
+
}
|
|
123
|
+
const decimalDigits = (0, split_order_payment_1.getCurrencyDecimalDigits)(cartPayment.currency_code);
|
|
124
|
+
const weights = orders.map((order) => order.total);
|
|
125
|
+
// What each order is entitled to of the authorization, and of the part of
|
|
126
|
+
// it captured so far.
|
|
127
|
+
const shares = (0, split_order_payment_1.allocateProportionally)({
|
|
128
|
+
amount: amountOf(cartPayment),
|
|
129
|
+
weights,
|
|
130
|
+
decimalDigits,
|
|
131
|
+
});
|
|
132
|
+
const targets = (0, split_order_payment_1.allocateProportionally)({
|
|
133
|
+
amount: captured,
|
|
134
|
+
weights,
|
|
135
|
+
decimalDigits,
|
|
136
|
+
});
|
|
137
|
+
const plan = {
|
|
138
|
+
collections: [],
|
|
139
|
+
payments: [],
|
|
140
|
+
captures: [],
|
|
141
|
+
recorded: [],
|
|
142
|
+
refunds: [],
|
|
143
|
+
};
|
|
144
|
+
let attributed = utils_1.MathBN.convert(0);
|
|
145
|
+
orders.forEach((order, index) => {
|
|
146
|
+
const collection = getOrderCollection(order, cartCollection.id);
|
|
147
|
+
const payment = collection?.payments?.[0];
|
|
148
|
+
const recorded = sum(payment?.captures);
|
|
149
|
+
const missing = utils_1.MathBN.sub(targets[index], recorded);
|
|
150
|
+
attributed = utils_1.MathBN.add(attributed, recorded);
|
|
151
|
+
for (const capture of payment?.captures ?? []) {
|
|
152
|
+
plan.recorded.push({
|
|
153
|
+
order_id: order.id,
|
|
154
|
+
currency_code: cartPayment.currency_code,
|
|
155
|
+
capture_id: capture.id,
|
|
156
|
+
amount: amountOf(capture),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// An order canceled before the capture is not paid: its part of the
|
|
160
|
+
// charge stays unattributed and is refunded.
|
|
161
|
+
if ((0, exports.isOrderCanceled)(order) || !utils_1.MathBN.gt(missing, 0)) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (!collection) {
|
|
165
|
+
plan.collections.push({
|
|
166
|
+
order_id: order.id,
|
|
167
|
+
currency_code: cartPayment.currency_code,
|
|
168
|
+
amount: shares[index],
|
|
169
|
+
metadata: { [exports.CART_PAYMENT_COLLECTION_KEY]: cartCollection.id },
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (!payment) {
|
|
173
|
+
plan.payments.push({
|
|
174
|
+
order_id: order.id,
|
|
175
|
+
payment_collection_id: collection?.id,
|
|
176
|
+
provider_id: cartPayment.provider_id,
|
|
177
|
+
currency_code: cartPayment.currency_code,
|
|
178
|
+
amount: shares[index],
|
|
179
|
+
data: cartPayment.data ?? {},
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
plan.captures.push({
|
|
183
|
+
order_id: order.id,
|
|
184
|
+
payment_id: payment?.id,
|
|
185
|
+
amount: missing,
|
|
186
|
+
});
|
|
187
|
+
attributed = utils_1.MathBN.add(attributed, missing);
|
|
188
|
+
});
|
|
189
|
+
const unattributed = utils_1.MathBN.sub(captured, attributed, sum(cartPayment.refunds));
|
|
190
|
+
if (utils_1.MathBN.gt(unattributed, 0)) {
|
|
191
|
+
plan.refunds.push({
|
|
192
|
+
payment_id: cartPayment.id,
|
|
193
|
+
amount: unattributed,
|
|
194
|
+
note: "Share of orders canceled before the payment was captured",
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (!(0, exports.hasSplitOrderCollections)(cartCollection)) {
|
|
198
|
+
plan.cart_payment_collection = {
|
|
199
|
+
id: cartCollection.id,
|
|
200
|
+
metadata: {
|
|
201
|
+
...cartCollection.metadata,
|
|
202
|
+
[exports.SPLIT_ORDER_COLLECTIONS_FLAG]: true,
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
return plan;
|
|
207
|
+
};
|
|
208
|
+
exports.planCartPaymentSplit = planCartPaymentSplit;
|
|
209
|
+
/** The links between the orders and the payment collections created for them. */
|
|
210
|
+
const buildOrderPaymentCollectionLinks = (plan, createdCollections) => plan.collections.map((collection, index) => ({
|
|
211
|
+
[utils_1.Modules.ORDER]: { order_id: collection.order_id },
|
|
212
|
+
[utils_1.Modules.PAYMENT]: { payment_collection_id: createdCollections[index].id },
|
|
213
|
+
}));
|
|
214
|
+
exports.buildOrderPaymentCollectionLinks = buildOrderPaymentCollectionLinks;
|
|
215
|
+
/**
|
|
216
|
+
* The cart payment to void: set once every order of the cart is canceled and
|
|
217
|
+
* nothing of the payment was captured.
|
|
218
|
+
*/
|
|
219
|
+
const planCartPaymentVoid = (cartCollection, orders) => {
|
|
220
|
+
const cartPayment = getCartPayment(cartCollection);
|
|
221
|
+
if (!cartCollection ||
|
|
222
|
+
!cartPayment ||
|
|
223
|
+
!orders.length ||
|
|
224
|
+
(0, exports.isPaymentCaptured)(cartPayment) ||
|
|
225
|
+
!orders.every(exports.isOrderCanceled)) {
|
|
226
|
+
return { payment_ids: [], payment_collection_ids: [] };
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
payment_ids: [cartPayment.id],
|
|
230
|
+
payment_collection_ids: [cartCollection.id],
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
exports.planCartPaymentVoid = planCartPaymentVoid;
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudC1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5bWVudC91dGlscy9zcGxpdC1vcmRlci1wYXltZW50LWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLHFEQUtrQztBQUVsQywrREFHOEI7QUFFOUIsNEVBQTRFO0FBQy9ELFFBQUEsNEJBQTRCLEdBQUcseUJBQXlCLENBQUE7QUFFckUsb0VBQW9FO0FBQ3ZELFFBQUEsMkJBQTJCLEdBQUcsNEJBQTRCLENBQUE7QUFvQ3ZFLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLElBQUk7SUFDSixhQUFhO0lBQ2IsZUFBZTtJQUNmLFFBQVE7SUFDUixZQUFZO0lBQ1osTUFBTTtJQUNOLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsWUFBWTtJQUNaLGdCQUFnQjtJQUNoQixvQkFBb0I7Q0FDckIsQ0FBQTtBQUVELE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSTtJQUNKLGVBQWU7SUFDZixVQUFVO0lBQ1YsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDO0NBQ3RELENBQUE7QUFFRCw4RUFBOEU7QUFDakUsUUFBQSwyQkFBMkIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQzlELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsS0FBSyxFQUFFLENBQ3pDLENBQUE7QUFFRCxpRUFBaUU7QUFDcEQsUUFBQSxlQUFlLEdBQUc7SUFDN0IsVUFBVTtJQUNWLGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUM7Q0FDMUUs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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BigNumberInput } from "@medusajs/framework/types";
|
|
2
|
+
import { MathBN } from "@medusajs/framework/utils";
|
|
3
|
+
type BigNumberValue = ReturnType<typeof MathBN.convert>;
|
|
4
|
+
export declare const getCurrencyDecimalDigits: (currencyCode?: string | null) => number;
|
|
5
|
+
/**
|
|
6
|
+
* Splits `amount` across `weights` proportionally. Shares are rounded down to
|
|
7
|
+
* the currency precision and the remainder is handed out one minor unit at a
|
|
8
|
+
* time to the largest fractions, so the shares always sum exactly to `amount`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const allocateProportionally: ({ amount, weights, decimalDigits, }: {
|
|
11
|
+
amount: BigNumberInput;
|
|
12
|
+
weights: BigNumberInput[];
|
|
13
|
+
decimalDigits: number;
|
|
14
|
+
}) => BigNumberValue[];
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.allocateProportionally = exports.getCurrencyDecimalDigits = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const DEFAULT_DECIMAL_DIGITS = 2;
|
|
6
|
+
const getCurrencyDecimalDigits = (currencyCode) => {
|
|
7
|
+
const currency = utils_1.defaultCurrencies[(currencyCode ?? "").toUpperCase()];
|
|
8
|
+
return currency?.decimal_digits ?? DEFAULT_DECIMAL_DIGITS;
|
|
9
|
+
};
|
|
10
|
+
exports.getCurrencyDecimalDigits = getCurrencyDecimalDigits;
|
|
11
|
+
const floorTo = (value, decimalDigits) => {
|
|
12
|
+
const rounded = utils_1.MathBN.convert(value, decimalDigits);
|
|
13
|
+
if (utils_1.MathBN.lte(rounded, value)) {
|
|
14
|
+
return rounded;
|
|
15
|
+
}
|
|
16
|
+
return utils_1.MathBN.sub(rounded, utils_1.MathBN.div(1, utils_1.MathBN.convert(10).pow(decimalDigits)));
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Splits `amount` across `weights` proportionally. Shares are rounded down to
|
|
20
|
+
* the currency precision and the remainder is handed out one minor unit at a
|
|
21
|
+
* time to the largest fractions, so the shares always sum exactly to `amount`.
|
|
22
|
+
*/
|
|
23
|
+
const allocateProportionally = ({ amount, weights, decimalDigits, }) => {
|
|
24
|
+
if (!weights.length) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const total = utils_1.MathBN.convert(amount);
|
|
28
|
+
const positiveWeights = weights.map((weight) => utils_1.MathBN.max(utils_1.MathBN.convert(weight), 0));
|
|
29
|
+
const weightSum = positiveWeights.reduce((acc, weight) => utils_1.MathBN.add(acc, weight), utils_1.MathBN.convert(0));
|
|
30
|
+
const effectiveWeights = utils_1.MathBN.gt(weightSum, 0)
|
|
31
|
+
? positiveWeights
|
|
32
|
+
: positiveWeights.map(() => utils_1.MathBN.convert(1));
|
|
33
|
+
const effectiveSum = utils_1.MathBN.gt(weightSum, 0)
|
|
34
|
+
? weightSum
|
|
35
|
+
: utils_1.MathBN.convert(effectiveWeights.length);
|
|
36
|
+
const unit = utils_1.MathBN.div(1, utils_1.MathBN.convert(10).pow(decimalDigits));
|
|
37
|
+
const exact = effectiveWeights.map((weight) => utils_1.MathBN.div(utils_1.MathBN.mult(total, weight), effectiveSum));
|
|
38
|
+
const shares = exact.map((share) => floorTo(share, decimalDigits));
|
|
39
|
+
let leftover = utils_1.MathBN.sub(total, shares.reduce((acc, share) => utils_1.MathBN.add(acc, share), utils_1.MathBN.convert(0)));
|
|
40
|
+
const byLargestFraction = exact
|
|
41
|
+
.map((share, index) => ({
|
|
42
|
+
index,
|
|
43
|
+
fraction: utils_1.MathBN.sub(share, shares[index]),
|
|
44
|
+
}))
|
|
45
|
+
.sort((a, b) => utils_1.MathBN.eq(a.fraction, b.fraction)
|
|
46
|
+
? a.index - b.index
|
|
47
|
+
: utils_1.MathBN.gt(a.fraction, b.fraction)
|
|
48
|
+
? -1
|
|
49
|
+
: 1);
|
|
50
|
+
for (const { index } of byLargestFraction) {
|
|
51
|
+
if (utils_1.MathBN.lt(leftover, unit)) {
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
shares[index] = utils_1.MathBN.add(shares[index], unit);
|
|
55
|
+
leftover = utils_1.MathBN.sub(leftover, unit);
|
|
56
|
+
}
|
|
57
|
+
// Only reachable when `amount` itself is finer than the currency precision.
|
|
58
|
+
if (utils_1.MathBN.gt(leftover, 0)) {
|
|
59
|
+
const { index } = byLargestFraction[0];
|
|
60
|
+
shares[index] = utils_1.MathBN.add(shares[index], leftover);
|
|
61
|
+
}
|
|
62
|
+
return shares;
|
|
63
|
+
};
|
|
64
|
+
exports.allocateProportionally = allocateProportionally;
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5bWVudC91dGlscy9zcGxpdC1vcmRlci1wYXltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFxRTtBQUlyRSxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQTtBQUV6QixNQUFNLHdCQUF3QixHQUFHLENBQUMsWUFBNEIsRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHLHlCQUFpQixDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDdEUsT0FBTyxRQUFRLEVBQUUsY0FBYyxJQUFJLHNCQUFzQixDQUFBO0FBQzNELENBQUMsQ0FBQTtBQUhZLFFBQUEsd0JBQXdCLDRCQUdwQztBQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBcUIsRUFBRSxhQUFxQixFQUFFLEVBQUU7SUFDL0QsTUFBTSxPQUFPLEdBQUcsY0FBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDcEQsSUFBSSxjQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFDRCxPQUFPLGNBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGNBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNsRixDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ0ksTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQ3JDLE1BQU0sRUFDTixPQUFPLEVBQ1AsYUFBYSxHQUtkLEVBQW9CLEVBQUU7SUFDckIsSUFBSSxDQUFDLE9BQU8s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
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./process-payment"), exports);
|
|
18
18
|
__exportStar(require("./payment-hooks"), exports);
|
|
19
|
-
|
|
19
|
+
__exportStar(require("./split-order-payments"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BheW1lbnQvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBaUM7QUFDakMsa0RBQStCO0FBQy9CLHlEQUFzQyJ9
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cart whose payment to split.
|
|
3
|
+
*/
|
|
4
|
+
export type SplitCapturedCartPaymentWorkflowInput = {
|
|
5
|
+
/**
|
|
6
|
+
* The ID of the cart.
|
|
7
|
+
*/
|
|
8
|
+
cart_id: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const splitCapturedCartPaymentWorkflowId = "split-captured-cart-payment";
|
|
11
|
+
/**
|
|
12
|
+
* This workflow splits a captured cart payment between the orders of the
|
|
13
|
+
* cart. Every order gets a payment collection of its own, linked to the order,
|
|
14
|
+
* with a captured payment for the order's share on the cart payment's provider
|
|
15
|
+
* and pointing at the same charge, so Medusa's refund and cancel workflows
|
|
16
|
+
* apply to the order. What was charged for orders canceled before the capture
|
|
17
|
+
* is refunded against the cart payment.
|
|
18
|
+
*
|
|
19
|
+
* The workflow only adds what is missing: it does nothing until the cart
|
|
20
|
+
* payment has a capture, and nothing when run again for the same capture.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const { result } = await splitCapturedCartPaymentWorkflow(container)
|
|
24
|
+
* .run({
|
|
25
|
+
* input: {
|
|
26
|
+
* cart_id: "cart_123",
|
|
27
|
+
* }
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* @summary
|
|
31
|
+
*
|
|
32
|
+
* Split a captured cart payment into a payment per order.
|
|
33
|
+
*/
|
|
34
|
+
export declare const splitCapturedCartPaymentWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<SplitCapturedCartPaymentWorkflowInput, import("@medusajs/types").PaymentDTO[], []>;
|
|
35
|
+
/**
|
|
36
|
+
* The cart whose payment to void.
|
|
37
|
+
*/
|
|
38
|
+
export type VoidCanceledCartPaymentWorkflowInput = {
|
|
39
|
+
/**
|
|
40
|
+
* The ID of the cart.
|
|
41
|
+
*/
|
|
42
|
+
cart_id: string;
|
|
43
|
+
};
|
|
44
|
+
export declare const voidCanceledCartPaymentWorkflowId = "void-canceled-cart-payment";
|
|
45
|
+
/**
|
|
46
|
+
* This workflow voids a cart's payment once every order of the cart is
|
|
47
|
+
* canceled. Until it is captured, the authorization is shared by the cart's
|
|
48
|
+
* orders, so canceling a single order leaves it in place. The workflow does
|
|
49
|
+
* nothing while an order is still open or once the payment is captured.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* const { result } = await voidCanceledCartPaymentWorkflow(container)
|
|
53
|
+
* .run({
|
|
54
|
+
* input: {
|
|
55
|
+
* cart_id: "cart_123",
|
|
56
|
+
* }
|
|
57
|
+
* })
|
|
58
|
+
*
|
|
59
|
+
* @summary
|
|
60
|
+
*
|
|
61
|
+
* Void a cart's payment when all of its orders are canceled.
|
|
62
|
+
*/
|
|
63
|
+
export declare const voidCanceledCartPaymentWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<VoidCanceledCartPaymentWorkflowInput, {
|
|
64
|
+
payment_ids: string[];
|
|
65
|
+
payment_collection_ids: string[];
|
|
66
|
+
}, []>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.voidCanceledCartPaymentWorkflow = exports.voidCanceledCartPaymentWorkflowId = exports.splitCapturedCartPaymentWorkflow = exports.splitCapturedCartPaymentWorkflowId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
7
|
+
const create_order_payments_1 = require("../steps/create-order-payments");
|
|
8
|
+
const record_payment_captures_1 = require("../steps/record-payment-captures");
|
|
9
|
+
const utils_2 = require("../utils");
|
|
10
|
+
const LOCK_TIMEOUT_SECONDS = 30;
|
|
11
|
+
const LOCK_TTL_SECONDS = 120;
|
|
12
|
+
const toOrders = (links) => links.flatMap((link) => link.order ?? []);
|
|
13
|
+
exports.splitCapturedCartPaymentWorkflowId = "split-captured-cart-payment";
|
|
14
|
+
/**
|
|
15
|
+
* This workflow splits a captured cart payment between the orders of the
|
|
16
|
+
* cart. Every order gets a payment collection of its own, linked to the order,
|
|
17
|
+
* with a captured payment for the order's share on the cart payment's provider
|
|
18
|
+
* and pointing at the same charge, so Medusa's refund and cancel workflows
|
|
19
|
+
* apply to the order. What was charged for orders canceled before the capture
|
|
20
|
+
* is refunded against the cart payment.
|
|
21
|
+
*
|
|
22
|
+
* The workflow only adds what is missing: it does nothing until the cart
|
|
23
|
+
* payment has a capture, and nothing when run again for the same capture.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const { result } = await splitCapturedCartPaymentWorkflow(container)
|
|
27
|
+
* .run({
|
|
28
|
+
* input: {
|
|
29
|
+
* cart_id: "cart_123",
|
|
30
|
+
* }
|
|
31
|
+
* })
|
|
32
|
+
*
|
|
33
|
+
* @summary
|
|
34
|
+
*
|
|
35
|
+
* Split a captured cart payment into a payment per order.
|
|
36
|
+
*/
|
|
37
|
+
exports.splitCapturedCartPaymentWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.splitCapturedCartPaymentWorkflowId, (input) => {
|
|
38
|
+
// Not the cart id itself: checkout holds that lock while it runs this
|
|
39
|
+
// workflow as a step.
|
|
40
|
+
const lockKey = (0, workflows_sdk_1.transform)({ input }, ({ input }) => `split-order-payment:${input.cart_id}`);
|
|
41
|
+
(0, core_flows_1.acquireLockStep)({
|
|
42
|
+
key: lockKey,
|
|
43
|
+
timeout: LOCK_TIMEOUT_SECONDS,
|
|
44
|
+
ttl: LOCK_TTL_SECONDS,
|
|
45
|
+
});
|
|
46
|
+
const cartPaymentQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
47
|
+
entity: "cart_payment_collection",
|
|
48
|
+
fields: utils_2.cartPaymentCollectionFields,
|
|
49
|
+
filters: { cart_id: input.cart_id },
|
|
50
|
+
}).config({ name: "get-cart-payment-collection" });
|
|
51
|
+
const cartOrdersQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
52
|
+
entity: "order_cart",
|
|
53
|
+
fields: utils_2.cartOrderFields,
|
|
54
|
+
filters: { cart_id: input.cart_id },
|
|
55
|
+
}).config({ name: "get-cart-orders" });
|
|
56
|
+
const plan = (0, workflows_sdk_1.transform)({ cartPaymentQuery, cartOrdersQuery }, ({ cartPaymentQuery, cartOrdersQuery }) => (0, utils_2.planCartPaymentSplit)(cartPaymentQuery.data[0]
|
|
57
|
+
?.payment_collection, toOrders(cartOrdersQuery.data)));
|
|
58
|
+
const collections = (0, core_flows_1.createPaymentCollectionsStep)(plan.collections);
|
|
59
|
+
const links = (0, workflows_sdk_1.transform)({ plan, collections }, ({ plan, collections }) => (0, utils_2.buildOrderPaymentCollectionLinks)(plan, collections));
|
|
60
|
+
(0, core_flows_1.createRemoteLinkStep)(links).config({
|
|
61
|
+
name: "link-order-payment-collections",
|
|
62
|
+
});
|
|
63
|
+
const paymentsToCreate = (0, workflows_sdk_1.transform)({ plan, collections }, ({ plan, collections }) => {
|
|
64
|
+
const createdByOrder = new Map(plan.collections.map((collection, index) => [
|
|
65
|
+
collection.order_id,
|
|
66
|
+
collections[index].id,
|
|
67
|
+
]));
|
|
68
|
+
return plan.payments.map(({ order_id, ...payment }) => ({
|
|
69
|
+
...payment,
|
|
70
|
+
payment_collection_id: payment.payment_collection_id ??
|
|
71
|
+
createdByOrder.get(order_id),
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
const payments = (0, create_order_payments_1.createOrderPaymentsStep)(paymentsToCreate);
|
|
75
|
+
const capturesToRecord = (0, workflows_sdk_1.transform)({ plan, payments }, ({ plan, payments }) => {
|
|
76
|
+
const createdByOrder = new Map(plan.payments.map((payment, index) => [
|
|
77
|
+
payment.order_id,
|
|
78
|
+
payments[index].id,
|
|
79
|
+
]));
|
|
80
|
+
return plan.captures.map((capture) => ({
|
|
81
|
+
payment_id: capture.payment_id ??
|
|
82
|
+
createdByOrder.get(capture.order_id),
|
|
83
|
+
amount: capture.amount,
|
|
84
|
+
}));
|
|
85
|
+
});
|
|
86
|
+
const capturedPayments = (0, record_payment_captures_1.recordPaymentCapturesStep)(capturesToRecord);
|
|
87
|
+
const orderTransactions = (0, workflows_sdk_1.transform)({ plan, capturedPayments }, ({ plan, capturedPayments }) => [
|
|
88
|
+
...plan.recorded.map((capture) => ({
|
|
89
|
+
order_id: capture.order_id,
|
|
90
|
+
amount: capture.amount,
|
|
91
|
+
currency_code: capture.currency_code,
|
|
92
|
+
reference: "capture",
|
|
93
|
+
reference_id: capture.capture_id,
|
|
94
|
+
})),
|
|
95
|
+
...capturedPayments.flatMap((payment, index) => (payment.captures ?? []).map((capture) => ({
|
|
96
|
+
order_id: plan.captures[index].order_id,
|
|
97
|
+
amount: capture.raw_amount ?? capture.amount,
|
|
98
|
+
currency_code: payment.currency_code,
|
|
99
|
+
reference: "capture",
|
|
100
|
+
reference_id: capture.id,
|
|
101
|
+
}))),
|
|
102
|
+
]);
|
|
103
|
+
(0, core_flows_1.addOrderTransactionStep)(orderTransactions);
|
|
104
|
+
(0, workflows_sdk_1.when)("flag-cart-payment-collection", { plan }, ({ plan }) => {
|
|
105
|
+
return !!plan.cart_payment_collection;
|
|
106
|
+
}).then(() => {
|
|
107
|
+
(0, core_flows_1.updatePaymentCollectionStep)({
|
|
108
|
+
selector: { id: plan.cart_payment_collection.id },
|
|
109
|
+
update: { metadata: plan.cart_payment_collection.metadata },
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
(0, core_flows_1.refundPaymentsStep)(plan.refunds);
|
|
113
|
+
const capturedEvents = (0, workflows_sdk_1.transform)({ capturedPayments }, ({ capturedPayments }) => capturedPayments.map((payment) => ({ id: payment.id })));
|
|
114
|
+
(0, core_flows_1.emitEventStep)({
|
|
115
|
+
eventName: utils_1.PaymentEvents.CAPTURED,
|
|
116
|
+
data: capturedEvents,
|
|
117
|
+
});
|
|
118
|
+
(0, core_flows_1.releaseLockStep)({ key: lockKey });
|
|
119
|
+
return new workflows_sdk_1.WorkflowResponse(capturedPayments);
|
|
120
|
+
});
|
|
121
|
+
exports.voidCanceledCartPaymentWorkflowId = "void-canceled-cart-payment";
|
|
122
|
+
/**
|
|
123
|
+
* This workflow voids a cart's payment once every order of the cart is
|
|
124
|
+
* canceled. Until it is captured, the authorization is shared by the cart's
|
|
125
|
+
* orders, so canceling a single order leaves it in place. The workflow does
|
|
126
|
+
* nothing while an order is still open or once the payment is captured.
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* const { result } = await voidCanceledCartPaymentWorkflow(container)
|
|
130
|
+
* .run({
|
|
131
|
+
* input: {
|
|
132
|
+
* cart_id: "cart_123",
|
|
133
|
+
* }
|
|
134
|
+
* })
|
|
135
|
+
*
|
|
136
|
+
* @summary
|
|
137
|
+
*
|
|
138
|
+
* Void a cart's payment when all of its orders are canceled.
|
|
139
|
+
*/
|
|
140
|
+
exports.voidCanceledCartPaymentWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.voidCanceledCartPaymentWorkflowId, (input) => {
|
|
141
|
+
const cartPaymentQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
142
|
+
entity: "cart_payment_collection",
|
|
143
|
+
fields: utils_2.cartPaymentCollectionFields,
|
|
144
|
+
filters: { cart_id: input.cart_id },
|
|
145
|
+
}).config({ name: "get-cart-payment-collection" });
|
|
146
|
+
const cartOrdersQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
147
|
+
entity: "order_cart",
|
|
148
|
+
fields: utils_2.cartOrderFields,
|
|
149
|
+
filters: { cart_id: input.cart_id },
|
|
150
|
+
}).config({ name: "get-cart-orders" });
|
|
151
|
+
const plan = (0, workflows_sdk_1.transform)({ cartPaymentQuery, cartOrdersQuery }, ({ cartPaymentQuery, cartOrdersQuery }) => (0, utils_2.planCartPaymentVoid)(cartPaymentQuery.data[0]
|
|
152
|
+
?.payment_collection, toOrders(cartOrdersQuery.data)));
|
|
153
|
+
(0, core_flows_1.cancelPaymentStep)({ paymentIds: plan.payment_ids });
|
|
154
|
+
(0, workflows_sdk_1.when)("cancel-cart-payment-collection", { plan }, ({ plan }) => {
|
|
155
|
+
return plan.payment_collection_ids.length > 0;
|
|
156
|
+
}).then(() => {
|
|
157
|
+
(0, core_flows_1.updatePaymentCollectionStep)({
|
|
158
|
+
selector: { id: plan.payment_collection_ids },
|
|
159
|
+
update: { status: utils_1.PaymentCollectionStatus.CANCELED },
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
return new workflows_sdk_1.WorkflowResponse(plan);
|
|
163
|
+
});
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BheW1lbnQvd29ya2Zsb3dzL3NwbGl0LW9yZGVyLXBheW1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFrRjtBQUNsRixxRUFLMEM7QUFDMUMsNERBV29DO0FBRXBDLDBFQUF3RTtBQUN4RSw4RUFBNEU7QUFDNUUsb0NBUWlCO0FBWWpCLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFBO0FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFBO0FBUTVCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUE7QUFFOUIsUUFBQSxrQ0FBa0MsR0FBRyw2QkFBNkIsQ0FBQTtBQUMvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNVLFFBQUEsZ0NBQWdDLEdBQUcsSUFBQSw4QkFBYyxFQUM1RCwwQ0FBa0MsRUFDbEMsQ0FBQyxLQUE0QyxFQUFFLEVBQUU7SUFDL0Msc0VBQXNFO0lBQ3RFLHNCQUFzQjtJQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFTLEVBQ3ZCLEVBQUUsS0FBSyxFQUFFLEVBQ1QsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUN0RCxDQUFBO0lBRUQsSUFBQSw0QkFBZSxFQUFDO1FBQ2QsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLEdBQUcsRUFBRSxnQkFBZ0I7S0FDdEIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3pDLE1BQU0sRUFB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
|
|
@@ -2,5 +2,8 @@ type CreatePayoutWorkflowInput = {
|
|
|
2
2
|
order_id: string;
|
|
3
3
|
};
|
|
4
4
|
export declare const createPayoutWorkflowId = "create-payout";
|
|
5
|
-
export declare const createPayoutWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<CreatePayoutWorkflowInput, import("@mercurjs/types").PayoutDTO, [
|
|
5
|
+
export declare const createPayoutWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<CreatePayoutWorkflowInput, import("@mercurjs/types").PayoutDTO, [import("@medusajs/framework/workflows-sdk").Hook<"payoutCreated", {
|
|
6
|
+
order_id: string;
|
|
7
|
+
payout_id: string;
|
|
8
|
+
}, unknown>]>;
|
|
6
9
|
export {};
|
|
@@ -78,6 +78,10 @@ exports.createPayoutWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.creat
|
|
|
78
78
|
},
|
|
79
79
|
},
|
|
80
80
|
]);
|
|
81
|
-
|
|
81
|
+
const payoutCreated = (0, workflows_sdk_1.createHook)("payoutCreated", {
|
|
82
|
+
order_id: input.order_id,
|
|
83
|
+
payout_id: payout.id,
|
|
84
|
+
});
|
|
85
|
+
return new workflows_sdk_1.WorkflowResponse(payout, { hooks: [payoutCreated] });
|
|
82
86
|
});
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5b3V0L3dvcmtmbG93cy9jcmVhdGUtcGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUFxRjtBQUNyRixxRUFNMEM7QUFDMUMscURBQStEO0FBQy9ELDJDQUErQztBQUUvQyxvQ0FBMkM7QUFNOUIsUUFBQSxzQkFBc0IsR0FBRyxlQUFlLENBQUE7QUFFeEMsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDhCQUFjLEVBQ2hELDhCQUFzQixFQUN0QixVQUFVLEtBQThDO0lBQ3RELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixlQUFlO1lBQ2YsT0FBTztZQUNQLFVBQVU7WUFDVix5QkFBeUI7WUFDekIsU0FBUztZQUNULG9CQUFvQjtTQUNyQjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFFbEMsTUFBTSxLQUFLLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU5RCxNQUFNLGlCQUFpQixHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxHQUFHLEVBQUU7WUFDSCxFQUFFLE9B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
|