@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
90 lines • 7.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateCartPromotionsWorkflow = exports.updateCartPromotionsWorkflowId = 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 cart_fields_for_refresh_1 = require("./utils/cart-fields-for-refresh");
const remove_loyalty_adjustments_1 = require("../../steps/remove-loyalty-adjustments");
const roundoff_loyalty_adjustments_1 = require("../../steps/roundoff-loyalty-adjustments");
exports.updateCartPromotionsWorkflowId = "_update-cart-promotions";
/**
* This workflow updates a cart's promotions, applying or removing promotion codes from the cart. It also computes the adjustments
* that need to be applied to the cart's line items and shipping methods based on the promotions applied. This workflow is used by
* [Add Promotions Store API Route](https://docs.medusajs.com/api/store#carts_postcartsidpromotions).
*
* You can use this workflow within your own customizations or custom workflows, allowing you to update a cart's promotions within your custom flows.
*
* @example
* const { result } = await updateCartPromotionsWorkflow(container)
* .run({
* input: {
* cart_id: "cart_123",
* promo_codes: ["10OFF"],
* // imported from @medusajs/framework/utils
* action: PromotionActions.ADD,
* }
* })
*
* @summary
*
* Update a cart's applied promotions to add, replace, or remove them.
*
* @property hooks.validate - This hook is executed before all operations. You can consume this hook to perform any custom validation. If validation fails, you can throw an error to stop the workflow execution.
*/
exports.updateCartPromotionsWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.updateCartPromotionsWorkflowId, (input) => {
const fetchCart = (0, workflows_sdk_1.when)({ input }, ({ input }) => {
return !input.cart;
}).then(() => {
return (0, core_flows_1.useRemoteQueryStep)({
entry_point: "cart",
fields: cart_fields_for_refresh_1.cartFieldsForRefreshSteps,
variables: { id: input.cart_id },
list: false,
});
});
const cart = (0, workflows_sdk_1.transform)({ fetchCart, input }, ({ fetchCart, input }) => {
return input.cart ?? fetchCart;
});
const validate = (0, workflows_sdk_1.createHook)("validate", {
input,
cart,
});
const promo_codes = (0, workflows_sdk_1.transform)({ input }, (data) => {
return (data.input.promo_codes || []);
});
const action = (0, workflows_sdk_1.transform)({ input }, (data) => {
return data.input.action || utils_1.PromotionActions.ADD;
});
const promotionCodesToApply = (0, core_flows_1.getPromotionCodesToApply)({
cart: cart,
promo_codes,
action: action,
});
const actions = (0, core_flows_1.getActionsToComputeFromPromotionsStep)({
cart,
promotionCodesToApply,
});
const { lineItemAdjustmentsToCreate, lineItemAdjustmentIdsToRemove, shippingMethodAdjustmentsToCreate, shippingMethodAdjustmentIdsToRemove, computedPromotionCodes, } = (0, core_flows_1.prepareAdjustmentsFromPromotionActionsStep)({ actions });
(0, remove_loyalty_adjustments_1.removeLoyaltyAdjustmentsStep)({ cart });
const roundedLineItemAdjustmentsToCreate = (0, roundoff_loyalty_adjustments_1.roundOffLoyaltyAdjustmentsStep)({
adjustmentLineItems: lineItemAdjustmentsToCreate,
});
(0, workflows_sdk_1.parallelize)(
// removeLineItemAdjustmentsStep({ lineItemAdjustmentIdsToRemove }),
(0, core_flows_1.removeShippingMethodAdjustmentsStep)({
shippingMethodAdjustmentIdsToRemove,
}), (0, core_flows_1.createLineItemAdjustmentsStep)({
lineItemAdjustmentsToCreate: roundedLineItemAdjustmentsToCreate,
}), (0, core_flows_1.createShippingMethodAdjustmentsStep)({
shippingMethodAdjustmentsToCreate,
}), (0, core_flows_1.updateCartPromotionsStep)({
id: cart.id,
promo_codes: computedPromotionCodes,
action: utils_1.PromotionActions.REPLACE,
}));
return new workflows_sdk_1.WorkflowResponse(void 0, {
hooks: [validate],
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWNhcnQtcHJvbW90aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jYXJ0L2N1c3RvbS91cGRhdGUtY2FydC1wcm9tb3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQTZEO0FBQzdELHFFQVEyQztBQUMzQyw0REFVcUM7QUFDckMsNkVBQTRFO0FBQzVFLHVGQUFzRjtBQUN0RiwyRkFBMEY7QUE0QjdFLFFBQUEsOEJBQThCLEdBQUcseUJBQXlCLENBQUM7QUFDeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBRyxJQUFBLDhCQUFjLEVBQ3hELHNDQUE4QixFQUM5QixDQUFDLEtBQXNELEVBQUUsRUFBRTtJQUN6RCxNQUFNLFNBQVMsR0FBRyxJQUFBLG9CQUFJLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUM5QyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1gsT0FBTyxJQUFBLCtCQUFrQixFQUFDO1lBQ3hCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLE1BQU0sRUFBRSxtREFBeUI7WUFDakMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sSUFBSSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDcEUsT0FBTyxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQVUsRUFBQyxVQUFVLEVBQUU7UUFDdEMsS0FBSztRQUNMLElBQUk7S0FDTCxDQUFDLENBQUM7SUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQWEsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDM0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSx3QkFBZ0IsQ0FBQyxHQUFHLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLHFCQUFxQixHQUFHLElBQUEscUNBQXdCLEVBQUM7UUFDckQsSUFBSSxFQUFFLElBQUk7UUFDVixXQUFXO1FBQ1gsTUFBTSxFQUFFLE1BQTBCO0tBQ25DLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLElBQUEsa0RBQXFDLEVBQUM7UUFDcEQsSUFBSTtRQUNKLHFCQUFxQjtLQUN0QixDQUFDLENBQUM7SUFFSCxNQUFNLEVBQ0osMkJBQTJCLEVBQzNCLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsbUNBQW1DLEVBQ25DLHNCQUFzQixHQUN2QixHQUFHLElBQUEsdURBQTBDLEVBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTVELElBQUEseURBQTRCLEVBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sa0NBQWtDLEdBQUcsSUFBQSw2REFBOEIsRUFBQztRQUN4RSxtQkFBbUIsRUFBRSwyQkFBMkI7S0FDakQsQ0FBQyxDQUFDO0lBRUgsSUFBQSwyQkFBVztJQUNULG9FQUFvRTtJQUNwRSxJQUFBLGdEQUFtQyxFQUFDO1FBQ2xDLG1DQUFtQztLQUNwQyxDQUFDLEVBQ0YsSUFBQSwwQ0FBNkIsRUFBQztRQUM1QiwyQkFBMkIsRUFBRSxrQ0FBa0M7S0FDaEUsQ0FBQyxFQUNGLElBQUEsZ0RBQW1DLEVBQUM7UUFDbEMsaUNBQWlDO0tBQ2xDLENBQUMsRUFDRixJQUFBLHFDQUF3QixFQUFDO1FBQ3ZCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNYLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsTUFBTSxFQUFFLHdCQUFnQixDQUFDLE9BQU87S0FDakMsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbEMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDO0tBQ2xCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=