- {bodyshop.logo_img_path ? (
+ {bodyshop.logo_img_path && bodyshop.logo_img_path.src ? (

) : null}
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index 29ea7f56b..6cd7f8728 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -1792,8 +1792,16 @@
"labels": {
"dates": "Dates",
"employee": "Employee",
+ "filterson": "Filters on {{object}}: {{field}}",
"generateasemail": "Generate as Email?",
"key": "Report",
+ "objects": {
+ "appointments": "Appointments",
+ "bills": "Bills",
+ "jobs": "Jobs",
+ "payments": "Payments",
+ "timetickets": "Timetickets"
+ },
"vendor": "Vendor"
},
"templates": {
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 7aef1dede..8ea654516 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -1792,8 +1792,16 @@
"labels": {
"dates": "",
"employee": "",
+ "filterson": "",
"generateasemail": "",
"key": "",
+ "objects": {
+ "appointments": "",
+ "bills": "",
+ "jobs": "",
+ "payments": "",
+ "timetickets": ""
+ },
"vendor": ""
},
"templates": {
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index cef0a4e98..4a2d41bd0 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -1792,8 +1792,16 @@
"labels": {
"dates": "",
"employee": "",
+ "filterson": "",
"generateasemail": "",
"key": "",
+ "objects": {
+ "appointments": "",
+ "bills": "",
+ "jobs": "",
+ "payments": "",
+ "timetickets": ""
+ },
"vendor": ""
},
"templates": {
diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js
index 4aa6297a7..9178ec834 100644
--- a/client/src/utils/TemplateConstants.js
+++ b/client/src/utils/TemplateConstants.js
@@ -339,75 +339,127 @@ export const TemplateList = (type, context) => {
? {
payments_by_date_type: {
title: i18n.t("reportcenter.templates.payments_by_date_type"),
- description: "Est Detail",
subject: i18n.t("reportcenter.templates.payments_by_date_type"),
key: "payments_by_date_type",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.payments"),
+ field: i18n.t("payments.fields.date"),
+ },
},
purchases_by_date_range_detail: {
title: i18n.t(
"reportcenter.templates.purchases_by_date_range_detail"
),
- description: "Est Detail",
subject: i18n.t(
"reportcenter.templates.purchases_by_date_range_detail"
),
key: "purchases_by_date_range_detail",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.bills"),
+ field: i18n.t("bills.fields.date"),
+ },
},
purchases_by_date_range_summary: {
title: i18n.t(
"reportcenter.templates.purchases_by_date_range_summary"
),
- description: "Est Detail",
subject: i18n.t(
"reportcenter.templates.purchases_by_date_range_summary"
),
key: "purchases_by_date_range_summary",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.bills"),
+ field: i18n.t("bills.fields.date"),
+ },
},
- schedule: {
- title: i18n.t("reportcenter.templates.schedule"),
- description: "Est Detail",
- subject: i18n.t("reportcenter.templates.schedule"),
- key: "schedule",
- disabled: false,
- },
-
purchases_by_vendor_detailed_date_range: {
title: i18n.t(
"reportcenter.templates.purchases_by_vendor_detailed_date_range"
),
- description: "Est Detail",
subject: i18n.t(
"reportcenter.templates.purchases_by_vendor_detailed_date_range"
),
key: "purchases_by_vendor_detailed_date_range",
idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.bills"),
+ field: i18n.t("bills.fields.date"),
+ },
},
purchases_by_vendor_summary_date_range: {
title: i18n.t(
"reportcenter.templates.purchases_by_vendor_summary_date_range"
),
- description: "Est Detail",
subject: i18n.t(
"reportcenter.templates.purchases_by_vendor_summary_date_range"
),
key: "purchases_by_vendor_summary_date_range",
idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.bills"),
+ field: i18n.t("bills.fields.date"),
+ },
},
+ purchases_by_cost_center_detail: {
+ title: i18n.t(
+ "reportcenter.templates.purchases_by_cost_center_detail"
+ ),
+ description: "",
+ subject: i18n.t(
+ "reportcenter.templates.purchases_by_cost_center_detail"
+ ),
+ key: "purchases_by_cost_center_detail",
+ //idtype: "vendor",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.bills"),
+ field: i18n.t("bills.fields.date"),
+ },
+ },
+ purchases_by_cost_center_summary: {
+ title: i18n.t(
+ "reportcenter.templates.purchases_by_cost_center_summary"
+ ),
+ description: "",
+ subject: i18n.t(
+ "reportcenter.templates.purchases_by_cost_center_summary"
+ ),
+ key: "purchases_by_cost_center_summary",
+ //idtype: "vendor",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.bills"),
+ field: i18n.t("bills.fields.date"),
+ },
+ },
+ schedule: {
+ title: i18n.t("reportcenter.templates.schedule"),
+ subject: i18n.t("reportcenter.templates.schedule"),
+ key: "schedule",
+ disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.appointments"),
+ field: i18n.t("appointments.fields.time"),
+ },
+ },
+
timetickets: {
title: i18n.t("reportcenter.templates.timetickets"),
- description: "Est Detail",
subject: i18n.t("reportcenter.templates.timetickets"),
key: "timetickets",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.timetickets"),
+ field: i18n.t("timetickets.fields.date"),
+ },
},
timetickets_employee: {
title: i18n.t("reportcenter.templates.timetickets_employee"),
- description: "Est Detail",
subject: i18n.t("reportcenter.templates.timetickets_employee"),
key: "timetickets_employee",
idtype: "employee",
@@ -416,20 +468,26 @@ export const TemplateList = (type, context) => {
attendance_employee: {
title: i18n.t("reportcenter.templates.attendance_employee"),
- description: "Est Detail",
subject: i18n.t("reportcenter.templates.attendance_employee"),
key: "attendance_employee",
idtype: "employee",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.timetickets"),
+ field: i18n.t("timetickets.fields.date"),
+ },
},
timetickets_summary: {
title: i18n.t("reportcenter.templates.timetickets_summary"),
- description: "Est Detail",
subject: i18n.t("reportcenter.templates.timetickets_summary"),
key: "timetickets_summary",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.timetickets"),
+ field: i18n.t("timetickets.fields.date"),
+ },
},
hours_sold_detail_closed: {
@@ -439,6 +497,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_detail_closed",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.invoice_date"),
+ },
},
hours_sold_detail_closed_source: {
@@ -452,6 +514,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_detail_closed_source",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.invoice_date"),
+ },
},
hours_sold_summary_closed: {
@@ -461,6 +527,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_summary_closed",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.invoice_date"),
+ },
},
hours_sold_summary_closed_source: {
@@ -474,6 +544,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_summary_closed_source",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.invoice_date"),
+ },
},
hours_sold_detail_open: {
@@ -483,6 +557,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_detail_open",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.open_date"),
+ },
},
hours_sold_detail_open_source: {
@@ -496,6 +574,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_detail_open_source",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.open_date"),
+ },
},
hours_sold_summary_open: {
@@ -505,6 +587,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_summary_open",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.open_date"),
+ },
},
hours_sold_summary_open_source: {
@@ -518,6 +604,10 @@ export const TemplateList = (type, context) => {
key: "hours_sold_summary_open_source",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.open_date"),
+ },
},
estimator_detail: {
title: i18n.t("reportcenter.templates.estimator_detail"),
@@ -526,6 +616,10 @@ export const TemplateList = (type, context) => {
key: "estimator_detail",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
estimator_summary: {
title: i18n.t("reportcenter.templates.estimator_summary"),
@@ -534,6 +628,10 @@ export const TemplateList = (type, context) => {
key: "estimator_summary",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
supplement_ratio_source: {
title: i18n.t("reportcenter.templates.supplement_ratio_source"),
@@ -542,6 +640,10 @@ export const TemplateList = (type, context) => {
key: "supplement_ratio_source",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
credits_not_received_date: {
title: i18n.t("reportcenter.templates.credits_not_received_date"),
@@ -550,6 +652,10 @@ export const TemplateList = (type, context) => {
key: "credits_not_received_date",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
job_costing_ro_date_summary: {
title: i18n.t("reportcenter.templates.job_costing_ro_date_summary"),
@@ -560,6 +666,10 @@ export const TemplateList = (type, context) => {
key: "job_costing_ro_date_summary",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
job_costing_ro_source: {
title: i18n.t("reportcenter.templates.job_costing_ro_source"),
@@ -568,6 +678,10 @@ export const TemplateList = (type, context) => {
key: "job_costing_ro_source",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
job_costing_ro_date_detail: {
title: i18n.t("reportcenter.templates.job_costing_ro_date_detail"),
@@ -578,6 +692,10 @@ export const TemplateList = (type, context) => {
key: "job_costing_ro_date_detail",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
job_costing_estimator: {
title: i18n.t("reportcenter.templates.job_costing_estimator"),
@@ -586,6 +704,10 @@ export const TemplateList = (type, context) => {
key: "job_costing_estimator",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
void_ros: {
title: i18n.t("reportcenter.templates.void_ros"),
@@ -594,6 +716,10 @@ export const TemplateList = (type, context) => {
key: "void_ros",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_open"),
+ },
},
gsr_by_make: {
title: i18n.t("reportcenter.templates.gsr_by_make"),
@@ -602,6 +728,10 @@ export const TemplateList = (type, context) => {
key: "gsr_by_make",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
gsr_by_estimator: {
title: i18n.t("reportcenter.templates.gsr_by_estimator"),
@@ -610,6 +740,10 @@ export const TemplateList = (type, context) => {
key: "gsr_by_estimator",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
gsr_labor_only: {
title: i18n.t("reportcenter.templates.gsr_labor_only"),
@@ -618,6 +752,10 @@ export const TemplateList = (type, context) => {
key: "gsr_labor_only",
//idtype: "vendor",
disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_invoiced"),
+ },
},
open_orders: {
title: i18n.t("reportcenter.templates.open_orders"),
@@ -626,30 +764,10 @@ export const TemplateList = (type, context) => {
key: "open_orders",
//idtype: "vendor",
disabled: false,
- },
- purchases_by_cost_center_detail: {
- title: i18n.t(
- "reportcenter.templates.purchases_by_cost_center_detail"
- ),
- description: "",
- subject: i18n.t(
- "reportcenter.templates.purchases_by_cost_center_detail"
- ),
- key: "purchases_by_cost_center_detail",
- //idtype: "vendor",
- disabled: false,
- },
- purchases_by_cost_center_summary: {
- title: i18n.t(
- "reportcenter.templates.purchases_by_cost_center_summary"
- ),
- description: "",
- subject: i18n.t(
- "reportcenter.templates.purchases_by_cost_center_summary"
- ),
- key: "purchases_by_cost_center_summary",
- //idtype: "vendor",
- disabled: false,
+ rangeFilter: {
+ object: i18n.t("reportcenter.labels.objects.jobs"),
+ field: i18n.t("jobs.fields.date_open"),
+ },
},
}
: {}),