@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
94 lines • 7.4 kB
JavaScript
;
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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