UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

94 lines 7.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.orderCreateWorkflow = void 0; 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 get_event_1 = require("../cart/steps/get-event"); const get_cart_promotion_1 = require("../cart/steps/get-cart-promotion"); const validate_customer_exists_1 = require("../cart/steps/validate-customer-exists"); const validate_referral_1 = require("../referral/steps/validate-referral"); const create_order_event_1 = require("./steps/create-order-event"); const deduct_order_points_1 = require("./steps/deduct-order-points"); const get_referral_code_from_order_1 = require("./steps/get-referral-code-from-order"); const referral_create_order_event_1 = require("./steps/referral-create-order-event"); const validate_loyalty_1 = require("./steps/validate-loyalty"); exports.orderCreateWorkflow = (0, workflows_sdk_1.createWorkflow)("order-create", ({ order_id }) => { const { data: orders } = (0, core_flows_1.useQueryGraphStep)({ entity: "order", fields: [ "id", "customer.*", "total", "cart.*", "cart.promotions.*", "cart.promotions.rules.*", "cart.promotions.rules.values.*", "cart.promotions.application_method.*", "metadata", ], filters: { id: order_id }, options: { throwIfKeyNotFound: true }, }); (0, validate_loyalty_1.validateLoyaltyStep)({ order: orders[0], }); // Validate customer exists (0, validate_customer_exists_1.validateCustomerExistsStep)({ customer: orders[0].customer, }); const loyaltyPointsPromotion = (0, get_cart_promotion_1.getCartPromotionStep)({ cart: orders[0].cart, }); //====================== Deduct Loyalty Points from Order ====================== (0, workflows_sdk_1.when)(orders, (orders) => (0, helper_1.orderHasLoyaltyPromotion)(orders[0]) && !!loyaltyPointsPromotion).then(() => { (0, deduct_order_points_1.deductPointsFromOrderStep)({ customer_id: orders[0].customer.id, amount: loyaltyPointsPromotion.application_method.value, order_id: orders[0].id, }); (0, core_flows_1.updatePromotionsStep)([ { id: loyaltyPointsPromotion.id, status: "inactive", }, ]); }); //====================== Add Loyalty Points from Order ====================== const event = (0, get_event_1.getEventStep)({ eventName: "order_placed", }); (0, workflows_sdk_1.when)(event, (event) => event?.trigger_event === "order_placed").then(() => { (0, create_order_event_1.createOrderEventStep)({ customer_id: orders[0].customer.id, amount: orders[0].total, order_id: orders[0].id, event: event, }); }); const referralCode = (0, get_referral_code_from_order_1.getReferralCodeFromOrderStep)({ order: orders[0], }); const response = (0, validate_referral_1.validateReferralStep)({ referral_code: referralCode, customer_id: orders[0].customer.id, }); (0, workflows_sdk_1.when)(response, (res) => !!res.valid).then(() => { (0, referral_create_order_event_1.referralCreateOrderEventStep)({ customer_id: orders[0].customer.id, amount: orders[0].total, order_id: orders[0].id, referral: response.referral, }); }); (0, core_flows_1.updateOrdersStep)({ selector: { id: orders[0].id }, update: { metadata: { loyalty_status: "redeemed", }, }, }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9vcmRlci9vcmRlci1jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUVBQXlFO0FBQ3pFLDREQUlxQztBQUlyQywrQ0FJNEI7QUFDNUIsdURBQXVEO0FBQ3ZELHlFQUF3RTtBQUN4RSxxRkFBb0Y7QUFDcEYsMkVBQTJFO0FBQzNFLG1FQUFrRTtBQUNsRSxxRUFBd0U7QUFDeEUsdUZBQW9GO0FBQ3BGLHFGQUFtRjtBQUNuRiwrREFBK0Q7QUFNbEQsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDhCQUFjLEVBQy9DLGNBQWMsRUFDZCxDQUFDLEVBQUUsUUFBUSxFQUFpQixFQUFFLEVBQUU7SUFDOUIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3pDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLFlBQVk7WUFDWixPQUFPO1lBQ1AsUUFBUTtZQUNSLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsZ0NBQWdDO1lBQ2hDLHNDQUFzQztZQUN0QyxVQUFVO1NBQ1g7UUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUM7SUFFSCxJQUFBLHNDQUFtQixFQUFDO1FBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUF5QjtLQUN6QyxDQUFDLENBQUM7SUFDSCwyQkFBMkI7SUFDM0IsSUFBQSxxREFBMEIsRUFBQztRQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7S0FDN0IsQ0FBQyxDQUFDO0lBRUgsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLHlDQUFvQixFQUFDO1FBQ2xELElB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