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