IO-223 ARM development
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user