From 9dea43fd34352a3cafa6b6295784ed35e4fe9089 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 31 Aug 2023 08:24:52 -0700 Subject: [PATCH] Add US_NE tax calc. --- .../job-detail-lines/job-lines.component.jsx | 4 ++ job-totals-testing-util.js | 2 +- server/graphql-client/queries.js | 1 + server/job/job-totals.js | 44 +++++++++++++++++-- 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/client/src/components/job-detail-lines/job-lines.component.jsx b/client/src/components/job-detail-lines/job-lines.component.jsx index 2edf0a711..253df56a5 100644 --- a/client/src/components/job-detail-lines/job-lines.component.jsx +++ b/client/src/components/job-detail-lines/job-lines.component.jsx @@ -86,6 +86,10 @@ export function JobLinesComponent({ bodyshop.imexshopid ); const [selectedLines, setSelectedLines] = useState([]); + console.log( + "🚀 ~ file: job-lines.component.jsx:89 ~ selectedLines:", + selectedLines + ); const [state, setState] = useState({ sortedInfo: {}, filteredInfo: {}, diff --git a/job-totals-testing-util.js b/job-totals-testing-util.js index 3eb8c6261..9fd3550d4 100644 --- a/job-totals-testing-util.js +++ b/job-totals-testing-util.js @@ -20,7 +20,7 @@ require("dotenv").config({ async function RunTheTest() { const bodyshopids = ["6c63a820-542c-497e-8c82-0cc38fb2bbca"]; - const bearerToken = `Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijk3OWVkMTU1OTdhYjM1Zjc4MjljZTc0NDMwN2I3OTNiN2ViZWIyZjAiLCJ0eXAiOiJKV1QifQ.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWRlZmF1bHQtcm9sZSI6InVzZXIiLCJ4LWhhc3VyYS1hbGxvd2VkLXJvbGVzIjpbInVzZXIiXSwieC1oYXN1cmEtdXNlci1pZCI6InQ2WW0xTkRsQ0RPUFpyM0Y5Ymd1V0g0TGhTWDIifSwiaXNzIjoiaHR0cHM6Ly9zZWN1cmV0b2tlbi5nb29nbGUuY29tL3JvbWUtcHJvZC0xIiwiYXVkIjoicm9tZS1wcm9kLTEiLCJhdXRoX3RpbWUiOjE2NzkzNDc4NzAsInVzZXJfaWQiOiJ0NlltMU5EbENET1BacjNGOWJndVdINExoU1gyIiwic3ViIjoidDZZbTFORGxDRE9QWnIzRjliZ3VXSDRMaFNYMiIsImlhdCI6MTY3OTk1NDk3MiwiZXhwIjoxNjc5OTU4NTcyLCJlbWFpbCI6InBhdHJpY2tAcm9tZS5kZXYiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsicGF0cmlja0Byb21lLmRldiJdfSwic2lnbl9pbl9wcm92aWRlciI6InBhc3N3b3JkIn19.Dnq_xo5tffFf-LK0qD_iieUa_UYe4cJqOxcuJnRGH0aqirMMeQLRR4B_Z3pOsD3T20ML3qZMQNUKx-Ivz1mfyK_aA7_4GKtHRKOpIrAyssw_l5aXuCAEmC8iLQHDGvKi7Vp8LsTMPKqjJSjtaW2zuFqcIGrqncWkBMYSnCKjCFsKjryp35hQiIynAN1W0ajgjmFZHCy7hG1h4wFtLKNXEAGxWA0tE7m7ZZBZk3W7J3nMbYiMuGZfw0y2yYeILQGw3UW6sb9B2Jx2bAR3x-GWhPzQHNZEPolE-andm900cFgdph1z7eBE5P2udc2rp8JsAPdUdovt8ZImhCUeE5wD6g`; + const bearerToken = `Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImM2MGI5ZGUwODBmZmFmYmZjMTgzMzllY2Q0NGFjNzdmN2ZhNGU4ZDMiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiUm9tZSBEZXZlbG9wbWVudCIsImh0dHBzOi8vaGFzdXJhLmlvL2p3dC9jbGFpbXMiOnsieC1oYXN1cmEtZGVmYXVsdC1yb2xlIjoiYWRtaW4iLCJ4LWhhc3VyYS1hbGxvd2VkLXJvbGVzIjpbImFkbWluIl0sIngtaGFzdXJhLXVzZXItaWQiOiJ0NlltMU5EbENET1BacjNGOWJndVdINExoU1gyIn0sImlvYWRtaW4iOnRydWUsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9yb21lLXByb2QtMSIsImF1ZCI6InJvbWUtcHJvZC0xIiwiYXV0aF90aW1lIjoxNjkyODk5ODE2LCJ1c2VyX2lkIjoidDZZbTFORGxDRE9QWnIzRjliZ3VXSDRMaFNYMiIsInN1YiI6InQ2WW0xTkRsQ0RPUFpyM0Y5Ymd1V0g0TGhTWDIiLCJpYXQiOjE2OTMyNTA1NjIsImV4cCI6MTY5MzI1NDE2MiwiZW1haWwiOiJwYXRyaWNrQHJvbWUuZGV2IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbInBhdHJpY2tAcm9tZS5kZXYiXX0sInNpZ25faW5fcHJvdmlkZXIiOiJwYXNzd29yZCJ9fQ.POr8U2pP4XtTJEDRJ_BveRkCs92CIfDDdfU24OYe_aZh6LFPN0bQukNHXrLt3gaD30SUcg5mgmI2VUphgmwviMEGY-zizPC9o6GUKEEppZWQXfrfTyJNa1VKKH9h5zZPPFFW8UJRMi131pCc0ev26GS8Do-FJAgwHLJd6Jp2RbbqiCIeafNMhQCEoXohOk-VArNe7tPAb6-IjxqGVyNqvVyIo6niSXYvmgNjyF1WnnIw0CsnPoJlc5kVMtRdYeshJI7V117MOlUwZicF62vsm32eCunjn3qhN5XsujI7gy9us3vzwhdR1lxISZCLhLOXEYHPL373HJh7I_KN1C3NuA`; const { jobs } = await client.request( gql` query GET_JOBS($bodyshopids: [uuid!]!) { diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js index 9ebc699e6..c990af84e 100644 --- a/server/graphql-client/queries.js +++ b/server/graphql-client/queries.js @@ -994,6 +994,7 @@ exports.GET_JOB_BY_PK = `query GET_JOB_BY_PK($id: uuid!) { est_ct_fn shopid est_ct_ln + cieca_pfl vehicle{ id notes diff --git a/server/job/job-totals.js b/server/job/job-totals.js index 2dfe12387..41a643837 100644 --- a/server/job/job-totals.js +++ b/server/job/job-totals.js @@ -798,6 +798,44 @@ function CalculateTaxesTotals(job, otherTotals) { } console.log(statePartsTax.toFormat(), val.line_desc); }); + console.log("Total State Parts Tax", statePartsTax.toFormat()); + + let laborTaxTotal = Dinero(); + + if (job.cieca_pfl) { + //Do it by labor type + const types = [ + "la1", + "la2", + "la3", + "la4", + "lau", + "laa", + "lab", + "lad", + "lae", + "laf", + "lag", + "lam", + "lar", + "las", + ]; + types.forEach((type) => { + laborTaxTotal = laborTaxTotal.add( + otherTotals.rates[type].total.percentage( + job.cieca_pfl[type.toUpperCase()] + ? job.cieca_pfl[type.toUpperCase()].lbr_taxp + : (job.tax_lbr_rt || 0) * 100 + ) + ); + console.log("Lab Tax Total", type, laborTaxTotal.toFormat()); + }); + } else { + //We don't have it, just add in how it was before. + laborTaxTotal = otherTotals.rates.subtotal.percentage( + (job.tax_lbr_rt || 0) * 100 + ); // THis is currently using the lbr tax rate from PFH not PFL. + } let ret = { subtotal: subtotal, @@ -810,9 +848,7 @@ function CalculateTaxesTotals(job, otherTotals) { ), statePartsTax, state_tax: statePartsTax - .add( - otherTotals.rates.subtotal.percentage((job.tax_lbr_rt || 0) * 100) // THis is currently using the lbr tax rate from PFH not PFL. - ) + .add(laborTaxTotal) .add( otherTotals.additional.adjustments.percentage( (job.tax_lbr_rt || 0) * 100 @@ -835,7 +871,7 @@ function CalculateTaxesTotals(job, otherTotals) { .add( otherTotals.rates.mash.hasMashLine === false //If parts and materials were not added as lines, we must calculate the taxes on them. ? otherTotals.rates.mash.total.percentage( - (job.tax_paint_mat_rt || 0) * 100 + (job.tax_shop_mat_rt || 0) * 100 ) : Dinero() ),