IO-223 ARM development

This commit is contained in:
Patrick Fic
2021-10-18 19:37:27 -07:00
parent dc10f8d35b
commit 289a8222a0
8 changed files with 1017 additions and 809 deletions

View File

@@ -11,14 +11,13 @@ require("dotenv").config({
`.env.${process.env.NODE_ENV || "development"}`
),
});
let Client = require("ssh2-sftp-client");
const client = require("../graphql-client/graphql-client").client;
const uuid = require("uuid").v4;
exports.default = async (req, res) => {
//Query for the List of Bodyshop Clients.
logger.log("arms-start", "DEBUG", "api", null, null);
const { bodyshops } = await client.request(queries.GET_AUTOHOUSE_SHOPS);
const { bodyshops } = await client.request(queries.GET_ENTEGRAL_SHOPS);
const allxmlsToUpload = [];
const allErrors = [];
@@ -29,14 +28,14 @@ exports.default = async (req, res) => {
});
const erroredJobs = [];
try {
const { jobs } = await client.request(queries.AUTOHOUSE_QUERY, {
const { jobs } = await client.request(queries.ENTEGRAL_EXPORT, {
bodyshopid: bodyshop.id,
});
jobs.map((job) => {
const ret = jobs.map((job) => {
const transId = uuid(); // Can this actually be the job id?
return {
RepairOrderFolderAddRq: {
RqUID: "426cce3a-efa7-44d9-b76e-50b9102c4198", //TODO UID Tracking
RqUID: transId,
DocumentInfo: {
BMSVer: "4.0.0",
DocumentType: "Repair Order",
@@ -48,20 +47,22 @@ exports.default = async (req, res) => {
},
EventInfo: {
AssignmentEvent: {
CreateDateTime: moment(job.asgn_date).format(),
CreateDateTime:
job.asgn_date && moment(job.asgn_date).format(),
},
EstimateEvent: {
UploadDateTime: "2009-03-02T17:00:00.0000000-08:00", //TODO Figure out what this actually is. 'Date Estimate was uploaded'
},
RepairEvent: {
ArrivalDateTime: moment(job.date_open).format(),
ArrivalDateTime:
job.date_open && moment(job.date_open).format(),
ArrivalOdometerReading: job.kmin,
TargetCompletionDateTime: moment(
job.scheduled_compltion
).format(),
TargetCompletionDateTime:
job.scheduled_completion &&
moment(job.scheduled_completion).format(),
ActualCompletionDateTime:
job.actual_complation &&
moment(job.actual_complation).format(),
job.actual_completion &&
moment(job.actual_completion).format(),
ActualPickUpDateTime:
job.actual_delivery && moment(job.actual_delivery).format(),
CloseDateTime:
@@ -109,30 +110,30 @@ exports.default = async (req, res) => {
},
},
},
InsuranceAgent: {
Party: {
OrgInfo: {
CompanyName: "Nationwide Insurance",
Communications: {
CommQualifier: "WP",
CommPhone: "714-5551212",
},
},
ContactInfo: {
ContactJobTitle: "Insurance Agent",
ContactName: {
FirstName: "Paul",
LastName: "White",
},
},
},
},
// InsuranceAgent: {
// Party: {
// OrgInfo: {
// CompanyName: "Nationwide Insurance",
// Communications: {
// CommQualifier: "WP",
// CommPhone: "714-5551212",
// },
// },
// ContactInfo: {
// ContactJobTitle: "Insurance Agent",
// ContactName: {
// FirstName: "Paul",
// LastName: "White",
// },
// },
// },
// },
Insured: {
Party: {
PersonInfo: {
PersonName: {
FirstName: "Jim",
LastName: "Smith",
FirstName: job.insd_fn,
LastName: job.insd_ln,
},
},
},
@@ -180,8 +181,8 @@ exports.default = async (req, res) => {
Party: {
PersonInfo: {
PersonName: {
FirstName: "Jim",
LastName: "Smith",
FirstName: job.clm_ct_fn,
LastName: job.clm_ct_ln,
},
},
},
@@ -191,13 +192,13 @@ exports.default = async (req, res) => {
Party: {
PersonInfo: {
PersonName: {
FirstName: "Jim",
LastName: "Smith",
},
IDInfo: {
IDQualifierCode: "US",
IDNum: 2941,
FirstName: job.est_ct_fn,
LastName: job.est_ct_ln,
},
// IDInfo: {
// IDQualifierCode: "US",
// IDNum: 2941,
// },
},
},
},
@@ -208,7 +209,7 @@ exports.default = async (req, res) => {
CompanyName: bodyshop.shopname,
IDInfo: {
IDQualifierCode: "US",
IDNum: 2207,
IDNum: bodyshop.entegral_id,
},
},
},
@@ -391,6 +392,7 @@ exports.default = async (req, res) => {
Rate: job.rate_mahw,
},
MaterialCalcSettings: {
//Todo Capture Calc Settings
CalcMethodCode: 2,
CalcMaxAmt: 10,
},
@@ -476,7 +478,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.paa &&
job.job_totals.parts.parts.list.paa.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "PAC",
@@ -484,7 +486,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.pac &&
job.job_totals.parts.parts.list.pac.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "PAG",
@@ -492,7 +494,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.pag &&
job.job_totals.parts.parts.list.pag.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "PAL",
@@ -500,7 +502,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.pal &&
job.job_totals.parts.parts.list.pal.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "PAM",
@@ -508,7 +510,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.pam &&
job.job_totals.parts.parts.list.pam.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "PAN",
@@ -516,7 +518,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.pan &&
job.job_totals.parts.parts.list.pan.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "PAR",
@@ -524,7 +526,7 @@ exports.default = async (req, res) => {
TotalAmt: Dinero(
job.job_totals.parts.parts.list.par &&
job.job_totals.parts.parts.list.par.total
).toFormat(0.0),
).toFormat("0.0"),
},
],
OtherChargesTotalsInfo: [
@@ -533,7 +535,7 @@ exports.default = async (req, res) => {
TotalTypeDesc: "Sublet",
TotalAmt: Dinero(
job.job_totals.parts.sublets.total
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "MAPA",
@@ -549,19 +551,19 @@ exports.default = async (req, res) => {
0.0
),
},
{
TotalType: "MAHW",
TotalTypeDesc: "Hazardous Wastes Removal",
TotalAmt: Dinero(job.job_totals.rates.mahw.total).toFormat(
0.0
),
},
// {
// TotalType: "MAHW",
// TotalTypeDesc: "Hazardous Wastes Removal",
// TotalAmt: Dinero(job.job_totals.rates.mahw.total).toFormat(
// 0.0
// ),
// },
{
TotalType: "OTST",
TotalTypeDesc: "Storage",
TotalAmt: Dinero(
job.job_totals.additional.storage
).toFormat(0.0),
).toFormat("0.0"),
},
{
TotalType: "OTTW",
@@ -575,7 +577,7 @@ exports.default = async (req, res) => {
TotalTypeDesc: "Additional Charges",
TotalAmt: Dinero(
job.job_totals.additional.additionalCosts
).toFormat(0.0),
).toFormat("0.0"),
},
],
SummaryTotalsInfo: [
@@ -583,43 +585,55 @@ exports.default = async (req, res) => {
TotalType: "TOT",
TotalSubType: "T2",
TotalTypeDesc: "Net Total",
TotalAmt: 471.3,
TotalAmt: Dinero(job.job_totals.totals.subtotal).toFormat(
0.0
),
},
{
TotalType: "TOT",
TotalSubType: "F7",
TotalTypeDesc: "Sales Tax",
TotalAmt: 0,
TotalAmt: Dinero(job.job_totals.totals.state_tax).toFormat(
0.0
),
},
{
TotalType: "TOT",
TotalSubType: "GST",
TotalTypeDesc: "GST Tax",
TotalAmt: 0,
TotalAmt: Dinero(
job.job_totals.totals.federal_tax
).toFormat("0.0"),
},
{
TotalType: "TOT",
TotalSubType: "TT",
TotalTypeDesc: "Gross Total",
TotalAmt: 471.3,
},
{
TotalType: "TOT",
TotalSubType: "SM",
TotalTypeDesc: "Supplement Total",
TotalAmt: 0,
TotalAmt: Dinero(
job.job_totals.totals.total_repairs
).toFormat("0.0"),
},
// {
// TotalType: "TOT",
// TotalSubType: "SM",
// TotalTypeDesc: "Supplement Total",
// TotalAmt: 0,
// },
{
TotalType: "TOT",
TotalSubType: "D2",
TotalTypeDesc: "Deductible",
TotalAmt: 0,
TotalAmt: Dinero({
amount: Math.round((job.ded_amt || 0) * 100),
}).toFormat("0.0"),
},
{
TotalType: "TOT",
TotalSubType: "BTR",
TotalTypeDesc: "Betterment",
TotalAmt: 0,
TotalAmt: Dinero(
job.job_totals.totals.custPayable.dep_taxes
).toFormat("0.0"),
},
{
TotalType: "TOT",
@@ -631,75 +645,81 @@ exports.default = async (req, res) => {
TotalType: "TOT",
TotalSubType: "D8",
TotalTypeDesc: "Bottom Line Discount",
TotalAmt: 0,
TotalAmt: Dinero(
job.job_totals.additional.adjustments
).toFormat("0.0"),
},
{
TotalType: "TOT",
TotalSubType: "INS",
TotalTypeDesc: "Insurance Pay",
TotalAmt: 471.3,
},
{
TotalType: "TOT",
TotalSubType: "DEPOSIT",
TotalTypeDesc: "Deposit",
TotalAmt: 0,
TotalAmt: Dinero(job.job_totals.totals.total_repairs)
.subtract(Dinero(job.job_totals.totals.custPayable.total))
.toFormat("0.0"),
},
// {
// TotalType: "TOT",
// TotalSubType: "DEPOSIT",
// TotalTypeDesc: "Deposit",
// TotalAmt: 0,
// },
{
TotalType: "TOT",
TotalSubType: "CUST",
TotalTypeDesc: "Customer Pay",
TotalAmt: 0,
TotalAmt: Dinero(
job.job_totals.totals.custPayable.total
).toFormat("0.0"),
},
],
RepairTotalsType: 1,
},
RepairLabor: {
LaborAllocations: {
LaborAllocation: [
{
LaborAllocationUUID:
"426cce3a-efa7-44d9-b76e-50b9102c4198",
LaborType: "LAB",
Technician: {
Employee: {
PersonInfo: {
PersonName: {
FirstName: "Jose",
LastName: "Gonzalez",
},
IDInfo: {
IDQualifierCode: "US",
IDNum: 2987,
},
},
},
},
AllocatedHours: 3.5,
},
{
LaborAllocationUUID:
"426cce3a-efa7-44d9-b76e-50b9102c4199",
LaborType: "LAR",
Technician: {
Employee: {
PersonInfo: {
PersonName: {
FirstName: "Rcardo",
LastName: "Himenez",
},
IDInfo: {
IDQualifierCode: "US",
IDNum: 2989,
},
},
},
},
AllocatedHours: 5.5,
},
],
},
},
// RepairLabor: {
// LaborAllocations: {
// LaborAllocation: [
// {
// LaborAllocationUUID:
// "426cce3a-efa7-44d9-b76e-50b9102c4198",
// LaborType: "LAB",
// Technician: {
// Employee: {
// PersonInfo: {
// PersonName: {
// FirstName: "Jose",
// LastName: "Gonzalez",
// },
// IDInfo: {
// IDQualifierCode: "US",
// IDNum: 2987,
// },
// },
// },
// },
// AllocatedHours: 3.5,
// },
// {
// LaborAllocationUUID:
// "426cce3a-efa7-44d9-b76e-50b9102c4199",
// LaborType: "LAR",
// Technician: {
// Employee: {
// PersonInfo: {
// PersonName: {
// FirstName: "Rcardo",
// LastName: "Himenez",
// },
// IDInfo: {
// IDQualifierCode: "US",
// IDNum: 2989,
// },
// },
// },
// },
// AllocatedHours: 5.5,
// },
// ],
// },
// },
ProductionStatus: {
ProductionStage: {
ProductionStageCode: 4,
@@ -713,30 +733,30 @@ exports.default = async (req, res) => {
RepairStatusMemo: "Waiting on back ordered parts",
},
},
RepairOrderNotes: {
RepairOrderNote: {
LineSequenceNum: 1,
Note: "Revision Requested : approved--but needs est separated.8/22/2008 11:58:53 AM",
CreateDateTime: "2008-08-22T11:58:53",
AuthoredBy: {
FirstName: {
"#text": "Elizabeth/FirstName>",
LastName: "Unis",
},
},
RepairOrderNote: {
LineSequenceNum: 2,
Note: "Approved : 8/26/2008 12:21:08 PM",
CreateDateTime: "2008-08-26T12:21:08",
AuthoredBy: {
FirstName: {
"#text": "Elizabeth/FirstName>",
LastName: "Unis",
},
},
},
},
},
// RepairOrderNotes: {
// RepairOrderNote: {
// LineSequenceNum: 1,
// Note: "Revision Requested : approved--but needs est separated.8/22/2008 11:58:53 AM",
// CreateDateTime: "2008-08-22T11:58:53",
// AuthoredBy: {
// FirstName: {
// "#text": "Elizabeth/FirstName>",
// LastName: "Unis",
// },
// },
// RepairOrderNote: {
// LineSequenceNum: 2,
// Note: "Approved : 8/26/2008 12:21:08 PM",
// CreateDateTime: "2008-08-26T12:21:08",
// AuthoredBy: {
// FirstName: {
// "#text": "Elizabeth/FirstName>",
// LastName: "Unis",
// },
// },
// },
// },
// },
},
};
});
@@ -751,6 +771,7 @@ exports.default = async (req, res) => {
logger.log("arms-end-shop-extract", "DEBUG", "api", bodyshop.id, {
shopname: bodyshop.shopname,
});
res.json(ret);
} catch (error) {
//Error at the shop level.
logger.log("arms-error-shop", "ERROR", "api", bodyshop.id, {
@@ -784,10 +805,10 @@ function GetSupplementNumber(joblines) {
function GetDocumentstatus(job, bodyshop) {
switch (job.status) {
case bodyshop.md_ro_status.default_void:
case bodyshop.md_ro_statuses.default_void:
return "V";
case bodyshop.md_ro_status.default_invoiced:
case bodyshop.md_ro_status.default_exported:
case bodyshop.md_ro_statuses.default_invoiced:
case bodyshop.md_ro_statuses.default_exported:
return "V";
default: