From 86cb1e1feeeb83c76e7345a581b03e9af2446243 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 4 Mar 2021 17:14:18 -0800 Subject: [PATCH] Resolve 2 tier by source exporting IO-740 --- server/accounting/qbxml/qbxml-payments.js | 28 ++++++++++------ server/accounting/qbxml/qbxml-receivables.js | 33 ++++++++++++++----- server/accounting/qbxml/qbxml-utils.js | 34 +++++++++++++++----- 3 files changed, 69 insertions(+), 26 deletions(-) diff --git a/server/accounting/qbxml/qbxml-payments.js b/server/accounting/qbxml/qbxml-payments.js index f9d75f842..522fad375 100644 --- a/server/accounting/qbxml/qbxml-payments.js +++ b/server/accounting/qbxml/qbxml-payments.js @@ -74,7 +74,7 @@ exports.default = async (req, res) => { QbXmlToExecute.push({ id: i.id, okStatusCodes: ["0"], - qbxml: generatePayment(i), + qbxml: generatePayment(i, isThreeTier, twoTierPref), }); }); @@ -85,7 +85,7 @@ exports.default = async (req, res) => { } }; -const generatePayment = (payment) => { +const generatePayment = (payment, isThreeTier, twoTierPref) => { console.log("generatePayment -> payment", payment); let paymentQbxmlObj; if (payment.amount > 0) { @@ -99,11 +99,15 @@ const generatePayment = (payment) => { FullName: payment.job.bodyshop.accountingconfig.tiers === 3 ? `${generateSourceTier(payment.job)}:${generateOwnerTier( - payment.job + payment.job, + isThreeTier, + twoTierPref )}:${generateJobTier(payment.job)}` - : `${generateOwnerTier(payment.job)}:${generateJobTier( - payment.job - )}`, + : `${generateOwnerTier( + payment.job, + isThreeTier, + twoTierPref + )}:${generateJobTier(payment.job)}`, }, ARAccountRef: { FullName: @@ -142,11 +146,15 @@ const generatePayment = (payment) => { FullName: payment.job.bodyshop.accountingconfig.tiers === 3 ? `${generateSourceTier(payment.job)}:${generateOwnerTier( - payment.job + payment.job, + isThreeTier, + twoTierPref )}:${generateJobTier(payment.job)}` - : `${generateOwnerTier(payment.job)}:${generateJobTier( - payment.job - )}`, + : `${generateOwnerTier( + payment.job, + isThreeTier, + twoTierPref + )}:${generateJobTier(payment.job)}`, }, ARAccountRef: { FullName: diff --git a/server/accounting/qbxml/qbxml-receivables.js b/server/accounting/qbxml/qbxml-receivables.js index 39914b5df..bc5cc2eb4 100644 --- a/server/accounting/qbxml/qbxml-receivables.js +++ b/server/accounting/qbxml/qbxml-receivables.js @@ -39,6 +39,7 @@ exports.default = async (req, res) => { const isThreeTier = bodyshop.accountingconfig.tiers === 3; const twoTierPref = bodyshop.accountingconfig.twotierpref; + //This is the Insurance Company tier IF 3 tier is selected. if (isThreeTier) { QbXmlToExecute.push({ id: jobs_by_pk.id, @@ -47,6 +48,8 @@ exports.default = async (req, res) => { }); } + //If 3 tier, this should be the customer. + //If 2 tier, this should be based on the pref. QbXmlToExecute.push({ id: jobs_by_pk.id, okStatusCodes: ["0", "3100"], @@ -59,6 +62,7 @@ exports.default = async (req, res) => { ), }); + //This is always going to be the job. QbXmlToExecute.push({ id: jobs_by_pk.id, okStatusCodes: ["0", "3100"], @@ -74,7 +78,12 @@ exports.default = async (req, res) => { QbXmlToExecute.push({ id: jobs_by_pk.id, okStatusCodes: ["0"], - qbxml: generateInvoiceQbxml(jobs_by_pk, bodyshop), + qbxml: generateInvoiceQbxml( + jobs_by_pk, + bodyshop, + isThreeTier, + twoTierPref + ), }); }); @@ -130,19 +139,20 @@ const generateJobQbxml = ( let ParentRefName; if (tierLevel === 2) { - Name = generateOwnerTier(jobs_by_pk); + Name = generateOwnerTier(jobs_by_pk, isThreeTier, twoTierPref); ParentRefName = isThreeTier ? generateSourceTier(jobs_by_pk) : null; } else if (tierLevel === 3) { Name = generateJobTier(jobs_by_pk); ParentRefName = isThreeTier - ? `${jobs_by_pk.ins_co_nm}:${generateOwnerTier(jobs_by_pk)}` - : generateOwnerTier(jobs_by_pk); + ? `${generateSourceTier(jobs_by_pk)}:${generateOwnerTier(jobs_by_pk)}` + : generateOwnerTier(jobs_by_pk, isThreeTier, twoTierPref); } const jobQbxmlObj = { QBXML: { QBXMLMsgsRq: { "@onError": "continueOnError", + CustomerAddRq: { CustomerAdd: { Name: Name, @@ -170,7 +180,12 @@ const generateJobQbxml = ( return jobQbxml_Full; }; exports.generateJobQbxml = generateJobQbxml; -const generateInvoiceQbxml = (jobs_by_pk, bodyshop) => { +const generateInvoiceQbxml = ( + jobs_by_pk, + bodyshop, + isThreeTier, + twoTierPref +) => { //Build the Invoice XML file. const InvoiceLineAdd = []; const responsibilityCenters = bodyshop.md_responsibility_centers; @@ -302,9 +317,11 @@ const generateInvoiceQbxml = (jobs_by_pk, bodyshop) => { ? `${generateSourceTier(jobs_by_pk)}:${generateOwnerTier( jobs_by_pk )}:${generateJobTier(jobs_by_pk)}` - : `${generateOwnerTier(jobs_by_pk)}:${generateJobTier( - jobs_by_pk - )}`, + : `${generateOwnerTier( + jobs_by_pk, + isThreeTier, + twoTierPref + )}:${generateJobTier(jobs_by_pk)}`, }, ...(jobs_by_pk.class diff --git a/server/accounting/qbxml/qbxml-utils.js b/server/accounting/qbxml/qbxml-utils.js index 7b8020bbb..cd47eced8 100644 --- a/server/accounting/qbxml/qbxml-utils.js +++ b/server/accounting/qbxml/qbxml-utils.js @@ -13,12 +13,30 @@ exports.generateJobTier = (jobs_by_pk) => { return jobs_by_pk.ro_number; }; -exports.generateOwnerTier = (jobs_by_pk) => { - return jobs_by_pk.ownr_co_nm - ? `${jobs_by_pk.ownr_co_nm} - ${jobs_by_pk.ownr_ln || ""} ${ - jobs_by_pk.ownr_fn || "" - } #${jobs_by_pk.owner.accountingid || ""}` - : `${jobs_by_pk.ownr_ln || ""} ${jobs_by_pk.ownr_fn || ""} #${ - jobs_by_pk.owner.accountingid || "" - }`; +exports.generateOwnerTier = (jobs_by_pk, isThreeTier, twotierpref) => { + if (isThreeTier) { + //It's always gonna be the owner now. Same as 2 tier by name + return jobs_by_pk.ownr_co_nm + ? `${jobs_by_pk.ownr_co_nm} - ${jobs_by_pk.ownr_ln || ""} ${ + jobs_by_pk.ownr_fn || "" + } #${jobs_by_pk.owner.accountingid || ""}` + : `${jobs_by_pk.ownr_ln || ""} ${jobs_by_pk.ownr_fn || ""} #${ + jobs_by_pk.owner.accountingid || "" + }`; + } else { + //What's the 2 tier pref? + if (twotierpref === "source") { + return this.generateSourceTier(jobs_by_pk); + //It should be the insurance co. + } else { + //Same as 3 tier + return jobs_by_pk.ownr_co_nm + ? `${jobs_by_pk.ownr_co_nm} - ${jobs_by_pk.ownr_ln || ""} ${ + jobs_by_pk.ownr_fn || "" + } #${jobs_by_pk.owner.accountingid || ""}` + : `${jobs_by_pk.ownr_ln || ""} ${jobs_by_pk.ownr_fn || ""} #${ + jobs_by_pk.owner.accountingid || "" + }`; + } + } };