UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

77 lines 6.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeLoyaltyFromCartWorkflow = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); const core_flows_1 = require("@medusajs/medusa/core-flows"); const helper_1 = require("../../utils/helper"); const update_cart_promotion_1 = require("./custom/update-cart-promotion"); const get_cart_promotion_1 = require("./steps/get-cart-promotion"); const fields = [ "id", "customer.*", "promotions.*", "promotions.application_method.*", "promotions.rules.*", "promotions.rules.values.*", "currency_code", "total", "metadata", "items.adjustments.*", ]; exports.removeLoyaltyFromCartWorkflow = (0, workflows_sdk_1.createWorkflow)("remove-loyalty-from-cart", (input) => { const { data: carts } = (0, core_flows_1.useQueryGraphStep)({ entity: "cart", fields, filters: { id: input.cart_id }, options: { throwIfKeyNotFound: true }, }); const loyaltyPromo = (0, get_cart_promotion_1.getCartPromotionStep)({ cart: carts[0], throwErrorOn: "not-found", }); // Detach EVERY loyalty promotion on the cart, not just the resolved one. // A cart can carry more than one if two applies raced; removing only the // resolved promotion left the others attached and `active` forever, where // no later apply/remove cycle could reach them. const loyaltyPromos = (0, workflows_sdk_1.transform)({ carts }, ({ carts }) => { const promotions = carts[0]?.promotions ?? []; return promotions.filter((promotion) => promotion?.code?.startsWith(helper_1.LOYALTY_PROMOTION_CODE_PREFIX)); }); const loyaltyPromoCodes = (0, workflows_sdk_1.transform)({ loyaltyPromos }, ({ loyaltyPromos }) => loyaltyPromos.map((promotion) => promotion.code)); (0, workflows_sdk_1.when)(loyaltyPromo, (result) => !!result?.code).then(() => { update_cart_promotion_1.updateCartPromotionsWorkflow.runAsStep({ input: { cart_id: input.cart_id, promo_codes: loyaltyPromoCodes, action: utils_1.PromotionActions.REMOVE, }, }); const newMetadata = (0, workflows_sdk_1.transform)({ carts, }, (data) => { const { loyalty_promo_id, ...rest } = data.carts[0].metadata || {}; return { ...rest, loyalty_promo_id: null, loyalty_amount_used: null, }; }); (0, core_flows_1.updateCartsStep)([ { id: input.cart_id, metadata: newMetadata, }, ]); const promotionsToDeactivate = (0, workflows_sdk_1.transform)({ loyaltyPromos }, ({ loyaltyPromos }) => loyaltyPromos.map((promotion) => ({ id: promotion.id, status: "inactive", }))); (0, core_flows_1.updatePromotionsStep)(promotionsToDeactivate); }); return new workflows_sdk_1.WorkflowResponse({ success: true, message: "Loyalty removed from cart successfully", }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWxveWFsdHktZnJvbS1jYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jYXJ0L3JlbW92ZS1sb3lhbHR5LWZyb20tY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBNkQ7QUFDN0QscUVBSzJDO0FBQzNDLDREQUlxQztBQUNyQywrQ0FHNEI7QUFDNUIsMEVBQThFO0FBQzlFLG1FQUFrRTtBQU1sRSxNQUFNLE1BQU0sR0FBRztJQUNiLElBQUk7SUFDSixZQUFZO0lBQ1osY0FBYztJQUNkLGlDQUFpQztJQUNqQyxvQkFBb0I7SUFDcEIsMkJBQTJCO0lBQzNCLGVBQWU7SUFDZixPQUFPO0lBQ1AsVUFBVTtJQUNWLHFCQUFxQjtDQUN0QixDQUFDO0FBRVcsUUFBQSw2QkFBNkIsR0FBRyxJQUFBLDhCQUFjLEVBQ3pELDBCQUEwQixFQUMxQixDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNO1FBQ04sT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7UUFDOUIsT0FBTyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO0tBQ3RDLENBQUMsQ0FBQztJQUVILE1BQU0sWUFBWSxHQUFHLElBQUEseUNBQW9CLEVBQUM7UUFDeEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQWE7UUFDMUIsWUFBWSxFQUFFLFdBQVc7S0FDMUIsQ0FBQyxDQUFDO0lBRUgseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsZ0RBQWdEO0lBQ2hELE1BQU0sYUFBYSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3ZELE1BQU0sVUFBVSxHQUFJLEtBQUssQ0FBQyxDQUFDLENBQWMsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO1FBRTVELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ3JDLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLHNDQUE2QixDQUFDLENBQzNELENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FDM0UsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUssQ0FBQyxDQUNsRCxDQUFDO0lBRUYsSUFBQSxvQkFBSSxFQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3ZELG9EQUE0QixDQUFDLFNBQVMsQ0FBQztZQUNyQyxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixNQUFNLEVBQUUsd0JBQWdCLENBQUMsTUFBTTthQUNoQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQVMsRUFDM0I7WUFDRSxLQUFLO1NBQ04sRUFDRCxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1AsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBRW5FLE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLG1CQUFtQixFQUFFLElBQUk7YUFDMUIsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBQSw0QkFBZSxFQUFDO1lBQ2Q7Z0JBQ0UsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUNqQixRQUFRLEVBQUUsV0FBVzthQUN0QjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sc0JBQXNCLEdBQUcsSUFBQSx5QkFBUyxFQUN0QyxFQUFFLGFBQWEsRUFBRSxFQUNqQixDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUNwQixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUNoQixNQUFNLEVBQUUsVUFBbUI7U0FDNUIsQ0FBQyxDQUFDLENBQ04sQ0FBQztRQUVGLElBQUEsaUNBQW9CLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQztRQUMxQixPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRSx3Q0FBd0M7S0FDbEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==