IO-1166 Job Costing Summaries updates.
This commit is contained in:
@@ -67,6 +67,12 @@ async function JobCostingMulti(req, res) {
|
||||
gpdollars: Dinero({ amount: 0 }),
|
||||
gppercent: null,
|
||||
gppercentFormatted: null,
|
||||
totalLaborGp: Dinero({ amount: 0 }),
|
||||
totalPartsGp: Dinero({ amount: 0 }),
|
||||
totalLaborGppercent: null,
|
||||
totalLaborGppercentFormatted: null,
|
||||
totalPartsGppercent: null,
|
||||
totalPartsGppercentFormatted: null,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -149,12 +155,39 @@ async function JobCostingMulti(req, res) {
|
||||
multiSummary.summaryData.gpdollars.add(
|
||||
costingData.summaryData.gpdollars
|
||||
);
|
||||
|
||||
multiSummary.summaryData.totalLaborGp =
|
||||
multiSummary.summaryData.totalLaborGp.add(
|
||||
costingData.summaryData.totalLaborGp
|
||||
);
|
||||
multiSummary.summaryData.totalPartsGp =
|
||||
multiSummary.summaryData.totalPartsGp.add(
|
||||
costingData.summaryData.totalPartsGp
|
||||
);
|
||||
|
||||
console.timeEnd(`SummaryOfCostingData-${job.id}`);
|
||||
//Take the summary data & add it to total summary data.
|
||||
});
|
||||
|
||||
//For each center, recalculate and toFormat() the values.
|
||||
multiSummary.summaryData.gpdollars;
|
||||
|
||||
multiSummary.summaryData.totalLaborGppercent = (
|
||||
(multiSummary.summaryData.totalLaborGp.getAmount() /
|
||||
multiSummary.summaryData.totalLaborSales.getAmount()) *
|
||||
100
|
||||
).toFixed(2);
|
||||
multiSummary.summaryData.totalLaborGppercentFormatted = formatGpPercent(
|
||||
multiSummary.summaryData.totalLaborGppercent
|
||||
);
|
||||
|
||||
multiSummary.summaryData.totalPartsGppercent = (
|
||||
(multiSummary.summaryData.totalPartsGp.getAmount() /
|
||||
multiSummary.summaryData.totalPartsSales.getAmount()) *
|
||||
100
|
||||
).toFixed(2);
|
||||
multiSummary.summaryData.totalPartsGppercentFormatted = formatGpPercent(
|
||||
multiSummary.summaryData.totalPartsGppercent
|
||||
);
|
||||
|
||||
multiSummary.summaryData.gppercent = (
|
||||
(multiSummary.summaryData.gpdollars.getAmount() /
|
||||
@@ -418,7 +451,14 @@ function GenerateCostingData(job) {
|
||||
totalLaborCost: Dinero({ amount: 0 }),
|
||||
totalPartsCost: Dinero({ amount: 0 }),
|
||||
totalCost: Dinero({ amount: 0 }),
|
||||
totalLaborGp: Dinero({ amount: 0 }),
|
||||
totalPartsGp: Dinero({ amount: 0 }),
|
||||
gpdollars: Dinero({ amount: 0 }),
|
||||
|
||||
totalLaborGppercent: null,
|
||||
totalLaborGppercentFormatted: null,
|
||||
totalPartsGppercent: null,
|
||||
totalPartsGppercentFormatted: null,
|
||||
gppercent: null,
|
||||
gppercentFormatted: null,
|
||||
};
|
||||
@@ -503,6 +543,31 @@ function GenerateCostingData(job) {
|
||||
}
|
||||
|
||||
//Final summary data massaging.
|
||||
|
||||
summaryData.totalLaborGp = summaryData.totalLaborSales.subtract(
|
||||
summaryData.totalLaborCost
|
||||
);
|
||||
summaryData.totalLaborGppercent = (
|
||||
(summaryData.totalLaborGp.getAmount() /
|
||||
summaryData.totalLaborSales.getAmount()) *
|
||||
100
|
||||
).toFixed(2);
|
||||
summaryData.totalLaborGppercentFormatted = formatGpPercent(
|
||||
summaryData.totalLaborGppercent
|
||||
);
|
||||
|
||||
summaryData.totalPartsGp = summaryData.totalPartsSales.subtract(
|
||||
summaryData.totalPartsCost
|
||||
);
|
||||
summaryData.totalPartsGppercent = (
|
||||
(summaryData.totalPartsGp.getAmount() /
|
||||
summaryData.totalPartsSales.getAmount()) *
|
||||
100
|
||||
).toFixed(2);
|
||||
summaryData.totalPartsGppercentFormatted = formatGpPercent(
|
||||
summaryData.totalPartsGppercent
|
||||
);
|
||||
|
||||
summaryData.gpdollars = summaryData.totalSales.subtract(
|
||||
summaryData.totalCost
|
||||
);
|
||||
@@ -510,6 +575,7 @@ function GenerateCostingData(job) {
|
||||
(summaryData.gpdollars.getAmount() / summaryData.totalSales.getAmount()) *
|
||||
100
|
||||
).toFixed(2);
|
||||
|
||||
if (isNaN(summaryData.gppercent)) summaryData.gppercentFormatted = 0;
|
||||
else if (!isFinite(summaryData.gppercent))
|
||||
summaryData.gppercentFormatted = "- ∞";
|
||||
|
||||
Reference in New Issue
Block a user