IO-1381 Updates to mark up calculations process.

This commit is contained in:
Patrick Fic
2021-09-27 16:34:11 -07:00
parent 1cad57bec2
commit 1f2bec06ef
6 changed files with 66 additions and 44 deletions

View File

@@ -543,6 +543,7 @@ export const GET_JOB_BY_PK = gql`
db_ref db_ref
manual_line manual_line
prt_dsmk_p prt_dsmk_p
prt_dsmk_m
billlines(limit: 1, order_by: { bill: { date: desc } }) { billlines(limit: 1, order_by: { bill: { date: desc } }) {
id id
quantity quantity

View File

@@ -36,12 +36,17 @@ module.exports = function ({
amount: Math.round(jobline.act_price * 100), amount: Math.round(jobline.act_price * 100),
}).multiply(jobline.part_qty || 1); }).multiply(jobline.part_qty || 1);
if (jobline.prt_dsmk_p && jobline.prt_dsmk_p !== 0) { if (
(jobline.prt_dsmk_p && jobline.prt_dsmk_p !== 0) ||
jobline.prt_dsmk_m !== 0
) {
// console.log("Have a part discount", jobline); // console.log("Have a part discount", jobline);
DineroAmount = DineroAmount.add( DineroAmount = DineroAmount.add(
DineroAmount.percentage(Math.abs(jobline.prt_dsmk_p || 0)).multiply( jobline.prt_dsmk_m && jobline.prt_dsmk_m !== 0
jobline.prt_dsmk_p > 0 ? 1 : -1 ? 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)
); );
} }
const account = responsibilityCenters.profits.find( const account = responsibilityCenters.profits.find(

View File

@@ -70,12 +70,14 @@ exports.default = async function (socket, jobid) {
amount: Math.round(val.act_price * 100), amount: Math.round(val.act_price * 100),
}).multiply(val.part_qty || 1); }).multiply(val.part_qty || 1);
if (val.prt_dsmk_p && val.prt_dsmk_p !== 0) { if ((val.prt_dsmk_p && val.prt_dsmk_p !== 0) || val.prt_dsmk_m !== 0) {
// console.log("Have a part discount", val); // console.log("Have a part discount", val);
DineroAmount = DineroAmount.add( DineroAmount = DineroAmount.add(
DineroAmount.percentage(Math.abs(val.prt_dsmk_p || 0)).multiply( val.prt_dsmk_m && val.prt_dsmk_m !== 0
val.prt_dsmk_p > 0 ? 1 : -1 ? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) })
) : DineroAmount.percentage(Math.abs(val.prt_dsmk_p || 0)).multiply(
val.prt_dsmk_p > 0 ? 1 : -1
)
); );
} }

View File

@@ -120,6 +120,7 @@ query QUERY_JOBS_FOR_RECEIVABLES_EXPORT($ids: [uuid!]!) {
profitcenter_part profitcenter_part
db_ref db_ref
prt_dsmk_p prt_dsmk_p
prt_dsmk_m
tax_part tax_part
} }
} }
@@ -700,6 +701,7 @@ exports.GET_JOB_BY_PK = ` query GET_JOB_BY_PK($id: uuid!) {
db_ref db_ref
manual_line manual_line
prt_dsmk_p prt_dsmk_p
prt_dsmk_m
parts_order_lines { parts_order_lines {
id id
parts_order { parts_order {

View File

@@ -297,12 +297,14 @@ function GenerateCostingData(job) {
}) })
.multiply(val.part_qty || 1) .multiply(val.part_qty || 1)
.add( .add(
Dinero({ val.prt_dsmk_m && val.prt_dsmk_m !== 0
amount: Math.round((val.act_price || 0) * 100), ? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) })
}) : Dinero({
.multiply(val.part_qty || 0) amount: Math.round(val.act_price * 100),
.percentage(Math.abs(val.prt_dsmk_p || 0)) })
.multiply(val.prt_dsmk_p > 0 ? 1 : -1) .multiply(val.part_qty || 0)
.percentage(Math.abs(val.prt_dsmk_p || 0))
.multiply(val.prt_dsmk_p > 0 ? 1 : -1)
); );
if (!acc.parts[partsProfitCenter]) if (!acc.parts[partsProfitCenter])
acc.parts[partsProfitCenter] = Dinero(); acc.parts[partsProfitCenter] = Dinero();
@@ -327,12 +329,14 @@ function GenerateCostingData(job) {
}) })
.multiply(val.part_qty || 1) .multiply(val.part_qty || 1)
.add( .add(
Dinero({ val.prt_dsmk_m && val.prt_dsmk_m !== 0
amount: Math.round((val.act_price || 0) * 100), ? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) })
}) : Dinero({
.multiply(val.part_qty || 0) amount: Math.round(val.act_price * 100),
.percentage(Math.abs(val.prt_dsmk_p || 0)) })
.multiply(val.prt_dsmk_p > 0 ? 1 : -1) .multiply(val.part_qty || 0)
.percentage(Math.abs(val.prt_dsmk_p || 0))
.multiply(val.prt_dsmk_p > 0 ? 1 : -1)
); );
if (!acc.parts[partsProfitCenter]) if (!acc.parts[partsProfitCenter])

