This commit is contained in:
Patrick Fic
2021-08-19 17:31:32 -07:00
parent 61a5e180f4
commit 5a4d6d3e8c
21 changed files with 301 additions and 610 deletions

View File

@@ -3,16 +3,16 @@ const queries = require("../graphql-client/queries");
//const client = require("../graphql-client/graphql-client").client;
const _ = require("lodash");
const GraphQLClient = require("graphql-request").GraphQLClient;
const logger = require("../utils/logger");
// Dinero.defaultCurrency = "USD";
// Dinero.globalLocale = "en-CA";
Dinero.globalRoundingMode = "HALF_EVEN";
async function JobCosting(req, res) {
const { jobid } = req.body;
console.time("Query for Data");
const BearerToken = req.headers.authorization;
const BearerToken = req.headers.authorization;
logger.log("job-costing-start", "DEBUG", req.user.email, jobid, null);
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {
headers: {
Authorization: BearerToken,
@@ -26,13 +26,15 @@ async function JobCosting(req, res) {
id: jobid,
});
console.time(`generatecostingdata-${resp.jobs_by_pk.id}`);
const ret = GenerateCostingData(resp.jobs_by_pk);
console.timeEnd(`generatecostingdata-${resp.jobs_by_pk.id}`);
res.status(200).json(ret);
} catch (error) {
console.log("error", error);
logger.log("job-costing-error", "ERROR", req.user.email, jobid, {
jobid,
error,
});
res.status(400).send(JSON.stringify(error));
}
}
@@ -40,7 +42,8 @@ async function JobCosting(req, res) {
async function JobCostingMulti(req, res) {
const { jobids } = req.body;
const BearerToken = req.headers.authorization;
console.time("JobCostingMultiQueryExecution");
logger.log("job-costing-multi-start", "DEBUG", req.user.email, jobids, null);
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {
headers: {
Authorization: BearerToken,
@@ -77,12 +80,8 @@ async function JobCostingMulti(req, res) {
const ret = {};
resp.jobs.map((job) => {
console.time(`CostingData-${job.id}`);
const costingData = GenerateCostingData(job);
ret[job.id] = costingData;
console.timeEnd(`CostingData-${job.id}`);
console.time(`SummaryOfCostingData-${job.id}`);
//Merge on a cost center basis.
@@ -164,7 +163,6 @@ async function JobCostingMulti(req, res) {
costingData.summaryData.totalPartsGp
);
console.timeEnd(`SummaryOfCostingData-${job.id}`);
//Take the summary data & add it to total summary data.
});
@@ -219,15 +217,16 @@ async function JobCostingMulti(req, res) {
//Calculate thte total gross profit percentages.
console.timeEnd("JobCostingMultiQueryExecution");
res.status(200).json({
allCostCenterData: finalCostingdata,
allSummaryData: multiSummary.summaryData,
data: ret,
});
} catch (error) {
console.log("error", error);
logger.log("job-costing-multi-error", "ERROR", req.user.email, [jobids], {
jobids,
error,
});
res.status(400).send(JSON.stringify(error));
}
}
@@ -618,7 +617,6 @@ const formatGpPercent = (gppercent) => {
const getAdditionalCostCenter = (jl, profitCenters) => {
if (!jl.part_type && !jl.mod_lbr_ty) {
const lineDesc = jl.line_desc.toLowerCase();
console.log("Checking additional cost center", lineDesc);
if (lineDesc.includes("shop mat")) {
return profitCenters["MASH"];

View File

@@ -1,7 +1,7 @@
const Dinero = require("dinero.js");
const queries = require("../graphql-client/queries");
const GraphQLClient = require("graphql-request").GraphQLClient;
const logger = require("../utils/logger");
// Dinero.defaultCurrency = "USD";
// Dinero.globalLocale = "en-CA";
Dinero.globalRoundingMode = "HALF_EVEN";
@@ -9,7 +9,7 @@ Dinero.globalRoundingMode = "HALF_EVEN";
exports.totalsSsu = async function (req, res) {
const BearerToken = req.headers.authorization;
const { id } = req.body;
logger.log("job-totals-ssu", "DEBUG", req.user.email, id, null);
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {
headers: {
Authorization: BearerToken,
@@ -43,7 +43,10 @@ exports.totalsSsu = async function (req, res) {
res.status(200).send();
} catch (error) {
console.log(error);
logger.log("job-totals-ssu-error", "ERROR", req.user.email, id, {
jobid: id,
error,
});
res.status(503).send();
}
};
@@ -51,9 +54,6 @@ exports.totalsSsu = async function (req, res) {
//IMPORTANT*** These two functions MUST be mirrrored.
async function TotalsServerSide(req, res) {
const { job } = req.body;
console.log(
`Calculating Job Totals on the server side for ${job.id} - ${job.ro_number}`
);
try {
let ret = {
parts: CalculatePartsTotals(job.joblines),
@@ -64,14 +64,20 @@ async function TotalsServerSide(req, res) {
return ret;
} catch (error) {
console.log("error", error);
logger.log("job-totals-ssu-error", "ERROR", req.user.email, job.id, {
jobid: job.id,
error,
});
res.status(400).send(JSON.stringify(error));
}
}
async function Totals(req, res) {
const { job } = req.body;
console.log(`Calculating Job Totals for ${job.id} - ${job.ro_number}`);
logger.log("job-totals", "DEBUG", req.user.email, job.id, {
jobid: job.id,
});
try {
let ret = {
parts: CalculatePartsTotals(job.joblines),
@@ -82,7 +88,10 @@ async function Totals(req, res) {
res.status(200).json(ret);
} catch (error) {
console.log("error", error);
logger.log("job-totals-error", "ERROR", req.user.email, job.id, {
jobid: job.id,
error,
});
res.status(400).send(JSON.stringify(error));
}
}
@@ -195,8 +204,6 @@ function CalculateRatesTotals(ratesList) {
let subtotal = Dinero({ amount: 0 });
let rates_subtotal = Dinero({ amount: 0 });
console.log("Has mapa, mash", hasMapaLine, hasMashLine);
for (const property in ret) {
//Skip calculating mapa and mash if we got the amounts.
if (