Autohouse Extract Updates & Remove duedate on payables.
This commit is contained in:
@@ -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] } } : {}),
|
||||||
|
|
||||||
|
|||||||
@@ -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) =>
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user