Reformat all project files to use the prettier config file.
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
const path = require("path");
|
||||
require("dotenv").config({
|
||||
path: path.resolve(
|
||||
process.cwd(),
|
||||
`.env.${process.env.NODE_ENV || "development"}`
|
||||
),
|
||||
path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
});
|
||||
const GraphQLClient = require("graphql-request").GraphQLClient;
|
||||
|
||||
@@ -12,456 +9,380 @@ const CdkBase = require("../web-sockets/web-socket");
|
||||
|
||||
const Dinero = require("dinero.js");
|
||||
const _ = require("lodash");
|
||||
const {DiscountNotAlreadyCounted} = require("../job/job-totals");
|
||||
const InstanceManager = require('../utils/instanceMgr').default;
|
||||
const { DiscountNotAlreadyCounted } = require("../job/job-totals");
|
||||
const InstanceManager = require("../utils/instanceMgr").default;
|
||||
|
||||
exports.default = async function (socket, jobid) {
|
||||
try {
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"DEBUG",
|
||||
`Received request to calculate allocations for ${jobid}`
|
||||
);
|
||||
const job = await QueryJobData(socket, jobid);
|
||||
const {bodyshop} = job;
|
||||
try {
|
||||
CdkBase.createLogEvent(socket, "DEBUG", `Received request to calculate allocations for ${jobid}`);
|
||||
const job = await QueryJobData(socket, jobid);
|
||||
const { bodyshop } = job;
|
||||
|
||||
const taxAllocations =
|
||||
InstanceManager({
|
||||
executeFunction:true,
|
||||
deubg:true,
|
||||
args: [],
|
||||
imex: () => ({
|
||||
local: {
|
||||
center: bodyshop.md_responsibility_centers.taxes.local.name,
|
||||
sale: Dinero(job.job_totals.totals.local_tax),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes.local,
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes.local,
|
||||
},
|
||||
state: {
|
||||
center: bodyshop.md_responsibility_centers.taxes.state.name,
|
||||
sale: Dinero(job.job_totals.totals.state_tax),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes.state,
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes.state,
|
||||
},
|
||||
federal: {
|
||||
center: bodyshop.md_responsibility_centers.taxes.federal.name,
|
||||
sale: Dinero(job.job_totals.totals.federal_tax),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes.federal,
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes.federal,
|
||||
},
|
||||
}), rome: () => ({
|
||||
tax_ty1: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty1`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty1Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty1`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty1`],
|
||||
},
|
||||
tax_ty2: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty2`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty2Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty2`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty2`],
|
||||
},
|
||||
tax_ty3: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty3`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty3Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty3`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty3`],
|
||||
},
|
||||
tax_ty4: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty4`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty4Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty4`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty4`],
|
||||
},
|
||||
tax_ty5: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty5`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty5Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty5`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty5`],
|
||||
},
|
||||
}) })
|
||||
|
||||
|
||||
//Determine if there are MAPA and MASH lines already on the estimate.
|
||||
//If there are, don't do anything extra (mitchell estimate)
|
||||
//Otherwise, calculate them and add them to the default MAPA and MASH centers.
|
||||
let hasMapaLine = false;
|
||||
let hasMashLine = false;
|
||||
|
||||
const profitCenterHash = job.joblines.reduce((acc, val) => {
|
||||
//Check the Parts Assignment
|
||||
if (val.db_ref === "936008") {
|
||||
//If either of these DB REFs change, they also need to change in job-totals/job-costing calculations.
|
||||
hasMapaLine = true;
|
||||
}
|
||||
if (val.db_ref === "936007") {
|
||||
hasMashLine = true;
|
||||
}
|
||||
|
||||
if (val.profitcenter_part) {
|
||||
if (!acc[val.profitcenter_part]) acc[val.profitcenter_part] = Dinero();
|
||||
|
||||
let DineroAmount = Dinero({
|
||||
amount: Math.round(val.act_price * 100),
|
||||
}).multiply(val.part_qty || 1);
|
||||
|
||||
DineroAmount = DineroAmount.add(
|
||||
((val.prt_dsmk_m && val.prt_dsmk_m !== 0) ||
|
||||
(val.prt_dsmk_p && val.prt_dsmk_p !== 0)) &&
|
||||
DiscountNotAlreadyCounted(val, job.joblines)
|
||||
? val.prt_dsmk_m
|
||||
? Dinero({amount: Math.round(val.prt_dsmk_m * 100)})
|
||||
: Dinero({
|
||||
amount: Math.round(val.act_price * 100),
|
||||
})
|
||||
.multiply(val.part_qty || 0)
|
||||
.percentage(Math.abs(val.prt_dsmk_p || 0))
|
||||
.multiply(val.prt_dsmk_p > 0 ? 1 : -1)
|
||||
: Dinero()
|
||||
);
|
||||
|
||||
acc[val.profitcenter_part] =
|
||||
acc[val.profitcenter_part].add(DineroAmount);
|
||||
}
|
||||
if (val.profitcenter_labor && val.mod_lbr_ty) {
|
||||
//Check the Labor Assignment.
|
||||
|
||||
if (!acc[val.profitcenter_labor])
|
||||
acc[val.profitcenter_labor] = Dinero();
|
||||
|
||||
acc[val.profitcenter_labor] = acc[val.profitcenter_labor].add(
|
||||
Dinero({
|
||||
amount: Math.round(
|
||||
job[`rate_${val.mod_lbr_ty.toLowerCase()}`] * 100
|
||||
),
|
||||
}).multiply(val.mod_lb_hrs)
|
||||
);
|
||||
}
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
const selectedDmsAllocationConfig =
|
||||
bodyshop.md_responsibility_centers.dms_defaults.find(
|
||||
(d) => d.name === job.dms_allocation
|
||||
);
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"DEBUG",
|
||||
`Using DMS Allocation ${
|
||||
selectedDmsAllocationConfig && selectedDmsAllocationConfig.name
|
||||
} for cost export.`
|
||||
);
|
||||
|
||||
let costCenterHash = {};
|
||||
//Check whether to skip this if PBS and using AP module.
|
||||
const disablebillwip = !!bodyshop?.pbs_configuration?.disablebillwip;
|
||||
|
||||
if (!disablebillwip) {
|
||||
costCenterHash = job.bills.reduce((bill_acc, bill_val) => {
|
||||
bill_val.billlines.map((line_val) => {
|
||||
if (
|
||||
!bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]]
|
||||
)
|
||||
bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]] =
|
||||
Dinero();
|
||||
|
||||
let lineDinero = Dinero({
|
||||
amount: Math.round((line_val.actual_cost || 0) * 100),
|
||||
})
|
||||
.multiply(line_val.quantity)
|
||||
.multiply(bill_val.is_credit_memo ? -1 : 1);
|
||||
|
||||
bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]] =
|
||||
bill_acc[
|
||||
selectedDmsAllocationConfig.costs[line_val.cost_center]
|
||||
].add(lineDinero);
|
||||
return null;
|
||||
});
|
||||
return bill_acc;
|
||||
}, {});
|
||||
const taxAllocations = InstanceManager({
|
||||
executeFunction: true,
|
||||
deubg: true,
|
||||
args: [],
|
||||
imex: () => ({
|
||||
local: {
|
||||
center: bodyshop.md_responsibility_centers.taxes.local.name,
|
||||
sale: Dinero(job.job_totals.totals.local_tax),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes.local,
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes.local
|
||||
},
|
||||
state: {
|
||||
center: bodyshop.md_responsibility_centers.taxes.state.name,
|
||||
sale: Dinero(job.job_totals.totals.state_tax),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes.state,
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes.state
|
||||
},
|
||||
federal: {
|
||||
center: bodyshop.md_responsibility_centers.taxes.federal.name,
|
||||
sale: Dinero(job.job_totals.totals.federal_tax),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes.federal,
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes.federal
|
||||
}
|
||||
}),
|
||||
rome: () => ({
|
||||
tax_ty1: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty1`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty1Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty1`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty1`]
|
||||
},
|
||||
tax_ty2: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty2`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty2Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty2`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty2`]
|
||||
},
|
||||
tax_ty3: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty3`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty3Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty3`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty3`]
|
||||
},
|
||||
tax_ty4: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty4`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty4Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty4`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty4`]
|
||||
},
|
||||
tax_ty5: {
|
||||
center: bodyshop.md_responsibility_centers.taxes[`tax_ty5`].name,
|
||||
sale: Dinero(job.job_totals.totals.us_sales_tax_breakdown[`ty5Tax`]),
|
||||
cost: Dinero(),
|
||||
profitCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty5`],
|
||||
costCenter: bodyshop.md_responsibility_centers.taxes[`tax_ty5`]
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
job.timetickets.forEach((ticket) => {
|
||||
//Get the total amount of the ticket.
|
||||
let TicketTotal = Dinero({
|
||||
amount: Math.round(
|
||||
ticket.rate *
|
||||
(ticket.employee && ticket.employee.flat_rate
|
||||
? ticket.productivehrs || 0
|
||||
: ticket.actualhrs || 0) *
|
||||
100
|
||||
),
|
||||
});
|
||||
//Add it to the right cost center.
|
||||
if (!costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]])
|
||||
costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]] =
|
||||
Dinero();
|
||||
//Determine if there are MAPA and MASH lines already on the estimate.
|
||||
//If there are, don't do anything extra (mitchell estimate)
|
||||
//Otherwise, calculate them and add them to the default MAPA and MASH centers.
|
||||
let hasMapaLine = false;
|
||||
let hasMashLine = false;
|
||||
|
||||
costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]] =
|
||||
costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]].add(
|
||||
TicketTotal
|
||||
);
|
||||
const profitCenterHash = job.joblines.reduce((acc, val) => {
|
||||
//Check the Parts Assignment
|
||||
if (val.db_ref === "936008") {
|
||||
//If either of these DB REFs change, they also need to change in job-totals/job-costing calculations.
|
||||
hasMapaLine = true;
|
||||
}
|
||||
if (val.db_ref === "936007") {
|
||||
hasMashLine = true;
|
||||
}
|
||||
|
||||
if (val.profitcenter_part) {
|
||||
if (!acc[val.profitcenter_part]) acc[val.profitcenter_part] = Dinero();
|
||||
|
||||
let DineroAmount = Dinero({
|
||||
amount: Math.round(val.act_price * 100)
|
||||
}).multiply(val.part_qty || 1);
|
||||
|
||||
DineroAmount = DineroAmount.add(
|
||||
((val.prt_dsmk_m && val.prt_dsmk_m !== 0) || (val.prt_dsmk_p && val.prt_dsmk_p !== 0)) &&
|
||||
DiscountNotAlreadyCounted(val, job.joblines)
|
||||
? val.prt_dsmk_m
|
||||
? Dinero({ amount: Math.round(val.prt_dsmk_m * 100) })
|
||||
: Dinero({
|
||||
amount: Math.round(val.act_price * 100)
|
||||
})
|
||||
.multiply(val.part_qty || 0)
|
||||
.percentage(Math.abs(val.prt_dsmk_p || 0))
|
||||
.multiply(val.prt_dsmk_p > 0 ? 1 : -1)
|
||||
: Dinero()
|
||||
);
|
||||
|
||||
acc[val.profitcenter_part] = acc[val.profitcenter_part].add(DineroAmount);
|
||||
}
|
||||
if (val.profitcenter_labor && val.mod_lbr_ty) {
|
||||
//Check the Labor Assignment.
|
||||
|
||||
if (!acc[val.profitcenter_labor]) acc[val.profitcenter_labor] = Dinero();
|
||||
|
||||
acc[val.profitcenter_labor] = acc[val.profitcenter_labor].add(
|
||||
Dinero({
|
||||
amount: Math.round(job[`rate_${val.mod_lbr_ty.toLowerCase()}`] * 100)
|
||||
}).multiply(val.mod_lb_hrs)
|
||||
);
|
||||
}
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
const selectedDmsAllocationConfig = bodyshop.md_responsibility_centers.dms_defaults.find(
|
||||
(d) => d.name === job.dms_allocation
|
||||
);
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"DEBUG",
|
||||
`Using DMS Allocation ${selectedDmsAllocationConfig && selectedDmsAllocationConfig.name} for cost export.`
|
||||
);
|
||||
|
||||
let costCenterHash = {};
|
||||
//Check whether to skip this if PBS and using AP module.
|
||||
const disablebillwip = !!bodyshop?.pbs_configuration?.disablebillwip;
|
||||
|
||||
if (!disablebillwip) {
|
||||
costCenterHash = job.bills.reduce((bill_acc, bill_val) => {
|
||||
bill_val.billlines.map((line_val) => {
|
||||
if (!bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]])
|
||||
bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]] = Dinero();
|
||||
|
||||
let lineDinero = Dinero({
|
||||
amount: Math.round((line_val.actual_cost || 0) * 100)
|
||||
})
|
||||
.multiply(line_val.quantity)
|
||||
.multiply(bill_val.is_credit_memo ? -1 : 1);
|
||||
|
||||
bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]] =
|
||||
bill_acc[selectedDmsAllocationConfig.costs[line_val.cost_center]].add(lineDinero);
|
||||
return null;
|
||||
});
|
||||
return bill_acc;
|
||||
}, {});
|
||||
}
|
||||
|
||||
if (!hasMapaLine && job.job_totals.rates.mapa.total.amount > 0) {
|
||||
// console.log("Adding MAPA Line Manually.");
|
||||
const mapaAccountName = selectedDmsAllocationConfig.profits.MAPA;
|
||||
job.timetickets.forEach((ticket) => {
|
||||
//Get the total amount of the ticket.
|
||||
let TicketTotal = Dinero({
|
||||
amount: Math.round(
|
||||
ticket.rate *
|
||||
(ticket.employee && ticket.employee.flat_rate ? ticket.productivehrs || 0 : ticket.actualhrs || 0) *
|
||||
100
|
||||
)
|
||||
});
|
||||
//Add it to the right cost center.
|
||||
if (!costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]])
|
||||
costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]] = Dinero();
|
||||
|
||||
const mapaAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === mapaAccountName
|
||||
);
|
||||
costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]] =
|
||||
costCenterHash[selectedDmsAllocationConfig.costs[ticket.ciecacode]].add(TicketTotal);
|
||||
});
|
||||
|
||||
if (mapaAccount) {
|
||||
if (!profitCenterHash[mapaAccountName])
|
||||
profitCenterHash[mapaAccountName] = Dinero();
|
||||
if (!hasMapaLine && job.job_totals.rates.mapa.total.amount > 0) {
|
||||
// console.log("Adding MAPA Line Manually.");
|
||||
const mapaAccountName = selectedDmsAllocationConfig.profits.MAPA;
|
||||
|
||||
profitCenterHash[mapaAccountName] = profitCenterHash[
|
||||
mapaAccountName
|
||||
].add(Dinero(job.job_totals.rates.mapa.total));
|
||||
} else {
|
||||
//console.log("NO MAPA ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
const mapaAccount = bodyshop.md_responsibility_centers.profits.find((c) => c.name === mapaAccountName);
|
||||
|
||||
if (!hasMashLine && job.job_totals.rates.mash.total.amount > 0) {
|
||||
// console.log("Adding MASH Line Manually.");
|
||||
if (mapaAccount) {
|
||||
if (!profitCenterHash[mapaAccountName]) profitCenterHash[mapaAccountName] = Dinero();
|
||||
|
||||
const mashAccountName = selectedDmsAllocationConfig.profits.MASH;
|
||||
|
||||
const mashAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === mashAccountName
|
||||
);
|
||||
|
||||
if (mashAccount) {
|
||||
if (!profitCenterHash[mashAccountName])
|
||||
profitCenterHash[mashAccountName] = Dinero();
|
||||
|
||||
profitCenterHash[mashAccountName] = profitCenterHash[
|
||||
mashAccountName
|
||||
].add(Dinero(job.job_totals.rates.mash.total));
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
console.log(
|
||||
Number.isInteger(bodyshop?.cdk_configuration?.sendmaterialscosting),
|
||||
typeof Number.isInteger(bodyshop?.cdk_configuration?.sendmaterialscosting)
|
||||
profitCenterHash[mapaAccountName] = profitCenterHash[mapaAccountName].add(
|
||||
Dinero(job.job_totals.rates.mapa.total)
|
||||
);
|
||||
if (!!bodyshop?.cdk_configuration?.sendmaterialscosting) {
|
||||
//Manually send the percentage of the costing.
|
||||
} else {
|
||||
//console.log("NO MAPA ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
|
||||
//Paint Mat
|
||||
const mapaAccountName = selectedDmsAllocationConfig.costs.MAPA;
|
||||
const mapaAccount = bodyshop.md_responsibility_centers.costs.find(
|
||||
(c) => c.name === mapaAccountName
|
||||
);
|
||||
if (mapaAccount) {
|
||||
if (!costCenterHash[mapaAccountName])
|
||||
costCenterHash[mapaAccountName] = Dinero();
|
||||
costCenterHash[mapaAccountName] = costCenterHash[mapaAccountName].add(
|
||||
Dinero(job.job_totals.rates.mapa.total).percentage(
|
||||
bodyshop?.cdk_configuration?.sendmaterialscosting
|
||||
)
|
||||
);
|
||||
} else {
|
||||
//console.log("NO MAPA ACCOUNT FOUND!!");
|
||||
}
|
||||
if (!hasMashLine && job.job_totals.rates.mash.total.amount > 0) {
|
||||
// console.log("Adding MASH Line Manually.");
|
||||
|
||||
//Shop Mat
|
||||
const mashAccountName = selectedDmsAllocationConfig.costs.MASH;
|
||||
const mashAccount = bodyshop.md_responsibility_centers.costs.find(
|
||||
(c) => c.name === mashAccountName
|
||||
);
|
||||
if (mashAccount) {
|
||||
if (!costCenterHash[mashAccountName])
|
||||
costCenterHash[mashAccountName] = Dinero();
|
||||
costCenterHash[mashAccountName] = costCenterHash[mashAccountName].add(
|
||||
Dinero(job.job_totals.rates.mash.total).percentage(
|
||||
bodyshop?.cdk_configuration?.sendmaterialscosting
|
||||
)
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
const mashAccountName = selectedDmsAllocationConfig.profits.MASH;
|
||||
|
||||
const {ca_bc_pvrt} = job;
|
||||
if (ca_bc_pvrt) {
|
||||
// const pvrtAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
// (c) => c.name === mashAccountName
|
||||
// );
|
||||
const mashAccount = bodyshop.md_responsibility_centers.profits.find((c) => c.name === mashAccountName);
|
||||
|
||||
taxAllocations.state.sale = taxAllocations.state.sale.add(
|
||||
Dinero({amount: Math.round((ca_bc_pvrt || 0) * 100)})
|
||||
);
|
||||
}
|
||||
if (mashAccount) {
|
||||
if (!profitCenterHash[mashAccountName]) profitCenterHash[mashAccountName] = Dinero();
|
||||
|
||||
if (job.towing_payable && job.towing_payable !== 0) {
|
||||
const towAccountName = selectedDmsAllocationConfig.profits.TOW;
|
||||
profitCenterHash[mashAccountName] = profitCenterHash[mashAccountName].add(
|
||||
Dinero(job.job_totals.rates.mash.total)
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
console.log(
|
||||
Number.isInteger(bodyshop?.cdk_configuration?.sendmaterialscosting),
|
||||
typeof Number.isInteger(bodyshop?.cdk_configuration?.sendmaterialscosting)
|
||||
);
|
||||
if (!!bodyshop?.cdk_configuration?.sendmaterialscosting) {
|
||||
//Manually send the percentage of the costing.
|
||||
|
||||
const towAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === towAccountName
|
||||
);
|
||||
//Paint Mat
|
||||
const mapaAccountName = selectedDmsAllocationConfig.costs.MAPA;
|
||||
const mapaAccount = bodyshop.md_responsibility_centers.costs.find((c) => c.name === mapaAccountName);
|
||||
if (mapaAccount) {
|
||||
if (!costCenterHash[mapaAccountName]) costCenterHash[mapaAccountName] = Dinero();
|
||||
costCenterHash[mapaAccountName] = costCenterHash[mapaAccountName].add(
|
||||
Dinero(job.job_totals.rates.mapa.total).percentage(bodyshop?.cdk_configuration?.sendmaterialscosting)
|
||||
);
|
||||
} else {
|
||||
//console.log("NO MAPA ACCOUNT FOUND!!");
|
||||
}
|
||||
|
||||
if (towAccount) {
|
||||
if (!profitCenterHash[towAccountName])
|
||||
profitCenterHash[towAccountName] = Dinero();
|
||||
//Shop Mat
|
||||
const mashAccountName = selectedDmsAllocationConfig.costs.MASH;
|
||||
const mashAccount = bodyshop.md_responsibility_centers.costs.find((c) => c.name === mashAccountName);
|
||||
if (mashAccount) {
|
||||
if (!costCenterHash[mashAccountName]) costCenterHash[mashAccountName] = Dinero();
|
||||
costCenterHash[mashAccountName] = costCenterHash[mashAccountName].add(
|
||||
Dinero(job.job_totals.rates.mash.total).percentage(bodyshop?.cdk_configuration?.sendmaterialscosting)
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
|
||||
profitCenterHash[towAccountName] = profitCenterHash[towAccountName].add(
|
||||
Dinero({
|
||||
amount: Math.round((job.towing_payable || 0) * 100),
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
if (job.storage_payable && job.storage_payable !== 0) {
|
||||
const storageAccountName = selectedDmsAllocationConfig.profits.TOW;
|
||||
const { ca_bc_pvrt } = job;
|
||||
if (ca_bc_pvrt) {
|
||||
// const pvrtAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
// (c) => c.name === mashAccountName
|
||||
// );
|
||||
|
||||
const towAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === storageAccountName
|
||||
);
|
||||
taxAllocations.state.sale = taxAllocations.state.sale.add(
|
||||
Dinero({ amount: Math.round((ca_bc_pvrt || 0) * 100) })
|
||||
);
|
||||
}
|
||||
|
||||
if (towAccount) {
|
||||
if (!profitCenterHash[storageAccountName])
|
||||
profitCenterHash[storageAccountName] = Dinero();
|
||||
if (job.towing_payable && job.towing_payable !== 0) {
|
||||
const towAccountName = selectedDmsAllocationConfig.profits.TOW;
|
||||
|
||||
profitCenterHash[storageAccountName] = profitCenterHash[
|
||||
storageAccountName
|
||||
].add(
|
||||
Dinero({
|
||||
amount: Math.round((job.storage_payable || 0) * 100),
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
const towAccount = bodyshop.md_responsibility_centers.profits.find((c) => c.name === towAccountName);
|
||||
|
||||
if (job.adjustment_bottom_line && job.adjustment_bottom_line !== 0) {
|
||||
const otherAccountName = selectedDmsAllocationConfig.profits.PAO;
|
||||
if (towAccount) {
|
||||
if (!profitCenterHash[towAccountName]) profitCenterHash[towAccountName] = Dinero();
|
||||
|
||||
const otherAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === otherAccountName
|
||||
);
|
||||
profitCenterHash[towAccountName] = profitCenterHash[towAccountName].add(
|
||||
Dinero({
|
||||
amount: Math.round((job.towing_payable || 0) * 100)
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
if (job.storage_payable && job.storage_payable !== 0) {
|
||||
const storageAccountName = selectedDmsAllocationConfig.profits.TOW;
|
||||
|
||||
if (otherAccount) {
|
||||
if (!profitCenterHash[otherAccountName])
|
||||
profitCenterHash[otherAccountName] = Dinero();
|
||||
const towAccount = bodyshop.md_responsibility_centers.profits.find((c) => c.name === storageAccountName);
|
||||
|
||||
profitCenterHash[otherAccountName] = profitCenterHash[
|
||||
otherAccountName
|
||||
].add(
|
||||
Dinero({
|
||||
amount: Math.round((job.adjustment_bottom_line || 0) * 100),
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
if(InstanceManager({rome:true})){
|
||||
if (towAccount) {
|
||||
if (!profitCenterHash[storageAccountName]) profitCenterHash[storageAccountName] = Dinero();
|
||||
|
||||
profitCenterHash[storageAccountName] = profitCenterHash[storageAccountName].add(
|
||||
Dinero({
|
||||
amount: Math.round((job.storage_payable || 0) * 100)
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
|
||||
if (job.adjustment_bottom_line && job.adjustment_bottom_line !== 0) {
|
||||
const otherAccountName = selectedDmsAllocationConfig.profits.PAO;
|
||||
|
||||
const otherAccount = bodyshop.md_responsibility_centers.profits.find((c) => c.name === otherAccountName);
|
||||
|
||||
if (otherAccount) {
|
||||
if (!profitCenterHash[otherAccountName]) profitCenterHash[otherAccountName] = Dinero();
|
||||
|
||||
profitCenterHash[otherAccountName] = profitCenterHash[otherAccountName].add(
|
||||
Dinero({
|
||||
amount: Math.round((job.adjustment_bottom_line || 0) * 100)
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// console.log("NO MASH ACCOUNT FOUND!!");
|
||||
}
|
||||
}
|
||||
if (InstanceManager({ rome: true })) {
|
||||
//profile level adjustments
|
||||
Object.keys(job.job_totals.parts.adjustments).forEach((key) => {
|
||||
const accountName = selectedDmsAllocationConfig.profits[key];
|
||||
Object.keys(job.job_totals.parts.adjustments).forEach((key) => {
|
||||
const accountName = selectedDmsAllocationConfig.profits[key];
|
||||
|
||||
const otherAccount = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === accountName
|
||||
);
|
||||
const otherAccount = bodyshop.md_responsibility_centers.profits.find((c) => c.name === accountName);
|
||||
|
||||
if (otherAccount) {
|
||||
if (!profitCenterHash[accountName])
|
||||
profitCenterHash[accountName] = Dinero();
|
||||
if (otherAccount) {
|
||||
if (!profitCenterHash[accountName]) profitCenterHash[accountName] = Dinero();
|
||||
|
||||
profitCenterHash[accountName] = profitCenterHash[accountName].add(
|
||||
Dinero(job.job_totals.parts.adjustments[key])
|
||||
);
|
||||
} else {
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"ERROR",
|
||||
`Error encountered in CdkCalculateAllocations. Unable to find adjustment account. ${error}`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const jobAllocations = _.union(
|
||||
Object.keys(profitCenterHash),
|
||||
Object.keys(costCenterHash)
|
||||
).map((key) => {
|
||||
const profitCenter = bodyshop.md_responsibility_centers.profits.find(
|
||||
(c) => c.name === key
|
||||
);
|
||||
const costCenter = bodyshop.md_responsibility_centers.costs.find(
|
||||
(c) => c.name === key
|
||||
);
|
||||
|
||||
return {
|
||||
center: key,
|
||||
sale: profitCenterHash[key] ? profitCenterHash[key] : Dinero(),
|
||||
cost: costCenterHash[key] ? costCenterHash[key] : Dinero(),
|
||||
profitCenter,
|
||||
costCenter,
|
||||
};
|
||||
});
|
||||
|
||||
return [
|
||||
...jobAllocations,
|
||||
...Object.keys(taxAllocations)
|
||||
.filter(
|
||||
(key) =>
|
||||
taxAllocations[key].sale.getAmount() > 0 ||
|
||||
taxAllocations[key].cost.getAmount() > 0
|
||||
)
|
||||
.map((key) => {
|
||||
if (
|
||||
key === "federal" &&
|
||||
selectedDmsAllocationConfig.gst_override &&
|
||||
selectedDmsAllocationConfig.gst_override !== ""
|
||||
) {
|
||||
const ret = {...taxAllocations[key], tax: key};
|
||||
ret.costCenter.dms_acctnumber =
|
||||
selectedDmsAllocationConfig.gst_override;
|
||||
ret.profitCenter.dms_acctnumber =
|
||||
selectedDmsAllocationConfig.gst_override;
|
||||
return ret;
|
||||
} else {
|
||||
return {...taxAllocations[key], tax: key};
|
||||
}
|
||||
}),
|
||||
];
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
CdkBase.createLogEvent(
|
||||
profitCenterHash[accountName] = profitCenterHash[accountName].add(
|
||||
Dinero(job.job_totals.parts.adjustments[key])
|
||||
);
|
||||
} else {
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"ERROR",
|
||||
`Error encountered in CdkCalculateAllocations. ${error}`
|
||||
);
|
||||
`Error encountered in CdkCalculateAllocations. Unable to find adjustment account. ${error}`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const jobAllocations = _.union(Object.keys(profitCenterHash), Object.keys(costCenterHash)).map((key) => {
|
||||
const profitCenter = bodyshop.md_responsibility_centers.profits.find((c) => c.name === key);
|
||||
const costCenter = bodyshop.md_responsibility_centers.costs.find((c) => c.name === key);
|
||||
|
||||
return {
|
||||
center: key,
|
||||
sale: profitCenterHash[key] ? profitCenterHash[key] : Dinero(),
|
||||
cost: costCenterHash[key] ? costCenterHash[key] : Dinero(),
|
||||
profitCenter,
|
||||
costCenter
|
||||
};
|
||||
});
|
||||
|
||||
return [
|
||||
...jobAllocations,
|
||||
...Object.keys(taxAllocations)
|
||||
.filter((key) => taxAllocations[key].sale.getAmount() > 0 || taxAllocations[key].cost.getAmount() > 0)
|
||||
.map((key) => {
|
||||
if (
|
||||
key === "federal" &&
|
||||
selectedDmsAllocationConfig.gst_override &&
|
||||
selectedDmsAllocationConfig.gst_override !== ""
|
||||
) {
|
||||
const ret = { ...taxAllocations[key], tax: key };
|
||||
ret.costCenter.dms_acctnumber = selectedDmsAllocationConfig.gst_override;
|
||||
ret.profitCenter.dms_acctnumber = selectedDmsAllocationConfig.gst_override;
|
||||
return ret;
|
||||
} else {
|
||||
return { ...taxAllocations[key], tax: key };
|
||||
}
|
||||
})
|
||||
];
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
CdkBase.createLogEvent(socket, "ERROR", `Error encountered in CdkCalculateAllocations. ${error}`);
|
||||
}
|
||||
};
|
||||
|
||||
async function QueryJobData(socket, jobid) {
|
||||
CdkBase.createLogEvent(socket, "DEBUG", `Querying job data for id ${jobid}`);
|
||||
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
|
||||
const result = await client
|
||||
.setHeaders({Authorization: `Bearer ${socket.handshake.auth.token}`})
|
||||
.request(queries.GET_CDK_ALLOCATIONS, {id: jobid});
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"TRACE",
|
||||
`Job data query result ${JSON.stringify(result, null, 2)}`
|
||||
);
|
||||
return result.jobs_by_pk;
|
||||
CdkBase.createLogEvent(socket, "DEBUG", `Querying job data for id ${jobid}`);
|
||||
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
|
||||
const result = await client
|
||||
.setHeaders({ Authorization: `Bearer ${socket.handshake.auth.token}` })
|
||||
.request(queries.GET_CDK_ALLOCATIONS, { id: jobid });
|
||||
CdkBase.createLogEvent(socket, "TRACE", `Job data query result ${JSON.stringify(result, null, 2)}`);
|
||||
return result.jobs_by_pk;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
const path = require("path");
|
||||
require("dotenv").config({
|
||||
path: path.resolve(
|
||||
process.cwd(),
|
||||
`.env.${process.env.NODE_ENV || "development"}`
|
||||
),
|
||||
path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
});
|
||||
const soap = require("soap");
|
||||
const queries = require("../graphql-client/queries");
|
||||
@@ -11,7 +8,7 @@ const queries = require("../graphql-client/queries");
|
||||
const CdkWsdl = require("./cdk-wsdl").default;
|
||||
const logger = require("../utils/logger");
|
||||
|
||||
const {CDK_CREDENTIALS, CheckCdkResponseForError} = require("./cdk-wsdl");
|
||||
const { CDK_CREDENTIALS, CheckCdkResponseForError } = require("./cdk-wsdl");
|
||||
|
||||
// exports.default = async function (socket, cdk_dealerid) {
|
||||
// try {
|
||||
@@ -31,121 +28,83 @@ const {CDK_CREDENTIALS, CheckCdkResponseForError} = require("./cdk-wsdl");
|
||||
// };
|
||||
|
||||
exports.default = async function ReloadCdkMakes(req, res) {
|
||||
const {bodyshopid, cdk_dealerid} = req.body;
|
||||
try {
|
||||
//Query all CDK Models
|
||||
const newList = await GetCdkMakes(req, cdk_dealerid);
|
||||
const { bodyshopid, cdk_dealerid } = req.body;
|
||||
try {
|
||||
//Query all CDK Models
|
||||
const newList = await GetCdkMakes(req, cdk_dealerid);
|
||||
|
||||
const BearerToken = req.BearerToken;
|
||||
const client = req.userGraphQLClient;
|
||||
const BearerToken = req.BearerToken;
|
||||
const client = req.userGraphQLClient;
|
||||
|
||||
const deleteResult = await client
|
||||
.setHeaders({Authorization: BearerToken})
|
||||
.request(queries.DELETE_ALL_DMS_VEHICLES, {});
|
||||
console.log(
|
||||
"🚀 ~ file: cdk-get-makes.js ~ line 53 ~ deleteResult",
|
||||
deleteResult
|
||||
);
|
||||
const deleteResult = await client
|
||||
.setHeaders({ Authorization: BearerToken })
|
||||
.request(queries.DELETE_ALL_DMS_VEHICLES, {});
|
||||
console.log("🚀 ~ file: cdk-get-makes.js ~ line 53 ~ deleteResult", deleteResult);
|
||||
|
||||
//Insert the new ones.
|
||||
//Insert the new ones.
|
||||
|
||||
const insertResult = await client
|
||||
.setHeaders({Authorization: BearerToken})
|
||||
.request(queries.INSERT_DMS_VEHICLES, {
|
||||
vehicles: newList.map((i) => {
|
||||
return {
|
||||
bodyshopid,
|
||||
makecode: i.makeCode,
|
||||
modelcode: i.modelCode,
|
||||
make: i.makeFullName,
|
||||
model: i.modelFullName,
|
||||
};
|
||||
}),
|
||||
});
|
||||
const insertResult = await client.setHeaders({ Authorization: BearerToken }).request(queries.INSERT_DMS_VEHICLES, {
|
||||
vehicles: newList.map((i) => {
|
||||
return {
|
||||
bodyshopid,
|
||||
makecode: i.makeCode,
|
||||
modelcode: i.modelCode,
|
||||
make: i.makeFullName,
|
||||
model: i.modelFullName
|
||||
};
|
||||
})
|
||||
});
|
||||
|
||||
logger.log(
|
||||
"cdk-replace-makes-models-success",
|
||||
"DEBUG",
|
||||
req.user.email,
|
||||
null,
|
||||
{
|
||||
cdk_dealerid,
|
||||
count: newList.length,
|
||||
}
|
||||
);
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
logger.log(
|
||||
"cdk-replace-makes-models-error",
|
||||
"ERROR",
|
||||
req.user.email,
|
||||
null,
|
||||
{
|
||||
cdk_dealerid,
|
||||
error,
|
||||
}
|
||||
);
|
||||
res.status(500).json(error);
|
||||
}
|
||||
logger.log("cdk-replace-makes-models-success", "DEBUG", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
count: newList.length
|
||||
});
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
logger.log("cdk-replace-makes-models-error", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
error
|
||||
});
|
||||
res.status(500).json(error);
|
||||
}
|
||||
};
|
||||
|
||||
async function GetCdkMakes(req, cdk_dealerid) {
|
||||
logger.log("cdk-replace-makes-models", "DEBUG", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
logger.log("cdk-replace-makes-models", "DEBUG", req.user.email, null, {
|
||||
cdk_dealerid
|
||||
});
|
||||
|
||||
try {
|
||||
const soapClientVehicleInsert = await soap.createClientAsync(CdkWsdl.VehicleInsertUpdate);
|
||||
|
||||
const soapResponseVehicleSearch = await soapClientVehicleInsert.getMakeModelAsync(
|
||||
{
|
||||
arg0: CDK_CREDENTIALS,
|
||||
arg1: { id: cdk_dealerid }
|
||||
},
|
||||
|
||||
{}
|
||||
);
|
||||
|
||||
CheckCdkResponseForError(null, soapResponseVehicleSearch);
|
||||
const [result, rawResponse, , rawRequest] = soapResponseVehicleSearch;
|
||||
logger.log("cdk-replace-makes-models-request", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
xml: rawRequest
|
||||
});
|
||||
|
||||
try {
|
||||
const soapClientVehicleInsert = await soap.createClientAsync(
|
||||
CdkWsdl.VehicleInsertUpdate
|
||||
);
|
||||
logger.log("cdk-replace-makes-models-response", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
xml: rawResponse
|
||||
});
|
||||
|
||||
const soapResponseVehicleSearch =
|
||||
await soapClientVehicleInsert.getMakeModelAsync(
|
||||
{
|
||||
arg0: CDK_CREDENTIALS,
|
||||
arg1: {id: cdk_dealerid},
|
||||
},
|
||||
return result.return;
|
||||
} catch (error) {
|
||||
logger.log("cdk-replace-makes-models-error", "ERROR", req.user.email, null, {
|
||||
cdk_dealerid,
|
||||
error
|
||||
});
|
||||
|
||||
{}
|
||||
);
|
||||
|
||||
CheckCdkResponseForError(null, soapResponseVehicleSearch);
|
||||
const [result, rawResponse, , rawRequest] = soapResponseVehicleSearch;
|
||||
logger.log(
|
||||
"cdk-replace-makes-models-request",
|
||||
"ERROR",
|
||||
req.user.email,
|
||||
null,
|
||||
{
|
||||
cdk_dealerid,
|
||||
xml: rawRequest,
|
||||
}
|
||||
);
|
||||
|
||||
logger.log(
|
||||
"cdk-replace-makes-models-response",
|
||||
"ERROR",
|
||||
req.user.email,
|
||||
null,
|
||||
{
|
||||
cdk_dealerid,
|
||||
xml: rawResponse,
|
||||
}
|
||||
);
|
||||
|
||||
return result.return;
|
||||
} catch (error) {
|
||||
logger.log(
|
||||
"cdk-replace-makes-models-error",
|
||||
"ERROR",
|
||||
req.user.email,
|
||||
null,
|
||||
{
|
||||
cdk_dealerid,
|
||||
error,
|
||||
}
|
||||
);
|
||||
|
||||
throw new Error(error);
|
||||
}
|
||||
throw new Error(error);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,91 +1,74 @@
|
||||
const path = require("path");
|
||||
require("dotenv").config({
|
||||
path: path.resolve(
|
||||
process.cwd(),
|
||||
`.env.${process.env.NODE_ENV || "development"}`
|
||||
),
|
||||
path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
});
|
||||
const CdkBase = require("../web-sockets/web-socket");
|
||||
|
||||
const IMEX_CDK_USER = process.env.IMEX_CDK_USER,
|
||||
IMEX_CDK_PASSWORD = process.env.IMEX_CDK_PASSWORD;
|
||||
IMEX_CDK_PASSWORD = process.env.IMEX_CDK_PASSWORD;
|
||||
const CDK_CREDENTIALS = {
|
||||
password: IMEX_CDK_PASSWORD,
|
||||
username: IMEX_CDK_USER,
|
||||
password: IMEX_CDK_PASSWORD,
|
||||
username: IMEX_CDK_USER
|
||||
};
|
||||
|
||||
exports.CDK_CREDENTIALS = CDK_CREDENTIALS;
|
||||
const cdkDomain =
|
||||
process.env.NODE_ENV === "production"
|
||||
? "https://3pa.dmotorworks.com"
|
||||
: "https://uat-3pa.dmotorworks.com";
|
||||
process.env.NODE_ENV === "production" ? "https://3pa.dmotorworks.com" : "https://uat-3pa.dmotorworks.com";
|
||||
|
||||
function CheckCdkResponseForError(socket, soapResponse) {
|
||||
if (!soapResponse[0]) {
|
||||
//The response was null, this might be ok, it might not.
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"WARNING",
|
||||
`Warning detected in CDK Response - it appears to be null. Stack: ${
|
||||
new Error().stack
|
||||
}`
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (!soapResponse[0]) {
|
||||
//The response was null, this might be ok, it might not.
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"WARNING",
|
||||
`Warning detected in CDK Response - it appears to be null. Stack: ${new Error().stack}`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const ResultToCheck = soapResponse[0].return;
|
||||
const ResultToCheck = soapResponse[0].return;
|
||||
|
||||
if (Array.isArray(ResultToCheck)) {
|
||||
ResultToCheck.forEach((result) => checkIndividualResult(socket, result));
|
||||
} else {
|
||||
checkIndividualResult(socket, ResultToCheck);
|
||||
}
|
||||
if (Array.isArray(ResultToCheck)) {
|
||||
ResultToCheck.forEach((result) => checkIndividualResult(socket, result));
|
||||
} else {
|
||||
checkIndividualResult(socket, ResultToCheck);
|
||||
}
|
||||
}
|
||||
|
||||
exports.CheckCdkResponseForError = CheckCdkResponseForError;
|
||||
|
||||
function checkIndividualResult(socket, ResultToCheck) {
|
||||
if (
|
||||
ResultToCheck.errorLevel === 0 ||
|
||||
ResultToCheck.errorLevel === "0" ||
|
||||
ResultToCheck.code === "success" ||
|
||||
(!ResultToCheck.code && !ResultToCheck.errorLevel)
|
||||
)
|
||||
//TODO: Verify that this is the best way to detect errors.
|
||||
return;
|
||||
else {
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"ERROR",
|
||||
`Error detected in CDK Response - ${JSON.stringify(
|
||||
ResultToCheck,
|
||||
null,
|
||||
2
|
||||
)}`
|
||||
);
|
||||
if (
|
||||
ResultToCheck.errorLevel === 0 ||
|
||||
ResultToCheck.errorLevel === "0" ||
|
||||
ResultToCheck.code === "success" ||
|
||||
(!ResultToCheck.code && !ResultToCheck.errorLevel)
|
||||
)
|
||||
//TODO: Verify that this is the best way to detect errors.
|
||||
return;
|
||||
else {
|
||||
CdkBase.createLogEvent(
|
||||
socket,
|
||||
"ERROR",
|
||||
`Error detected in CDK Response - ${JSON.stringify(ResultToCheck, null, 2)}`
|
||||
);
|
||||
|
||||
throw new Error(
|
||||
`Error found while validating CDK response for ${JSON.stringify(
|
||||
ResultToCheck,
|
||||
null,
|
||||
2
|
||||
)}:`
|
||||
);
|
||||
}
|
||||
throw new Error(`Error found while validating CDK response for ${JSON.stringify(ResultToCheck, null, 2)}:`);
|
||||
}
|
||||
}
|
||||
|
||||
exports.checkIndividualResult = checkIndividualResult;
|
||||
|
||||
//const cdkDomain = "https://uat-3pa.dmotorworks.com";
|
||||
exports.default = {
|
||||
// VehicleSearch: `${cdkDomain}/pip-vehicle/services/VehicleSearch?wsdl`,
|
||||
HelpDataBase: `${cdkDomain}/pip-help-database-location/services/HelpDatabaseLocation?wsdl`,
|
||||
AccountingGLInsertUpdate: `${cdkDomain}/pip-accounting-gl/services/AccountingGLInsertUpdate?wsdl`,
|
||||
VehicleInsertUpdate: `${cdkDomain}/pip-vehicle/services/VehicleInsertUpdate?wsdl`,
|
||||
CustomerInsertUpdate: `${cdkDomain}/pip-customer/services/CustomerInsertUpdate?wsdl`,
|
||||
CustomerSearch: `${cdkDomain}/pip-customer/services/CustomerSearch?wsdl`,
|
||||
VehicleSearch: `${cdkDomain}/pip-vehicle/services/VehicleSearch?wsdl`,
|
||||
ServiceHistoryInsert: `${cdkDomain}/pip-service-history-insert/services/ServiceHistoryInsert?wsdl`,
|
||||
// VehicleSearch: `${cdkDomain}/pip-vehicle/services/VehicleSearch?wsdl`,
|
||||
HelpDataBase: `${cdkDomain}/pip-help-database-location/services/HelpDatabaseLocation?wsdl`,
|
||||
AccountingGLInsertUpdate: `${cdkDomain}/pip-accounting-gl/services/AccountingGLInsertUpdate?wsdl`,
|
||||
VehicleInsertUpdate: `${cdkDomain}/pip-vehicle/services/VehicleInsertUpdate?wsdl`,
|
||||
CustomerInsertUpdate: `${cdkDomain}/pip-customer/services/CustomerInsertUpdate?wsdl`,
|
||||
CustomerSearch: `${cdkDomain}/pip-customer/services/CustomerSearch?wsdl`,
|
||||
VehicleSearch: `${cdkDomain}/pip-vehicle/services/VehicleSearch?wsdl`,
|
||||
ServiceHistoryInsert: `${cdkDomain}/pip-service-history-insert/services/ServiceHistoryInsert?wsdl`
|
||||
};
|
||||
|
||||
// The following login credentials will be used for all PIPs and all environments (User Acceptance Testing and Production).
|
||||
|
||||
Reference in New Issue
Block a user