Merge branch 'feature/america' into rome/test
This commit is contained in:
@@ -50,6 +50,7 @@ export function BillFormComponent({
|
|||||||
job,
|
job,
|
||||||
loadOutstandingReturns,
|
loadOutstandingReturns,
|
||||||
loadInventory,
|
loadInventory,
|
||||||
|
preferredMake,
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const client = useApolloClient();
|
const client = useApolloClient();
|
||||||
@@ -185,6 +186,7 @@ export function BillFormComponent({
|
|||||||
<VendorSearchSelect
|
<VendorSearchSelect
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
options={vendorAutoCompleteOptions}
|
options={vendorAutoCompleteOptions}
|
||||||
|
preferredMake={preferredMake}
|
||||||
onSelect={handleVendorSelect}
|
onSelect={handleVendorSelect}
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import { useLazyQuery, useQuery } from "@apollo/client";
|
import { useLazyQuery, useQuery } from "@apollo/client";
|
||||||
|
import { useTreatments } from "@splitsoftware/splitio-react";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { QUERY_OUTSTANDING_INVENTORY } from "../../graphql/inventory.queries";
|
||||||
import { GET_JOB_LINES_TO_ENTER_BILL } from "../../graphql/jobs-lines.queries";
|
import { GET_JOB_LINES_TO_ENTER_BILL } from "../../graphql/jobs-lines.queries";
|
||||||
|
import { QUERY_UNRECEIVED_LINES } from "../../graphql/parts-orders.queries";
|
||||||
import { SEARCH_VENDOR_AUTOCOMPLETE } from "../../graphql/vendors.queries";
|
import { SEARCH_VENDOR_AUTOCOMPLETE } from "../../graphql/vendors.queries";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import BillFormComponent from "./bill-form.component";
|
|
||||||
import BillCmdReturnsTableComponent from "../bill-cm-returns-table/bill-cm-returns-table.component";
|
import BillCmdReturnsTableComponent from "../bill-cm-returns-table/bill-cm-returns-table.component";
|
||||||
import { QUERY_UNRECEIVED_LINES } from "../../graphql/parts-orders.queries";
|
|
||||||
import BillInventoryTable from "../bill-inventory-table/bill-inventory-table.component";
|
import BillInventoryTable from "../bill-inventory-table/bill-inventory-table.component";
|
||||||
import { QUERY_OUTSTANDING_INVENTORY } from "../../graphql/inventory.queries";
|
import BillFormComponent from "./bill-form.component";
|
||||||
import { useTreatments } from "@splitsoftware/splitio-react";
|
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -59,6 +59,7 @@ export function BillFormContainer({
|
|||||||
disableInvNumber={disableInvNumber}
|
disableInvNumber={disableInvNumber}
|
||||||
loadOutstandingReturns={loadOutstandingReturns}
|
loadOutstandingReturns={loadOutstandingReturns}
|
||||||
loadInventory={loadInventory}
|
loadInventory={loadInventory}
|
||||||
|
preferredMake={lineData ? lineData.jobs_by_pk.v_make_desc : null}
|
||||||
/>
|
/>
|
||||||
{!billEdit && (
|
{!billEdit && (
|
||||||
<BillCmdReturnsTableComponent
|
<BillCmdReturnsTableComponent
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { useMutation } from "@apollo/client";
|
import { useMutation } from "@apollo/client";
|
||||||
import { Button, Card, Form, Input, notification, Switch } from "antd";
|
import { Button, Card, Form, Input, notification, Switch } from "antd";
|
||||||
|
import moment from "moment-business-days";
|
||||||
import queryString from "query-string";
|
import queryString from "query-string";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
@@ -12,16 +13,15 @@ import {
|
|||||||
MARK_LATEST_APPOINTMENT_ARRIVED,
|
MARK_LATEST_APPOINTMENT_ARRIVED,
|
||||||
} from "../../../../graphql/appointments.queries";
|
} from "../../../../graphql/appointments.queries";
|
||||||
import { UPDATE_JOB } from "../../../../graphql/jobs.queries";
|
import { UPDATE_JOB } from "../../../../graphql/jobs.queries";
|
||||||
|
import { UPDATE_OWNER } from "../../../../graphql/owners.queries";
|
||||||
|
import { insertAuditTrail } from "../../../../redux/application/application.actions";
|
||||||
import {
|
import {
|
||||||
selectBodyshop,
|
selectBodyshop,
|
||||||
selectCurrentUser,
|
selectCurrentUser,
|
||||||
} from "../../../../redux/user/user.selectors";
|
} from "../../../../redux/user/user.selectors";
|
||||||
|
import AuditTrailMapping from "../../../../utils/AuditTrailMappings";
|
||||||
import ConfigFormComponents from "../../../config-form-components/config-form-components.component";
|
import ConfigFormComponents from "../../../config-form-components/config-form-components.component";
|
||||||
import DateTimePicker from "../../../form-date-time-picker/form-date-time-picker.component";
|
import DateTimePicker from "../../../form-date-time-picker/form-date-time-picker.component";
|
||||||
import moment from "moment-business-days";
|
|
||||||
import { insertAuditTrail } from "../../../../redux/application/application.actions";
|
|
||||||
import AuditTrailMapping from "../../../../utils/AuditTrailMappings";
|
|
||||||
import { UPDATE_OWNER } from "../../../../graphql/owners.queries";
|
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -230,6 +230,7 @@ export function JobChecklistForm({
|
|||||||
)),
|
)),
|
||||||
scheduled_delivery:
|
scheduled_delivery:
|
||||||
job.scheduled_delivery && moment(job.scheduled_delivery),
|
job.scheduled_delivery && moment(job.scheduled_delivery),
|
||||||
|
production_vars: job.production_vars,
|
||||||
}),
|
}),
|
||||||
...(type === "deliver" && {
|
...(type === "deliver" && {
|
||||||
removeFromProduction: true,
|
removeFromProduction: true,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import { Gallery } from "react-grid-gallery";
|
import { Gallery } from "react-grid-gallery";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { GenerateThumbUrl } from "./job-documents.utility";
|
import { GenerateSrcUrl, GenerateThumbUrl } from "./job-documents.utility";
|
||||||
|
|
||||||
function JobsDocumentGalleryExternal({
|
function JobsDocumentGalleryExternal({
|
||||||
data,
|
data,
|
||||||
@@ -15,7 +15,7 @@ function JobsDocumentGalleryExternal({
|
|||||||
let documents = data.reduce((acc, value) => {
|
let documents = data.reduce((acc, value) => {
|
||||||
if (value.type.startsWith("image")) {
|
if (value.type.startsWith("image")) {
|
||||||
acc.push({
|
acc.push({
|
||||||
//src: GenerateSrcUrl(value),
|
fullsize: GenerateSrcUrl(value),
|
||||||
src: GenerateThumbUrl(value),
|
src: GenerateThumbUrl(value),
|
||||||
thumbnailHeight: 225,
|
thumbnailHeight: 225,
|
||||||
thumbnailWidth: 225,
|
thumbnailWidth: 225,
|
||||||
|
|||||||
@@ -16,13 +16,17 @@ import { QUERY_LBR_HRS_BY_PK, UPDATE_JOBS } from "../../graphql/jobs.queries";
|
|||||||
import { setEmailOptions } from "../../redux/email/email.actions";
|
import { setEmailOptions } from "../../redux/email/email.actions";
|
||||||
import { toggleModalVisible } from "../../redux/modals/modals.actions";
|
import { toggleModalVisible } from "../../redux/modals/modals.actions";
|
||||||
import { selectSchedule } from "../../redux/modals/modals.selectors";
|
import { selectSchedule } from "../../redux/modals/modals.selectors";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import {
|
||||||
|
selectBodyshop,
|
||||||
|
selectCurrentUser,
|
||||||
|
} from "../../redux/user/user.selectors";
|
||||||
import { TemplateList } from "../../utils/TemplateConstants";
|
import { TemplateList } from "../../utils/TemplateConstants";
|
||||||
import ScheduleJobModalComponent from "./schedule-job-modal.component";
|
import ScheduleJobModalComponent from "./schedule-job-modal.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
scheduleModal: selectSchedule,
|
scheduleModal: selectSchedule,
|
||||||
|
currentUser: selectCurrentUser,
|
||||||
});
|
});
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
toggleModalVisible: () => dispatch(toggleModalVisible("schedule")),
|
toggleModalVisible: () => dispatch(toggleModalVisible("schedule")),
|
||||||
@@ -34,6 +38,7 @@ export function ScheduleJobModalContainer({
|
|||||||
bodyshop,
|
bodyshop,
|
||||||
toggleModalVisible,
|
toggleModalVisible,
|
||||||
setEmailOptions,
|
setEmailOptions,
|
||||||
|
currentUser,
|
||||||
}) {
|
}) {
|
||||||
const { visible, context, actions } = scheduleModal;
|
const { visible, context, actions } = scheduleModal;
|
||||||
const { jobId, job, previousEvent } = context;
|
const { jobId, job, previousEvent } = context;
|
||||||
@@ -122,6 +127,7 @@ export function ScheduleJobModalContainer({
|
|||||||
end: moment(values.start).add(bodyshop.appt_length || 60, "minutes"),
|
end: moment(values.start).add(bodyshop.appt_length || 60, "minutes"),
|
||||||
color: values.color,
|
color: values.color,
|
||||||
note: values.note,
|
note: values.note,
|
||||||
|
created_by: currentUser.email,
|
||||||
},
|
},
|
||||||
jobId: jobId,
|
jobId: jobId,
|
||||||
altTransport: values.alt_transport,
|
altTransport: values.alt_transport,
|
||||||
|
|||||||
@@ -283,6 +283,7 @@ export const GET_JOB_LINES_TO_ENTER_BILL = gql`
|
|||||||
id
|
id
|
||||||
ro_number
|
ro_number
|
||||||
}
|
}
|
||||||
|
v_make_desc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ export const SEARCH_VENDOR_AUTOCOMPLETE = gql`
|
|||||||
id
|
id
|
||||||
cost_center
|
cost_center
|
||||||
active
|
active
|
||||||
|
favorite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -2692,6 +2692,7 @@
|
|||||||
"open_orders_csr": "Open Orders by CSR",
|
"open_orders_csr": "Open Orders by CSR",
|
||||||
"open_orders_estimator": "Open Orders by Estimator",
|
"open_orders_estimator": "Open Orders by Estimator",
|
||||||
"open_orders_ins_co": "Open Orders by Insurance Company",
|
"open_orders_ins_co": "Open Orders by Insurance Company",
|
||||||
|
"open_orders_referral": "Open Orders by Referral Source",
|
||||||
"open_orders_specific_csr": "Open Orders filtered by CSR",
|
"open_orders_specific_csr": "Open Orders filtered by CSR",
|
||||||
"open_orders_status": "Open Orders by Status",
|
"open_orders_status": "Open Orders by Status",
|
||||||
"parts_backorder": "IOU Parts List",
|
"parts_backorder": "IOU Parts List",
|
||||||
|
|||||||
@@ -2692,6 +2692,7 @@
|
|||||||
"open_orders_csr": "",
|
"open_orders_csr": "",
|
||||||
"open_orders_estimator": "",
|
"open_orders_estimator": "",
|
||||||
"open_orders_ins_co": "",
|
"open_orders_ins_co": "",
|
||||||
|
"open_orders_referral": "",
|
||||||
"open_orders_specific_csr": "",
|
"open_orders_specific_csr": "",
|
||||||
"open_orders_status": "",
|
"open_orders_status": "",
|
||||||
"parts_backorder": "",
|
"parts_backorder": "",
|
||||||
|
|||||||
@@ -2692,6 +2692,7 @@
|
|||||||
"open_orders_csr": "",
|
"open_orders_csr": "",
|
||||||
"open_orders_estimator": "",
|
"open_orders_estimator": "",
|
||||||
"open_orders_ins_co": "",
|
"open_orders_ins_co": "",
|
||||||
|
"open_orders_referral": "",
|
||||||
"open_orders_specific_csr": "",
|
"open_orders_specific_csr": "",
|
||||||
"open_orders_status": "",
|
"open_orders_status": "",
|
||||||
"parts_backorder": "",
|
"parts_backorder": "",
|
||||||
|
|||||||
@@ -1591,6 +1591,19 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "jobs",
|
group: "jobs",
|
||||||
},
|
},
|
||||||
|
open_orders_specific_csr: {
|
||||||
|
title: i18n.t("reportcenter.templates.open_orders_specific_csr"),
|
||||||
|
description: "",
|
||||||
|
subject: i18n.t("reportcenter.templates.open_orders_specific_csr"),
|
||||||
|
key: "open_orders_specific_csr",
|
||||||
|
idtype: "employee",
|
||||||
|
disabled: false,
|
||||||
|
rangeFilter: {
|
||||||
|
object: i18n.t("reportcenter.labels.objects.jobs"),
|
||||||
|
field: i18n.t("jobs.fields.date_open"),
|
||||||
|
},
|
||||||
|
group: "jobs",
|
||||||
|
},
|
||||||
open_orders_estimator: {
|
open_orders_estimator: {
|
||||||
title: i18n.t("reportcenter.templates.open_orders_estimator"),
|
title: i18n.t("reportcenter.templates.open_orders_estimator"),
|
||||||
description: "",
|
description: "",
|
||||||
@@ -1617,12 +1630,12 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "jobs",
|
group: "jobs",
|
||||||
},
|
},
|
||||||
open_orders_specific_csr: {
|
open_orders_referral: {
|
||||||
title: i18n.t("reportcenter.templates.open_orders_specific_csr"),
|
title: i18n.t("reportcenter.templates.open_orders_referral"),
|
||||||
description: "",
|
description: "",
|
||||||
subject: i18n.t("reportcenter.templates.open_orders_specific_csr"),
|
subject: i18n.t("reportcenter.templates.open_orders_referral"),
|
||||||
key: "open_orders_specific_csr",
|
key: "open_orders_referral",
|
||||||
idtype: "employee",
|
//idtype: "vendor",
|
||||||
disabled: false,
|
disabled: false,
|
||||||
rangeFilter: {
|
rangeFilter: {
|
||||||
object: i18n.t("reportcenter.labels.objects.jobs"),
|
object: i18n.t("reportcenter.labels.objects.jobs"),
|
||||||
|
|||||||
@@ -110,6 +110,7 @@
|
|||||||
- canceled
|
- canceled
|
||||||
- color
|
- color
|
||||||
- created_at
|
- created_at
|
||||||
|
- created_by
|
||||||
- end
|
- end
|
||||||
- id
|
- id
|
||||||
- isintake
|
- isintake
|
||||||
@@ -128,6 +129,7 @@
|
|||||||
- canceled
|
- canceled
|
||||||
- color
|
- color
|
||||||
- created_at
|
- created_at
|
||||||
|
- created_by
|
||||||
- end
|
- end
|
||||||
- id
|
- id
|
||||||
- isintake
|
- isintake
|
||||||
@@ -156,6 +158,7 @@
|
|||||||
- canceled
|
- canceled
|
||||||
- color
|
- color
|
||||||
- created_at
|
- created_at
|
||||||
|
- created_by
|
||||||
- end
|
- end
|
||||||
- id
|
- id
|
||||||
- isintake
|
- isintake
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- Could not auto-generate a down migration.
|
||||||
|
-- Please write an appropriate down migration for the SQL below:
|
||||||
|
-- alter table "public"."appointments" add column "created_by" text
|
||||||
|
-- null;
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
alter table "public"."appointments" add column "created_by" text
|
||||||
|
null;
|
||||||
@@ -17,7 +17,7 @@ let Client = require("ssh2-sftp-client");
|
|||||||
const client = require("../graphql-client/graphql-client").client;
|
const client = require("../graphql-client/graphql-client").client;
|
||||||
const { sendServerEmail } = require("../email/sendemail");
|
const { sendServerEmail } = require("../email/sendemail");
|
||||||
const CCDineroFormat = "0,0.00";
|
const CCDineroFormat = "0,0.00";
|
||||||
const AhDateFormat = "MMDDYYYY";
|
const AhDateFormat = "MM/DD/YYYY";
|
||||||
|
|
||||||
const repairOpCodes = ["OP4", "OP9", "OP10"];
|
const repairOpCodes = ["OP4", "OP9", "OP10"];
|
||||||
const replaceOpCodes = ["OP2", "OP5", "OP11", "OP12"];
|
const replaceOpCodes = ["OP2", "OP5", "OP11", "OP12"];
|
||||||
@@ -104,7 +104,7 @@ exports.default = async (req, res) => {
|
|||||||
allxmlsToUpload.push({
|
allxmlsToUpload.push({
|
||||||
count: claimsCorpObject.DataFeed.ShopInfo.RO.length,
|
count: claimsCorpObject.DataFeed.ShopInfo.RO.length,
|
||||||
xml: ret,
|
xml: ret,
|
||||||
filename: `${bodyshop.claimscorpid}-MIS-${moment().format(
|
filename: `${bodyshop.claimscorpid}-${moment().format(
|
||||||
"YYYYMMDDTHHMMss"
|
"YYYYMMDDTHHMMss"
|
||||||
)}.xml`,
|
)}.xml`,
|
||||||
});
|
});
|
||||||
@@ -245,7 +245,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const ret = {
|
const ret = {
|
||||||
RONumber: job.ro_number,
|
RoNumber: job.ro_number,
|
||||||
Customer: {
|
Customer: {
|
||||||
CustomerZip: (job.ownr_zip && job.ownr_zip.substring(0, 3)) || "",
|
CustomerZip: (job.ownr_zip && job.ownr_zip.substring(0, 3)) || "",
|
||||||
CustomerState: job.ownr_st || "",
|
CustomerState: job.ownr_st || "",
|
||||||
@@ -312,7 +312,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
(job.date_estimated &&
|
(job.date_estimated &&
|
||||||
moment(job.date_estimated).format(AhDateFormat)) ||
|
moment(job.date_estimated).format(AhDateFormat)) ||
|
||||||
"",
|
"",
|
||||||
DateofLoss:
|
DateLoss:
|
||||||
(job.loss_date && moment(job.loss_date).format(AhDateFormat)) || "",
|
(job.loss_date && moment(job.loss_date).format(AhDateFormat)) || "",
|
||||||
DateFNOL: "",
|
DateFNOL: "",
|
||||||
DateContact: "",
|
DateContact: "",
|
||||||
@@ -384,7 +384,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
"",
|
"",
|
||||||
BilledDate: "",
|
BilledDate: "",
|
||||||
PaidInFullDate: "",
|
PaidInFullDate: "",
|
||||||
RoStatus: job.tlos_ind
|
ROStatus: job.tlos_ind
|
||||||
? "TOT"
|
? "TOT"
|
||||||
: StatusMapping(job.status, job.bodyshop.md_ro_statuses),
|
: StatusMapping(job.status, job.bodyshop.md_ro_statuses),
|
||||||
},
|
},
|
||||||
@@ -397,9 +397,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
Paint: Dinero(job.job_totals.rates.lar.total).toFormat(CCDineroFormat),
|
Paint: Dinero(job.job_totals.rates.lar.total).toFormat(CCDineroFormat),
|
||||||
Prep: Dinero().toFormat(CCDineroFormat),
|
Prep: Dinero().toFormat(CCDineroFormat),
|
||||||
Frame: Dinero(job.job_totals.rates.laf.total).toFormat(CCDineroFormat),
|
Frame: Dinero(job.job_totals.rates.laf.total).toFormat(CCDineroFormat),
|
||||||
Mechanical: Dinero(job.job_totals.rates.lam.total).toFormat(
|
Mech: Dinero(job.job_totals.rates.lam.total).toFormat(CCDineroFormat),
|
||||||
CCDineroFormat
|
|
||||||
),
|
|
||||||
Glass: Dinero(job.job_totals.rates.lag.total).toFormat(CCDineroFormat),
|
Glass: Dinero(job.job_totals.rates.lag.total).toFormat(CCDineroFormat),
|
||||||
Elec: Dinero(job.job_totals.rates.lae.total).toFormat(CCDineroFormat),
|
Elec: Dinero(job.job_totals.rates.lae.total).toFormat(CCDineroFormat),
|
||||||
Detail: detailAdjustments.amount.toFormat(CCDineroFormat),
|
Detail: detailAdjustments.amount.toFormat(CCDineroFormat),
|
||||||
@@ -481,7 +479,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
.filter((line) => repairOpCodes.includes(line.lbr_op))
|
.filter((line) => repairOpCodes.includes(line.lbr_op))
|
||||||
.reduce((acc, val) => acc + val.mod_lb_hrs, 0)
|
.reduce((acc, val) => acc + val.mod_lb_hrs, 0)
|
||||||
.toFixed(2),
|
.toFixed(2),
|
||||||
BodyReplaceHours: job.joblines
|
BodyReplacehours: job.joblines
|
||||||
.filter((line) => replaceOpCodes.includes(line.lbr_op))
|
.filter((line) => replaceOpCodes.includes(line.lbr_op))
|
||||||
.reduce((acc, val) => acc + val.mod_lb_hrs, 0)
|
.reduce((acc, val) => acc + val.mod_lb_hrs, 0)
|
||||||
.toFixed(2),
|
.toFixed(2),
|
||||||
@@ -523,7 +521,7 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
AM: repairCosts.PartsAMCost.toFormat(CCDineroFormat),
|
AM: repairCosts.PartsAMCost.toFormat(CCDineroFormat),
|
||||||
MechParts: Dinero().toFormat(CCDineroFormat),
|
MechParts: Dinero().toFormat(CCDineroFormat),
|
||||||
OtherParts: Dinero().toFormat(CCDineroFormat), //Check Synergy
|
OtherParts: Dinero().toFormat(CCDineroFormat), //Check Synergy
|
||||||
OtherCosts: repairCosts.PartsOtherCost.toFormat(CCDineroFormat),
|
OtherCost: repairCosts.PartsOtherCost.toFormat(CCDineroFormat),
|
||||||
Sublet: repairCosts.SubletTotalCost.toFormat(CCDineroFormat),
|
Sublet: repairCosts.SubletTotalCost.toFormat(CCDineroFormat),
|
||||||
Towing: repairCosts.TowingTotalCost.toFormat(CCDineroFormat),
|
Towing: repairCosts.TowingTotalCost.toFormat(CCDineroFormat),
|
||||||
Storage: repairCosts.StorageTotalCost.toFormat(CCDineroFormat),
|
Storage: repairCosts.StorageTotalCost.toFormat(CCDineroFormat),
|
||||||
|
|||||||
@@ -1949,8 +1949,7 @@ exports.ACTIVE_SHOP_BY_USER = `query ACTIVE_SHOP_BY_USER($user: String) {
|
|||||||
id
|
id
|
||||||
shopid
|
shopid
|
||||||
}
|
}
|
||||||
}
|
}`;
|
||||||
`;
|
|
||||||
|
|
||||||
exports.QUERY_JOB_PAYROLL_DATA = `query QUERY_JOB_PAYROLL_DATA($id: uuid!) {
|
exports.QUERY_JOB_PAYROLL_DATA = `query QUERY_JOB_PAYROLL_DATA($id: uuid!) {
|
||||||
jobs_by_pk(id: $id) {
|
jobs_by_pk(id: $id) {
|
||||||
|
|||||||
Reference in New Issue
Block a user