Autohouse Extract Updates & Remove duedate on payables.

This commit is contained in:
Patrick Fic
2022-03-01 17:27:04 -08:00
parent 63ec578b6a
commit 0660b79c01
3 changed files with 45 additions and 18 deletions

View File

@@ -181,12 +181,13 @@ async function InsertBill(oauthClient, qbo_realmId, req, bill, vendor) {
TxnDate: moment(bill.date) TxnDate: moment(bill.date)
//.tz(bill.job.bodyshop.timezone) //.tz(bill.job.bodyshop.timezone)
.format("YYYY-MM-DD"), .format("YYYY-MM-DD"),
...(bill.vendor.due_date && { ...(!bill.is_credit_memo &&
DueDate: moment(bill.date) bill.vendor.due_date && {
//.tz(bill.job.bodyshop.timezone) DueDate: moment(bill.date)
.add(bill.vendor.due_date, "days") //.tz(bill.job.bodyshop.timezone)
.format("YYYY-MM-DD"), .add(bill.vendor.due_date, "days")
}), .format("YYYY-MM-DD"),
}),
DocNumber: bill.invoice_number, DocNumber: bill.invoice_number,
//...(bill.job.class ? { ClassRef: { Id: classes[bill.job.class] } } : {}), //...(bill.job.class ? { ClassRef: { Id: classes[bill.job.class] } } : {}),

View File

@@ -75,12 +75,13 @@ const generateBill = (bill) => {
TxnDate: moment(bill.date) TxnDate: moment(bill.date)
//.tz(bill.job.bodyshop.timezone) //.tz(bill.job.bodyshop.timezone)
.format("YYYY-MM-DD"), .format("YYYY-MM-DD"),
...(bill.vendor.due_date && { ...(!bill.is_credit_memo &&
DueDate: moment(bill.date) bill.vendor.due_date && {
// .tz(bill.job.bodyshop.timezone) DueDate: moment(bill.date)
.add(bill.vendor.due_date, "days") // .tz(bill.job.bodyshop.timezone)
.format("YYYY-MM-DD"), .add(bill.vendor.due_date, "days")
}), .format("YYYY-MM-DD"),
}),
RefNumber: bill.invoice_number, RefNumber: bill.invoice_number,
Memo: `RO ${bill.job.ro_number || ""}`, Memo: `RO ${bill.job.ro_number || ""}`,
ExpenseLineAdd: bill.billlines.map((il) => ExpenseLineAdd: bill.billlines.map((il) =>

View File

@@ -214,7 +214,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
Street: job.ownr_addr1 || "", Street: job.ownr_addr1 || "",
City: job.ownr_city || "", City: job.ownr_city || "",
State: job.ownr_st || "", State: job.ownr_st || "",
Zip: job.ownr_zip || "", Zip: (job.ownr_zip && job.ownr_zip.substring(0, 3)) || "",
Phone1: job.ownr_ph1 || "", Phone1: job.ownr_ph1 || "",
Phone2: null, Phone2: null,
Phone2Extension: null, Phone2Extension: null,
@@ -488,8 +488,8 @@ const CreateRepairOrderTag = (job, errorCallback) => {
PartsReconditionedCost: PartsReconditionedCost:
repairCosts.PartsReconditionedCost.toFormat(AHDineroFormat), repairCosts.PartsReconditionedCost.toFormat(AHDineroFormat),
PartsRecycled: Dinero( PartsRecycled: Dinero(
job.job_totals.parts.parts.list.PAR && job.job_totals.parts.parts.list.PAL &&
job.job_totals.parts.parts.list.PAR.total job.job_totals.parts.parts.list.PAL.total
).toFormat(AHDineroFormat), ).toFormat(AHDineroFormat),
PartsRecycledCost: PartsRecycledCost:
repairCosts.PartsRecycledCost.toFormat(AHDineroFormat), repairCosts.PartsRecycledCost.toFormat(AHDineroFormat),
@@ -555,7 +555,9 @@ const CreateRepairOrderTag = (job, errorCallback) => {
AHDineroFormat AHDineroFormat
), ),
BMTotalCost: repairCosts.BMTotalCost.toFormat(AHDineroFormat), BMTotalCost: repairCosts.BMTotalCost.toFormat(AHDineroFormat),
MiscTotal: 0, MiscTotal: Dinero(job.job_totals.additional.additionalCosts).toFormat(
AHDineroFormat
),
MiscTotalCost: 0, MiscTotalCost: 0,
TowingTotal: Dinero(job.job_totals.additional.towing).toFormat( TowingTotal: Dinero(job.job_totals.additional.towing).toFormat(
AHDineroFormat AHDineroFormat
@@ -673,7 +675,7 @@ const CreateCosts = (job) => {
}); });
return bill_acc; return bill_acc;
}, {}); }, {});
const materialsHours = { mapaHrs: 0, mashHrs: 0 };
//If the hourly rates for job costing are set, add them in. //If the hourly rates for job costing are set, add them in.
if (job.bodyshop.jc_hourly_rates && job.bodyshop.jc_hourly_rates.mapa) { if (job.bodyshop.jc_hourly_rates && job.bodyshop.jc_hourly_rates.mapa) {
if ( if (
@@ -694,9 +696,32 @@ const CreateCosts = (job) => {
(job.bodyshop.jc_hourly_rates && (job.bodyshop.jc_hourly_rates &&
job.bodyshop.jc_hourly_rates.mapa * 100) || job.bodyshop.jc_hourly_rates.mapa * 100) ||
0, 0,
}).multiply(materialsHours.mapaHrs) }).multiply(job.job_totals.rates.mapa.hours)
); );
} }
if (job.bodyshop.jc_hourly_rates && job.bodyshop.jc_hourly_rates.mash) {
if (
!billTotalsByCostCenters[
job.bodyshop.md_responsibility_centers.defaults.costs.MASH
]
)
billTotalsByCostCenters[
job.bodyshop.md_responsibility_centers.defaults.costs.MASH
] = Dinero();
billTotalsByCostCenters[
job.bodyshop.md_responsibility_centers.defaults.costs.MASH
] = billTotalsByCostCenters[
job.bodyshop.md_responsibility_centers.defaults.costs.MASH
].add(
Dinero({
amount:
(job.bodyshop.jc_hourly_rates &&
job.bodyshop.jc_hourly_rates.mash * 100) ||
0,
}).multiply(job.job_totals.rates.mash.hours)
);
}
const ticketTotalsByCostCenter = job.timetickets.reduce( const ticketTotalsByCostCenter = job.timetickets.reduce(
(ticket_acc, ticket_val) => { (ticket_acc, ticket_val) => {
//At the invoice level. //At the invoice level.