@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
34 lines • 3.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deductPointsFromOrderStep = void 0;
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
const loyalty_1 = require("../../../modules/loyalty");
const utils_1 = require("@medusajs/framework/utils");
exports.deductPointsFromOrderStep = (0, workflows_sdk_1.createStep)("deduct-purchase-points", async ({ customer_id, amount, order_id }, { container }) => {
const loyaltyModuleService = container.resolve(loyalty_1.LOYALTY_MODULE);
const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
const pointsToDeduct = await loyaltyModuleService.calculatePointsFromAmount(amount);
const result = await loyaltyModuleService.deductPoints({
customerId: customer_id,
points: pointsToDeduct,
referenceType: "order",
description: `Purchase of ${amount}`,
order_id: order_id,
});
await eventBus.emit({
name: "loyalty.points_debited",
data: {
orderId: order_id,
total_balance: Number(result?.points),
perpetual_balance: Number(result?.perpetual_points),
expirable_balance: Number(result?.points) - Number(result?.perpetual_points),
transaction_amount: Number(pointsToDeduct),
},
});
return new workflows_sdk_1.StepResponse(result, {
customer_id,
points: pointsToDeduct,
order_id,
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVkdWN0LW9yZGVyLXBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb3JkZXIvc3RlcHMvZGVkdWN0LW9yZGVyLXBvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0Usc0RBQTBEO0FBRTFELHFEQUFvRDtBQVF2QyxRQUFBLHlCQUF5QixHQUFHLElBQUEsMEJBQVUsRUFDakQsd0JBQXdCLEVBQ3hCLEtBQUssRUFDSCxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUE2QixFQUM1RCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLG9CQUFvQixHQUN4QixTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUFjLENBQUMsQ0FBQztJQUVwQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV0RCxNQUFNLGNBQWMsR0FDbEIsTUFBTSxvQkFBb0IsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUvRCxNQUFNLE1BQU0sR0FBUSxNQUFNLG9CQUFvQixDQUFDLFlBQVksQ0FBQztRQUMxRCxVQUFVLEVBQUUsV0FBVztRQUN2QixNQUFNLEVBQUUsY0FBYztRQUN0QixhQUFhLEVBQUUsT0FBTztRQUN0QixXQUFXLEVBQUUsZUFBZSxNQUFNLEVBQUU7UUFDcEMsUUFBUSxFQUFFLFFBQVE7S0FDbkIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xCLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLFFBQVE7WUFDakIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQ3JDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7WUFDbkQsaUJBQWlCLEVBQ2YsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDO1lBQzNELGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUM7U0FDM0M7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksNEJBQVksQ0FBQyxNQUFNLEVBQUU7UUFDOUIsV0FBVztRQUNYLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLFFBQVE7S0FDVCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9