@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
39 lines • 3.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deductPointsFromOrderStep = void 0;
const utils_1 = require("@medusajs/framework/utils");
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
const loyalty_1 = require("../../../modules/loyalty");
exports.deductPointsFromOrderStep = (0, workflows_sdk_1.createStep)("deduct-purchase-points", async ({ customer_id, amount, order_id, order_display_id, metadata }, { container }) => {
const loyaltyModuleService = container.resolve(loyalty_1.LOYALTY_MODULE);
const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
const locking = container.resolve(utils_1.Modules.LOCKING);
const pointsToDeduct = await loyaltyModuleService.calculatePointsFromAmount(amount);
const result = await locking.execute(`wallet_points_${customer_id}`, async () => {
return await loyaltyModuleService.deductPoints({
customerId: customer_id,
points: pointsToDeduct,
referenceType: "order",
description: `Purchase of ${amount}`,
order_id: order_id,
order_display_id,
metadata,
});
});
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVkdWN0LW9yZGVyLXBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb3JkZXIvc3RlcHMvZGVkdWN0LW9yZGVyLXBvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBb0Q7QUFDcEQscUVBQTZFO0FBRTdFLHNEQUEwRDtBQVc3QyxRQUFBLHlCQUF5QixHQUFHLElBQUEsMEJBQVUsRUFDakQsd0JBQXdCLEVBQ3hCLEtBQUssRUFDSCxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBNkIsRUFDeEYsRUFBRSxTQUFTLEVBQUUsRUFDYixFQUFFO0lBQ0YsTUFBTSxvQkFBb0IsR0FDeEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBYyxDQUFDLENBQUM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQW1CLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5FLE1BQU0sY0FBYyxHQUNsQixNQUFNLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRS9ELE1BQU0sTUFBTSxHQUFRLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDdkMsaUJBQWlCLFdBQVcsRUFBRSxFQUM5QixLQUFLLElBQUksRUFBRTtRQUNULE9BQU8sTUFBTSxvQkFBb0IsQ0FBQyxZQUFZLENBQUM7WUFDN0MsVUFBVSxFQUFFLFdBQVc7WUFDdkIsTUFBTSxFQUFFLGNBQWM7WUFDdEIsYUFBYSxFQUFFLE9BQU87WUFDdEIsV0FBVyxFQUFFLGVBQWUsTUFBTSxFQUFFO1lBQ3BDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGdCQUFnQjtZQUNoQixRQUFRO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUNGLENBQUM7SUFFRixNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbEIsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsUUFBUTtZQUNqQixhQUFhLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7WUFDckMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztZQUNuRCxpQkFBaUIsRUFDZixNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7WUFDM0Qsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQztTQUMzQztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLE1BQU0sRUFBRTtRQUM5QixXQUFXO1FBQ1gsTUFBTSxFQUFFLGNBQWM7UUFDdEIsUUFBUTtLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=