UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

112 lines 9.39 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 workflows_sdk_2 = require("@medusajs/framework/workflows-sdk"); 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", "display_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, order_display_id: orders[0].display_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", }); const orderPointsResult = (0, workflows_sdk_1.when)(event, (event) => event?.trigger_event === "order_placed").then(() => { return (0, create_order_event_1.createOrderEventStep)({ customer_id: orders[0].customer.id, amount: orders[0].total, order_id: orders[0].id, order_display_id: orders[0].display_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, }); const referralPointsResult = (0, workflows_sdk_1.when)(response, (res) => !!res.valid).then(() => { return (0, referral_create_order_event_1.referralCreateOrderEventStep)({ customer_id: orders[0].customer.id, amount: orders[0].total, order_id: orders[0].id, order_display_id: orders[0].display_id, referral: response.referral, }); }); // Calculate loyalty metadata const loyaltyMetadata = (0, workflows_sdk_2.transform)({ orders, orderPointsResult, referralPointsResult }, (data) => { const orderPoints = data.orderPointsResult?.points ?? 0; const referralPoints = data.referralPointsResult?.points ?? 0; const totalPointsEarned = orderPoints + referralPoints; const currentMetadata = data.orders?.[0]?.metadata || {}; const newMetadata = { loyalty_status: "redeemed" }; if (totalPointsEarned > 0) { newMetadata.loyalty_point_earned = totalPointsEarned; } return { ...currentMetadata, ...newMetadata, }; }); (0, core_flows_1.updateOrdersStep)({ selector: { id: orders[0].id }, update: { metadata: loyaltyMetadata, }, }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9vcmRlci9vcmRlci1jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUVBQXlFO0FBQ3pFLDREQUlxQztBQUNyQyxxRUFBOEQ7QUFJOUQsK0NBSTRCO0FBQzVCLHVEQUF1RDtBQUN2RCx5RUFBd0U7QUFDeEUscUZBQW9GO0FBQ3BGLDJFQUEyRTtBQUMzRSxtRUFBa0U7QUFDbEUscUVBQXdFO0FBQ3hFLHVGQUFvRjtBQUNwRixxRkFBbUY7QUFDbkYsK0RBQStEO0FBTWxELFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FBQyxFQUFFLFFBQVEsRUFBaUIsRUFBRSxFQUFFO0lBQzlCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixZQUFZO1lBQ1osWUFBWTtZQUNaLE9BQU87WUFDUCxRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QixnQ0FBZ0M7WUFDaEMsc0NBQXNDO1lBQ3RDLFVBQVU7U0FDWDtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUU7UUFDekIsT0FBTyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO0tBQ3RDLENBQUMsQ0FBQztJQUVILElBQUEsc0NBQW1CLEVBQUM7UUFDbEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQXlCO0tBQ3pDLENBQUMsQ0FBQztJQUNILDJCQUEyQjtJQUMzQixJQUFBLHFEQUEwQixFQUFDO1FBQ3pCLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtLQUM3QixDQUFDLENBQUM7SUFFSCxNQUFNLHNCQUFzQixHQUFHLElB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