diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel
index 0bb1588a7..3bc1ff5f1 100644
--- a/bodyshop_translations.babel
+++ b/bodyshop_translations.babel
@@ -30462,6 +30462,48 @@
+
+ key_tag
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
+
+ paint_grid
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
parts_label_single
false
@@ -30756,6 +30798,27 @@
+
+ stolen_recovery_checklist
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
supplement_request
false
@@ -32526,6 +32589,27 @@
+
+ gsr_by_csr
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
gsr_by_delivery_date
false
@@ -32967,6 +33051,27 @@
+
+ open_orders_csr
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
open_orders_estimator
false
diff --git a/client/src/components/documents-upload/documents-upload.utility.js b/client/src/components/documents-upload/documents-upload.utility.js
index 7dfb925e4..bca78f094 100644
--- a/client/src/components/documents-upload/documents-upload.utility.js
+++ b/client/src/components/documents-upload/documents-upload.utility.js
@@ -24,7 +24,7 @@ export const handleUpload = (ev, context) => {
const fileName = ev.file.name || ev.filename;
let key = `${bodyshop.id}/${jobId}/${fileName.replace(
- /[^a-zA-Z ]/g,
+ /\.[^/.]+$/,
""
)}-${new Date().getTime()}`;
let extension = fileName.split(".").pop();
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index b0ee18084..20653eb85 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -1832,6 +1832,8 @@
"invoice_total_payable": "Invoice (Total Payable)",
"job_costing_ro": "Job Costing",
"job_notes": "Job Notes",
+ "key_tag": "Key Tag",
+ "paint_grid": "Paint Grid",
"parts_label_single": "Parts Label - Single",
"parts_list": "Parts List",
"parts_order": "Parts Order Confirmation",
@@ -1846,6 +1848,7 @@
"qc_sheet": "Quality Control Sheet",
"ro_totals": "RO Totals",
"ro_with_description": "RO Summary with Descriptions",
+ "stolen_recovery_checklist": "Stolen Recovery Checklist",
"supplement_request": "Supplement Request",
"thank_you_ro": "Thank You Letter",
"thirdpartypayer": "Third Party Payer",
@@ -1962,6 +1965,7 @@
"export_payables": "Export Log - Payables",
"export_payments": "Export Log - Payments",
"export_receivables": "Export Log - Receivables",
+ "gsr_by_csr": "Gross Sales by CSR",
"gsr_by_delivery_date": "Gross Sales by Delivery Date",
"gsr_by_estimator": "Gross Sales by Estimator",
"gsr_by_exported_date": "Gross Sales by Export Date",
@@ -1983,6 +1987,7 @@
"job_costing_ro_estimator": "Job Costing by Estimator",
"job_costing_ro_ins_co": "Job Costing by RO Source",
"open_orders": "Open Orders by Date",
+ "open_orders_csr": "Open Orders by CSR",
"open_orders_estimator": "Open Orders by Estimator",
"open_orders_ins_co": "Open Orders by Insurance Company",
"parts_backorder": "Backordered Parts",
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 951a34d18..2b093063c 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -1832,6 +1832,8 @@
"invoice_total_payable": "",
"job_costing_ro": "",
"job_notes": "",
+ "key_tag": "",
+ "paint_grid": "",
"parts_label_single": "",
"parts_list": "",
"parts_order": "",
@@ -1846,6 +1848,7 @@
"qc_sheet": "",
"ro_totals": "",
"ro_with_description": "",
+ "stolen_recovery_checklist": "",
"supplement_request": "",
"thank_you_ro": "",
"thirdpartypayer": "",
@@ -1962,6 +1965,7 @@
"export_payables": "",
"export_payments": "",
"export_receivables": "",
+ "gsr_by_csr": "",
"gsr_by_delivery_date": "",
"gsr_by_estimator": "",
"gsr_by_exported_date": "",
@@ -1983,6 +1987,7 @@
"job_costing_ro_estimator": "",
"job_costing_ro_ins_co": "",
"open_orders": "",
+ "open_orders_csr": "",
"open_orders_estimator": "",
"open_orders_ins_co": "",
"parts_backorder": "",
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index 476f4280f..a25172c23 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -1832,6 +1832,8 @@
"invoice_total_payable": "",
"job_costing_ro": "",
"job_notes": "",
+ "key_tag": "",
+ "paint_grid": "",
"parts_label_single": "",
"parts_list": "",
"parts_order": "",
@@ -1846,6 +1848,7 @@
"qc_sheet": "",
"ro_totals": "",
"ro_with_description": "",
+ "stolen_recovery_checklist": "",
"supplement_request": "",
"thank_you_ro": "",
"thirdpartypayer": "",
@@ -1962,6 +1965,7 @@
"export_payables": "",
"export_payments": "",
"export_receivables": "",
+ "gsr_by_csr": "",
"gsr_by_delivery_date": "",
"gsr_by_estimator": "",
"gsr_by_exported_date": "",
@@ -1983,6 +1987,7 @@
"job_costing_ro_estimator": "",
"job_costing_ro_ins_co": "",
"open_orders": "",
+ "open_orders_csr": "",
"open_orders_estimator": "",
"open_orders_ins_co": "",
"parts_backorder": "",
diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js
index d123cc6cd..b6627b452 100644
--- a/client/src/utils/TemplateConstants.js
+++ b/client/src/utils/TemplateConstants.js
@@ -69,6 +69,14 @@ export const TemplateList = (type, context) => {
disabled: false,
group: "pre",
},
+ stolen_recovery_checklist: {
+ title: i18n.t("printcenter.jobs.stolen_recovery_checklist"),
+ description: "All Jobs Notes",
+ subject: i18n.t("printcenter.jobs.stolen_recovery_checklist"),
+ key: "stolen_recovery_checklist",
+ disabled: false,
+ group: "pre",
+ },
vehicle_check_in: {
title: i18n.t("printcenter.jobs.vehicle_check_in"),
description: "All Jobs Notes",
@@ -150,6 +158,22 @@ export const TemplateList = (type, context) => {
disabled: false,
group: "ro",
},
+ key_tag: {
+ title: i18n.t("printcenter.jobs.key_tag"),
+ description: "All Jobs Notes",
+ subject: i18n.t("printcenter.jobs.key_tag"),
+ key: "key_tag",
+ disabled: false,
+ group: "ro",
+ },
+ paint_grid: {
+ title: i18n.t("printcenter.jobs.paint_grid"),
+ description: "All Jobs Notes",
+ subject: i18n.t("printcenter.jobs.paint_grid"),
+ key: "paint_grid",
+ disabled: false,
+ group: "ro",
+ },
worksheet_by_line_number: {
title: i18n.t("printcenter.jobs.worksheet_by_line_number"),
description: "All Jobs Notes",
@@ -840,6 +864,18 @@ export const TemplateList = (type, context) => {
field: i18n.t("jobs.fields.date_open"),
},
},
+ gsr_by_csr: {
+ title: i18n.t("reportcenter.templates.gsr_by_csr"),
+ description: "",
+ subject: i18n.t("reportcenter.templates.gsr_by_csr"),
+ key: "gsr_by_csr",
+ //idtype: "vendor",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
+ },
gsr_by_make: {
title: i18n.t("reportcenter.templates.gsr_by_make"),
description: "",
@@ -949,6 +985,18 @@ export const TemplateList = (type, context) => {
field: i18n.t("jobs.fields.date_open"),
},
},
+ open_orders_csr: {
+ title: i18n.t("reportcenter.templates.open_orders_csr"),
+ description: "",
+ subject: i18n.t("reportcenter.templates.open_orders_csr"),
+ key: "open_orders_csr",
+ //idtype: "vendor",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_open"),
+ },
+ },
open_orders_estimator: {
title: i18n.t("reportcenter.templates.open_orders_estimator"),
description: "",