@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
24 lines • 3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculatePointsOnCartStep = 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.calculatePointsOnCartStep = (0, workflows_sdk_1.createStep)("calculate-points-on-cart", async ({ cart, throwOnZeroPoints = false }, { container }) => {
// Check if customer has any loyalty points
const loyaltyModuleService = container.resolve(loyalty_1.LOYALTY_MODULE);
const loyaltyPoints = await loyaltyModuleService.getPoints(cart.customer.id);
if (loyaltyPoints < 0) {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Customer has invalid loyalty points");
}
if (loyaltyPoints === 0) {
if (throwOnZeroPoints) {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Customer has no loyalty points");
}
return new workflows_sdk_1.StepResponse(0);
}
const discount = await loyaltyModuleService.calculatePointsOnCart(Math.max(cart.total - cart.shipping_total, 0), loyaltyPoints, cart.subtotal);
const amount = Math.min(discount, Math.max(cart.total - cart.shipping_total, 0));
return new workflows_sdk_1.StepResponse(amount);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXBvaW50cy1vbi1jYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jYXJ0L3N0ZXBzL2NhbGN1bGF0ZS1wb2ludHMtb24tY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBd0Q7QUFDeEQscUVBQTZFO0FBQzdFLHNEQUEwRDtBQWU3QyxRQUFBLHlCQUF5QixHQUFHLElBQUEsMEJBQVUsRUFDakQsMEJBQTBCLEVBQzFCLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsR0FBRyxLQUFLLEVBQXNDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQy9GLDJDQUEyQztJQUMzQyxNQUFNLG9CQUFvQixHQUN4QixTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUFjLENBQUMsQ0FBQztJQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLG9CQUFvQixDQUFDLFNBQVMsQ0FDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ2pCLENBQUM7SUFFRixJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQ0FBcUMsQ0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsZ0NBQWdDLENBQ2pDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLDRCQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sb0JBQW9CLENBQUMscUJBQXFCLENBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUM3QyxhQUFhLEVBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDckIsUUFBUSxFQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUM5QyxDQUFDO0lBRUYsT0FBTyxJQUFJLDRCQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUNGLENBQUMifQ==