IO-2141 Add detail only line for autohous exports.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
<babeledit_project be_version="2.7.1" version="1.2">
|
<babeledit_project version="1.2" be_version="2.7.1">
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
BabelEdit project file
|
BabelEdit project file
|
||||||
@@ -18340,6 +18340,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>ah_detail_line</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>db_price</name>
|
<name>db_price</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -19667,6 +19688,27 @@
|
|||||||
<folder_node>
|
<folder_node>
|
||||||
<name>validations</name>
|
<name>validations</name>
|
||||||
<children>
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>ahdetailonlyonuserdefinedtypes</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>hrsrequirediflbrtyp</name>
|
<name>hrsrequirediflbrtyp</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -28933,6 +28975,27 @@
|
|||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>profileadjustments</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>prt_dsmk_total</name>
|
<name>prt_dsmk_total</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -40,6 +40,11 @@ export function JobLinesUpsertModalComponent({
|
|||||||
{},
|
{},
|
||||||
bodyshop.imexshopid
|
bodyshop.imexshopid
|
||||||
);
|
);
|
||||||
|
const { Autohouse_Detail_line } = useTreatments(
|
||||||
|
["Autohouse_Detail_line"],
|
||||||
|
{},
|
||||||
|
bodyshop.imexshopid
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
@@ -155,6 +160,40 @@ export function JobLinesUpsertModalComponent({
|
|||||||
>
|
>
|
||||||
<InputNumber precision={1} />
|
<InputNumber precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
{Autohouse_Detail_line.treatment === "on" && (
|
||||||
|
<Form.Item
|
||||||
|
label={t("joblines.fields.ah_detail_line")}
|
||||||
|
name="ah_detail_line"
|
||||||
|
valuePropName="checked"
|
||||||
|
dependencies={["mod_lbr_ty"]}
|
||||||
|
rules={[
|
||||||
|
({ getFieldValue }) => ({
|
||||||
|
validator(rule, value) {
|
||||||
|
console.log(
|
||||||
|
value === true,
|
||||||
|
["LA1", "LA2", "LA3", "LA4", "LAU"].includes(
|
||||||
|
getFieldValue("mod_lbr_ty")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (value === false) return Promise.resolve();
|
||||||
|
if (
|
||||||
|
value === true &&
|
||||||
|
["LA1", "LA2", "LA3", "LA4", "LAU"].includes(
|
||||||
|
getFieldValue("mod_lbr_ty")
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
return Promise.reject(
|
||||||
|
t("joblines.validations.ahdetailonlyonuserdefinedtypes")
|
||||||
|
);
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
|
)}
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
<LayoutFormRow>
|
<LayoutFormRow>
|
||||||
<Form.Item label={t("joblines.fields.part_type")} name="part_type">
|
<Form.Item label={t("joblines.fields.part_type")} name="part_type">
|
||||||
@@ -218,7 +257,6 @@ export function JobLinesUpsertModalComponent({
|
|||||||
rules={[
|
rules={[
|
||||||
({ getFieldValue }) => ({
|
({ getFieldValue }) => ({
|
||||||
validator(rule, value) {
|
validator(rule, value) {
|
||||||
console.log(value);
|
|
||||||
if (!value || getFieldValue("part_type") !== "PAE") {
|
if (!value || getFieldValue("part_type") !== "PAE") {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
@@ -229,7 +267,6 @@ export function JobLinesUpsertModalComponent({
|
|||||||
}),
|
}),
|
||||||
({ getFieldValue }) => ({
|
({ getFieldValue }) => ({
|
||||||
validator(rule, value) {
|
validator(rule, value) {
|
||||||
console.log(value, !!value);
|
|
||||||
if (
|
if (
|
||||||
!!getFieldValue("part_type") === (!!value || value === 0)
|
!!getFieldValue("part_type") === (!!value || value === 0)
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -1344,7 +1344,14 @@ export default function ShopInfoGeneral({ form }) {
|
|||||||
>
|
>
|
||||||
<InputNumber precision={0} min={0} max={100} />
|
<InputNumber precision={0} min={0} max={100} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t("joblines.fields.ah_detail_line")}
|
||||||
|
key={`${index}ah_detail_line`}
|
||||||
|
name={[field.name, "ah_detail_line"]}
|
||||||
|
valuePropName="checked"
|
||||||
|
>
|
||||||
|
<Switch />
|
||||||
|
</Form.Item>
|
||||||
<Space wrap>
|
<Space wrap>
|
||||||
<DeleteFilled
|
<DeleteFilled
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|||||||
@@ -720,6 +720,7 @@ export const GET_JOB_BY_PK = gql`
|
|||||||
prt_dsmk_m
|
prt_dsmk_m
|
||||||
ioucreated
|
ioucreated
|
||||||
convertedtolbr
|
convertedtolbr
|
||||||
|
ah_detail_line
|
||||||
billlines(limit: 1, order_by: { bill: { date: desc } }) {
|
billlines(limit: 1, order_by: { bill: { date: desc } }) {
|
||||||
id
|
id
|
||||||
quantity
|
quantity
|
||||||
|
|||||||
@@ -1142,6 +1142,7 @@
|
|||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"act_price": "Retail Price",
|
"act_price": "Retail Price",
|
||||||
|
"ah_detail_line": "Mark as Detail Labor Line (Autohouse Only)",
|
||||||
"db_price": "List Price",
|
"db_price": "List Price",
|
||||||
"lbr_types": {
|
"lbr_types": {
|
||||||
"LA1": "LA1",
|
"LA1": "LA1",
|
||||||
@@ -1214,6 +1215,7 @@
|
|||||||
"updated": "Job line updated successfully."
|
"updated": "Job line updated successfully."
|
||||||
},
|
},
|
||||||
"validations": {
|
"validations": {
|
||||||
|
"ahdetailonlyonuserdefinedtypes": "Detail line indicator can only be set for LA1, LA2, LA3, LA4, and LAU labor types.",
|
||||||
"hrsrequirediflbrtyp": "Labor hours are required if a labor type is selected. Clear the labor type if there are no labor hours.",
|
"hrsrequirediflbrtyp": "Labor hours are required if a labor type is selected. Clear the labor type if there are no labor hours.",
|
||||||
"requiredifparttype": "Required if a part type has been specified.",
|
"requiredifparttype": "Required if a part type has been specified.",
|
||||||
"zeropriceexistingpart": "This line cannot have any price since it uses an existing part."
|
"zeropriceexistingpart": "This line cannot have any price since it uses an existing part."
|
||||||
@@ -1694,6 +1696,7 @@
|
|||||||
"partstotal": "This is the total of all parts and sublet amounts on the vehicle (some of these may require an in-house invoice).<br/>\nItems such as shop and paint materials, labor online lines, etc. are not included in this total.",
|
"partstotal": "This is the total of all parts and sublet amounts on the vehicle (some of these may require an in-house invoice).<br/>\nItems such as shop and paint materials, labor online lines, etc. are not included in this total.",
|
||||||
"totalreturns": "The total <b>retail</b> amount of returns created for this job."
|
"totalreturns": "The total <b>retail</b> amount of returns created for this job."
|
||||||
},
|
},
|
||||||
|
"profileadjustments": "",
|
||||||
"prt_dsmk_total": "Line Item Adjustment",
|
"prt_dsmk_total": "Line Item Adjustment",
|
||||||
"rates": "Rates",
|
"rates": "Rates",
|
||||||
"rates_subtotal": "All Rates Subtotal",
|
"rates_subtotal": "All Rates Subtotal",
|
||||||
|
|||||||
@@ -1142,6 +1142,7 @@
|
|||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"act_price": "Precio actual",
|
"act_price": "Precio actual",
|
||||||
|
"ah_detail_line": "",
|
||||||
"db_price": "Precio de base de datos",
|
"db_price": "Precio de base de datos",
|
||||||
"lbr_types": {
|
"lbr_types": {
|
||||||
"LA1": "",
|
"LA1": "",
|
||||||
@@ -1214,6 +1215,7 @@
|
|||||||
"updated": ""
|
"updated": ""
|
||||||
},
|
},
|
||||||
"validations": {
|
"validations": {
|
||||||
|
"ahdetailonlyonuserdefinedtypes": "",
|
||||||
"hrsrequirediflbrtyp": "",
|
"hrsrequirediflbrtyp": "",
|
||||||
"requiredifparttype": "",
|
"requiredifparttype": "",
|
||||||
"zeropriceexistingpart": ""
|
"zeropriceexistingpart": ""
|
||||||
@@ -1694,6 +1696,7 @@
|
|||||||
"partstotal": "",
|
"partstotal": "",
|
||||||
"totalreturns": ""
|
"totalreturns": ""
|
||||||
},
|
},
|
||||||
|
"profileadjustments": "",
|
||||||
"prt_dsmk_total": "",
|
"prt_dsmk_total": "",
|
||||||
"rates": "Tarifas",
|
"rates": "Tarifas",
|
||||||
"rates_subtotal": "",
|
"rates_subtotal": "",
|
||||||
|
|||||||
@@ -1142,6 +1142,7 @@
|
|||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
"act_price": "Prix actuel",
|
"act_price": "Prix actuel",
|
||||||
|
"ah_detail_line": "",
|
||||||
"db_price": "Prix de la base de données",
|
"db_price": "Prix de la base de données",
|
||||||
"lbr_types": {
|
"lbr_types": {
|
||||||
"LA1": "",
|
"LA1": "",
|
||||||
@@ -1214,6 +1215,7 @@
|
|||||||
"updated": ""
|
"updated": ""
|
||||||
},
|
},
|
||||||
"validations": {
|
"validations": {
|
||||||
|
"ahdetailonlyonuserdefinedtypes": "",
|
||||||
"hrsrequirediflbrtyp": "",
|
"hrsrequirediflbrtyp": "",
|
||||||
"requiredifparttype": "",
|
"requiredifparttype": "",
|
||||||
"zeropriceexistingpart": ""
|
"zeropriceexistingpart": ""
|
||||||
@@ -1694,6 +1696,7 @@
|
|||||||
"partstotal": "",
|
"partstotal": "",
|
||||||
"totalreturns": ""
|
"totalreturns": ""
|
||||||
},
|
},
|
||||||
|
"profileadjustments": "",
|
||||||
"prt_dsmk_total": "",
|
"prt_dsmk_total": "",
|
||||||
"rates": "Les taux",
|
"rates": "Les taux",
|
||||||
"rates_subtotal": "",
|
"rates_subtotal": "",
|
||||||
|
|||||||
@@ -2305,18 +2305,6 @@
|
|||||||
shallowequal "^1.1.0"
|
shallowequal "^1.1.0"
|
||||||
unfetch "^4.2.0"
|
unfetch "^4.2.0"
|
||||||
|
|
||||||
"@stripe/react-stripe-js@^1.9.0":
|
|
||||||
version "1.9.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@stripe/react-stripe-js/-/react-stripe-js-1.9.0.tgz#74809a274d7db110c3daf6f68ca4d62c6e6559c7"
|
|
||||||
integrity sha512-Fn49X+Gu5fOTxhPOita1cPMi0jw+0v4xfJ3FCXbbvmfuuDl3M7ZvpRkoijBjql11NXsaXO3TMm3rkN3mEolJzw==
|
|
||||||
dependencies:
|
|
||||||
prop-types "^15.7.2"
|
|
||||||
|
|
||||||
"@stripe/stripe-js@^1.32.0":
|
|
||||||
version "1.32.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.32.0.tgz#4ecdd298db61ad9b240622eafed58da974bd210e"
|
|
||||||
integrity sha512-7EvBnbBfS1aynfLRmBFcuumHNGjKxnNkO47rorFBktqDYHwo7Yw6pfDW2iqq0R8r7i7XiJEdWPvvEgQAiDrx3A==
|
|
||||||
|
|
||||||
"@surma/rollup-plugin-off-main-thread@^1.1.1":
|
"@surma/rollup-plugin-off-main-thread@^1.1.1":
|
||||||
version "1.4.2"
|
version "1.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58"
|
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58"
|
||||||
|
|||||||
@@ -2482,6 +2482,7 @@
|
|||||||
_eq: true
|
_eq: true
|
||||||
columns:
|
columns:
|
||||||
- act_price
|
- act_price
|
||||||
|
- ah_detail_line
|
||||||
- alt_co_id
|
- alt_co_id
|
||||||
- alt_overrd
|
- alt_overrd
|
||||||
- alt_part_i
|
- alt_part_i
|
||||||
@@ -2547,6 +2548,7 @@
|
|||||||
permission:
|
permission:
|
||||||
columns:
|
columns:
|
||||||
- act_price
|
- act_price
|
||||||
|
- ah_detail_line
|
||||||
- alt_co_id
|
- alt_co_id
|
||||||
- alt_overrd
|
- alt_overrd
|
||||||
- alt_part_i
|
- alt_part_i
|
||||||
@@ -2623,6 +2625,7 @@
|
|||||||
permission:
|
permission:
|
||||||
columns:
|
columns:
|
||||||
- act_price
|
- act_price
|
||||||
|
- ah_detail_line
|
||||||
- alt_co_id
|
- alt_co_id
|
||||||
- alt_overrd
|
- alt_overrd
|
||||||
- alt_part_i
|
- alt_part_i
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- Could not auto-generate a down migration.
|
||||||
|
-- Please write an appropriate down migration for the SQL below:
|
||||||
|
-- alter table "public"."joblines" add column "ah_detail_line" boolean
|
||||||
|
-- not null default 'false';
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
alter table "public"."joblines" add column "ah_detail_line" boolean
|
||||||
|
not null default 'false';
|
||||||
43065
logs/oAuthClient-log.log
43065
logs/oAuthClient-log.log
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@
|
|||||||
"npm": ">=8.0.0"
|
"npm": ">=8.0.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"setup": "yarn && cd client && yarn",
|
"setup": "rm -rf node_modules && yarn && cd client && rm -rf node_modules && yarn",
|
||||||
"admin": "cd admin && yarn start",
|
"admin": "cd admin && yarn start",
|
||||||
"client": "cd client && yarn start",
|
"client": "cd client && yarn start",
|
||||||
"server": "nodemon server.js",
|
"server": "nodemon server.js",
|
||||||
|
|||||||
@@ -214,6 +214,30 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
|
|
||||||
const repairCosts = CreateCosts(job);
|
const repairCosts = CreateCosts(job);
|
||||||
|
|
||||||
|
if (job.ro_number === "QBD209") {
|
||||||
|
console.log("Stop here");
|
||||||
|
}
|
||||||
|
//Calculate detail only lines.
|
||||||
|
const detailAdjustments = job.joblines
|
||||||
|
.filter((jl) => jl.ah_detail_line && jl.mod_lbr_ty)
|
||||||
|
.reduce(
|
||||||
|
(acc, val) => {
|
||||||
|
return {
|
||||||
|
hours: acc.hours + val.mod_lb_hrs,
|
||||||
|
amount: acc.amount.add(
|
||||||
|
Dinero({
|
||||||
|
amount: Math.round(
|
||||||
|
(job.job_totals.rates[val.mod_lbr_ty.toLowerCase()].rate || 0) *
|
||||||
|
val.mod_lb_hrs *
|
||||||
|
100
|
||||||
|
),
|
||||||
|
})
|
||||||
|
),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
{ hours: 0, amount: Dinero() }
|
||||||
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const ret = {
|
const ret = {
|
||||||
RepairOrderInformation: {
|
RepairOrderInformation: {
|
||||||
@@ -405,7 +429,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
ElectricalRate: job.rate_lae || 0,
|
ElectricalRate: job.rate_lae || 0,
|
||||||
FrameRate: job.rate_laf || 0,
|
FrameRate: job.rate_laf || 0,
|
||||||
GlassRate: job.rate_lag || 0,
|
GlassRate: job.rate_lag || 0,
|
||||||
DetailRate: job.rate_lad || 0,
|
DetailRate: 0, // job.rate_lad || 0,
|
||||||
LaborMiscRate: 0,
|
LaborMiscRate: 0,
|
||||||
PMRate: job.rate_mapa || 0,
|
PMRate: job.rate_mapa || 0,
|
||||||
BMRate: job.rate_mash || 0,
|
BMRate: job.rate_mash || 0,
|
||||||
@@ -500,13 +524,14 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
ElectricalHours: job.job_totals.rates.lae.hours.toFixed(2),
|
ElectricalHours: job.job_totals.rates.lae.hours.toFixed(2),
|
||||||
FrameHours: job.job_totals.rates.laf.hours.toFixed(2),
|
FrameHours: job.job_totals.rates.laf.hours.toFixed(2),
|
||||||
GlassHours: job.job_totals.rates.lag.hours.toFixed(2),
|
GlassHours: job.job_totals.rates.lag.hours.toFixed(2),
|
||||||
DetailHours: job.job_totals.rates.lad.hours.toFixed(2),
|
DetailHours: detailAdjustments.hours, //job.job_totals.rates.lad.hours.toFixed(2),
|
||||||
LaborMiscHours: (
|
LaborMiscHours: (
|
||||||
job.job_totals.rates.la1.hours +
|
job.job_totals.rates.la1.hours +
|
||||||
job.job_totals.rates.la2.hours +
|
job.job_totals.rates.la2.hours +
|
||||||
job.job_totals.rates.la3.hours +
|
job.job_totals.rates.la3.hours +
|
||||||
job.job_totals.rates.la4.hours +
|
job.job_totals.rates.la4.hours +
|
||||||
job.job_totals.rates.lau.hours
|
job.job_totals.rates.lau.hours -
|
||||||
|
detailAdjustments.hours
|
||||||
).toFixed(2),
|
).toFixed(2),
|
||||||
|
|
||||||
PartsTotal: Dinero(job.job_totals.parts.parts.total).toFormat(
|
PartsTotal: Dinero(job.job_totals.parts.parts.total).toFormat(
|
||||||
@@ -585,16 +610,18 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
),
|
),
|
||||||
GlassLaborTotalCost:
|
GlassLaborTotalCost:
|
||||||
repairCosts.GlassLaborTotalCost.toFormat(AHDineroFormat),
|
repairCosts.GlassLaborTotalCost.toFormat(AHDineroFormat),
|
||||||
DetailLaborTotal: Dinero(job.job_totals.rates.lad.total).toFormat(
|
DetailLaborTotal: detailAdjustments.amount.toFormat(AHDineroFormat),
|
||||||
AHDineroFormat
|
// Dinero(job.job_totals.rates.lad.total).toFormat(
|
||||||
),
|
// AHDineroFormat
|
||||||
DetailLaborTotalCost:
|
// ),
|
||||||
repairCosts.DetailLaborTotalCost.toFormat(AHDineroFormat),
|
DetailLaborTotalCost: Dinero().toFormat(AHDineroFormat),
|
||||||
|
// repairCosts.DetailLaborTotalCost.toFormat(AHDineroFormat),
|
||||||
LaborMiscTotal: Dinero(job.job_totals.rates.la1.total)
|
LaborMiscTotal: Dinero(job.job_totals.rates.la1.total)
|
||||||
.add(Dinero(job.job_totals.rates.la2.total))
|
.add(Dinero(job.job_totals.rates.la2.total))
|
||||||
.add(Dinero(job.job_totals.rates.la3.total))
|
.add(Dinero(job.job_totals.rates.la3.total))
|
||||||
.add(Dinero(job.job_totals.rates.la4.total))
|
.add(Dinero(job.job_totals.rates.la4.total))
|
||||||
.add(Dinero(job.job_totals.rates.lau.total))
|
.add(Dinero(job.job_totals.rates.lau.total))
|
||||||
|
.subtract(detailAdjustments.amount)
|
||||||
.toFormat(AHDineroFormat),
|
.toFormat(AHDineroFormat),
|
||||||
LaborMiscTotalCost: 0,
|
LaborMiscTotalCost: 0,
|
||||||
MiscellaneousChargeTotal: 0,
|
MiscellaneousChargeTotal: 0,
|
||||||
@@ -619,7 +646,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
AHDineroFormat
|
AHDineroFormat
|
||||||
),
|
),
|
||||||
StorageTotalCost: repairCosts.StorageTotalCost.toFormat(AHDineroFormat),
|
StorageTotalCost: repairCosts.StorageTotalCost.toFormat(AHDineroFormat),
|
||||||
DetailTotal: 0,
|
DetailTotal: detailAdjustments.amount.toFormat(AHDineroFormat),
|
||||||
DetailTotalCost: 0,
|
DetailTotalCost: 0,
|
||||||
SalesTaxTotal: Dinero(job.job_totals.totals.local_tax)
|
SalesTaxTotal: Dinero(job.job_totals.totals.local_tax)
|
||||||
.add(Dinero(job.job_totals.totals.state_tax))
|
.add(Dinero(job.job_totals.totals.state_tax))
|
||||||
@@ -866,8 +893,8 @@ const CreateCosts = (job) => {
|
|||||||
ticketTotalsByCostCenter[defaultCosts.LAE] || Dinero(),
|
ticketTotalsByCostCenter[defaultCosts.LAE] || Dinero(),
|
||||||
FrameLaborTotalCost: ticketTotalsByCostCenter[defaultCosts.LAF] || Dinero(),
|
FrameLaborTotalCost: ticketTotalsByCostCenter[defaultCosts.LAF] || Dinero(),
|
||||||
GlassLaborTotalCost: ticketTotalsByCostCenter[defaultCosts.LAG] || Dinero(),
|
GlassLaborTotalCost: ticketTotalsByCostCenter[defaultCosts.LAG] || Dinero(),
|
||||||
DetailLaborTotalCost:
|
DetailLaborTotalCost: Dinero(),
|
||||||
ticketTotalsByCostCenter[defaultCosts.LAD] || Dinero(),
|
// ticketTotalsByCostCenter[defaultCosts.LAD] || Dinero(),
|
||||||
PMTotalCost: billTotalsByCostCenters[defaultCosts.MAPA] || Dinero(),
|
PMTotalCost: billTotalsByCostCenters[defaultCosts.MAPA] || Dinero(),
|
||||||
BMTotalCost: billTotalsByCostCenters[defaultCosts.MASH] || Dinero(),
|
BMTotalCost: billTotalsByCostCenters[defaultCosts.MASH] || Dinero(),
|
||||||
MiscTotalCost: billTotalsByCostCenters[defaultCosts.PAO] || Dinero(),
|
MiscTotalCost: billTotalsByCostCenters[defaultCosts.PAO] || Dinero(),
|
||||||
|
|||||||
@@ -715,6 +715,7 @@ exports.AUTOHOUSE_QUERY = `query AUTOHOUSE_EXPORT($start: timestamptz, $bodyshop
|
|||||||
lbr_op
|
lbr_op
|
||||||
profitcenter_part
|
profitcenter_part
|
||||||
profitcenter_labor
|
profitcenter_labor
|
||||||
|
ah_detail_line
|
||||||
parts_order_lines(order_by: {parts_order: {order_date: desc_nulls_last}} limit: 1){
|
parts_order_lines(order_by: {parts_order: {order_date: desc_nulls_last}} limit: 1){
|
||||||
parts_order{
|
parts_order{
|
||||||
id
|
id
|
||||||
|
|||||||
Reference in New Issue
Block a user