UNPKG

@medusajs/utils

Version:

Medusa utilities functions shared by Medusa core and Modules

48 lines 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateAdjustmentTotal = calculateAdjustmentTotal; const common_1 = require("../../common"); const big_number_1 = require("../big-number"); const math_1 = require("../math"); function calculateAdjustmentTotal({ adjustments, includesTax, taxRate, }) { // the sum of all adjustment amounts excluding tax let adjustmentsSubtotal = math_1.MathBN.convert(0); // the sum of all adjustment amounts including tax let adjustmentsTotal = math_1.MathBN.convert(0); // the sum of all taxes on subtotals let adjustmentsTaxTotal = math_1.MathBN.convert(0); for (const adj of adjustments) { if (!(0, common_1.isDefined)(adj.amount)) { continue; } const adjustmentAmount = math_1.MathBN.convert(adj.amount); if (adj.is_tax_inclusive && (0, common_1.isDefined)(taxRate)) { adjustmentsSubtotal = math_1.MathBN.add(adjustmentsSubtotal, math_1.MathBN.div(adjustmentAmount, math_1.MathBN.add(1, taxRate))); } else { adjustmentsSubtotal = math_1.MathBN.add(adjustmentsSubtotal, adjustmentAmount); } if ((0, common_1.isDefined)(taxRate)) { const adjustmentSubtotal = includesTax ? math_1.MathBN.div(adjustmentAmount, math_1.MathBN.add(1, taxRate)) : adjustmentAmount; const adjustmentTaxTotal = math_1.MathBN.mult(adjustmentSubtotal, taxRate); const adjustmentTotal = math_1.MathBN.add(adjustmentSubtotal, adjustmentTaxTotal); adj["subtotal"] = new big_number_1.BigNumber(adjustmentSubtotal); adj["total"] = new big_number_1.BigNumber(adjustmentTotal); adjustmentsTotal = math_1.MathBN.add(adjustmentsTotal, adjustmentTotal); adjustmentsTaxTotal = math_1.MathBN.add(adjustmentsTaxTotal, adjustmentTaxTotal); } else { adj["subtotal"] = new big_number_1.BigNumber(adjustmentAmount); adj["adjustmentAmount"] = new big_number_1.BigNumber(adjustmentAmount); adjustmentsTotal = math_1.MathBN.add(adjustmentsTotal, adjustmentAmount); } } return { adjustmentsTotal, adjustmentsSubtotal, adjustmentsTaxTotal, }; } //# sourceMappingURL=index.js.map