@@ -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,
|
||||||
|
|||||||
@@ -2597,6 +2597,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",
|
||||||
|
|||||||
@@ -2597,6 +2597,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": "",
|
||||||
|
|||||||
@@ -2597,6 +2597,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": "",
|
||||||
|
|||||||
@@ -1502,6 +1502,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: "",
|
||||||
@@ -1528,12 +1541,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),
|
||||||
|
|||||||
Reference in New Issue
Block a user