IO-2009 Better handling of MPI discounts.

This commit is contained in:
Patrick Fic
2022-08-16 14:29:28 -07:00
parent d5c27fc9ae
commit b744720efe
6 changed files with 169 additions and 144 deletions

View File

@@ -1,6 +1,7 @@
const DineroQbFormat = require("./accounting-constants").DineroQbFormat;
const Dinero = require("dinero.js");
const { DiscountNotAlreadyCounted } = require("../job/job-totals");
const logger = require("../utils/logger");
exports.default = function ({
@@ -37,23 +38,22 @@ exports.default = function ({
amount: Math.round((jobline.act_price || 0) * 100),
}).multiply(jobline.part_qty || 1);
if (
(jobline.prt_dsmk_p && jobline.prt_dsmk_p !== 0) ||
((jobline.db_ref === "900511" ||
jobline.db_ref === "900510" ||
jobline.db_ref === "900500") &&
jobline.prt_dsmk_m &&
jobline.prt_dsmk_m !== 0)
) {
// console.log("Have a part discount", jobline);
DineroAmount = DineroAmount.add(
jobline.prt_dsmk_m && jobline.prt_dsmk_m !== 0
// console.log("Have a part discount", jobline);
DineroAmount = DineroAmount.add(
((jobline.prt_dsmk_m && jobline.prt_dsmk_m !== 0) ||
(jobline.prt_dsmk_p && jobline.prt_dsmk_p !== 0)) &&
DiscountNotAlreadyCounted(jobline, jobs_by_pk.joblines)
? jobline.prt_dsmk_m
? Dinero({ amount: Math.round(jobline.prt_dsmk_m * 100) })
: DineroAmount.percentage(
Math.abs(jobline.prt_dsmk_p || 0)
).multiply(jobline.prt_dsmk_p > 0 ? 1 : -1)
);
}
: Dinero({
amount: Math.round(jobline.act_price * 100),
})
.multiply(jobline.part_qty || 0)
.percentage(Math.abs(jobline.prt_dsmk_p || 0))
.multiply(jobline.prt_dsmk_p > 0 ? 1 : -1)
: Dinero()
);
const account = responsibilityCenters.profits.find(
(i) => jobline.profitcenter_part.toLowerCase() === i.name.toLowerCase()
);