View File

@@ -270,12 +270,14 @@ function CalculatePartsTotals(jobLines) {
}) })
.multiply(value.part_qty || 0) .multiply(value.part_qty || 0)
.add( .add(
Dinero({ value.prt_dsmk_m && value.prt_dsmk_m !== 0
amount: Math.round(value.act_price * 100), ? Dinero({ amount: Math.round(value.prt_dsmk_m * 100) })
}) : Dinero({
.multiply(value.part_qty || 0) amount: Math.round(value.act_price * 100),
.percentage(Math.abs(value.prt_dsmk_p || 0)) })
.multiply(value.prt_dsmk_p > 0 ? 1 : -1) .multiply(value.part_qty || 0)
.percentage(Math.abs(value.prt_dsmk_p || 0))
.multiply(value.prt_dsmk_p > 0 ? 1 : -1)
) )
), ),
}, },
@@ -288,12 +290,14 @@ function CalculatePartsTotals(jobLines) {
parts: { parts: {
...acc.parts, ...acc.parts,
prt_dsmk_total: acc.parts.prt_dsmk_total.add( prt_dsmk_total: acc.parts.prt_dsmk_total.add(
Dinero({ value.prt_dsmk_m && value.prt_dsmk_m !== 0
amount: Math.round((value.act_price || 0) * 100), ? Dinero({ amount: Math.round(value.prt_dsmk_m * 100) })
}) : Dinero({
.multiply(value.part_qty || 0) amount: Math.round(value.act_price * 100),
.percentage(Math.abs(value.prt_dsmk_p || 0)) })
.multiply(value.prt_dsmk_p > 0 ? 1 : -1) .multiply(value.part_qty || 0)
.percentage(Math.abs(value.prt_dsmk_p || 0))
.multiply(value.prt_dsmk_p > 0 ? 1 : -1)
), ),
list: { list: {
...acc.parts.list, ...acc.parts.list,
@@ -320,12 +324,14 @@ function CalculatePartsTotals(jobLines) {
}).multiply(value.part_qty || 0) }).multiply(value.part_qty || 0)
) )
.add( .add(
Dinero({ value.prt_dsmk_m && value.prt_dsmk_m !== 0
amount: Math.round((value.act_price || 0) * 100), ? Dinero({ amount: Math.round(value.prt_dsmk_m * 100) })
}) : Dinero({
.multiply(value.part_qty || 0) amount: Math.round(value.act_price * 100),
.percentage(Math.abs(value.prt_dsmk_p || 0)) })
.multiply(value.prt_dsmk_p > 0 ? 1 : -1) .multiply(value.part_qty || 0)
.percentage(Math.abs(value.prt_dsmk_p || 0))
.multiply(value.prt_dsmk_p > 0 ? 1 : -1)
), ),
}, },
}; };
@@ -458,12 +464,14 @@ function CalculateTaxesTotals(job, otherTotals) {
Dinero({ amount: Math.round((val.act_price || 0) * 100) }) Dinero({ amount: Math.round((val.act_price || 0) * 100) })
.multiply(val.part_qty || 0) .multiply(val.part_qty || 0)
.add( .add(
Dinero({ val.prt_dsmk_m && val.prt_dsmk_m !== 0
amount: Math.round((val.act_price || 0) * 100), ? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) })
}) : Dinero({
.multiply(val.part_qty || 0) amount: Math.round(val.act_price * 100),
.percentage(Math.abs(val.prt_dsmk_p || 0)) })
.multiply(val.prt_dsmk_p > 0 ? 1 : -1) .multiply(val.part_qty || 0)
.percentage(Math.abs(val.prt_dsmk_p || 0))
.multiply(val.prt_dsmk_p > 0 ? 1 : -1)
) )
.percentage( .percentage(
((job.parts_tax_rates && ((job.parts_tax_rates &&