UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

36 lines 4.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.roundOffLoyaltyAdjustmentsStep = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); exports.roundOffLoyaltyAdjustmentsStep = (0, workflows_sdk_1.createStep)("round-off-loyalty-adjustments", async (input, { container }) => { const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER); logger.debug("roundOffLoyaltyAdjustmentsStep input: " + JSON.stringify(input, null, 2)); const toTwoDecimal = (num) => Math.round(num * 100) / 100; const totalAmount = input.adjustmentLineItems.reduce((acc, item) => acc + item.amount, 0); logger.debug("Total before rounding: " + totalAmount); let remaining = toTwoDecimal(totalAmount); // Round all but the last line item, assign the remainder to the last const roundedAdjustmentLineItems = input.adjustmentLineItems.map((item, idx, arr) => { const isLast = idx === arr.length - 1; let roundedAmount; if (!isLast) { roundedAmount = toTwoDecimal(item.amount); remaining -= roundedAmount; } else { // Assign the remaining to the last item to ensure sum matches original total roundedAmount = toTwoDecimal(remaining); } logger.debug(`Rounding item ${idx}: original=${item.amount}, rounded=${roundedAmount}, isLast=${isLast}, remaining=${remaining}`); return { ...item, amount: roundedAmount, }; }); // For debugging: sum after rounding const roundedSum = roundedAdjustmentLineItems.reduce((acc, item) => acc + item.amount, 0); logger.debug("Sum after rounding: " + roundedSum); return new workflows_sdk_1.StepResponse(roundedAdjustmentLineItems); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmRvZmYtbG95YWx0eS1hZGp1c3RtZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvcm91bmRvZmYtbG95YWx0eS1hZGp1c3RtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBc0U7QUFDdEUscUVBQTZFO0FBRWhFLFFBQUEsOEJBQThCLEdBQUcsSUFBQSwwQkFBVSxFQUN0RCwrQkFBK0IsRUFDL0IsS0FBSyxFQUNILEtBUUMsRUFDRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxLQUFLLENBQ1Ysd0NBQXdDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUMxRSxDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUVsRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUNsRCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUNoQyxDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFFdEQsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFDLHFFQUFxRTtJQUNyRSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQzlELENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNqQixNQUFNLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxhQUFxQixDQUFDO1FBRTFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLFNBQVMsSUFBSSxhQUFhLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTiw2RUFBNkU7WUFDN0UsYUFBYSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsTUFBTSxDQUFDLEtBQUssQ0FDVixpQkFBaUIsR0FBRyxjQUFjLElBQUksQ0FBQyxNQUFNLGFBQWEsYUFBYSxZQUFZLE1BQU0sZUFBZSxTQUFTLEVBQUUsQ0FDcEgsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLElBQUk7WUFDUCxNQUFNLEVBQUUsYUFBYTtTQUN0QixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQUM7SUFFRixvQ0FBb0M7SUFDcEMsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsTUFBTSxDQUNsRCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUNoQyxDQUFDLENBQ0YsQ0FBQztJQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFFbEQsT0FBTyxJQUFJLDRCQUFZLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQ0YsQ0FBQyJ9