From d787821345074585193575b1f8f6c2b05516be15 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 19 Apr 2023 11:43:24 -0700 Subject: [PATCH 01/44] IO-2086 Resolve cloudinary based thumbnail retrieval. --- .../jobs-documents-gallery.component.jsx | 4 ++-- .../jobs-documents-gallery.external.component.jsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx index 2e343ea44..d7e930e8b 100644 --- a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx +++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.component.jsx @@ -34,8 +34,8 @@ function JobsDocumentsComponent({ const fileType = DetermineFileType(value.type); if (value.type.startsWith("image")) { acc.images.push({ - src: GenerateSrcUrl(value), - thumbnail: GenerateThumbUrl(value), + // src: GenerateSrcUrl(value), + src: GenerateThumbUrl(value), // src: GenerateSrcUrl(value), // thumbnail: GenerateThumbUrl(value), fullsize: GenerateSrcUrl(value), diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx index 5465bbf5c..2ff912930 100644 --- a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx +++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx @@ -1,7 +1,7 @@ import React, { useEffect } from "react"; import { Gallery } from "react-grid-gallery"; import { useTranslation } from "react-i18next"; -import { GenerateSrcUrl, GenerateThumbUrl } from "./job-documents.utility"; +import { GenerateThumbUrl } from "./job-documents.utility"; function JobsDocumentGalleryExternal({ data, @@ -15,8 +15,8 @@ function JobsDocumentGalleryExternal({ let documents = data.reduce((acc, value) => { if (value.type.startsWith("image")) { acc.push({ - src: GenerateSrcUrl(value), - thumbnail: GenerateThumbUrl(value), + //src: GenerateSrcUrl(value), + src: GenerateThumbUrl(value), thumbnailHeight: 225, thumbnailWidth: 225, isSelected: false, From 3c0a883326409d09b09040bfeae6688c683c1a63 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 19 Apr 2023 13:08:18 -0700 Subject: [PATCH 02/44] Resolve status transition error message. --- server/job/job-status-transition.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/job/job-status-transition.js b/server/job/job-status-transition.js index 8ac622bef..c63fcb566 100644 --- a/server/job/job-status-transition.js +++ b/server/job/job-status-transition.js @@ -78,7 +78,7 @@ async function StatusTransition(req, res) { res.sendStatus(200); //.json(ret); } catch (error) { - logger.log("job-costing-error", "ERROR", req.user.email, jobid, { + logger.log("job-status-transition-error", "ERROR", req.user?.email, jobid, { message: error.message, stack: error.stack, }); From 171b61b92fead6a2279c8b6acb673b221a65169a Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 19 Apr 2023 14:08:57 -0700 Subject: [PATCH 03/44] Included a limit on global search query to limit performance impact. --- client/src/graphql/jobs.queries.js | 2 +- client/src/graphql/search.queries.js | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index a6273edc4..50225795f 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -1278,7 +1278,7 @@ export const SEARCH_JOBS_BY_ID_FOR_AUTOCOMPLETE = gql` export const SEARCH_FOR_JOBS = gql` query SEARCH_FOR_JOBS($search: String!) { - search_jobs(args: { search: $search }) { + search_jobs(args: { search: $search }, limit: 25) { id ro_number ownr_fn diff --git a/client/src/graphql/search.queries.js b/client/src/graphql/search.queries.js index a4d8339f9..b972a239b 100644 --- a/client/src/graphql/search.queries.js +++ b/client/src/graphql/search.queries.js @@ -2,22 +2,20 @@ import { gql } from "@apollo/client"; export const GLOBAL_SEARCH_QUERY = gql` query GLOBAL_SEARCH_QUERY($search: String) { - search_jobs(args: { search: $search }) { + search_jobs(args: { search: $search }, limit: 25) { id ro_number status - clm_no v_model_yr v_model_desc v_make_desc v_color - ownr_fn ownr_ln ownr_co_nm } - search_owners(args: { search: $search }) { + search_owners(args: { search: $search }, limit: 25) { id ownr_fn ownr_ln @@ -34,7 +32,7 @@ export const GLOBAL_SEARCH_QUERY = gql` v_vin plate_no } - search_payments(args: { search: $search }) { + search_payments(args: { search: $search }, limit: 25) { id amount paymentnum @@ -45,7 +43,7 @@ export const GLOBAL_SEARCH_QUERY = gql` memo transactionid } - search_bills(args: { search: $search }) { + search_bills(args: { search: $search }, limit: 25) { id date invoice_number @@ -54,7 +52,7 @@ export const GLOBAL_SEARCH_QUERY = gql` name } } - search_phonebook(args: { search: $search }) { + search_phonebook(args: { search: $search }, limit: 25) { id firstname lastname From f5758706856be0d9aee5bc414a082a6caae2d1bd Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 19 Apr 2023 14:10:33 -0700 Subject: [PATCH 04/44] Added missed limit on global search. --- client/src/graphql/search.queries.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/graphql/search.queries.js b/client/src/graphql/search.queries.js index b972a239b..1c1943e30 100644 --- a/client/src/graphql/search.queries.js +++ b/client/src/graphql/search.queries.js @@ -23,7 +23,7 @@ export const GLOBAL_SEARCH_QUERY = gql` ownr_ph1 ownr_ph2 } - search_vehicles(args: { search: $search }) { + search_vehicles(args: { search: $search }, limit: 25) { id v_model_yr v_model_desc From a7cf36d5f8338ee325679ec5b04be55f29d84fea Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 19 Apr 2023 14:26:12 -0700 Subject: [PATCH 05/44] Disable job status transition tracking. --- server/job/job-status-transition.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/job/job-status-transition.js b/server/job/job-status-transition.js index c63fcb566..4b6a7db76 100644 --- a/server/job/job-status-transition.js +++ b/server/job/job-status-transition.js @@ -20,7 +20,8 @@ async function StatusTransition(req, res) { res.status(403).send("Unauthorized"); return; } - + res.sendStatus(200); + return; const { id: jobid, status: value, From cc7bd1c792f2abd11b0f2bd9fa02c09fa0698db1 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Wed, 19 Apr 2023 15:44:09 -0700 Subject: [PATCH 06/44] IO-2243 DMS Posting Sheet Report Requested by Morrey Auto Body --- client/src/translations/en_us/common.json | 1 + client/src/translations/es/common.json | 1 + client/src/translations/fr/common.json | 1 + client/src/utils/TemplateConstants.js | 4149 ++++++++++----------- 4 files changed, 2071 insertions(+), 2081 deletions(-) diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index f01d1a186..725bf69e5 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -2226,6 +2226,7 @@ "csi_invitation": "CSI Invitation", "csi_invitation_action": "CSI Invite", "diagnostic_authorization": "Diagnostic Authorization", + "dms_posting_sheet": "DMS Posting Sheet", "envelope_return_address": "#10 Envelope Return Address Label", "estimate": "Estimate Only", "estimate_detail": "Estimate Details", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 552b080a2..0af8515dd 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -2226,6 +2226,7 @@ "csi_invitation": "", "csi_invitation_action": "", "diagnostic_authorization": "", + "dms_posting_sheet": "", "envelope_return_address": "", "estimate": "", "estimate_detail": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 40d15a480..c474c6c27 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -2226,6 +2226,7 @@ "csi_invitation": "", "csi_invitation_action": "", "diagnostic_authorization": "", + "dms_posting_sheet": "", "envelope_return_address": "", "estimate": "", "estimate_detail": "", diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js index fd9ec5c07..e2aeb1132 100644 --- a/client/src/utils/TemplateConstants.js +++ b/client/src/utils/TemplateConstants.js @@ -1,2089 +1,2076 @@ import i18n from "i18next"; //import { store } from "../redux/store"; export const EmailSettings = { - fromNameDefault: "ImEX Online", - fromAddress: "noreply@imex.online", + fromNameDefault: "ImEX Online", + fromAddress: "noreply@imex.online", }; export const TemplateList = (type, context) => { - //const { bodyshop } = store.getState().user; + //const { bodyshop } = store.getState().user; - return { - //If there's no type or the type is job, send it back. - ...(!type || type === "job" - ? { - casl_authorization: { - title: i18n.t("printcenter.jobs.casl_authorization"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.casl_authorization"), - key: "casl_authorization", - disabled: false, - group: "authorization", - }, - - fippa_authorization: { - title: i18n.t("printcenter.jobs.fippa_authorization"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.fippa_authorization"), - key: "fippa_authorization", - disabled: false, - group: "authorization", - }, - diagnostic_authorization: { - title: i18n.t("printcenter.jobs.diagnostic_authorization"), - description: "Diagnostic Authorization", - subject: i18n.t("printcenter.jobs.diagnostic_authorization"), - key: "diagnostic_authorization", - disabled: false, - group: "authorization", - }, - mechanical_authorization: { - title: i18n.t("printcenter.jobs.mechanical_authorization"), - description: "Diagnostic Authorization", - subject: i18n.t("printcenter.jobs.mechanical_authorization"), - key: "mechanical_authorization", - disabled: false, - group: "authorization", - }, - appointment_reminder: { - title: i18n.t("printcenter.jobs.appointment_reminder"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.appointment_reminder"), - key: "appointment_reminder", - disabled: false, - group: "pre", - }, - estimate_followup: { - title: i18n.t("printcenter.jobs.estimate_followup"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.estimate_followup"), - key: "estimate_followup", - disabled: false, - group: "pre", - }, - express_repair_checklist: { - title: i18n.t("printcenter.jobs.express_repair_checklist"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.express_repair_checklist"), - key: "express_repair_checklist", - disabled: false, - group: "pre", - }, - glass_express_checklist: { - title: i18n.t("printcenter.jobs.glass_express_checklist"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.glass_express_checklist"), - key: "glass_express_checklist", - 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", - subject: i18n.t("printcenter.jobs.vehicle_check_in"), - key: "vehicle_check_in", - disabled: false, - group: "pre", - }, - parts_order_history: { - title: i18n.t("printcenter.jobs.parts_order_history"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.parts_order_history"), - key: "parts_order_history", - disabled: false, - group: "ro", - }, - - job_notes: { - title: i18n.t("printcenter.jobs.job_notes"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.job_notes"), - key: "job_notes", - disabled: false, - group: "ro", - }, - ro_with_description: { - title: i18n.t("printcenter.jobs.ro_with_description"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.ro_with_description"), - key: "ro_with_description", - disabled: false, - group: "ro", - }, - window_tag: { - title: i18n.t("printcenter.jobs.window_tag"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.window_tag"), - key: "window_tag", - disabled: false, - group: "ro", - }, - supplement_request: { - title: i18n.t("printcenter.jobs.supplement_request"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.supplement_request"), - key: "supplement_request", - disabled: false, - group: "ro", - }, - estimate: { - title: i18n.t("printcenter.jobs.estimate"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.estimate"), - key: "estimate", - disabled: false, - group: "ro", - }, - parts_list: { - title: i18n.t("printcenter.jobs.parts_list"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.parts_list"), - key: "parts_list", - disabled: false, - group: "ro", - }, - coversheet_portrait: { - title: i18n.t("printcenter.jobs.coversheet_portrait"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.coversheet_portrait"), - key: "coversheet_portrait", - disabled: false, - group: "ro", - }, - coversheet_landscape: { - title: i18n.t("printcenter.jobs.coversheet_landscape"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.coversheet_landscape"), - key: "coversheet_landscape", - 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", - subject: i18n.t("printcenter.jobs.worksheet_by_line_number"), - key: "worksheet_by_line_number", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation_type: { - title: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_type" - ), - description: "All Jobs Notes", - subject: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_type" - ), - key: "worksheet_sorted_by_operation_type", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation: { - title: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), - key: "worksheet_sorted_by_operation", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation_no_hours: { - title: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_no_hours" - ), - description: "All Jobs Notes", - subject: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_no_hours" - ), - key: "worksheet_sorted_by_operation_no_hours", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation_part_type: { - title: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_part_type" - ), - description: "All Jobs Notes", - subject: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_part_type" - ), - key: "worksheet_sorted_by_operation_part_type", - disabled: false, - group: "worksheet", - }, - payments_by_job: { - title: i18n.t("printcenter.jobs.payments_by_job"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.payments_by_job"), - key: "payments_by_job", - disabled: false, - group: "financial", - }, - final_invoice: { - title: i18n.t("printcenter.jobs.final_invoice"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.final_invoice"), - key: "final_invoice", - disabled: false, - group: "financial", - }, - payment_request: { - title: i18n.t("printcenter.jobs.payment_request"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.payment_request"), - key: "payment_request", - disabled: false, - group: "financial", - }, - invoice_total_payable: { - title: i18n.t("printcenter.jobs.invoice_total_payable"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.invoice_total_payable"), - key: "invoice_total_payable", - disabled: false, - group: "financial", - }, - invoice_customer_payable: { - title: i18n.t("printcenter.jobs.invoice_customer_payable"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.invoice_customer_payable"), - key: "invoice_customer_payable", - disabled: false, - group: "financial", - }, - ro_totals: { - title: i18n.t("printcenter.jobs.ro_totals"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.ro_totals"), - key: "ro_totals", - disabled: false, - group: "financial", - }, - job_costing_ro: { - title: i18n.t("printcenter.jobs.job_costing_ro"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.job_costing_ro"), - key: "job_costing_ro", - disabled: false, - group: "financial", - }, - purchases_by_ro_detail: { - title: i18n.t("printcenter.jobs.purchases_by_ro_detail"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.purchases_by_ro_detail"), - key: "purchases_by_ro_detail", - disabled: false, - group: "financial", - }, - purchases_by_ro_summary: { - title: i18n.t("printcenter.jobs.purchases_by_ro_summary"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.purchases_by_ro_summary"), - key: "purchases_by_ro_summary", - disabled: false, - group: "financial", - }, - filing_coversheet_portrait: { - title: i18n.t("printcenter.jobs.filing_coversheet_portrait"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.filing_coversheet_portrait"), - key: "filing_coversheet_portrait", - disabled: false, - group: "post", - }, - filing_coversheet_landscape: { - title: i18n.t("printcenter.jobs.filing_coversheet_landscape"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.filing_coversheet_landscape"), - key: "filing_coversheet_landscape", - disabled: false, - group: "post", - }, - qc_sheet: { - title: i18n.t("printcenter.jobs.qc_sheet"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.qc_sheet"), - key: "qc_sheet", - disabled: false, - group: "post", - }, - - vehicle_delivery_check: { - title: i18n.t("printcenter.jobs.vehicle_delivery_check"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.vehicle_delivery_check"), - key: "vehicle_delivery_check", - disabled: false, - group: "post", - }, - - guarantee: { - title: i18n.t("printcenter.jobs.guarantee"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.guarantee"), - key: "guarantee", - disabled: false, - group: "post", - }, - csi_invitation: { - title: i18n.t("printcenter.jobs.csi_invitation"), - description: "CSI invite", - key: "csi_invitation", - subject: i18n.t("printcenter.jobs.csi_invitation"), - disabled: false, - group: "post", - }, - window_tag_sublet: { - title: i18n.t("printcenter.jobs.window_tag_sublet"), - description: "Window Tag Sublet", - key: "window_tag_sublet", - subject: i18n.t("printcenter.jobs.window_tag_sublet"), - disabled: false, - group: "ro", - }, - thank_you_ro: { - title: i18n.t("printcenter.jobs.thank_you_ro"), - description: "Thank You Letter by RO", - key: "thank_you_ro", - subject: i18n.t("printcenter.jobs.thank_you_ro"), - disabled: false, - group: "post", - }, - parts_label_single: { - title: i18n.t("printcenter.jobs.parts_label_single"), - description: "Thank You Letter by RO", - key: "parts_label_single", - subject: i18n.t("printcenter.jobs.parts_label_single"), - disabled: false, - group: "ro", - ignoreCustomMargins: true, - }, - envelope_return_address: { - title: i18n.t("printcenter.jobs.envelope_return_address"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.envelope_return_address"), - key: "envelope_return_address", - disabled: false, - group: "ro", - ignoreCustomMargins: true, - }, - sgi_certificate_of_repairs: { - title: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), - description: "Thank You Letter by RO", - key: "sgi_certificate_of_repairs", - subject: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), - disabled: false, - group: "ro", - regions: { - CA_SK: true, - }, - }, - sgi_windshield_auth: { - title: i18n.t("printcenter.jobs.sgi_windshield_auth"), - description: "Thank You Letter by RO", - key: "sgi_windshield_auth", - subject: i18n.t("printcenter.jobs.sgi_windshield_auth"), - disabled: false, - group: "pre", - regions: { - CA_SK: true, - }, - }, - mpi_final_acct_sheet: { - title: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), - description: "Thank You Letter by RO", - key: "mpi_final_acct_sheet", - subject: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), - disabled: false, - group: "post", - regions: { - CA_MB: true, - }, - }, - mpi_eglass_auth: { - title: i18n.t("printcenter.jobs.mpi_eglass_auth"), - description: "Thank You Letter by RO", - key: "mpi_eglass_auth", - subject: i18n.t("printcenter.jobs.mpi_eglass_auth"), - disabled: false, - group: "pre", - regions: { - CA_MB: true, - }, - }, - mpi_animal_checklist: { - title: i18n.t("printcenter.jobs.mpi_animal_checklist"), - description: "Thank You Letter by RO", - key: "mpi_animal_checklist", - subject: i18n.t("printcenter.jobs.mpi_animal_checklist"), - disabled: false, - group: "pre", - regions: { - CA_MB: true, - }, - }, - ab_proof_of_loss: { - title: i18n.t("printcenter.jobs.ab_proof_of_loss"), - description: "Thank You Letter by RO", - key: "ab_proof_of_loss", - subject: i18n.t("printcenter.jobs.ab_proof_of_loss"), - disabled: false, - group: "pre", - regions: { - CA_AB: true, - }, - }, - // parts_label_multi: { - // title: i18n.t("printcenter.jobs.parts_label_multi"), - // description: "Thank You Letter by RO", - // key: "parts_label_multi", - // subject: i18n.t("printcenter.jobs.parts_label_multi"), - // disabled: false, - // group: "ro", - // }, - iou_form: { - title: i18n.t("printcenter.jobs.iou_form"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.iou_form"), - key: "iou_form", - disabled: false, - group: "post", - }, - lag_time_ro: { - title: i18n.t("printcenter.jobs.lag_time_ro"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.lag_time_ro"), - key: "lag_time_ro", - disabled: false, - group: "ro", - }, - rental_reservation: { - title: i18n.t("printcenter.jobs.rental_reservation"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.rental_reservation"), - key: "rental_reservation", - disabled: false, - group: "pre", - }, - timetickets_ro: { - title: i18n.t("printcenter.jobs.timetickets_ro"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.timetickets_ro"), - key: "timetickets_ro", - disabled: false, - group: "financial", - }, - } - : {}), - ...(!type || type === "job_special" - ? { - special_thirdpartypayer: { - title: i18n.t("printcenter.jobs.thirdpartypayer"), - description: "CSI invite", - key: "special_thirdpartypayer", - disabled: false, - }, - folder_label_multiple: { - title: i18n.t("printcenter.jobs.folder_label_multiple"), - description: "Folder Label Multiple", - key: "folder_label_multiple", - disabled: false, - }, - parts_label_multiple: { - title: i18n.t("printcenter.jobs.parts_label_multiple"), - description: "Parts Label Multiple", - key: "parts_label_multiple", - disabled: false, - }, - parts_invoice_label_single: { - title: i18n.t("printcenter.jobs.parts_invoice_label_single"), - description: "Parts Label Multiple", - key: "parts_invoice_label_single", - disabled: false, - ignoreCustomMargins: true, - }, - csi_invitation_action: { - title: i18n.t("printcenter.jobs.csi_invitation_action"), - description: "CSI invite", - key: "csi_invitation_action", - subject: i18n.t("printcenter.jobs.csi_invitation_action"), - disabled: false, - }, - individual_job_note: { - title: i18n.t("printcenter.jobs.individual_job_note"), - description: "CSI invite", - key: "individual_job_note", - subject: i18n.t("printcenter.jobs.individual_job_note", { - ro_number: (context && context.ro_number) || "", - }), - disabled: false, - }, - } - : {}), - ...(!type || type === "appointment" - ? { - appointment_confirmation: { - title: i18n.t("printcenter.appointments.appointment_confirmation"), - description: "Appointment Confirmation", - subject: i18n.t( - "printcenter.appointments.appointment_confirmation" - ), - key: "appointment_confirmation", - disabled: false, - }, - } - : {}), - ...(!type || type === "partsorder" - ? { - parts_order: { - title: i18n.t("printcenter.jobs.parts_order"), - description: "Parts Order", - key: "parts_order", - subject: i18n.t("printcenter.subjects.jobs.parts_order", { - ro_number: context && context.job && context.job.ro_number, - name: ( - (context && context.job && context.job.ownr_ln) || - (context && context.job && context.job.ownr_co_nm) || - "" - ).trim(), - }), - disabled: false, - }, - sublet_order: { - title: i18n.t("printcenter.jobs.sublet_order"), - description: "Parts Order", - key: "sublet_order", - subject: i18n.t("printcenter.subjects.jobs.sublet_order", { - ro_number: context && context.job && context.job.ro_number, - name: ( - (context && context.job && context.job.ownr_ln) || - (context && context.job && context.job.ownr_co_nm) || - "" - ).trim(), - }), - disabled: false, - }, - parts_return_slip: { - title: i18n.t("printcenter.jobs.parts_return_slip"), - subject: i18n.t("printcenter.jobs.parts_return_slip"), - description: "Parts Return", - key: "parts_return_slip", - disabled: false, - }, - } - : {}), - ...(!type || type === "payment" - ? { - payment_receipt: { - title: i18n.t("printcenter.jobs.payment_receipt"), - description: "Payment Receipt", - subject: i18n.t("printcenter.jobs.payment_receipt"), - key: "payment_receipt", - disabled: false, - }, - } - : {}), - ...(!type || type === "csi" ? {} : {}), - ...(!type || type === "report_center" - ? { - hours_sold_detail_closed: { - title: i18n.t("reportcenter.templates.hours_sold_detail_closed"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_detail_closed"), - key: "hours_sold_detail_closed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - - hours_sold_detail_closed_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_ins_co" - ), - key: "hours_sold_detail_closed_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - - hours_sold_summary_closed: { - title: i18n.t("reportcenter.templates.hours_sold_summary_closed"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_summary_closed"), - key: "hours_sold_summary_closed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - - hours_sold_summary_closed_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_ins_co" - ), - key: "hours_sold_summary_closed_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - - hours_sold_detail_open: { - title: i18n.t("reportcenter.templates.hours_sold_detail_open"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_detail_open"), - key: "hours_sold_detail_open", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - - hours_sold_detail_open_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_open_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_open_ins_co" - ), - key: "hours_sold_detail_open_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - - hours_sold_summary_open: { - title: i18n.t("reportcenter.templates.hours_sold_summary_open"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_summary_open"), - key: "hours_sold_summary_open", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - - hours_sold_summary_open_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_open_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_open_ins_co" - ), - key: "hours_sold_summary_open_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - - hours_sold_detail_closed_csr: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_csr" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_csr" - ), - key: "hours_sold_detail_closed_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_open_csr: { - title: i18n.t("reportcenter.templates.hours_sold_detail_open_csr"), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_open_csr" - ), - key: "hours_sold_detail_open_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - hours_sold_summary_closed_csr: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_csr" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_csr" - ), - key: "hours_sold_summary_closed_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_open_csr: { - title: i18n.t("reportcenter.templates.hours_sold_summary_open_csr"), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_open_csr" - ), - key: "hours_sold_summary_open_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_open_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_open_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_open_status" - ), - key: "hours_sold_summary_open_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_closed_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_status" - ), - key: "hours_sold_summary_closed_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_open_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_open_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_open_status" - ), - key: "hours_sold_detail_open_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_closed_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_status" - ), - key: "hours_sold_detail_closed_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - purchases_by_date_range_detail: { - title: i18n.t( - "reportcenter.templates.purchases_by_date_range_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"), - }, - group: "purchases", - }, - purchases_by_date_range_summary: { - title: i18n.t( - "reportcenter.templates.purchases_by_date_range_summary" - ), - 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"), - }, - group: "purchases", - }, - purchases_by_vendor_detailed_date_range: { - title: i18n.t( - "reportcenter.templates.purchases_by_vendor_detailed_date_range" - ), - 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"), - }, - group: "purchases", - }, - purchases_by_vendor_summary_date_range: { - title: i18n.t( - "reportcenter.templates.purchases_by_vendor_summary_date_range" - ), - 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"), - }, - group: "purchases", - }, - 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"), - }, - group: "purchases", - }, - 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"), - }, - group: "purchases", - }, - purchases_grouped_by_vendor_detailed: { - title: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_detailed" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_detailed" - ), - key: "purchases_grouped_by_vendor_detailed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - purchases_grouped_by_vendor_summary: { - title: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_summary" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_summary" - ), - key: "purchases_grouped_by_vendor_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - job_costing_ro_date_summary: { - title: i18n.t("reportcenter.templates.job_costing_ro_date_summary"), - description: "", - subject: i18n.t( - "reportcenter.templates.job_costing_ro_date_summary" - ), - 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"), - }, - group: "jobs", - }, - job_costing_ro_csr: { - title: i18n.t("reportcenter.templates.job_costing_ro_csr"), - description: "", - subject: i18n.t("reportcenter.templates.job_costing_ro_csr"), - key: "job_costing_ro_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - job_costing_ro_ins_co: { - title: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), - key: "job_costing_ro_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - job_costing_ro_date_detail: { - title: i18n.t("reportcenter.templates.job_costing_ro_date_detail"), - description: "", - subject: i18n.t( - "reportcenter.templates.job_costing_ro_date_detail" - ), - 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"), - }, - group: "jobs", - }, - job_costing_ro_estimator: { - title: i18n.t("reportcenter.templates.job_costing_ro_estimator"), - description: "", - subject: i18n.t("reportcenter.templates.job_costing_ro_estimator"), - key: "job_costing_ro_estimator", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - payments_by_date: { - title: i18n.t("reportcenter.templates.payments_by_date"), - subject: i18n.t("reportcenter.templates.payments_by_date"), - key: "payments_by_date", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.payments"), - field: i18n.t("payments.fields.date"), - }, - group: "customers", - }, - payments_by_date_type: { - title: i18n.t("reportcenter.templates.payments_by_date_type"), - 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"), - }, - group: "customers", - }, - - 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"), - }, - group: "customers", - }, - - timetickets: { - title: i18n.t("reportcenter.templates.timetickets"), - subject: i18n.t("reportcenter.templates.timetickets"), - key: "timetickets", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.timetickets"), - field: i18n.t("timetickets.fields.date"), - }, - group: "payroll", - }, - timetickets_employee: { - title: i18n.t("reportcenter.templates.timetickets_employee"), - subject: i18n.t("reportcenter.templates.timetickets_employee"), - key: "timetickets_employee", - idtype: "employee", - disabled: false, - group: "payroll", - }, - attendance_detail: { - title: i18n.t("reportcenter.templates.attendance_detail"), - subject: i18n.t("reportcenter.templates.attendance_detail"), - key: "attendance_detail", - - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.timetickets"), - field: i18n.t("timetickets.fields.date"), - }, - group: "payroll", - }, - attendance_summary: { - title: i18n.t("reportcenter.templates.attendance_summary"), - subject: i18n.t("reportcenter.templates.attendance_summary"), - key: "attendance_summary", - - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.timetickets"), - field: i18n.t("timetickets.fields.date"), - }, - group: "payroll", - }, - attendance_employee: { - title: i18n.t("reportcenter.templates.attendance_employee"), - 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"), - }, - group: "payroll", - }, - - timetickets_summary: { - title: i18n.t("reportcenter.templates.timetickets_summary"), - 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"), - }, - group: "payroll", - }, - - estimator_detail: { - title: i18n.t("reportcenter.templates.estimator_detail"), - description: "", - subject: i18n.t("reportcenter.templates.estimator_detail"), - key: "estimator_detail", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - estimator_summary: { - title: i18n.t("reportcenter.templates.estimator_summary"), - description: "", - subject: i18n.t("reportcenter.templates.estimator_summary"), - key: "estimator_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - supplement_ratio_ins_co: { - title: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), - key: "supplement_ratio_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - credits_not_received_date: { - title: i18n.t("reportcenter.templates.credits_not_received_date"), - description: "", - subject: i18n.t("reportcenter.templates.credits_not_received_date"), - key: "credits_not_received_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "purchases", - }, - - void_ros: { - title: i18n.t("reportcenter.templates.void_ros"), - description: "", - subject: i18n.t("reportcenter.templates.void_ros"), - key: "void_ros", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - 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"), - }, - group: "sales", - }, - gsr_by_make: { - title: i18n.t("reportcenter.templates.gsr_by_make"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_make"), - key: "gsr_by_make", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_delivery_date: { - title: i18n.t("reportcenter.templates.gsr_by_delivery_date"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_delivery_date"), - key: "gsr_by_delivery_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_delivery"), - }, - group: "sales", - }, - gsr_by_referral: { - title: i18n.t("reportcenter.templates.gsr_by_referral"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_referral"), - key: "gsr_by_referral", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_ro: { - title: i18n.t("reportcenter.templates.gsr_by_ro"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_ro"), - key: "gsr_by_ro", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_ins_co: { - title: i18n.t("reportcenter.templates.gsr_by_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_ins_co"), - key: "gsr_by_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_exported_date: { - title: i18n.t("reportcenter.templates.gsr_by_exported_date"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_exported_date"), - key: "gsr_by_exported_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_exported"), - }, - group: "sales", - }, - - gsr_by_estimator: { - title: i18n.t("reportcenter.templates.gsr_by_estimator"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_estimator"), - key: "gsr_by_estimator", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_category: { - title: i18n.t("reportcenter.templates.gsr_by_category"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_category"), - key: "gsr_by_category", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_ats: { - title: i18n.t("reportcenter.templates.gsr_by_ats"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_ats"), - key: "gsr_by_ats", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_labor_only: { - title: i18n.t("reportcenter.templates.gsr_labor_only"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_labor_only"), - key: "gsr_labor_only", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - open_orders: { - title: i18n.t("reportcenter.templates.open_orders"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders"), - key: "open_orders", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - open_orders_status: { - title: i18n.t("reportcenter.templates.open_orders_status"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders_status"), - key: "open_orders_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - 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"), - }, - group: "jobs", - }, - open_orders_estimator: { - title: i18n.t("reportcenter.templates.open_orders_estimator"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders_estimator"), - key: "open_orders_estimator", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - open_orders_ins_co: { - title: i18n.t("reportcenter.templates.open_orders_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders_ins_co"), - key: "open_orders_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - 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", - }, - export_payables: { - title: i18n.t("reportcenter.templates.export_payables"), - description: "", - subject: i18n.t("reportcenter.templates.export_payables"), - key: "export_payables", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.exportlogs"), - field: i18n.t("exportlogs.fields.createdat"), - }, - group: "purchases", - }, - export_payments: { - title: i18n.t("reportcenter.templates.export_payments"), - description: "", - subject: i18n.t("reportcenter.templates.export_payments"), - key: "export_payments", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.exportlogs"), - field: i18n.t("exportlogs.fields.createdat"), - }, - group: "customers", - }, - export_receivables: { - title: i18n.t("reportcenter.templates.export_receivables"), - description: "", - subject: i18n.t("reportcenter.templates.export_receivables"), - key: "export_receivables", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.exportlogs"), - field: i18n.t("exportlogs.fields.createdat"), - }, - group: "sales", - }, - parts_backorder: { - title: i18n.t("reportcenter.templates.parts_backorder"), - description: "", - subject: i18n.t("reportcenter.templates.parts_backorder"), - key: "parts_backorder", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_in"), - }, - group: "purchases", - }, - thank_you_date: { - title: i18n.t("reportcenter.templates.thank_you_date"), - description: "", - subject: i18n.t("reportcenter.templates.thank_you_date"), - key: "thank_you_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "customers", - }, - unclaimed_hrs: { - title: i18n.t("reportcenter.templates.unclaimed_hrs"), - description: "", - subject: i18n.t("reportcenter.templates.unclaimed_hrs"), - key: "unclaimed_hrs", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "payroll", - }, - work_in_progress_labour: { - title: i18n.t("reportcenter.templates.work_in_progress_labour"), - description: "", - subject: i18n.t("reportcenter.templates.work_in_progress_labour"), - key: "work_in_progress_labour", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - work_in_progress_payables: { - title: i18n.t("reportcenter.templates.work_in_progress_payables"), - description: "", - subject: i18n.t("reportcenter.templates.work_in_progress_payables"), - key: "work_in_progress_payables", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - lag_time: { - title: i18n.t("reportcenter.templates.lag_time"), - description: "", - subject: i18n.t("reportcenter.templates.lag_time"), - key: "lag_time", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - parts_not_recieved: { - title: i18n.t("reportcenter.templates.parts_not_recieved"), - description: "", - subject: i18n.t("reportcenter.templates.parts_not_recieved"), - key: "parts_not_recieved", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "purchases", - }, - parts_not_recieved_vendor: { - title: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), - description: "", - subject: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), - key: "parts_not_recieved_vendor", - idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "purchases", - }, - scoreboard_detail: { - title: i18n.t("reportcenter.templates.scoreboard_detail"), - description: "", - subject: i18n.t("reportcenter.templates.scoreboard_detail"), - key: "scoreboard_detail", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.scoreboard"), - field: i18n.t("scoreboard.fields.date"), - }, - group: "payroll", - }, - scoreboard_summary: { - title: i18n.t("reportcenter.templates.scoreboard_summary"), - description: "", - subject: i18n.t("reportcenter.templates.scoreboard_summary"), - key: "scoreboard_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.scoreboard"), - field: i18n.t("scoreboard.fields.date"), - }, - group: "payroll", - }, - anticipated_revenue: { - title: i18n.t("reportcenter.templates.anticipated_revenue"), - description: "", - subject: i18n.t("reportcenter.templates.anticipated_revenue"), - key: "anticipated_revenue", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.scheduled_completion"), // Also date invoice. - }, - group: "sales", - }, - csi: { - title: i18n.t("reportcenter.templates.csi"), - description: "", - subject: i18n.t("reportcenter.templates.csi"), - key: "csi", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.csi"), - field: i18n.t("csi.fields.created_at"), // Also date invoice. - }, - group: "customers", - }, - estimates_written_converted: { - title: i18n.t("reportcenter.templates.estimates_written_converted"), - description: "", - subject: i18n.t( - "reportcenter.templates.estimates_written_converted" - ), - key: "estimates_written_converted", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: - i18n.t("jobs.fields.date_open") + - "/" + - i18n.t("jobs.fields.date_invoiced"), // Also date invoice. - }, - group: "sales", - }, - credits_not_received_date_vendorid: { - title: i18n.t( - "reportcenter.templates.credits_not_received_date_vendorid" - ), - subject: i18n.t( - "reportcenter.templates.credits_not_received_date_vendorid" - ), - key: "credits_not_received_date_vendorid", - idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "purchases", - }, - jobs_reconcile: { - title: i18n.t("reportcenter.templates.jobs_reconcile"), - subject: i18n.t("reportcenter.templates.jobs_reconcile"), - key: "jobs_reconcile", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - parts_received_not_scheduled: { - title: i18n.t( - "reportcenter.templates.parts_received_not_scheduled" - ), - subject: i18n.t( - "reportcenter.templates.parts_received_not_scheduled" - ), - key: "parts_received_not_scheduled", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - psr_by_make: { - title: i18n.t("reportcenter.templates.psr_by_make"), - subject: i18n.t("reportcenter.templates.psr_by_make"), - key: "psr_by_make", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - cycle_time_analysis: { - title: i18n.t("reportcenter.templates.cycle_time_analysis"), - subject: i18n.t("reportcenter.templates.cycle_time_analysis"), - key: "cycle_time_analysis", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_completion"), - }, - group: "jobs", - }, - returns_grouped_by_vendor_summary: { - title: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_summary" - ), - subject: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_summary" - ), - key: "returns_grouped_by_vendor_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "jobs", - }, - returns_grouped_by_vendor_detailed: { - title: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_detailed" - ), - subject: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_detailed" - ), - key: "returns_grouped_by_vendor_detailed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "jobs", - }, - scheduled_parts_list: { - title: i18n.t("reportcenter.templates.scheduled_parts_list"), - subject: i18n.t("reportcenter.templates.scheduled_parts_list"), - key: "scheduled_parts_list", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.scheduled_in"), - }, - group: "jobs", - }, - jobs_completed_not_invoiced: { - title: i18n.t("reportcenter.templates.jobs_completed_not_invoiced"), - subject: i18n.t( - "reportcenter.templates.jobs_completed_not_invoiced" - ), - key: "jobs_completed_not_invoiced", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - jobs_invoiced_not_exported: { - title: i18n.t("reportcenter.templates.jobs_invoiced_not_exported"), - subject: i18n.t( - "reportcenter.templates.jobs_invoiced_not_exported" - ), - key: "jobs_invoiced_not_exported", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - purchase_return_ratio_grouped_by_vendor_detail: { - title: i18n.t("reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"), - subject: i18n.t( - "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" - ), - key: "purchase_return_ratio_grouped_by_vendor_detail", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.bills"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - purchase_return_ratio_grouped_by_vendor_summary: { - title: i18n.t("reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"), - subject: i18n.t( - "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" - ), - key: "purchase_return_ratio_grouped_by_vendor_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.bills"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - production_over_time: { - title: i18n.t("reportcenter.templates.production_over_time"), - subject: i18n.t( - "reportcenter.templates.production_over_time" - ), - key: "production_over_time", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_in"), - }, - group: "jobs", - }, - customer_list: { - title: i18n.t("reportcenter.templates.customer_list"), - subject: i18n.t( - "reportcenter.templates.customer_list" - ), - key: "customer_list", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "customers", - }, - } - : {}), - ...(!type || type === "courtesycarcontract" - ? { - courtesy_car_contract: { - title: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_contract" - ), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_contract" - ), - key: "courtesy_car_contract", - disabled: false, - }, - courtesy_car_terms: { - title: i18n.t("printcenter.courtesycarcontract.courtesy_car_terms"), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_terms" - ), - key: "courtesy_car_terms", - disabled: false, - }, - courtesy_car_impound: { - title: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_impound" - ), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_impound" - ), - key: "courtesy_car_impound", - disabled: false, - }, - } - : {}), - ...(!type || type === "courtesycar" - ? { - courtesy_car_inventory: { - title: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_inventory" - ), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_inventory" - ), - key: "courtesy_car_inventory", - disabled: false, - }, - } - : {}), - ...(!type || type === "bill" - ? { - inhouse_invoice: { - title: i18n.t("printcenter.bills.inhouse_invoice"), - description: "Est Detail", - subject: i18n.t("printcenter.bills.inhouse_invoice"), - key: "inhouse_invoice", - disabled: false, - }, - } - : {}), - ...(!type || type === "timeticket" - ? { - // timetickets: { - // title: i18n.t("printcenter.timetickets.timetickets"), - // description: "Est Detail", - // subject: `${i18n.t("printcenter.timetickets.timetickets")} - ${ - // context && context.job && context.job.ro_number - // }`, - // key: "timetickets", - // disabled: false, - // }, - } - : {}), - ...(!type || type === "vendor" - ? { - purchases_by_vendor_detailed: { - title: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), - description: "Est Detail", - subject: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), - key: "purchases_by_vendor_detailed", - disabled: false, - }, - purchases_by_vendor_summary: { - title: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), - description: "Est Detail", - subject: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), - key: "purchases_by_vendor_summary", - disabled: false, - }, - } - : {}), - - ...(!type || type === "production" - ? { - production_by_last_name: { - title: i18n.t("reportcenter.templates.production_by_last_name"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_last_name"), - key: "production_by_last_name", - //idtype: "vendor", - disabled: false, - }, - production_by_repair_status: { - title: i18n.t("reportcenter.templates.production_by_repair_status"), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_repair_status" - ), - key: "production_by_repair_status", - //idtype: "vendor", - disabled: false, - }, - production_by_target_date: { - title: i18n.t("reportcenter.templates.production_by_target_date"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_target_date"), - key: "production_by_target_date", - //idtype: "vendor", - disabled: false, - }, - production_by_ro: { - title: i18n.t("reportcenter.templates.production_by_ro"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_ro"), - key: "production_by_ro", - //idtype: "vendor", - disabled: false, - }, - production_by_csr: { - title: i18n.t("reportcenter.templates.production_by_csr"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_csr"), - key: "production_by_csr", - //idtype: "vendor", - disabled: false, - }, - production_by_category: { - title: i18n.t("reportcenter.templates.production_by_category"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_category"), - key: "production_by_category", - //idtype: "vendor", - disabled: false, - }, - production_by_technician: { - title: i18n.t("reportcenter.templates.production_by_technician"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_technician"), - key: "production_by_technician", - //idtype: "vendor", - disabled: false, - }, - } - : {}), - ...(!type || type === "special" - ? { - ca_bc_etf_table: { - title: i18n.t("printcenter.payments.ca_bc_etf_table"), - description: "Est Detail", - subject: i18n.t("printcenter.payments.ca_bc_etf_table"), - key: "ca_bc_etf_table", - disabled: false, - }, - exported_payroll: { - title: i18n.t("printcenter.payments.exported_payroll"), - description: "Est Detail", - subject: i18n.t("printcenter.payments.exported_payroll"), - key: "exported_payroll", - disabled: false, - }, - attendance_detail_csv: { - title: i18n.t("printcenter.special.attendance_detail_csv"), - description: "Est Detail", - subject: i18n.t("printcenter.special.attendance_detail_csv"), - key: "attendance_detail_csv", - disabled: false, - }, - production_by_technician_one: { - title: i18n.t( - "reportcenter.templates.production_by_technician_one" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_technician_one" - ), - key: "production_by_technician_one", - //idtype: "vendor", - disabled: false, - }, - production_by_category_one: { - title: i18n.t("reportcenter.templates.production_by_category_one"), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_category_one" - ), - key: "production_by_category_one", - //idtype: "vendor", - disabled: false, - }, - production_by_repair_status_one: { - title: i18n.t( - "reportcenter.templates.production_by_repair_status_one" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_repair_status_one" - ), - key: "production_by_repair_status_one", - //idtype: "vendor", - disabled: false, - }, - } - : {}), - }; + return { + //If there's no type or the type is job, send it back. + ...(!type || type === "job" + ? { + casl_authorization: { + title: i18n.t("printcenter.jobs.casl_authorization"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.casl_authorization"), + key: "casl_authorization", + disabled: false, + group: "authorization", + }, + fippa_authorization: { + title: i18n.t("printcenter.jobs.fippa_authorization"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.fippa_authorization"), + key: "fippa_authorization", + disabled: false, + group: "authorization", + }, + diagnostic_authorization: { + title: i18n.t("printcenter.jobs.diagnostic_authorization"), + description: "Diagnostic Authorization", + subject: i18n.t("printcenter.jobs.diagnostic_authorization"), + key: "diagnostic_authorization", + disabled: false, + group: "authorization", + }, + mechanical_authorization: { + title: i18n.t("printcenter.jobs.mechanical_authorization"), + description: "Diagnostic Authorization", + subject: i18n.t("printcenter.jobs.mechanical_authorization"), + key: "mechanical_authorization", + disabled: false, + group: "authorization", + }, + appointment_reminder: { + title: i18n.t("printcenter.jobs.appointment_reminder"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.appointment_reminder"), + key: "appointment_reminder", + disabled: false, + group: "pre", + }, + estimate_followup: { + title: i18n.t("printcenter.jobs.estimate_followup"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.estimate_followup"), + key: "estimate_followup", + disabled: false, + group: "pre", + }, + express_repair_checklist: { + title: i18n.t("printcenter.jobs.express_repair_checklist"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.express_repair_checklist"), + key: "express_repair_checklist", + disabled: false, + group: "pre", + }, + glass_express_checklist: { + title: i18n.t("printcenter.jobs.glass_express_checklist"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.glass_express_checklist"), + key: "glass_express_checklist", + 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", + subject: i18n.t("printcenter.jobs.vehicle_check_in"), + key: "vehicle_check_in", + disabled: false, + group: "pre", + }, + parts_order_history: { + title: i18n.t("printcenter.jobs.parts_order_history"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.parts_order_history"), + key: "parts_order_history", + disabled: false, + group: "ro", + }, + job_notes: { + title: i18n.t("printcenter.jobs.job_notes"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.job_notes"), + key: "job_notes", + disabled: false, + group: "ro", + }, + ro_with_description: { + title: i18n.t("printcenter.jobs.ro_with_description"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.ro_with_description"), + key: "ro_with_description", + disabled: false, + group: "ro", + }, + window_tag: { + title: i18n.t("printcenter.jobs.window_tag"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.window_tag"), + key: "window_tag", + disabled: false, + group: "ro", + }, + supplement_request: { + title: i18n.t("printcenter.jobs.supplement_request"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.supplement_request"), + key: "supplement_request", + disabled: false, + group: "ro", + }, + estimate: { + title: i18n.t("printcenter.jobs.estimate"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.estimate"), + key: "estimate", + disabled: false, + group: "ro", + }, + parts_list: { + title: i18n.t("printcenter.jobs.parts_list"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.parts_list"), + key: "parts_list", + disabled: false, + group: "ro", + }, + coversheet_portrait: { + title: i18n.t("printcenter.jobs.coversheet_portrait"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.coversheet_portrait"), + key: "coversheet_portrait", + disabled: false, + group: "ro", + }, + coversheet_landscape: { + title: i18n.t("printcenter.jobs.coversheet_landscape"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.coversheet_landscape"), + key: "coversheet_landscape", + 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", + subject: i18n.t("printcenter.jobs.worksheet_by_line_number"), + key: "worksheet_by_line_number", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation_type: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_type" + ), + description: "All Jobs Notes", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_type" + ), + key: "worksheet_sorted_by_operation_type", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation: { + title: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), + key: "worksheet_sorted_by_operation", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation_no_hours: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_no_hours" + ), + description: "All Jobs Notes", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_no_hours" + ), + key: "worksheet_sorted_by_operation_no_hours", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation_part_type: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_part_type" + ), + description: "All Jobs Notes", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_part_type" + ), + key: "worksheet_sorted_by_operation_part_type", + disabled: false, + group: "worksheet", + }, + payments_by_job: { + title: i18n.t("printcenter.jobs.payments_by_job"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.payments_by_job"), + key: "payments_by_job", + disabled: false, + group: "financial", + }, + final_invoice: { + title: i18n.t("printcenter.jobs.final_invoice"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.final_invoice"), + key: "final_invoice", + disabled: false, + group: "financial", + }, + payment_request: { + title: i18n.t("printcenter.jobs.payment_request"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.payment_request"), + key: "payment_request", + disabled: false, + group: "financial", + }, + invoice_total_payable: { + title: i18n.t("printcenter.jobs.invoice_total_payable"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.invoice_total_payable"), + key: "invoice_total_payable", + disabled: false, + group: "financial", + }, + invoice_customer_payable: { + title: i18n.t("printcenter.jobs.invoice_customer_payable"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.invoice_customer_payable"), + key: "invoice_customer_payable", + disabled: false, + group: "financial", + }, + ro_totals: { + title: i18n.t("printcenter.jobs.ro_totals"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.ro_totals"), + key: "ro_totals", + disabled: false, + group: "financial", + }, + job_costing_ro: { + title: i18n.t("printcenter.jobs.job_costing_ro"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.job_costing_ro"), + key: "job_costing_ro", + disabled: false, + group: "financial", + }, + purchases_by_ro_detail: { + title: i18n.t("printcenter.jobs.purchases_by_ro_detail"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.purchases_by_ro_detail"), + key: "purchases_by_ro_detail", + disabled: false, + group: "financial", + }, + purchases_by_ro_summary: { + title: i18n.t("printcenter.jobs.purchases_by_ro_summary"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.purchases_by_ro_summary"), + key: "purchases_by_ro_summary", + disabled: false, + group: "financial", + }, + filing_coversheet_portrait: { + title: i18n.t("printcenter.jobs.filing_coversheet_portrait"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.filing_coversheet_portrait"), + key: "filing_coversheet_portrait", + disabled: false, + group: "post", + }, + filing_coversheet_landscape: { + title: i18n.t("printcenter.jobs.filing_coversheet_landscape"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.filing_coversheet_landscape"), + key: "filing_coversheet_landscape", + disabled: false, + group: "post", + }, + qc_sheet: { + title: i18n.t("printcenter.jobs.qc_sheet"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.qc_sheet"), + key: "qc_sheet", + disabled: false, + group: "post", + }, + vehicle_delivery_check: { + title: i18n.t("printcenter.jobs.vehicle_delivery_check"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.vehicle_delivery_check"), + key: "vehicle_delivery_check", + disabled: false, + group: "post", + }, + guarantee: { + title: i18n.t("printcenter.jobs.guarantee"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.guarantee"), + key: "guarantee", + disabled: false, + group: "post", + }, + csi_invitation: { + title: i18n.t("printcenter.jobs.csi_invitation"), + description: "CSI invite", + key: "csi_invitation", + subject: i18n.t("printcenter.jobs.csi_invitation"), + disabled: false, + group: "post", + }, + window_tag_sublet: { + title: i18n.t("printcenter.jobs.window_tag_sublet"), + description: "Window Tag Sublet", + key: "window_tag_sublet", + subject: i18n.t("printcenter.jobs.window_tag_sublet"), + disabled: false, + group: "ro", + }, + thank_you_ro: { + title: i18n.t("printcenter.jobs.thank_you_ro"), + description: "Thank You Letter by RO", + key: "thank_you_ro", + subject: i18n.t("printcenter.jobs.thank_you_ro"), + disabled: false, + group: "post", + }, + parts_label_single: { + title: i18n.t("printcenter.jobs.parts_label_single"), + description: "Thank You Letter by RO", + key: "parts_label_single", + subject: i18n.t("printcenter.jobs.parts_label_single"), + disabled: false, + group: "ro", + ignoreCustomMargins: true, + }, + envelope_return_address: { + title: i18n.t("printcenter.jobs.envelope_return_address"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.envelope_return_address"), + key: "envelope_return_address", + disabled: false, + group: "ro", + ignoreCustomMargins: true, + }, + sgi_certificate_of_repairs: { + title: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), + description: "Thank You Letter by RO", + key: "sgi_certificate_of_repairs", + subject: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), + disabled: false, + group: "ro", + regions: { + CA_SK: true, + }, + }, + sgi_windshield_auth: { + title: i18n.t("printcenter.jobs.sgi_windshield_auth"), + description: "Thank You Letter by RO", + key: "sgi_windshield_auth", + subject: i18n.t("printcenter.jobs.sgi_windshield_auth"), + disabled: false, + group: "pre", + regions: { + CA_SK: true, + }, + }, + mpi_final_acct_sheet: { + title: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), + description: "Thank You Letter by RO", + key: "mpi_final_acct_sheet", + subject: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), + disabled: false, + group: "post", + regions: { + CA_MB: true, + }, + }, + mpi_eglass_auth: { + title: i18n.t("printcenter.jobs.mpi_eglass_auth"), + description: "Thank You Letter by RO", + key: "mpi_eglass_auth", + subject: i18n.t("printcenter.jobs.mpi_eglass_auth"), + disabled: false, + group: "pre", + regions: { + CA_MB: true, + }, + }, + mpi_animal_checklist: { + title: i18n.t("printcenter.jobs.mpi_animal_checklist"), + description: "Thank You Letter by RO", + key: "mpi_animal_checklist", + subject: i18n.t("printcenter.jobs.mpi_animal_checklist"), + disabled: false, + group: "pre", + regions: { + CA_MB: true, + }, + }, + ab_proof_of_loss: { + title: i18n.t("printcenter.jobs.ab_proof_of_loss"), + description: "Thank You Letter by RO", + key: "ab_proof_of_loss", + subject: i18n.t("printcenter.jobs.ab_proof_of_loss"), + disabled: false, + group: "pre", + regions: { + CA_AB: true, + }, + }, + // parts_label_multi: { + // title: i18n.t("printcenter.jobs.parts_label_multi"), + // description: "Thank You Letter by RO", + // key: "parts_label_multi", + // subject: i18n.t("printcenter.jobs.parts_label_multi"), + // disabled: false, + // group: "ro", + // }, + iou_form: { + title: i18n.t("printcenter.jobs.iou_form"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.iou_form"), + key: "iou_form", + disabled: false, + group: "post", + }, + lag_time_ro: { + title: i18n.t("printcenter.jobs.lag_time_ro"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.lag_time_ro"), + key: "lag_time_ro", + disabled: false, + group: "ro", + }, + rental_reservation: { + title: i18n.t("printcenter.jobs.rental_reservation"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.rental_reservation"), + key: "rental_reservation", + disabled: false, + group: "pre", + }, + timetickets_ro: { + title: i18n.t("printcenter.jobs.timetickets_ro"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.timetickets_ro"), + key: "timetickets_ro", + disabled: false, + group: "financial", + }, + dms_posting_sheet: { + title: i18n.t("printcenter.jobs.dms_posting_sheet"), + description: "DMS Posting Sheet", + subject: i18n.t("printcenter.jobs.dms_posting_sheet"), + key: "dms_posting_sheet", + disabled: false, + group: "financial", + }, + } + : {}), + ...(!type || type === "job_special" + ? { + special_thirdpartypayer: { + title: i18n.t("printcenter.jobs.thirdpartypayer"), + description: "CSI invite", + key: "special_thirdpartypayer", + disabled: false, + }, + folder_label_multiple: { + title: i18n.t("printcenter.jobs.folder_label_multiple"), + description: "Folder Label Multiple", + key: "folder_label_multiple", + disabled: false, + }, + parts_label_multiple: { + title: i18n.t("printcenter.jobs.parts_label_multiple"), + description: "Parts Label Multiple", + key: "parts_label_multiple", + disabled: false, + }, + parts_invoice_label_single: { + title: i18n.t("printcenter.jobs.parts_invoice_label_single"), + description: "Parts Label Multiple", + key: "parts_invoice_label_single", + disabled: false, + ignoreCustomMargins: true, + }, + csi_invitation_action: { + title: i18n.t("printcenter.jobs.csi_invitation_action"), + description: "CSI invite", + key: "csi_invitation_action", + subject: i18n.t("printcenter.jobs.csi_invitation_action"), + disabled: false, + }, + individual_job_note: { + title: i18n.t("printcenter.jobs.individual_job_note"), + description: "CSI invite", + key: "individual_job_note", + subject: i18n.t("printcenter.jobs.individual_job_note", { + ro_number: (context && context.ro_number) || "", + }), + disabled: false, + }, + } + : {}), + ...(!type || type === "appointment" + ? { + appointment_confirmation: { + title: i18n.t("printcenter.appointments.appointment_confirmation"), + description: "Appointment Confirmation", + subject: i18n.t( + "printcenter.appointments.appointment_confirmation" + ), + key: "appointment_confirmation", + disabled: false, + }, + } + : {}), + ...(!type || type === "partsorder" + ? { + parts_order: { + title: i18n.t("printcenter.jobs.parts_order"), + description: "Parts Order", + key: "parts_order", + subject: i18n.t("printcenter.subjects.jobs.parts_order", { + ro_number: context && context.job && context.job.ro_number, + name: ( + (context && context.job && context.job.ownr_ln) || + (context && context.job && context.job.ownr_co_nm) || + "" + ).trim(), + }), + disabled: false, + }, + sublet_order: { + title: i18n.t("printcenter.jobs.sublet_order"), + description: "Parts Order", + key: "sublet_order", + subject: i18n.t("printcenter.subjects.jobs.sublet_order", { + ro_number: context && context.job && context.job.ro_number, + name: ( + (context && context.job && context.job.ownr_ln) || + (context && context.job && context.job.ownr_co_nm) || + "" + ).trim(), + }), + disabled: false, + }, + parts_return_slip: { + title: i18n.t("printcenter.jobs.parts_return_slip"), + subject: i18n.t("printcenter.jobs.parts_return_slip"), + description: "Parts Return", + key: "parts_return_slip", + disabled: false, + }, + } + : {}), + ...(!type || type === "payment" + ? { + payment_receipt: { + title: i18n.t("printcenter.jobs.payment_receipt"), + description: "Payment Receipt", + subject: i18n.t("printcenter.jobs.payment_receipt"), + key: "payment_receipt", + disabled: false, + }, + } + : {}), + ...(!type || type === "csi" ? {} : {}), + ...(!type || type === "report_center" + ? { + hours_sold_detail_closed: { + title: i18n.t("reportcenter.templates.hours_sold_detail_closed"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_detail_closed"), + key: "hours_sold_detail_closed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_closed_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_ins_co" + ), + key: "hours_sold_detail_closed_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_closed: { + title: i18n.t("reportcenter.templates.hours_sold_summary_closed"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_summary_closed"), + key: "hours_sold_summary_closed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_closed_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_ins_co" + ), + key: "hours_sold_summary_closed_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_open: { + title: i18n.t("reportcenter.templates.hours_sold_detail_open"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_detail_open"), + key: "hours_sold_detail_open", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_detail_open_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_open_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_open_ins_co" + ), + key: "hours_sold_detail_open_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_summary_open: { + title: i18n.t("reportcenter.templates.hours_sold_summary_open"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_summary_open"), + key: "hours_sold_summary_open", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_summary_open_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_open_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_open_ins_co" + ), + key: "hours_sold_summary_open_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_detail_closed_csr: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_csr" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_csr" + ), + key: "hours_sold_detail_closed_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_open_csr: { + title: i18n.t("reportcenter.templates.hours_sold_detail_open_csr"), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_open_csr" + ), + key: "hours_sold_detail_open_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_summary_closed_csr: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_csr" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_csr" + ), + key: "hours_sold_summary_closed_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_open_csr: { + title: i18n.t("reportcenter.templates.hours_sold_summary_open_csr"), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_open_csr" + ), + key: "hours_sold_summary_open_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_open_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_open_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_open_status" + ), + key: "hours_sold_summary_open_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_closed_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_status" + ), + key: "hours_sold_summary_closed_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_open_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_open_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_open_status" + ), + key: "hours_sold_detail_open_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_closed_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_status" + ), + key: "hours_sold_detail_closed_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + purchases_by_date_range_detail: { + title: i18n.t( + "reportcenter.templates.purchases_by_date_range_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"), + }, + group: "purchases", + }, + purchases_by_date_range_summary: { + title: i18n.t( + "reportcenter.templates.purchases_by_date_range_summary" + ), + 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"), + }, + group: "purchases", + }, + purchases_by_vendor_detailed_date_range: { + title: i18n.t( + "reportcenter.templates.purchases_by_vendor_detailed_date_range" + ), + 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"), + }, + group: "purchases", + }, + purchases_by_vendor_summary_date_range: { + title: i18n.t( + "reportcenter.templates.purchases_by_vendor_summary_date_range" + ), + 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"), + }, + group: "purchases", + }, + 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"), + }, + group: "purchases", + }, + 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"), + }, + group: "purchases", + }, + purchases_grouped_by_vendor_detailed: { + title: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_detailed" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_detailed" + ), + key: "purchases_grouped_by_vendor_detailed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + purchases_grouped_by_vendor_summary: { + title: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_summary" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_summary" + ), + key: "purchases_grouped_by_vendor_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + job_costing_ro_date_summary: { + title: i18n.t("reportcenter.templates.job_costing_ro_date_summary"), + description: "", + subject: i18n.t( + "reportcenter.templates.job_costing_ro_date_summary" + ), + 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"), + }, + group: "jobs", + }, + job_costing_ro_csr: { + title: i18n.t("reportcenter.templates.job_costing_ro_csr"), + description: "", + subject: i18n.t("reportcenter.templates.job_costing_ro_csr"), + key: "job_costing_ro_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + job_costing_ro_ins_co: { + title: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), + key: "job_costing_ro_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + job_costing_ro_date_detail: { + title: i18n.t("reportcenter.templates.job_costing_ro_date_detail"), + description: "", + subject: i18n.t( + "reportcenter.templates.job_costing_ro_date_detail" + ), + 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"), + }, + group: "jobs", + }, + job_costing_ro_estimator: { + title: i18n.t("reportcenter.templates.job_costing_ro_estimator"), + description: "", + subject: i18n.t("reportcenter.templates.job_costing_ro_estimator"), + key: "job_costing_ro_estimator", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + payments_by_date: { + title: i18n.t("reportcenter.templates.payments_by_date"), + subject: i18n.t("reportcenter.templates.payments_by_date"), + key: "payments_by_date", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.payments"), + field: i18n.t("payments.fields.date"), + }, + group: "customers", + }, + payments_by_date_type: { + title: i18n.t("reportcenter.templates.payments_by_date_type"), + 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"), + }, + group: "customers", + }, + 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"), + }, + group: "customers", + }, + timetickets: { + title: i18n.t("reportcenter.templates.timetickets"), + subject: i18n.t("reportcenter.templates.timetickets"), + key: "timetickets", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, + group: "payroll", + }, + timetickets_employee: { + title: i18n.t("reportcenter.templates.timetickets_employee"), + subject: i18n.t("reportcenter.templates.timetickets_employee"), + key: "timetickets_employee", + idtype: "employee", + disabled: false, + group: "payroll", + }, + attendance_detail: { + title: i18n.t("reportcenter.templates.attendance_detail"), + subject: i18n.t("reportcenter.templates.attendance_detail"), + key: "attendance_detail", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, + group: "payroll", + }, + attendance_summary: { + title: i18n.t("reportcenter.templates.attendance_summary"), + subject: i18n.t("reportcenter.templates.attendance_summary"), + key: "attendance_summary", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, + group: "payroll", + }, + attendance_employee: { + title: i18n.t("reportcenter.templates.attendance_employee"), + 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"), + }, + group: "payroll", + }, + timetickets_summary: { + title: i18n.t("reportcenter.templates.timetickets_summary"), + 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"), + }, + group: "payroll", + }, + estimator_detail: { + title: i18n.t("reportcenter.templates.estimator_detail"), + description: "", + subject: i18n.t("reportcenter.templates.estimator_detail"), + key: "estimator_detail", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + estimator_summary: { + title: i18n.t("reportcenter.templates.estimator_summary"), + description: "", + subject: i18n.t("reportcenter.templates.estimator_summary"), + key: "estimator_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + supplement_ratio_ins_co: { + title: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), + key: "supplement_ratio_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + credits_not_received_date: { + title: i18n.t("reportcenter.templates.credits_not_received_date"), + description: "", + subject: i18n.t("reportcenter.templates.credits_not_received_date"), + key: "credits_not_received_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "purchases", + }, + void_ros: { + title: i18n.t("reportcenter.templates.void_ros"), + description: "", + subject: i18n.t("reportcenter.templates.void_ros"), + key: "void_ros", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + 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"), + }, + group: "sales", + }, + gsr_by_make: { + title: i18n.t("reportcenter.templates.gsr_by_make"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_make"), + key: "gsr_by_make", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_delivery_date: { + title: i18n.t("reportcenter.templates.gsr_by_delivery_date"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_delivery_date"), + key: "gsr_by_delivery_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_delivery"), + }, + group: "sales", + }, + gsr_by_referral: { + title: i18n.t("reportcenter.templates.gsr_by_referral"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_referral"), + key: "gsr_by_referral", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_ro: { + title: i18n.t("reportcenter.templates.gsr_by_ro"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_ro"), + key: "gsr_by_ro", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_ins_co: { + title: i18n.t("reportcenter.templates.gsr_by_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_ins_co"), + key: "gsr_by_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_exported_date: { + title: i18n.t("reportcenter.templates.gsr_by_exported_date"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_exported_date"), + key: "gsr_by_exported_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_exported"), + }, + group: "sales", + }, + gsr_by_estimator: { + title: i18n.t("reportcenter.templates.gsr_by_estimator"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_estimator"), + key: "gsr_by_estimator", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_category: { + title: i18n.t("reportcenter.templates.gsr_by_category"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_category"), + key: "gsr_by_category", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_ats: { + title: i18n.t("reportcenter.templates.gsr_by_ats"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_ats"), + key: "gsr_by_ats", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_labor_only: { + title: i18n.t("reportcenter.templates.gsr_labor_only"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_labor_only"), + key: "gsr_labor_only", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + open_orders: { + title: i18n.t("reportcenter.templates.open_orders"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders"), + key: "open_orders", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + open_orders_status: { + title: i18n.t("reportcenter.templates.open_orders_status"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders_status"), + key: "open_orders_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + 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"), + }, + group: "jobs", + }, + open_orders_estimator: { + title: i18n.t("reportcenter.templates.open_orders_estimator"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders_estimator"), + key: "open_orders_estimator", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + open_orders_ins_co: { + title: i18n.t("reportcenter.templates.open_orders_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders_ins_co"), + key: "open_orders_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + 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", + }, + export_payables: { + title: i18n.t("reportcenter.templates.export_payables"), + description: "", + subject: i18n.t("reportcenter.templates.export_payables"), + key: "export_payables", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.exportlogs"), + field: i18n.t("exportlogs.fields.createdat"), + }, + group: "purchases", + }, + export_payments: { + title: i18n.t("reportcenter.templates.export_payments"), + description: "", + subject: i18n.t("reportcenter.templates.export_payments"), + key: "export_payments", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.exportlogs"), + field: i18n.t("exportlogs.fields.createdat"), + }, + group: "customers", + }, + export_receivables: { + title: i18n.t("reportcenter.templates.export_receivables"), + description: "", + subject: i18n.t("reportcenter.templates.export_receivables"), + key: "export_receivables", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.exportlogs"), + field: i18n.t("exportlogs.fields.createdat"), + }, + group: "sales", + }, + parts_backorder: { + title: i18n.t("reportcenter.templates.parts_backorder"), + description: "", + subject: i18n.t("reportcenter.templates.parts_backorder"), + key: "parts_backorder", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_in"), + }, + group: "purchases", + }, + thank_you_date: { + title: i18n.t("reportcenter.templates.thank_you_date"), + description: "", + subject: i18n.t("reportcenter.templates.thank_you_date"), + key: "thank_you_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "customers", + }, + unclaimed_hrs: { + title: i18n.t("reportcenter.templates.unclaimed_hrs"), + description: "", + subject: i18n.t("reportcenter.templates.unclaimed_hrs"), + key: "unclaimed_hrs", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "payroll", + }, + work_in_progress_labour: { + title: i18n.t("reportcenter.templates.work_in_progress_labour"), + description: "", + subject: i18n.t("reportcenter.templates.work_in_progress_labour"), + key: "work_in_progress_labour", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + work_in_progress_payables: { + title: i18n.t("reportcenter.templates.work_in_progress_payables"), + description: "", + subject: i18n.t("reportcenter.templates.work_in_progress_payables"), + key: "work_in_progress_payables", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + lag_time: { + title: i18n.t("reportcenter.templates.lag_time"), + description: "", + subject: i18n.t("reportcenter.templates.lag_time"), + key: "lag_time", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + parts_not_recieved: { + title: i18n.t("reportcenter.templates.parts_not_recieved"), + description: "", + subject: i18n.t("reportcenter.templates.parts_not_recieved"), + key: "parts_not_recieved", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "purchases", + }, + parts_not_recieved_vendor: { + title: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), + description: "", + subject: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), + key: "parts_not_recieved_vendor", + idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "purchases", + }, + scoreboard_detail: { + title: i18n.t("reportcenter.templates.scoreboard_detail"), + description: "", + subject: i18n.t("reportcenter.templates.scoreboard_detail"), + key: "scoreboard_detail", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.scoreboard"), + field: i18n.t("scoreboard.fields.date"), + }, + group: "payroll", + }, + scoreboard_summary: { + title: i18n.t("reportcenter.templates.scoreboard_summary"), + description: "", + subject: i18n.t("reportcenter.templates.scoreboard_summary"), + key: "scoreboard_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.scoreboard"), + field: i18n.t("scoreboard.fields.date"), + }, + group: "payroll", + }, + anticipated_revenue: { + title: i18n.t("reportcenter.templates.anticipated_revenue"), + description: "", + subject: i18n.t("reportcenter.templates.anticipated_revenue"), + key: "anticipated_revenue", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.scheduled_completion"), // Also date invoice. + }, + group: "sales", + }, + csi: { + title: i18n.t("reportcenter.templates.csi"), + description: "", + subject: i18n.t("reportcenter.templates.csi"), + key: "csi", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.csi"), + field: i18n.t("csi.fields.created_at"), // Also date invoice. + }, + group: "customers", + }, + estimates_written_converted: { + title: i18n.t("reportcenter.templates.estimates_written_converted"), + description: "", + subject: i18n.t( + "reportcenter.templates.estimates_written_converted" + ), + key: "estimates_written_converted", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: + i18n.t("jobs.fields.date_open") + + "/" + + i18n.t("jobs.fields.date_invoiced"), // Also date invoice. + }, + group: "sales", + }, + credits_not_received_date_vendorid: { + title: i18n.t( + "reportcenter.templates.credits_not_received_date_vendorid" + ), + subject: i18n.t( + "reportcenter.templates.credits_not_received_date_vendorid" + ), + key: "credits_not_received_date_vendorid", + idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "purchases", + }, + jobs_reconcile: { + title: i18n.t("reportcenter.templates.jobs_reconcile"), + subject: i18n.t("reportcenter.templates.jobs_reconcile"), + key: "jobs_reconcile", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + parts_received_not_scheduled: { + title: i18n.t( + "reportcenter.templates.parts_received_not_scheduled" + ), + subject: i18n.t( + "reportcenter.templates.parts_received_not_scheduled" + ), + key: "parts_received_not_scheduled", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + psr_by_make: { + title: i18n.t("reportcenter.templates.psr_by_make"), + subject: i18n.t("reportcenter.templates.psr_by_make"), + key: "psr_by_make", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + cycle_time_analysis: { + title: i18n.t("reportcenter.templates.cycle_time_analysis"), + subject: i18n.t("reportcenter.templates.cycle_time_analysis"), + key: "cycle_time_analysis", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_completion"), + }, + group: "jobs", + }, + returns_grouped_by_vendor_summary: { + title: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_summary" + ), + subject: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_summary" + ), + key: "returns_grouped_by_vendor_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "jobs", + }, + returns_grouped_by_vendor_detailed: { + title: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_detailed" + ), + subject: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_detailed" + ), + key: "returns_grouped_by_vendor_detailed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "jobs", + }, + scheduled_parts_list: { + title: i18n.t("reportcenter.templates.scheduled_parts_list"), + subject: i18n.t("reportcenter.templates.scheduled_parts_list"), + key: "scheduled_parts_list", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.scheduled_in"), + }, + group: "jobs", + }, + jobs_completed_not_invoiced: { + title: i18n.t("reportcenter.templates.jobs_completed_not_invoiced"), + subject: i18n.t( + "reportcenter.templates.jobs_completed_not_invoiced" + ), + key: "jobs_completed_not_invoiced", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + jobs_invoiced_not_exported: { + title: i18n.t("reportcenter.templates.jobs_invoiced_not_exported"), + subject: i18n.t( + "reportcenter.templates.jobs_invoiced_not_exported" + ), + key: "jobs_invoiced_not_exported", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + purchase_return_ratio_grouped_by_vendor_detail: { + title: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" + ), + subject: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" + ), + key: "purchase_return_ratio_grouped_by_vendor_detail", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.bills"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + purchase_return_ratio_grouped_by_vendor_summary: { + title: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" + ), + subject: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" + ), + key: "purchase_return_ratio_grouped_by_vendor_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.bills"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + production_over_time: { + title: i18n.t("reportcenter.templates.production_over_time"), + subject: i18n.t("reportcenter.templates.production_over_time"), + key: "production_over_time", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_in"), + }, + group: "jobs", + }, + customer_list: { + title: i18n.t("reportcenter.templates.customer_list"), + subject: i18n.t("reportcenter.templates.customer_list"), + key: "customer_list", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "customers", + }, + } + : {}), + ...(!type || type === "courtesycarcontract" + ? { + courtesy_car_contract: { + title: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_contract" + ), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_contract" + ), + key: "courtesy_car_contract", + disabled: false, + }, + courtesy_car_terms: { + title: i18n.t("printcenter.courtesycarcontract.courtesy_car_terms"), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_terms" + ), + key: "courtesy_car_terms", + disabled: false, + }, + courtesy_car_impound: { + title: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_impound" + ), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_impound" + ), + key: "courtesy_car_impound", + disabled: false, + }, + } + : {}), + ...(!type || type === "courtesycar" + ? { + courtesy_car_inventory: { + title: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_inventory" + ), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_inventory" + ), + key: "courtesy_car_inventory", + disabled: false, + }, + } + : {}), + ...(!type || type === "bill" + ? { + inhouse_invoice: { + title: i18n.t("printcenter.bills.inhouse_invoice"), + description: "Est Detail", + subject: i18n.t("printcenter.bills.inhouse_invoice"), + key: "inhouse_invoice", + disabled: false, + }, + } + : {}), + ...(!type || type === "timeticket" + ? { + // timetickets: { + // title: i18n.t("printcenter.timetickets.timetickets"), + // description: "Est Detail", + // subject: `${i18n.t("printcenter.timetickets.timetickets")} - ${ + // context && context.job && context.job.ro_number + // }`, + // key: "timetickets", + // disabled: false, + // }, + } + : {}), + ...(!type || type === "vendor" + ? { + purchases_by_vendor_detailed: { + title: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), + description: "Est Detail", + subject: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), + key: "purchases_by_vendor_detailed", + disabled: false, + }, + purchases_by_vendor_summary: { + title: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), + description: "Est Detail", + subject: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), + key: "purchases_by_vendor_summary", + disabled: false, + }, + } + : {}), + ...(!type || type === "production" + ? { + production_by_last_name: { + title: i18n.t("reportcenter.templates.production_by_last_name"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_last_name"), + key: "production_by_last_name", + //idtype: "vendor", + disabled: false, + }, + production_by_repair_status: { + title: i18n.t("reportcenter.templates.production_by_repair_status"), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_repair_status" + ), + key: "production_by_repair_status", + //idtype: "vendor", + disabled: false, + }, + production_by_target_date: { + title: i18n.t("reportcenter.templates.production_by_target_date"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_target_date"), + key: "production_by_target_date", + //idtype: "vendor", + disabled: false, + }, + production_by_ro: { + title: i18n.t("reportcenter.templates.production_by_ro"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_ro"), + key: "production_by_ro", + //idtype: "vendor", + disabled: false, + }, + production_by_csr: { + title: i18n.t("reportcenter.templates.production_by_csr"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_csr"), + key: "production_by_csr", + //idtype: "vendor", + disabled: false, + }, + production_by_category: { + title: i18n.t("reportcenter.templates.production_by_category"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_category"), + key: "production_by_category", + //idtype: "vendor", + disabled: false, + }, + production_by_technician: { + title: i18n.t("reportcenter.templates.production_by_technician"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_technician"), + key: "production_by_technician", + //idtype: "vendor", + disabled: false, + }, + } + : {}), + ...(!type || type === "special" + ? { + ca_bc_etf_table: { + title: i18n.t("printcenter.payments.ca_bc_etf_table"), + description: "Est Detail", + subject: i18n.t("printcenter.payments.ca_bc_etf_table"), + key: "ca_bc_etf_table", + disabled: false, + }, + exported_payroll: { + title: i18n.t("printcenter.payments.exported_payroll"), + description: "Est Detail", + subject: i18n.t("printcenter.payments.exported_payroll"), + key: "exported_payroll", + disabled: false, + }, + attendance_detail_csv: { + title: i18n.t("printcenter.special.attendance_detail_csv"), + description: "Est Detail", + subject: i18n.t("printcenter.special.attendance_detail_csv"), + key: "attendance_detail_csv", + disabled: false, + }, + production_by_technician_one: { + title: i18n.t( + "reportcenter.templates.production_by_technician_one" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_technician_one" + ), + key: "production_by_technician_one", + //idtype: "vendor", + disabled: false, + }, + production_by_category_one: { + title: i18n.t("reportcenter.templates.production_by_category_one"), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_category_one" + ), + key: "production_by_category_one", + //idtype: "vendor", + disabled: false, + }, + production_by_repair_status_one: { + title: i18n.t( + "reportcenter.templates.production_by_repair_status_one" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_repair_status_one" + ), + key: "production_by_repair_status_one", + //idtype: "vendor", + disabled: false, + }, + } + : {}), + }; }; From 7725080a113964abd86362d32ef5f7d0bf8540a9 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Thu, 20 Apr 2023 09:33:22 -0700 Subject: [PATCH 07/44] IO-2235 Exported GSR to Excel For Morrey Body Shop --- .../report-center-modal.component.jsx | 498 +++++++++--------- client/src/translations/en_us/common.json | 3 + client/src/translations/es/common.json | 3 + client/src/translations/fr/common.json | 3 + client/src/utils/TemplateConstants.js | 24 + 5 files changed, 296 insertions(+), 235 deletions(-) diff --git a/client/src/components/report-center-modal/report-center-modal.component.jsx b/client/src/components/report-center-modal/report-center-modal.component.jsx index e0db4f516..f2906c338 100644 --- a/client/src/components/report-center-modal/report-center-modal.component.jsx +++ b/client/src/components/report-center-modal/report-center-modal.component.jsx @@ -1,14 +1,14 @@ import { useLazyQuery } from "@apollo/client"; import { - Button, - Card, - Col, - DatePicker, - Form, - Input, - Radio, - Row, - Typography, + Button, + Card, + Col, + DatePicker, + Form, + Input, + Radio, + Row, + Typography, } from "antd"; import _ from "lodash"; import moment from "moment"; @@ -26,253 +26,281 @@ import EmployeeSearchSelect from "../employee-search-select/employee-search-sele import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; import "./report-center-modal.styles.scss"; const mapStateToProps = createStructuredSelector({ - reportCenterModal: selectReportCenter, + reportCenterModal: selectReportCenter, }); const mapDispatchToProps = (dispatch) => ({ - //setUserLanguage: language => dispatch(setUserLanguage(language)) + //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect( - mapStateToProps, - mapDispatchToProps + mapStateToProps, + mapDispatchToProps )(ReportCenterModalComponent); export function ReportCenterModalComponent({ reportCenterModal }) { - const [form] = Form.useForm(); - const [search, setSearch] = useState(""); + const [form] = Form.useForm(); + const [search, setSearch] = useState(""); - const [loading, setLoading] = useState(false); - const { t } = useTranslation(); - const Templates = TemplateList("report_center"); - const ReportsList = Object.keys(Templates).map((key) => { - return Templates[key]; - }); - const { visible } = reportCenterModal; + const [loading, setLoading] = useState(false); + const { t } = useTranslation(); + const Templates = TemplateList("report_center"); + const ReportsList = Object.keys(Templates).map((key) => { + return Templates[key]; + }); + const { visible } = reportCenterModal; - const [callVendorQuery, { data: vendorData, called: vendorCalled }] = - useLazyQuery(QUERY_ALL_VENDORS, { - skip: !( - visible && - Templates[form.getFieldValue("key")] && - Templates[form.getFieldValue("key")].idtype - ), - }); + const [callVendorQuery, { data: vendorData, called: vendorCalled }] = + useLazyQuery(QUERY_ALL_VENDORS, { + skip: !( + visible && + Templates[form.getFieldValue("key")] && + Templates[form.getFieldValue("key")].idtype + ), + }); - const [callEmployeeQuery, { data: employeeData, called: employeeCalled }] = - useLazyQuery(QUERY_ACTIVE_EMPLOYEES, { - skip: !( - visible && - Templates[form.getFieldValue("key")] && - Templates[form.getFieldValue("key")].idtype - ), - }); + const [callEmployeeQuery, { data: employeeData, called: employeeCalled }] = + useLazyQuery(QUERY_ACTIVE_EMPLOYEES, { + skip: !( + visible && + Templates[form.getFieldValue("key")] && + Templates[form.getFieldValue("key")].idtype + ), + }); - const handleFinish = async (values) => { - setLoading(true); - const start = values.dates[0]; - const end = values.dates[1]; - const { id } = values; + const handleFinish = async (values) => { + setLoading(true); + const start = values.dates[0]; + const end = values.dates[1]; + const { id } = values; - await GenerateDocument( - { - name: values.key, - variables: { - ...(start - ? { start: moment(start).startOf("day").format("YYYY-MM-DD") } - : {}), - ...(end - ? { end: moment(end).endOf("day").format("YYYY-MM-DD") } - : {}), - ...(start ? { starttz: moment(start).startOf("day") } : {}), - ...(end ? { endtz: moment(end).endOf("day") } : {}), + await GenerateDocument( + { + name: values.key, + variables: { + ...(start + ? { start: moment(start).startOf("day").format("YYYY-MM-DD") } + : {}), + ...(end + ? { end: moment(end).endOf("day").format("YYYY-MM-DD") } + : {}), + ...(start ? { starttz: moment(start).startOf("day") } : {}), + ...(end ? { endtz: moment(end).endOf("day") } : {}), - ...(id ? { id: id } : {}), - }, - }, - { - to: values.to, - subject: Templates[values.key]?.subject, - }, - values.sendby === "email" ? "e" : "p", - id - ); - setLoading(false); - }; + ...(id ? { id: id } : {}), + }, + }, + { + to: values.to, + subject: Templates[values.key]?.subject, + }, + values.sendby === "excel" ? "x" : values.sendby === "email" ? "e" : "p", + id + ); + setLoading(false); + }; - const FilteredReportsList = - search !== "" - ? ReportsList.filter((r) => - r.title.toLowerCase().includes(search.toLowerCase()) - ) - : ReportsList; + const FilteredReportsList = + search !== "" + ? ReportsList.filter((r) => + r.title.toLowerCase().includes(search.toLowerCase()) + ) + : ReportsList; - //Group it, create cards, and then filter out. + //Group it, create cards, and then filter out. - const grouped = _.groupBy(FilteredReportsList, "group"); + const grouped = _.groupBy(FilteredReportsList, "group"); - return ( -
-
- setSearch(e.target.value)} - value={search} - /> - - - {/* {Object.keys(Templates).map((key) => ( + return ( +
+ + setSearch(e.target.value)} + value={search} + /> + + + {/* {Object.keys(Templates).map((key) => ( {Templates[key].title} ))} */} - - {Object.keys(grouped).map((key) => ( - - - - {t(`reportcenter.labels.groups.${key}`)} - -
    - {grouped[key].map((item) => ( -
  • - - {item.title} - -
  • - ))} -
-
- - ))} -
-
-
- - {() => { - const key = form.getFieldValue("key"); - if (!key) return null; - //Kind of Id - const rangeFilter = Templates[key] && Templates[key].rangeFilter; - if (!rangeFilter) return null; - return ( -
- {t("reportcenter.labels.filterson", { - object: rangeFilter.object, - field: rangeFilter.field, - })} -
- ); - }} -
- - {() => { - const key = form.getFieldValue("key"); - const currentId = form.getFieldValue("id"); - if (!key) return null; - //Kind of Id - const idtype = Templates[key] && Templates[key].idtype; - if (!idtype && currentId) { - form.setFieldsValue({ id: null }); - return null; - } - if (!vendorCalled && idtype === "vendor") callVendorQuery(); - if (!employeeCalled && idtype === "employee") callEmployeeQuery(); - if (idtype === "vendor") - return ( - - - - ); - if (idtype === "employee") - return ( - - - - ); - else return null; - }} - - - - - - - {t("general.labels.email")} - {t("general.labels.print")} - - + + {Object.keys(grouped).map((key) => ( + + + + {t(`reportcenter.labels.groups.${key}`)} + +
    + {grouped[key].map((item) => ( +
  • + + {item.title} + +
  • + ))} +
+
+ + ))} +
+ + + + {() => { + const key = form.getFieldValue("key"); + if (!key) return null; + //Kind of Id + const rangeFilter = Templates[key] && Templates[key].rangeFilter; + if (!rangeFilter) return null; + return ( +
+ {t("reportcenter.labels.filterson", { + object: rangeFilter.object, + field: rangeFilter.field, + })} +
+ ); + }} +
+ + {() => { + const key = form.getFieldValue("key"); + const currentId = form.getFieldValue("id"); + if (!key) return null; + //Kind of Id + const idtype = Templates[key] && Templates[key].idtype; + if (!idtype && currentId) { + form.setFieldsValue({ id: null }); + return null; + } + if (!vendorCalled && idtype === "vendor") callVendorQuery(); + if (!employeeCalled && idtype === "employee") callEmployeeQuery(); + if (idtype === "vendor") + return ( + + + + ); + if (idtype === "employee") + return ( + + + + ); + else return null; + }} + + + + + + {() => { + const key = form.getFieldValue("key"); + const currentId = form.getFieldValue("id"); + if (!key) return null; + //Kind of Id + const idtype = Templates[key] && Templates[key].idtype; + if (!idtype && currentId) { + form.setFieldsValue({ id: null }); + return null; + } + if (idtype === "excel") + return ( + + + {t("general.labels.excel")} + + + ); + if (idtype !== "excel") + return ( + + + {t("general.labels.email")} + {t("general.labels.print")} + + + ); + }} + -
- -
- -
- ); +
+ +
+ +
+ ); } diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 725bf69e5..0249aba70 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1015,6 +1015,7 @@ "created_at": "Created At", "email": "Email", "errors": "Errors", + "excel": "Excel", "exceptiontitle": "An error has occurred.", "friday": "Friday", "globalsearch": "Global Search", @@ -2445,6 +2446,8 @@ "export_payables": "Export Log - Payables", "export_payments": "Export Log - Payments", "export_receivables": "Export Log - Receivables", + "exported_gsr_by_ro": "Exported Gross Sales - Excel", + "exported_gsr_by_ro_labor": "Exported Gross Sales (Labor) - Excel", "gsr_by_atp": "", "gsr_by_ats": "Gross Sales by ATS", "gsr_by_category": "Gross Sales by Category", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 0af8515dd..5d2ed6839 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1015,6 +1015,7 @@ "created_at": "", "email": "", "errors": "", + "excel": "", "exceptiontitle": "", "friday": "", "globalsearch": "", @@ -2445,6 +2446,8 @@ "export_payables": "", "export_payments": "", "export_receivables": "", + "exported_gsr_by_ro": "", + "exported_gsr_by_ro_labor": "", "gsr_by_atp": "", "gsr_by_ats": "", "gsr_by_category": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index c474c6c27..66c8ea469 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1015,6 +1015,7 @@ "created_at": "", "email": "", "errors": "", + "excel": "", "exceptiontitle": "", "friday": "", "globalsearch": "", @@ -2445,6 +2446,8 @@ "export_payables": "", "export_payments": "", "export_receivables": "", + "exported_gsr_by_ro": "", + "exported_gsr_by_ro_labor": "", "gsr_by_atp": "", "gsr_by_ats": "", "gsr_by_category": "", diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js index e2aeb1132..ee36e687e 100644 --- a/client/src/utils/TemplateConstants.js +++ b/client/src/utils/TemplateConstants.js @@ -1857,6 +1857,30 @@ export const TemplateList = (type, context) => { }, group: "customers", }, + exported_gsr_by_ro: { + title: i18n.t("reportcenter.templates.exported_gsr_by_ro"), + subject: i18n.t("reportcenter.templates.exported_gsr_by_ro"), + key: "exported_gsr_by_ro", + idtype: "excel", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_exported"), + }, + group: "sales", + }, + exported_gsr_by_ro_labor: { + title: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"), + subject: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"), + key: "exported_gsr_by_ro_labor", + idtype: "excel", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_exported"), + }, + group: "sales", + }, } : {}), ...(!type || type === "courtesycarcontract" From 2a0ad46eeaa8d3648787133321702fa6366c8569 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Thu, 20 Apr 2023 09:46:21 -0700 Subject: [PATCH 08/44] IO-2235 Changes in Prettier --- .../report-center-modal.component.jsx | 526 +++++++++--------- 1 file changed, 263 insertions(+), 263 deletions(-) diff --git a/client/src/components/report-center-modal/report-center-modal.component.jsx b/client/src/components/report-center-modal/report-center-modal.component.jsx index f2906c338..255273419 100644 --- a/client/src/components/report-center-modal/report-center-modal.component.jsx +++ b/client/src/components/report-center-modal/report-center-modal.component.jsx @@ -1,14 +1,14 @@ import { useLazyQuery } from "@apollo/client"; import { - Button, - Card, - Col, - DatePicker, - Form, - Input, - Radio, - Row, - Typography, + Button, + Card, + Col, + DatePicker, + Form, + Input, + Radio, + Row, + Typography, } from "antd"; import _ from "lodash"; import moment from "moment"; @@ -26,281 +26,281 @@ import EmployeeSearchSelect from "../employee-search-select/employee-search-sele import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; import "./report-center-modal.styles.scss"; const mapStateToProps = createStructuredSelector({ - reportCenterModal: selectReportCenter, + reportCenterModal: selectReportCenter, }); const mapDispatchToProps = (dispatch) => ({ - //setUserLanguage: language => dispatch(setUserLanguage(language)) + //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect( - mapStateToProps, - mapDispatchToProps + mapStateToProps, + mapDispatchToProps )(ReportCenterModalComponent); export function ReportCenterModalComponent({ reportCenterModal }) { - const [form] = Form.useForm(); - const [search, setSearch] = useState(""); + const [form] = Form.useForm(); + const [search, setSearch] = useState(""); - const [loading, setLoading] = useState(false); - const { t } = useTranslation(); - const Templates = TemplateList("report_center"); - const ReportsList = Object.keys(Templates).map((key) => { - return Templates[key]; - }); - const { visible } = reportCenterModal; + const [loading, setLoading] = useState(false); + const { t } = useTranslation(); + const Templates = TemplateList("report_center"); + const ReportsList = Object.keys(Templates).map((key) => { + return Templates[key]; + }); + const { visible } = reportCenterModal; - const [callVendorQuery, { data: vendorData, called: vendorCalled }] = - useLazyQuery(QUERY_ALL_VENDORS, { - skip: !( - visible && - Templates[form.getFieldValue("key")] && - Templates[form.getFieldValue("key")].idtype - ), - }); + const [callVendorQuery, { data: vendorData, called: vendorCalled }] = + useLazyQuery(QUERY_ALL_VENDORS, { + skip: !( + visible && + Templates[form.getFieldValue("key")] && + Templates[form.getFieldValue("key")].idtype + ), + }); - const [callEmployeeQuery, { data: employeeData, called: employeeCalled }] = - useLazyQuery(QUERY_ACTIVE_EMPLOYEES, { - skip: !( - visible && - Templates[form.getFieldValue("key")] && - Templates[form.getFieldValue("key")].idtype - ), - }); + const [callEmployeeQuery, { data: employeeData, called: employeeCalled }] = + useLazyQuery(QUERY_ACTIVE_EMPLOYEES, { + skip: !( + visible && + Templates[form.getFieldValue("key")] && + Templates[form.getFieldValue("key")].idtype + ), + }); - const handleFinish = async (values) => { - setLoading(true); - const start = values.dates[0]; - const end = values.dates[1]; - const { id } = values; + const handleFinish = async (values) => { + setLoading(true); + const start = values.dates[0]; + const end = values.dates[1]; + const { id } = values; - await GenerateDocument( - { - name: values.key, - variables: { - ...(start - ? { start: moment(start).startOf("day").format("YYYY-MM-DD") } - : {}), - ...(end - ? { end: moment(end).endOf("day").format("YYYY-MM-DD") } - : {}), - ...(start ? { starttz: moment(start).startOf("day") } : {}), - ...(end ? { endtz: moment(end).endOf("day") } : {}), + await GenerateDocument( + { + name: values.key, + variables: { + ...(start + ? { start: moment(start).startOf("day").format("YYYY-MM-DD") } + : {}), + ...(end + ? { end: moment(end).endOf("day").format("YYYY-MM-DD") } + : {}), + ...(start ? { starttz: moment(start).startOf("day") } : {}), + ...(end ? { endtz: moment(end).endOf("day") } : {}), - ...(id ? { id: id } : {}), - }, - }, - { - to: values.to, - subject: Templates[values.key]?.subject, - }, - values.sendby === "excel" ? "x" : values.sendby === "email" ? "e" : "p", - id - ); - setLoading(false); - }; + ...(id ? { id: id } : {}), + }, + }, + { + to: values.to, + subject: Templates[values.key]?.subject, + }, + values.sendby === "excel" ? "x" : values.sendby === "email" ? "e" : "p", + id + ); + setLoading(false); + }; - const FilteredReportsList = - search !== "" - ? ReportsList.filter((r) => - r.title.toLowerCase().includes(search.toLowerCase()) - ) - : ReportsList; + const FilteredReportsList = + search !== "" + ? ReportsList.filter((r) => + r.title.toLowerCase().includes(search.toLowerCase()) + ) + : ReportsList; - //Group it, create cards, and then filter out. + //Group it, create cards, and then filter out. - const grouped = _.groupBy(FilteredReportsList, "group"); + const grouped = _.groupBy(FilteredReportsList, "group"); - return ( -
-
- setSearch(e.target.value)} - value={search} - /> - - - {/* {Object.keys(Templates).map((key) => ( + return ( +
+ + setSearch(e.target.value)} + value={search} + /> + + + {/* {Object.keys(Templates).map((key) => ( {Templates[key].title} ))} */} - - {Object.keys(grouped).map((key) => ( - - - - {t(`reportcenter.labels.groups.${key}`)} - -
    - {grouped[key].map((item) => ( -
  • - - {item.title} - -
  • - ))} -
-
- - ))} -
-
-
- - {() => { - const key = form.getFieldValue("key"); - if (!key) return null; - //Kind of Id - const rangeFilter = Templates[key] && Templates[key].rangeFilter; - if (!rangeFilter) return null; - return ( -
- {t("reportcenter.labels.filterson", { - object: rangeFilter.object, - field: rangeFilter.field, - })} -
- ); - }} -
- - {() => { - const key = form.getFieldValue("key"); - const currentId = form.getFieldValue("id"); - if (!key) return null; - //Kind of Id - const idtype = Templates[key] && Templates[key].idtype; - if (!idtype && currentId) { - form.setFieldsValue({ id: null }); - return null; - } - if (!vendorCalled && idtype === "vendor") callVendorQuery(); - if (!employeeCalled && idtype === "employee") callEmployeeQuery(); - if (idtype === "vendor") - return ( - - - - ); - if (idtype === "employee") - return ( - - - - ); - else return null; - }} - - - - - - {() => { - const key = form.getFieldValue("key"); - const currentId = form.getFieldValue("id"); - if (!key) return null; - //Kind of Id - const idtype = Templates[key] && Templates[key].idtype; - if (!idtype && currentId) { - form.setFieldsValue({ id: null }); - return null; - } - if (idtype === "excel") - return ( - - - {t("general.labels.excel")} - - - ); - if (idtype !== "excel") - return ( - - - {t("general.labels.email")} - {t("general.labels.print")} - - - ); - }} - + + {Object.keys(grouped).map((key) => ( + + + + {t(`reportcenter.labels.groups.${key}`)} + +
    + {grouped[key].map((item) => ( +
  • + + {item.title} + +
  • + ))} +
+
+ + ))} +
+ + + + {() => { + const key = form.getFieldValue("key"); + if (!key) return null; + //Kind of Id + const rangeFilter = Templates[key] && Templates[key].rangeFilter; + if (!rangeFilter) return null; + return ( +
+ {t("reportcenter.labels.filterson", { + object: rangeFilter.object, + field: rangeFilter.field, + })} +
+ ); + }} +
+ + {() => { + const key = form.getFieldValue("key"); + const currentId = form.getFieldValue("id"); + if (!key) return null; + //Kind of Id + const idtype = Templates[key] && Templates[key].idtype; + if (!idtype && currentId) { + form.setFieldsValue({ id: null }); + return null; + } + if (!vendorCalled && idtype === "vendor") callVendorQuery(); + if (!employeeCalled && idtype === "employee") callEmployeeQuery(); + if (idtype === "vendor") + return ( + + + + ); + if (idtype === "employee") + return ( + + + + ); + else return null; + }} + + + + + + {() => { + const key = form.getFieldValue("key"); + const currentId = form.getFieldValue("id"); + if (!key) return null; + //Kind of Id + const idtype = Templates[key] && Templates[key].idtype; + if (!idtype && currentId) { + form.setFieldsValue({ id: null }); + return null; + } + if (idtype === "excel") + return ( + + + {t("general.labels.excel")} + + + ); + if (idtype !== "excel") + return ( + + + {t("general.labels.email")} + {t("general.labels.print")} + + + ); + }} + -
- -
- -
- ); +
+ +
+ +
+ ); } From f080e84985c0e1a52994058147a6c9e3275b1e8d Mon Sep 17 00:00:00 2001 From: swtmply Date: Fri, 21 Apr 2023 02:56:11 +0800 Subject: [PATCH 09/44] IO-2242 added email on vendor query --- .../parts-order-list-table/parts-order-list-table.component.jsx | 2 +- client/src/graphql/bills.queries.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx b/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx index 84d73d401..ffb95adcc 100644 --- a/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx +++ b/client/src/components/parts-order-list-table/parts-order-list-table.component.jsx @@ -201,6 +201,7 @@ export function PartsOrderListTableComponent({ subject: record.return ? Templates.parts_return_slip.subject : Templates.parts_order.subject, + to: record.vendor.email, }} id={job.id} /> @@ -296,7 +297,6 @@ export function PartsOrderListTableComponent({ sortOrder: state.sortedInfo.columnKey === "quantity" && state.sortedInfo.order, }, - { title: t("parts_orders.fields.act_price"), dataIndex: "act_price", diff --git a/client/src/graphql/bills.queries.js b/client/src/graphql/bills.queries.js index f042fd7ae..4d39eda47 100644 --- a/client/src/graphql/bills.queries.js +++ b/client/src/graphql/bills.queries.js @@ -69,6 +69,7 @@ export const QUERY_BILLS_BY_JOBID = gql` vendor { id name + email } order_date deliver_by @@ -104,6 +105,7 @@ export const QUERY_BILLS_BY_JOBID = gql` vendor { id name + email } total invoice_number From d3fe2c9d06cf7cf0de7792b6691bba0629f79658 Mon Sep 17 00:00:00 2001 From: swtmply Date: Fri, 21 Apr 2023 03:37:36 +0800 Subject: [PATCH 10/44] IO-2011 removed column background color --- client/src/App/App.styles.scss | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/App/App.styles.scss b/client/src/App/App.styles.scss index bb4824cd0..2ed11cbc6 100644 --- a/client/src/App/App.styles.scss +++ b/client/src/App/App.styles.scss @@ -143,13 +143,16 @@ } } - -//Update row highlighting on production board. +//Update row highlighting on production board. .ant-table-tbody > tr.ant-table-row:hover > td { background: #eaeaea !important; } -.job-line-manual{ +.job-line-manual { color: tomato; font-style: italic; } + +td.ant-table-column-sort { + background-color: transparent; +} From 522665256e9e22797e4b280a8dae17853b3febf5 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Thu, 20 Apr 2023 12:43:06 -0700 Subject: [PATCH 11/44] IO-2335 Exported GSR to Excel Change idtype to reporttype to prevent issues later on down the road if we extend more reports to excel format --- .../report-center-modal.component.jsx | 23 +- client/src/utils/TemplateConstants.js | 4186 +++++++++-------- 2 files changed, 2105 insertions(+), 2104 deletions(-) diff --git a/client/src/components/report-center-modal/report-center-modal.component.jsx b/client/src/components/report-center-modal/report-center-modal.component.jsx index 255273419..913d27282 100644 --- a/client/src/components/report-center-modal/report-center-modal.component.jsx +++ b/client/src/components/report-center-modal/report-center-modal.component.jsx @@ -92,7 +92,11 @@ export function ReportCenterModalComponent({ reportCenterModal }) { to: values.to, subject: Templates[values.key]?.subject, }, - values.sendby === "excel" ? "x" : values.sendby === "email" ? "e" : "p", + values.sendbyexcel === "excel" + ? "x" + : values.sendby === "email" + ? "e" + : "p", id ); setLoading(false); @@ -253,27 +257,22 @@ export function ReportCenterModalComponent({ reportCenterModal }) { {() => { const key = form.getFieldValue("key"); - const currentId = form.getFieldValue("id"); - if (!key) return null; //Kind of Id - const idtype = Templates[key] && Templates[key].idtype; - if (!idtype && currentId) { - form.setFieldsValue({ id: null }); - return null; - } - if (idtype === "excel") + const reporttype = Templates[key] && Templates[key].reporttype; + + if (reporttype === "excel") return ( {t("general.labels.excel")} ); - if (idtype !== "excel") + if (reporttype !== "excel") return ( { - //const { bodyshop } = store.getState().user; + //const { bodyshop } = store.getState().user; - return { - //If there's no type or the type is job, send it back. - ...(!type || type === "job" - ? { - casl_authorization: { - title: i18n.t("printcenter.jobs.casl_authorization"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.casl_authorization"), - key: "casl_authorization", - disabled: false, - group: "authorization", - }, - fippa_authorization: { - title: i18n.t("printcenter.jobs.fippa_authorization"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.fippa_authorization"), - key: "fippa_authorization", - disabled: false, - group: "authorization", - }, - diagnostic_authorization: { - title: i18n.t("printcenter.jobs.diagnostic_authorization"), - description: "Diagnostic Authorization", - subject: i18n.t("printcenter.jobs.diagnostic_authorization"), - key: "diagnostic_authorization", - disabled: false, - group: "authorization", - }, - mechanical_authorization: { - title: i18n.t("printcenter.jobs.mechanical_authorization"), - description: "Diagnostic Authorization", - subject: i18n.t("printcenter.jobs.mechanical_authorization"), - key: "mechanical_authorization", - disabled: false, - group: "authorization", - }, - appointment_reminder: { - title: i18n.t("printcenter.jobs.appointment_reminder"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.appointment_reminder"), - key: "appointment_reminder", - disabled: false, - group: "pre", - }, - estimate_followup: { - title: i18n.t("printcenter.jobs.estimate_followup"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.estimate_followup"), - key: "estimate_followup", - disabled: false, - group: "pre", - }, - express_repair_checklist: { - title: i18n.t("printcenter.jobs.express_repair_checklist"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.express_repair_checklist"), - key: "express_repair_checklist", - disabled: false, - group: "pre", - }, - glass_express_checklist: { - title: i18n.t("printcenter.jobs.glass_express_checklist"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.glass_express_checklist"), - key: "glass_express_checklist", - 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", - subject: i18n.t("printcenter.jobs.vehicle_check_in"), - key: "vehicle_check_in", - disabled: false, - group: "pre", - }, - parts_order_history: { - title: i18n.t("printcenter.jobs.parts_order_history"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.parts_order_history"), - key: "parts_order_history", - disabled: false, - group: "ro", - }, - job_notes: { - title: i18n.t("printcenter.jobs.job_notes"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.job_notes"), - key: "job_notes", - disabled: false, - group: "ro", - }, - ro_with_description: { - title: i18n.t("printcenter.jobs.ro_with_description"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.ro_with_description"), - key: "ro_with_description", - disabled: false, - group: "ro", - }, - window_tag: { - title: i18n.t("printcenter.jobs.window_tag"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.window_tag"), - key: "window_tag", - disabled: false, - group: "ro", - }, - supplement_request: { - title: i18n.t("printcenter.jobs.supplement_request"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.supplement_request"), - key: "supplement_request", - disabled: false, - group: "ro", - }, - estimate: { - title: i18n.t("printcenter.jobs.estimate"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.estimate"), - key: "estimate", - disabled: false, - group: "ro", - }, - parts_list: { - title: i18n.t("printcenter.jobs.parts_list"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.parts_list"), - key: "parts_list", - disabled: false, - group: "ro", - }, - coversheet_portrait: { - title: i18n.t("printcenter.jobs.coversheet_portrait"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.coversheet_portrait"), - key: "coversheet_portrait", - disabled: false, - group: "ro", - }, - coversheet_landscape: { - title: i18n.t("printcenter.jobs.coversheet_landscape"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.coversheet_landscape"), - key: "coversheet_landscape", - 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", - subject: i18n.t("printcenter.jobs.worksheet_by_line_number"), - key: "worksheet_by_line_number", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation_type: { - title: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_type" - ), - description: "All Jobs Notes", - subject: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_type" - ), - key: "worksheet_sorted_by_operation_type", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation: { - title: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), - key: "worksheet_sorted_by_operation", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation_no_hours: { - title: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_no_hours" - ), - description: "All Jobs Notes", - subject: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_no_hours" - ), - key: "worksheet_sorted_by_operation_no_hours", - disabled: false, - group: "worksheet", - }, - worksheet_sorted_by_operation_part_type: { - title: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_part_type" - ), - description: "All Jobs Notes", - subject: i18n.t( - "printcenter.jobs.worksheet_sorted_by_operation_part_type" - ), - key: "worksheet_sorted_by_operation_part_type", - disabled: false, - group: "worksheet", - }, - payments_by_job: { - title: i18n.t("printcenter.jobs.payments_by_job"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.payments_by_job"), - key: "payments_by_job", - disabled: false, - group: "financial", - }, - final_invoice: { - title: i18n.t("printcenter.jobs.final_invoice"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.final_invoice"), - key: "final_invoice", - disabled: false, - group: "financial", - }, - payment_request: { - title: i18n.t("printcenter.jobs.payment_request"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.payment_request"), - key: "payment_request", - disabled: false, - group: "financial", - }, - invoice_total_payable: { - title: i18n.t("printcenter.jobs.invoice_total_payable"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.invoice_total_payable"), - key: "invoice_total_payable", - disabled: false, - group: "financial", - }, - invoice_customer_payable: { - title: i18n.t("printcenter.jobs.invoice_customer_payable"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.invoice_customer_payable"), - key: "invoice_customer_payable", - disabled: false, - group: "financial", - }, - ro_totals: { - title: i18n.t("printcenter.jobs.ro_totals"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.ro_totals"), - key: "ro_totals", - disabled: false, - group: "financial", - }, - job_costing_ro: { - title: i18n.t("printcenter.jobs.job_costing_ro"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.job_costing_ro"), - key: "job_costing_ro", - disabled: false, - group: "financial", - }, - purchases_by_ro_detail: { - title: i18n.t("printcenter.jobs.purchases_by_ro_detail"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.purchases_by_ro_detail"), - key: "purchases_by_ro_detail", - disabled: false, - group: "financial", - }, - purchases_by_ro_summary: { - title: i18n.t("printcenter.jobs.purchases_by_ro_summary"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.purchases_by_ro_summary"), - key: "purchases_by_ro_summary", - disabled: false, - group: "financial", - }, - filing_coversheet_portrait: { - title: i18n.t("printcenter.jobs.filing_coversheet_portrait"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.filing_coversheet_portrait"), - key: "filing_coversheet_portrait", - disabled: false, - group: "post", - }, - filing_coversheet_landscape: { - title: i18n.t("printcenter.jobs.filing_coversheet_landscape"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.filing_coversheet_landscape"), - key: "filing_coversheet_landscape", - disabled: false, - group: "post", - }, - qc_sheet: { - title: i18n.t("printcenter.jobs.qc_sheet"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.qc_sheet"), - key: "qc_sheet", - disabled: false, - group: "post", - }, - vehicle_delivery_check: { - title: i18n.t("printcenter.jobs.vehicle_delivery_check"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.vehicle_delivery_check"), - key: "vehicle_delivery_check", - disabled: false, - group: "post", - }, - guarantee: { - title: i18n.t("printcenter.jobs.guarantee"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.guarantee"), - key: "guarantee", - disabled: false, - group: "post", - }, - csi_invitation: { - title: i18n.t("printcenter.jobs.csi_invitation"), - description: "CSI invite", - key: "csi_invitation", - subject: i18n.t("printcenter.jobs.csi_invitation"), - disabled: false, - group: "post", - }, - window_tag_sublet: { - title: i18n.t("printcenter.jobs.window_tag_sublet"), - description: "Window Tag Sublet", - key: "window_tag_sublet", - subject: i18n.t("printcenter.jobs.window_tag_sublet"), - disabled: false, - group: "ro", - }, - thank_you_ro: { - title: i18n.t("printcenter.jobs.thank_you_ro"), - description: "Thank You Letter by RO", - key: "thank_you_ro", - subject: i18n.t("printcenter.jobs.thank_you_ro"), - disabled: false, - group: "post", - }, - parts_label_single: { - title: i18n.t("printcenter.jobs.parts_label_single"), - description: "Thank You Letter by RO", - key: "parts_label_single", - subject: i18n.t("printcenter.jobs.parts_label_single"), - disabled: false, - group: "ro", - ignoreCustomMargins: true, - }, - envelope_return_address: { - title: i18n.t("printcenter.jobs.envelope_return_address"), - description: "All Jobs Notes", - subject: i18n.t("printcenter.jobs.envelope_return_address"), - key: "envelope_return_address", - disabled: false, - group: "ro", - ignoreCustomMargins: true, - }, - sgi_certificate_of_repairs: { - title: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), - description: "Thank You Letter by RO", - key: "sgi_certificate_of_repairs", - subject: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), - disabled: false, - group: "ro", - regions: { - CA_SK: true, - }, - }, - sgi_windshield_auth: { - title: i18n.t("printcenter.jobs.sgi_windshield_auth"), - description: "Thank You Letter by RO", - key: "sgi_windshield_auth", - subject: i18n.t("printcenter.jobs.sgi_windshield_auth"), - disabled: false, - group: "pre", - regions: { - CA_SK: true, - }, - }, - mpi_final_acct_sheet: { - title: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), - description: "Thank You Letter by RO", - key: "mpi_final_acct_sheet", - subject: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), - disabled: false, - group: "post", - regions: { - CA_MB: true, - }, - }, - mpi_eglass_auth: { - title: i18n.t("printcenter.jobs.mpi_eglass_auth"), - description: "Thank You Letter by RO", - key: "mpi_eglass_auth", - subject: i18n.t("printcenter.jobs.mpi_eglass_auth"), - disabled: false, - group: "pre", - regions: { - CA_MB: true, - }, - }, - mpi_animal_checklist: { - title: i18n.t("printcenter.jobs.mpi_animal_checklist"), - description: "Thank You Letter by RO", - key: "mpi_animal_checklist", - subject: i18n.t("printcenter.jobs.mpi_animal_checklist"), - disabled: false, - group: "pre", - regions: { - CA_MB: true, - }, - }, - ab_proof_of_loss: { - title: i18n.t("printcenter.jobs.ab_proof_of_loss"), - description: "Thank You Letter by RO", - key: "ab_proof_of_loss", - subject: i18n.t("printcenter.jobs.ab_proof_of_loss"), - disabled: false, - group: "pre", - regions: { - CA_AB: true, - }, - }, - // parts_label_multi: { - // title: i18n.t("printcenter.jobs.parts_label_multi"), - // description: "Thank You Letter by RO", - // key: "parts_label_multi", - // subject: i18n.t("printcenter.jobs.parts_label_multi"), - // disabled: false, - // group: "ro", - // }, - iou_form: { - title: i18n.t("printcenter.jobs.iou_form"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.iou_form"), - key: "iou_form", - disabled: false, - group: "post", - }, - lag_time_ro: { - title: i18n.t("printcenter.jobs.lag_time_ro"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.lag_time_ro"), - key: "lag_time_ro", - disabled: false, - group: "ro", - }, - rental_reservation: { - title: i18n.t("printcenter.jobs.rental_reservation"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.rental_reservation"), - key: "rental_reservation", - disabled: false, - group: "pre", - }, - timetickets_ro: { - title: i18n.t("printcenter.jobs.timetickets_ro"), - description: "CASL Authorization", - subject: i18n.t("printcenter.jobs.timetickets_ro"), - key: "timetickets_ro", - disabled: false, - group: "financial", - }, - dms_posting_sheet: { - title: i18n.t("printcenter.jobs.dms_posting_sheet"), - description: "DMS Posting Sheet", - subject: i18n.t("printcenter.jobs.dms_posting_sheet"), - key: "dms_posting_sheet", - disabled: false, - group: "financial", - }, - } - : {}), - ...(!type || type === "job_special" - ? { - special_thirdpartypayer: { - title: i18n.t("printcenter.jobs.thirdpartypayer"), - description: "CSI invite", - key: "special_thirdpartypayer", - disabled: false, - }, - folder_label_multiple: { - title: i18n.t("printcenter.jobs.folder_label_multiple"), - description: "Folder Label Multiple", - key: "folder_label_multiple", - disabled: false, - }, - parts_label_multiple: { - title: i18n.t("printcenter.jobs.parts_label_multiple"), - description: "Parts Label Multiple", - key: "parts_label_multiple", - disabled: false, - }, - parts_invoice_label_single: { - title: i18n.t("printcenter.jobs.parts_invoice_label_single"), - description: "Parts Label Multiple", - key: "parts_invoice_label_single", - disabled: false, - ignoreCustomMargins: true, - }, - csi_invitation_action: { - title: i18n.t("printcenter.jobs.csi_invitation_action"), - description: "CSI invite", - key: "csi_invitation_action", - subject: i18n.t("printcenter.jobs.csi_invitation_action"), - disabled: false, - }, - individual_job_note: { - title: i18n.t("printcenter.jobs.individual_job_note"), - description: "CSI invite", - key: "individual_job_note", - subject: i18n.t("printcenter.jobs.individual_job_note", { - ro_number: (context && context.ro_number) || "", - }), - disabled: false, - }, - } - : {}), - ...(!type || type === "appointment" - ? { - appointment_confirmation: { - title: i18n.t("printcenter.appointments.appointment_confirmation"), - description: "Appointment Confirmation", - subject: i18n.t( - "printcenter.appointments.appointment_confirmation" - ), - key: "appointment_confirmation", - disabled: false, - }, - } - : {}), - ...(!type || type === "partsorder" - ? { - parts_order: { - title: i18n.t("printcenter.jobs.parts_order"), - description: "Parts Order", - key: "parts_order", - subject: i18n.t("printcenter.subjects.jobs.parts_order", { - ro_number: context && context.job && context.job.ro_number, - name: ( - (context && context.job && context.job.ownr_ln) || - (context && context.job && context.job.ownr_co_nm) || - "" - ).trim(), - }), - disabled: false, - }, - sublet_order: { - title: i18n.t("printcenter.jobs.sublet_order"), - description: "Parts Order", - key: "sublet_order", - subject: i18n.t("printcenter.subjects.jobs.sublet_order", { - ro_number: context && context.job && context.job.ro_number, - name: ( - (context && context.job && context.job.ownr_ln) || - (context && context.job && context.job.ownr_co_nm) || - "" - ).trim(), - }), - disabled: false, - }, - parts_return_slip: { - title: i18n.t("printcenter.jobs.parts_return_slip"), - subject: i18n.t("printcenter.jobs.parts_return_slip"), - description: "Parts Return", - key: "parts_return_slip", - disabled: false, - }, - } - : {}), - ...(!type || type === "payment" - ? { - payment_receipt: { - title: i18n.t("printcenter.jobs.payment_receipt"), - description: "Payment Receipt", - subject: i18n.t("printcenter.jobs.payment_receipt"), - key: "payment_receipt", - disabled: false, - }, - } - : {}), - ...(!type || type === "csi" ? {} : {}), - ...(!type || type === "report_center" - ? { - hours_sold_detail_closed: { - title: i18n.t("reportcenter.templates.hours_sold_detail_closed"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_detail_closed"), - key: "hours_sold_detail_closed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_closed_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_ins_co" - ), - key: "hours_sold_detail_closed_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_closed: { - title: i18n.t("reportcenter.templates.hours_sold_summary_closed"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_summary_closed"), - key: "hours_sold_summary_closed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_closed_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_ins_co" - ), - key: "hours_sold_summary_closed_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_open: { - title: i18n.t("reportcenter.templates.hours_sold_detail_open"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_detail_open"), - key: "hours_sold_detail_open", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - hours_sold_detail_open_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_open_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_open_ins_co" - ), - key: "hours_sold_detail_open_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - hours_sold_summary_open: { - title: i18n.t("reportcenter.templates.hours_sold_summary_open"), - description: "", - subject: i18n.t("reportcenter.templates.hours_sold_summary_open"), - key: "hours_sold_summary_open", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - hours_sold_summary_open_ins_co: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_open_ins_co" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_open_ins_co" - ), - key: "hours_sold_summary_open_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - hours_sold_detail_closed_csr: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_csr" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_csr" - ), - key: "hours_sold_detail_closed_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_open_csr: { - title: i18n.t("reportcenter.templates.hours_sold_detail_open_csr"), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_open_csr" - ), - key: "hours_sold_detail_open_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - hours_sold_summary_closed_csr: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_csr" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_csr" - ), - key: "hours_sold_summary_closed_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_open_csr: { - title: i18n.t("reportcenter.templates.hours_sold_summary_open_csr"), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_open_csr" - ), - key: "hours_sold_summary_open_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_open_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_open_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_open_status" - ), - key: "hours_sold_summary_open_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_summary_closed_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_summary_closed_status" - ), - key: "hours_sold_summary_closed_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_open_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_open_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_open_status" - ), - key: "hours_sold_detail_open_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - hours_sold_detail_closed_status: { - title: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_status" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.hours_sold_detail_closed_status" - ), - key: "hours_sold_detail_closed_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - purchases_by_date_range_detail: { - title: i18n.t( - "reportcenter.templates.purchases_by_date_range_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"), - }, - group: "purchases", - }, - purchases_by_date_range_summary: { - title: i18n.t( - "reportcenter.templates.purchases_by_date_range_summary" - ), - 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"), - }, - group: "purchases", - }, - purchases_by_vendor_detailed_date_range: { - title: i18n.t( - "reportcenter.templates.purchases_by_vendor_detailed_date_range" - ), - 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"), - }, - group: "purchases", - }, - purchases_by_vendor_summary_date_range: { - title: i18n.t( - "reportcenter.templates.purchases_by_vendor_summary_date_range" - ), - 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"), - }, - group: "purchases", - }, - 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"), - }, - group: "purchases", - }, - 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"), - }, - group: "purchases", - }, - purchases_grouped_by_vendor_detailed: { - title: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_detailed" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_detailed" - ), - key: "purchases_grouped_by_vendor_detailed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - purchases_grouped_by_vendor_summary: { - title: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_summary" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.purchases_grouped_by_vendor_summary" - ), - key: "purchases_grouped_by_vendor_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - job_costing_ro_date_summary: { - title: i18n.t("reportcenter.templates.job_costing_ro_date_summary"), - description: "", - subject: i18n.t( - "reportcenter.templates.job_costing_ro_date_summary" - ), - 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"), - }, - group: "jobs", - }, - job_costing_ro_csr: { - title: i18n.t("reportcenter.templates.job_costing_ro_csr"), - description: "", - subject: i18n.t("reportcenter.templates.job_costing_ro_csr"), - key: "job_costing_ro_csr", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - job_costing_ro_ins_co: { - title: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), - key: "job_costing_ro_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - job_costing_ro_date_detail: { - title: i18n.t("reportcenter.templates.job_costing_ro_date_detail"), - description: "", - subject: i18n.t( - "reportcenter.templates.job_costing_ro_date_detail" - ), - 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"), - }, - group: "jobs", - }, - job_costing_ro_estimator: { - title: i18n.t("reportcenter.templates.job_costing_ro_estimator"), - description: "", - subject: i18n.t("reportcenter.templates.job_costing_ro_estimator"), - key: "job_costing_ro_estimator", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - payments_by_date: { - title: i18n.t("reportcenter.templates.payments_by_date"), - subject: i18n.t("reportcenter.templates.payments_by_date"), - key: "payments_by_date", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.payments"), - field: i18n.t("payments.fields.date"), - }, - group: "customers", - }, - payments_by_date_type: { - title: i18n.t("reportcenter.templates.payments_by_date_type"), - 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"), - }, - group: "customers", - }, - 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"), - }, - group: "customers", - }, - timetickets: { - title: i18n.t("reportcenter.templates.timetickets"), - subject: i18n.t("reportcenter.templates.timetickets"), - key: "timetickets", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.timetickets"), - field: i18n.t("timetickets.fields.date"), - }, - group: "payroll", - }, - timetickets_employee: { - title: i18n.t("reportcenter.templates.timetickets_employee"), - subject: i18n.t("reportcenter.templates.timetickets_employee"), - key: "timetickets_employee", - idtype: "employee", - disabled: false, - group: "payroll", - }, - attendance_detail: { - title: i18n.t("reportcenter.templates.attendance_detail"), - subject: i18n.t("reportcenter.templates.attendance_detail"), - key: "attendance_detail", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.timetickets"), - field: i18n.t("timetickets.fields.date"), - }, - group: "payroll", - }, - attendance_summary: { - title: i18n.t("reportcenter.templates.attendance_summary"), - subject: i18n.t("reportcenter.templates.attendance_summary"), - key: "attendance_summary", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.timetickets"), - field: i18n.t("timetickets.fields.date"), - }, - group: "payroll", - }, - attendance_employee: { - title: i18n.t("reportcenter.templates.attendance_employee"), - 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"), - }, - group: "payroll", - }, - timetickets_summary: { - title: i18n.t("reportcenter.templates.timetickets_summary"), - 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"), - }, - group: "payroll", - }, - estimator_detail: { - title: i18n.t("reportcenter.templates.estimator_detail"), - description: "", - subject: i18n.t("reportcenter.templates.estimator_detail"), - key: "estimator_detail", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - estimator_summary: { - title: i18n.t("reportcenter.templates.estimator_summary"), - description: "", - subject: i18n.t("reportcenter.templates.estimator_summary"), - key: "estimator_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - supplement_ratio_ins_co: { - title: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), - key: "supplement_ratio_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - credits_not_received_date: { - title: i18n.t("reportcenter.templates.credits_not_received_date"), - description: "", - subject: i18n.t("reportcenter.templates.credits_not_received_date"), - key: "credits_not_received_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "purchases", - }, - void_ros: { - title: i18n.t("reportcenter.templates.void_ros"), - description: "", - subject: i18n.t("reportcenter.templates.void_ros"), - key: "void_ros", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "sales", - }, - 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"), - }, - group: "sales", - }, - gsr_by_make: { - title: i18n.t("reportcenter.templates.gsr_by_make"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_make"), - key: "gsr_by_make", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_delivery_date: { - title: i18n.t("reportcenter.templates.gsr_by_delivery_date"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_delivery_date"), - key: "gsr_by_delivery_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_delivery"), - }, - group: "sales", - }, - gsr_by_referral: { - title: i18n.t("reportcenter.templates.gsr_by_referral"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_referral"), - key: "gsr_by_referral", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_ro: { - title: i18n.t("reportcenter.templates.gsr_by_ro"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_ro"), - key: "gsr_by_ro", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_ins_co: { - title: i18n.t("reportcenter.templates.gsr_by_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_ins_co"), - key: "gsr_by_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_exported_date: { - title: i18n.t("reportcenter.templates.gsr_by_exported_date"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_exported_date"), - key: "gsr_by_exported_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_exported"), - }, - group: "sales", - }, - gsr_by_estimator: { - title: i18n.t("reportcenter.templates.gsr_by_estimator"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_estimator"), - key: "gsr_by_estimator", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_category: { - title: i18n.t("reportcenter.templates.gsr_by_category"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_category"), - key: "gsr_by_category", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_by_ats: { - title: i18n.t("reportcenter.templates.gsr_by_ats"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_by_ats"), - key: "gsr_by_ats", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - gsr_labor_only: { - title: i18n.t("reportcenter.templates.gsr_labor_only"), - description: "", - subject: i18n.t("reportcenter.templates.gsr_labor_only"), - key: "gsr_labor_only", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - open_orders: { - title: i18n.t("reportcenter.templates.open_orders"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders"), - key: "open_orders", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - open_orders_status: { - title: i18n.t("reportcenter.templates.open_orders_status"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders_status"), - key: "open_orders_status", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - 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"), - }, - group: "jobs", - }, - open_orders_estimator: { - title: i18n.t("reportcenter.templates.open_orders_estimator"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders_estimator"), - key: "open_orders_estimator", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - open_orders_ins_co: { - title: i18n.t("reportcenter.templates.open_orders_ins_co"), - description: "", - subject: i18n.t("reportcenter.templates.open_orders_ins_co"), - key: "open_orders_ins_co", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - 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", - }, - export_payables: { - title: i18n.t("reportcenter.templates.export_payables"), - description: "", - subject: i18n.t("reportcenter.templates.export_payables"), - key: "export_payables", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.exportlogs"), - field: i18n.t("exportlogs.fields.createdat"), - }, - group: "purchases", - }, - export_payments: { - title: i18n.t("reportcenter.templates.export_payments"), - description: "", - subject: i18n.t("reportcenter.templates.export_payments"), - key: "export_payments", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.exportlogs"), - field: i18n.t("exportlogs.fields.createdat"), - }, - group: "customers", - }, - export_receivables: { - title: i18n.t("reportcenter.templates.export_receivables"), - description: "", - subject: i18n.t("reportcenter.templates.export_receivables"), - key: "export_receivables", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.exportlogs"), - field: i18n.t("exportlogs.fields.createdat"), - }, - group: "sales", - }, - parts_backorder: { - title: i18n.t("reportcenter.templates.parts_backorder"), - description: "", - subject: i18n.t("reportcenter.templates.parts_backorder"), - key: "parts_backorder", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_in"), - }, - group: "purchases", - }, - thank_you_date: { - title: i18n.t("reportcenter.templates.thank_you_date"), - description: "", - subject: i18n.t("reportcenter.templates.thank_you_date"), - key: "thank_you_date", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "customers", - }, - unclaimed_hrs: { - title: i18n.t("reportcenter.templates.unclaimed_hrs"), - description: "", - subject: i18n.t("reportcenter.templates.unclaimed_hrs"), - key: "unclaimed_hrs", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "payroll", - }, - work_in_progress_labour: { - title: i18n.t("reportcenter.templates.work_in_progress_labour"), - description: "", - subject: i18n.t("reportcenter.templates.work_in_progress_labour"), - key: "work_in_progress_labour", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - work_in_progress_payables: { - title: i18n.t("reportcenter.templates.work_in_progress_payables"), - description: "", - subject: i18n.t("reportcenter.templates.work_in_progress_payables"), - key: "work_in_progress_payables", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - lag_time: { - title: i18n.t("reportcenter.templates.lag_time"), - description: "", - subject: i18n.t("reportcenter.templates.lag_time"), - key: "lag_time", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - parts_not_recieved: { - title: i18n.t("reportcenter.templates.parts_not_recieved"), - description: "", - subject: i18n.t("reportcenter.templates.parts_not_recieved"), - key: "parts_not_recieved", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "purchases", - }, - parts_not_recieved_vendor: { - title: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), - description: "", - subject: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), - key: "parts_not_recieved_vendor", - idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "purchases", - }, - scoreboard_detail: { - title: i18n.t("reportcenter.templates.scoreboard_detail"), - description: "", - subject: i18n.t("reportcenter.templates.scoreboard_detail"), - key: "scoreboard_detail", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.scoreboard"), - field: i18n.t("scoreboard.fields.date"), - }, - group: "payroll", - }, - scoreboard_summary: { - title: i18n.t("reportcenter.templates.scoreboard_summary"), - description: "", - subject: i18n.t("reportcenter.templates.scoreboard_summary"), - key: "scoreboard_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.scoreboard"), - field: i18n.t("scoreboard.fields.date"), - }, - group: "payroll", - }, - anticipated_revenue: { - title: i18n.t("reportcenter.templates.anticipated_revenue"), - description: "", - subject: i18n.t("reportcenter.templates.anticipated_revenue"), - key: "anticipated_revenue", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.scheduled_completion"), // Also date invoice. - }, - group: "sales", - }, - csi: { - title: i18n.t("reportcenter.templates.csi"), - description: "", - subject: i18n.t("reportcenter.templates.csi"), - key: "csi", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.csi"), - field: i18n.t("csi.fields.created_at"), // Also date invoice. - }, - group: "customers", - }, - estimates_written_converted: { - title: i18n.t("reportcenter.templates.estimates_written_converted"), - description: "", - subject: i18n.t( - "reportcenter.templates.estimates_written_converted" - ), - key: "estimates_written_converted", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: - i18n.t("jobs.fields.date_open") + - "/" + - i18n.t("jobs.fields.date_invoiced"), // Also date invoice. - }, - group: "sales", - }, - credits_not_received_date_vendorid: { - title: i18n.t( - "reportcenter.templates.credits_not_received_date_vendorid" - ), - subject: i18n.t( - "reportcenter.templates.credits_not_received_date_vendorid" - ), - key: "credits_not_received_date_vendorid", - idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "purchases", - }, - jobs_reconcile: { - title: i18n.t("reportcenter.templates.jobs_reconcile"), - subject: i18n.t("reportcenter.templates.jobs_reconcile"), - key: "jobs_reconcile", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - parts_received_not_scheduled: { - title: i18n.t( - "reportcenter.templates.parts_received_not_scheduled" - ), - subject: i18n.t( - "reportcenter.templates.parts_received_not_scheduled" - ), - key: "parts_received_not_scheduled", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_open"), - }, - group: "jobs", - }, - psr_by_make: { - title: i18n.t("reportcenter.templates.psr_by_make"), - subject: i18n.t("reportcenter.templates.psr_by_make"), - key: "psr_by_make", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "sales", - }, - cycle_time_analysis: { - title: i18n.t("reportcenter.templates.cycle_time_analysis"), - subject: i18n.t("reportcenter.templates.cycle_time_analysis"), - key: "cycle_time_analysis", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_completion"), - }, - group: "jobs", - }, - returns_grouped_by_vendor_summary: { - title: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_summary" - ), - subject: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_summary" - ), - key: "returns_grouped_by_vendor_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "jobs", - }, - returns_grouped_by_vendor_detailed: { - title: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_detailed" - ), - subject: i18n.t( - "reportcenter.templates.returns_grouped_by_vendor_detailed" - ), - key: "returns_grouped_by_vendor_detailed", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.parts_orders"), - field: i18n.t("parts_orders.fields.order_date"), - }, - group: "jobs", - }, - scheduled_parts_list: { - title: i18n.t("reportcenter.templates.scheduled_parts_list"), - subject: i18n.t("reportcenter.templates.scheduled_parts_list"), - key: "scheduled_parts_list", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.scheduled_in"), - }, - group: "jobs", - }, - jobs_completed_not_invoiced: { - title: i18n.t("reportcenter.templates.jobs_completed_not_invoiced"), - subject: i18n.t( - "reportcenter.templates.jobs_completed_not_invoiced" - ), - key: "jobs_completed_not_invoiced", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - jobs_invoiced_not_exported: { - title: i18n.t("reportcenter.templates.jobs_invoiced_not_exported"), - subject: i18n.t( - "reportcenter.templates.jobs_invoiced_not_exported" - ), - key: "jobs_invoiced_not_exported", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "jobs", - }, - purchase_return_ratio_grouped_by_vendor_detail: { - title: i18n.t( - "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" - ), - subject: i18n.t( - "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" - ), - key: "purchase_return_ratio_grouped_by_vendor_detail", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.bills"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - purchase_return_ratio_grouped_by_vendor_summary: { - title: i18n.t( - "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" - ), - subject: i18n.t( - "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" - ), - key: "purchase_return_ratio_grouped_by_vendor_summary", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.bills"), - field: i18n.t("bills.fields.date"), - }, - group: "purchases", - }, - production_over_time: { - title: i18n.t("reportcenter.templates.production_over_time"), - subject: i18n.t("reportcenter.templates.production_over_time"), - key: "production_over_time", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.actual_in"), - }, - group: "jobs", - }, - customer_list: { - title: i18n.t("reportcenter.templates.customer_list"), - subject: i18n.t("reportcenter.templates.customer_list"), - key: "customer_list", - //idtype: "vendor", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_invoiced"), - }, - group: "customers", - }, - exported_gsr_by_ro: { - title: i18n.t("reportcenter.templates.exported_gsr_by_ro"), - subject: i18n.t("reportcenter.templates.exported_gsr_by_ro"), - key: "exported_gsr_by_ro", - idtype: "excel", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_exported"), - }, - group: "sales", - }, - exported_gsr_by_ro_labor: { - title: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"), - subject: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"), - key: "exported_gsr_by_ro_labor", - idtype: "excel", - disabled: false, - rangeFilter: { - object: i18n.t("reportcenter.labels.objects.jobs"), - field: i18n.t("jobs.fields.date_exported"), - }, - group: "sales", - }, - } - : {}), - ...(!type || type === "courtesycarcontract" - ? { - courtesy_car_contract: { - title: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_contract" - ), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_contract" - ), - key: "courtesy_car_contract", - disabled: false, - }, - courtesy_car_terms: { - title: i18n.t("printcenter.courtesycarcontract.courtesy_car_terms"), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_terms" - ), - key: "courtesy_car_terms", - disabled: false, - }, - courtesy_car_impound: { - title: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_impound" - ), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_impound" - ), - key: "courtesy_car_impound", - disabled: false, - }, - } - : {}), - ...(!type || type === "courtesycar" - ? { - courtesy_car_inventory: { - title: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_inventory" - ), - description: "Est Detail", - subject: i18n.t( - "printcenter.courtesycarcontract.courtesy_car_inventory" - ), - key: "courtesy_car_inventory", - disabled: false, - }, - } - : {}), - ...(!type || type === "bill" - ? { - inhouse_invoice: { - title: i18n.t("printcenter.bills.inhouse_invoice"), - description: "Est Detail", - subject: i18n.t("printcenter.bills.inhouse_invoice"), - key: "inhouse_invoice", - disabled: false, - }, - } - : {}), - ...(!type || type === "timeticket" - ? { - // timetickets: { - // title: i18n.t("printcenter.timetickets.timetickets"), - // description: "Est Detail", - // subject: `${i18n.t("printcenter.timetickets.timetickets")} - ${ - // context && context.job && context.job.ro_number - // }`, - // key: "timetickets", - // disabled: false, - // }, - } - : {}), - ...(!type || type === "vendor" - ? { - purchases_by_vendor_detailed: { - title: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), - description: "Est Detail", - subject: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), - key: "purchases_by_vendor_detailed", - disabled: false, - }, - purchases_by_vendor_summary: { - title: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), - description: "Est Detail", - subject: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), - key: "purchases_by_vendor_summary", - disabled: false, - }, - } - : {}), - ...(!type || type === "production" - ? { - production_by_last_name: { - title: i18n.t("reportcenter.templates.production_by_last_name"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_last_name"), - key: "production_by_last_name", - //idtype: "vendor", - disabled: false, - }, - production_by_repair_status: { - title: i18n.t("reportcenter.templates.production_by_repair_status"), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_repair_status" - ), - key: "production_by_repair_status", - //idtype: "vendor", - disabled: false, - }, - production_by_target_date: { - title: i18n.t("reportcenter.templates.production_by_target_date"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_target_date"), - key: "production_by_target_date", - //idtype: "vendor", - disabled: false, - }, - production_by_ro: { - title: i18n.t("reportcenter.templates.production_by_ro"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_ro"), - key: "production_by_ro", - //idtype: "vendor", - disabled: false, - }, - production_by_csr: { - title: i18n.t("reportcenter.templates.production_by_csr"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_csr"), - key: "production_by_csr", - //idtype: "vendor", - disabled: false, - }, - production_by_category: { - title: i18n.t("reportcenter.templates.production_by_category"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_category"), - key: "production_by_category", - //idtype: "vendor", - disabled: false, - }, - production_by_technician: { - title: i18n.t("reportcenter.templates.production_by_technician"), - description: "", - subject: i18n.t("reportcenter.templates.production_by_technician"), - key: "production_by_technician", - //idtype: "vendor", - disabled: false, - }, - } - : {}), - ...(!type || type === "special" - ? { - ca_bc_etf_table: { - title: i18n.t("printcenter.payments.ca_bc_etf_table"), - description: "Est Detail", - subject: i18n.t("printcenter.payments.ca_bc_etf_table"), - key: "ca_bc_etf_table", - disabled: false, - }, - exported_payroll: { - title: i18n.t("printcenter.payments.exported_payroll"), - description: "Est Detail", - subject: i18n.t("printcenter.payments.exported_payroll"), - key: "exported_payroll", - disabled: false, - }, - attendance_detail_csv: { - title: i18n.t("printcenter.special.attendance_detail_csv"), - description: "Est Detail", - subject: i18n.t("printcenter.special.attendance_detail_csv"), - key: "attendance_detail_csv", - disabled: false, - }, - production_by_technician_one: { - title: i18n.t( - "reportcenter.templates.production_by_technician_one" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_technician_one" - ), - key: "production_by_technician_one", - //idtype: "vendor", - disabled: false, - }, - production_by_category_one: { - title: i18n.t("reportcenter.templates.production_by_category_one"), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_category_one" - ), - key: "production_by_category_one", - //idtype: "vendor", - disabled: false, - }, - production_by_repair_status_one: { - title: i18n.t( - "reportcenter.templates.production_by_repair_status_one" - ), - description: "", - subject: i18n.t( - "reportcenter.templates.production_by_repair_status_one" - ), - key: "production_by_repair_status_one", - //idtype: "vendor", - disabled: false, - }, - } - : {}), - }; + return { + //If there's no type or the type is job, send it back. + ...(!type || type === "job" + ? { + casl_authorization: { + title: i18n.t("printcenter.jobs.casl_authorization"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.casl_authorization"), + key: "casl_authorization", + disabled: false, + group: "authorization", + }, + fippa_authorization: { + title: i18n.t("printcenter.jobs.fippa_authorization"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.fippa_authorization"), + key: "fippa_authorization", + disabled: false, + group: "authorization", + }, + diagnostic_authorization: { + title: i18n.t("printcenter.jobs.diagnostic_authorization"), + description: "Diagnostic Authorization", + subject: i18n.t("printcenter.jobs.diagnostic_authorization"), + key: "diagnostic_authorization", + disabled: false, + group: "authorization", + }, + mechanical_authorization: { + title: i18n.t("printcenter.jobs.mechanical_authorization"), + description: "Diagnostic Authorization", + subject: i18n.t("printcenter.jobs.mechanical_authorization"), + key: "mechanical_authorization", + disabled: false, + group: "authorization", + }, + appointment_reminder: { + title: i18n.t("printcenter.jobs.appointment_reminder"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.appointment_reminder"), + key: "appointment_reminder", + disabled: false, + group: "pre", + }, + estimate_followup: { + title: i18n.t("printcenter.jobs.estimate_followup"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.estimate_followup"), + key: "estimate_followup", + disabled: false, + group: "pre", + }, + express_repair_checklist: { + title: i18n.t("printcenter.jobs.express_repair_checklist"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.express_repair_checklist"), + key: "express_repair_checklist", + disabled: false, + group: "pre", + }, + glass_express_checklist: { + title: i18n.t("printcenter.jobs.glass_express_checklist"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.glass_express_checklist"), + key: "glass_express_checklist", + 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", + subject: i18n.t("printcenter.jobs.vehicle_check_in"), + key: "vehicle_check_in", + disabled: false, + group: "pre", + }, + parts_order_history: { + title: i18n.t("printcenter.jobs.parts_order_history"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.parts_order_history"), + key: "parts_order_history", + disabled: false, + group: "ro", + }, + job_notes: { + title: i18n.t("printcenter.jobs.job_notes"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.job_notes"), + key: "job_notes", + disabled: false, + group: "ro", + }, + ro_with_description: { + title: i18n.t("printcenter.jobs.ro_with_description"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.ro_with_description"), + key: "ro_with_description", + disabled: false, + group: "ro", + }, + window_tag: { + title: i18n.t("printcenter.jobs.window_tag"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.window_tag"), + key: "window_tag", + disabled: false, + group: "ro", + }, + supplement_request: { + title: i18n.t("printcenter.jobs.supplement_request"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.supplement_request"), + key: "supplement_request", + disabled: false, + group: "ro", + }, + estimate: { + title: i18n.t("printcenter.jobs.estimate"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.estimate"), + key: "estimate", + disabled: false, + group: "ro", + }, + parts_list: { + title: i18n.t("printcenter.jobs.parts_list"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.parts_list"), + key: "parts_list", + disabled: false, + group: "ro", + }, + coversheet_portrait: { + title: i18n.t("printcenter.jobs.coversheet_portrait"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.coversheet_portrait"), + key: "coversheet_portrait", + disabled: false, + group: "ro", + }, + coversheet_landscape: { + title: i18n.t("printcenter.jobs.coversheet_landscape"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.coversheet_landscape"), + key: "coversheet_landscape", + 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", + subject: i18n.t("printcenter.jobs.worksheet_by_line_number"), + key: "worksheet_by_line_number", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation_type: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_type" + ), + description: "All Jobs Notes", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_type" + ), + key: "worksheet_sorted_by_operation_type", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation: { + title: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), + key: "worksheet_sorted_by_operation", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation_no_hours: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_no_hours" + ), + description: "All Jobs Notes", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_no_hours" + ), + key: "worksheet_sorted_by_operation_no_hours", + disabled: false, + group: "worksheet", + }, + worksheet_sorted_by_operation_part_type: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_part_type" + ), + description: "All Jobs Notes", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_part_type" + ), + key: "worksheet_sorted_by_operation_part_type", + disabled: false, + group: "worksheet", + }, + payments_by_job: { + title: i18n.t("printcenter.jobs.payments_by_job"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.payments_by_job"), + key: "payments_by_job", + disabled: false, + group: "financial", + }, + final_invoice: { + title: i18n.t("printcenter.jobs.final_invoice"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.final_invoice"), + key: "final_invoice", + disabled: false, + group: "financial", + }, + payment_request: { + title: i18n.t("printcenter.jobs.payment_request"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.payment_request"), + key: "payment_request", + disabled: false, + group: "financial", + }, + invoice_total_payable: { + title: i18n.t("printcenter.jobs.invoice_total_payable"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.invoice_total_payable"), + key: "invoice_total_payable", + disabled: false, + group: "financial", + }, + invoice_customer_payable: { + title: i18n.t("printcenter.jobs.invoice_customer_payable"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.invoice_customer_payable"), + key: "invoice_customer_payable", + disabled: false, + group: "financial", + }, + ro_totals: { + title: i18n.t("printcenter.jobs.ro_totals"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.ro_totals"), + key: "ro_totals", + disabled: false, + group: "financial", + }, + job_costing_ro: { + title: i18n.t("printcenter.jobs.job_costing_ro"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.job_costing_ro"), + key: "job_costing_ro", + disabled: false, + group: "financial", + }, + purchases_by_ro_detail: { + title: i18n.t("printcenter.jobs.purchases_by_ro_detail"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.purchases_by_ro_detail"), + key: "purchases_by_ro_detail", + disabled: false, + group: "financial", + }, + purchases_by_ro_summary: { + title: i18n.t("printcenter.jobs.purchases_by_ro_summary"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.purchases_by_ro_summary"), + key: "purchases_by_ro_summary", + disabled: false, + group: "financial", + }, + filing_coversheet_portrait: { + title: i18n.t("printcenter.jobs.filing_coversheet_portrait"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.filing_coversheet_portrait"), + key: "filing_coversheet_portrait", + disabled: false, + group: "post", + }, + filing_coversheet_landscape: { + title: i18n.t("printcenter.jobs.filing_coversheet_landscape"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.filing_coversheet_landscape"), + key: "filing_coversheet_landscape", + disabled: false, + group: "post", + }, + qc_sheet: { + title: i18n.t("printcenter.jobs.qc_sheet"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.qc_sheet"), + key: "qc_sheet", + disabled: false, + group: "post", + }, + vehicle_delivery_check: { + title: i18n.t("printcenter.jobs.vehicle_delivery_check"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.vehicle_delivery_check"), + key: "vehicle_delivery_check", + disabled: false, + group: "post", + }, + guarantee: { + title: i18n.t("printcenter.jobs.guarantee"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.guarantee"), + key: "guarantee", + disabled: false, + group: "post", + }, + csi_invitation: { + title: i18n.t("printcenter.jobs.csi_invitation"), + description: "CSI invite", + key: "csi_invitation", + subject: i18n.t("printcenter.jobs.csi_invitation"), + disabled: false, + group: "post", + }, + window_tag_sublet: { + title: i18n.t("printcenter.jobs.window_tag_sublet"), + description: "Window Tag Sublet", + key: "window_tag_sublet", + subject: i18n.t("printcenter.jobs.window_tag_sublet"), + disabled: false, + group: "ro", + }, + thank_you_ro: { + title: i18n.t("printcenter.jobs.thank_you_ro"), + description: "Thank You Letter by RO", + key: "thank_you_ro", + subject: i18n.t("printcenter.jobs.thank_you_ro"), + disabled: false, + group: "post", + }, + parts_label_single: { + title: i18n.t("printcenter.jobs.parts_label_single"), + description: "Thank You Letter by RO", + key: "parts_label_single", + subject: i18n.t("printcenter.jobs.parts_label_single"), + disabled: false, + group: "ro", + ignoreCustomMargins: true, + }, + envelope_return_address: { + title: i18n.t("printcenter.jobs.envelope_return_address"), + description: "All Jobs Notes", + subject: i18n.t("printcenter.jobs.envelope_return_address"), + key: "envelope_return_address", + disabled: false, + group: "ro", + ignoreCustomMargins: true, + }, + sgi_certificate_of_repairs: { + title: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), + description: "Thank You Letter by RO", + key: "sgi_certificate_of_repairs", + subject: i18n.t("printcenter.jobs.sgi_certificate_of_repairs"), + disabled: false, + group: "ro", + regions: { + CA_SK: true, + }, + }, + sgi_windshield_auth: { + title: i18n.t("printcenter.jobs.sgi_windshield_auth"), + description: "Thank You Letter by RO", + key: "sgi_windshield_auth", + subject: i18n.t("printcenter.jobs.sgi_windshield_auth"), + disabled: false, + group: "pre", + regions: { + CA_SK: true, + }, + }, + mpi_final_acct_sheet: { + title: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), + description: "Thank You Letter by RO", + key: "mpi_final_acct_sheet", + subject: i18n.t("printcenter.jobs.mpi_final_acct_sheet"), + disabled: false, + group: "post", + regions: { + CA_MB: true, + }, + }, + mpi_eglass_auth: { + title: i18n.t("printcenter.jobs.mpi_eglass_auth"), + description: "Thank You Letter by RO", + key: "mpi_eglass_auth", + subject: i18n.t("printcenter.jobs.mpi_eglass_auth"), + disabled: false, + group: "pre", + regions: { + CA_MB: true, + }, + }, + mpi_animal_checklist: { + title: i18n.t("printcenter.jobs.mpi_animal_checklist"), + description: "Thank You Letter by RO", + key: "mpi_animal_checklist", + subject: i18n.t("printcenter.jobs.mpi_animal_checklist"), + disabled: false, + group: "pre", + regions: { + CA_MB: true, + }, + }, + ab_proof_of_loss: { + title: i18n.t("printcenter.jobs.ab_proof_of_loss"), + description: "Thank You Letter by RO", + key: "ab_proof_of_loss", + subject: i18n.t("printcenter.jobs.ab_proof_of_loss"), + disabled: false, + group: "pre", + regions: { + CA_AB: true, + }, + }, + // parts_label_multi: { + // title: i18n.t("printcenter.jobs.parts_label_multi"), + // description: "Thank You Letter by RO", + // key: "parts_label_multi", + // subject: i18n.t("printcenter.jobs.parts_label_multi"), + // disabled: false, + // group: "ro", + // }, + iou_form: { + title: i18n.t("printcenter.jobs.iou_form"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.iou_form"), + key: "iou_form", + disabled: false, + group: "post", + }, + lag_time_ro: { + title: i18n.t("printcenter.jobs.lag_time_ro"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.lag_time_ro"), + key: "lag_time_ro", + disabled: false, + group: "ro", + }, + rental_reservation: { + title: i18n.t("printcenter.jobs.rental_reservation"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.rental_reservation"), + key: "rental_reservation", + disabled: false, + group: "pre", + }, + timetickets_ro: { + title: i18n.t("printcenter.jobs.timetickets_ro"), + description: "CASL Authorization", + subject: i18n.t("printcenter.jobs.timetickets_ro"), + key: "timetickets_ro", + disabled: false, + group: "financial", + }, + dms_posting_sheet: { + title: i18n.t("printcenter.jobs.dms_posting_sheet"), + description: "DMS Posting Sheet", + subject: i18n.t("printcenter.jobs.dms_posting_sheet"), + key: "dms_posting_sheet", + disabled: false, + group: "financial", + }, + } + : {}), + ...(!type || type === "job_special" + ? { + special_thirdpartypayer: { + title: i18n.t("printcenter.jobs.thirdpartypayer"), + description: "CSI invite", + key: "special_thirdpartypayer", + disabled: false, + }, + folder_label_multiple: { + title: i18n.t("printcenter.jobs.folder_label_multiple"), + description: "Folder Label Multiple", + key: "folder_label_multiple", + disabled: false, + }, + parts_label_multiple: { + title: i18n.t("printcenter.jobs.parts_label_multiple"), + description: "Parts Label Multiple", + key: "parts_label_multiple", + disabled: false, + }, + parts_invoice_label_single: { + title: i18n.t("printcenter.jobs.parts_invoice_label_single"), + description: "Parts Label Multiple", + key: "parts_invoice_label_single", + disabled: false, + ignoreCustomMargins: true, + }, + csi_invitation_action: { + title: i18n.t("printcenter.jobs.csi_invitation_action"), + description: "CSI invite", + key: "csi_invitation_action", + subject: i18n.t("printcenter.jobs.csi_invitation_action"), + disabled: false, + }, + individual_job_note: { + title: i18n.t("printcenter.jobs.individual_job_note"), + description: "CSI invite", + key: "individual_job_note", + subject: i18n.t("printcenter.jobs.individual_job_note", { + ro_number: (context && context.ro_number) || "", + }), + disabled: false, + }, + } + : {}), + ...(!type || type === "appointment" + ? { + appointment_confirmation: { + title: i18n.t("printcenter.appointments.appointment_confirmation"), + description: "Appointment Confirmation", + subject: i18n.t( + "printcenter.appointments.appointment_confirmation" + ), + key: "appointment_confirmation", + disabled: false, + }, + } + : {}), + ...(!type || type === "partsorder" + ? { + parts_order: { + title: i18n.t("printcenter.jobs.parts_order"), + description: "Parts Order", + key: "parts_order", + subject: i18n.t("printcenter.subjects.jobs.parts_order", { + ro_number: context && context.job && context.job.ro_number, + name: ( + (context && context.job && context.job.ownr_ln) || + (context && context.job && context.job.ownr_co_nm) || + "" + ).trim(), + }), + disabled: false, + }, + sublet_order: { + title: i18n.t("printcenter.jobs.sublet_order"), + description: "Parts Order", + key: "sublet_order", + subject: i18n.t("printcenter.subjects.jobs.sublet_order", { + ro_number: context && context.job && context.job.ro_number, + name: ( + (context && context.job && context.job.ownr_ln) || + (context && context.job && context.job.ownr_co_nm) || + "" + ).trim(), + }), + disabled: false, + }, + parts_return_slip: { + title: i18n.t("printcenter.jobs.parts_return_slip"), + subject: i18n.t("printcenter.jobs.parts_return_slip"), + description: "Parts Return", + key: "parts_return_slip", + disabled: false, + }, + } + : {}), + ...(!type || type === "payment" + ? { + payment_receipt: { + title: i18n.t("printcenter.jobs.payment_receipt"), + description: "Payment Receipt", + subject: i18n.t("printcenter.jobs.payment_receipt"), + key: "payment_receipt", + disabled: false, + }, + } + : {}), + ...(!type || type === "csi" ? {} : {}), + ...(!type || type === "report_center" + ? { + hours_sold_detail_closed: { + title: i18n.t("reportcenter.templates.hours_sold_detail_closed"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_detail_closed"), + key: "hours_sold_detail_closed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_closed_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_ins_co" + ), + key: "hours_sold_detail_closed_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_closed: { + title: i18n.t("reportcenter.templates.hours_sold_summary_closed"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_summary_closed"), + key: "hours_sold_summary_closed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_closed_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_ins_co" + ), + key: "hours_sold_summary_closed_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_open: { + title: i18n.t("reportcenter.templates.hours_sold_detail_open"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_detail_open"), + key: "hours_sold_detail_open", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_detail_open_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_open_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_open_ins_co" + ), + key: "hours_sold_detail_open_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_summary_open: { + title: i18n.t("reportcenter.templates.hours_sold_summary_open"), + description: "", + subject: i18n.t("reportcenter.templates.hours_sold_summary_open"), + key: "hours_sold_summary_open", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_summary_open_ins_co: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_open_ins_co" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_open_ins_co" + ), + key: "hours_sold_summary_open_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_detail_closed_csr: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_csr" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_csr" + ), + key: "hours_sold_detail_closed_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_open_csr: { + title: i18n.t("reportcenter.templates.hours_sold_detail_open_csr"), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_open_csr" + ), + key: "hours_sold_detail_open_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + hours_sold_summary_closed_csr: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_csr" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_csr" + ), + key: "hours_sold_summary_closed_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_open_csr: { + title: i18n.t("reportcenter.templates.hours_sold_summary_open_csr"), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_open_csr" + ), + key: "hours_sold_summary_open_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_open_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_open_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_open_status" + ), + key: "hours_sold_summary_open_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_summary_closed_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_summary_closed_status" + ), + key: "hours_sold_summary_closed_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_open_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_open_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_open_status" + ), + key: "hours_sold_detail_open_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + hours_sold_detail_closed_status: { + title: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_status" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.hours_sold_detail_closed_status" + ), + key: "hours_sold_detail_closed_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + purchases_by_date_range_detail: { + title: i18n.t( + "reportcenter.templates.purchases_by_date_range_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"), + }, + group: "purchases", + }, + purchases_by_date_range_summary: { + title: i18n.t( + "reportcenter.templates.purchases_by_date_range_summary" + ), + 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"), + }, + group: "purchases", + }, + purchases_by_vendor_detailed_date_range: { + title: i18n.t( + "reportcenter.templates.purchases_by_vendor_detailed_date_range" + ), + 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"), + }, + group: "purchases", + }, + purchases_by_vendor_summary_date_range: { + title: i18n.t( + "reportcenter.templates.purchases_by_vendor_summary_date_range" + ), + 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"), + }, + group: "purchases", + }, + 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"), + }, + group: "purchases", + }, + 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"), + }, + group: "purchases", + }, + purchases_grouped_by_vendor_detailed: { + title: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_detailed" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_detailed" + ), + key: "purchases_grouped_by_vendor_detailed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + purchases_grouped_by_vendor_summary: { + title: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_summary" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.purchases_grouped_by_vendor_summary" + ), + key: "purchases_grouped_by_vendor_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + job_costing_ro_date_summary: { + title: i18n.t("reportcenter.templates.job_costing_ro_date_summary"), + description: "", + subject: i18n.t( + "reportcenter.templates.job_costing_ro_date_summary" + ), + 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"), + }, + group: "jobs", + }, + job_costing_ro_csr: { + title: i18n.t("reportcenter.templates.job_costing_ro_csr"), + description: "", + subject: i18n.t("reportcenter.templates.job_costing_ro_csr"), + key: "job_costing_ro_csr", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + job_costing_ro_ins_co: { + title: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.job_costing_ro_ins_co"), + key: "job_costing_ro_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + job_costing_ro_date_detail: { + title: i18n.t("reportcenter.templates.job_costing_ro_date_detail"), + description: "", + subject: i18n.t( + "reportcenter.templates.job_costing_ro_date_detail" + ), + 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"), + }, + group: "jobs", + }, + job_costing_ro_estimator: { + title: i18n.t("reportcenter.templates.job_costing_ro_estimator"), + description: "", + subject: i18n.t("reportcenter.templates.job_costing_ro_estimator"), + key: "job_costing_ro_estimator", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + payments_by_date: { + title: i18n.t("reportcenter.templates.payments_by_date"), + subject: i18n.t("reportcenter.templates.payments_by_date"), + key: "payments_by_date", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.payments"), + field: i18n.t("payments.fields.date"), + }, + group: "customers", + }, + payments_by_date_type: { + title: i18n.t("reportcenter.templates.payments_by_date_type"), + 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"), + }, + group: "customers", + }, + 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"), + }, + group: "customers", + }, + timetickets: { + title: i18n.t("reportcenter.templates.timetickets"), + subject: i18n.t("reportcenter.templates.timetickets"), + key: "timetickets", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, + group: "payroll", + }, + timetickets_employee: { + title: i18n.t("reportcenter.templates.timetickets_employee"), + subject: i18n.t("reportcenter.templates.timetickets_employee"), + key: "timetickets_employee", + idtype: "employee", + disabled: false, + group: "payroll", + }, + attendance_detail: { + title: i18n.t("reportcenter.templates.attendance_detail"), + subject: i18n.t("reportcenter.templates.attendance_detail"), + key: "attendance_detail", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, + group: "payroll", + }, + attendance_summary: { + title: i18n.t("reportcenter.templates.attendance_summary"), + subject: i18n.t("reportcenter.templates.attendance_summary"), + key: "attendance_summary", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, + group: "payroll", + }, + attendance_employee: { + title: i18n.t("reportcenter.templates.attendance_employee"), + 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"), + }, + group: "payroll", + }, + timetickets_summary: { + title: i18n.t("reportcenter.templates.timetickets_summary"), + 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"), + }, + group: "payroll", + }, + estimator_detail: { + title: i18n.t("reportcenter.templates.estimator_detail"), + description: "", + subject: i18n.t("reportcenter.templates.estimator_detail"), + key: "estimator_detail", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + estimator_summary: { + title: i18n.t("reportcenter.templates.estimator_summary"), + description: "", + subject: i18n.t("reportcenter.templates.estimator_summary"), + key: "estimator_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + supplement_ratio_ins_co: { + title: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.supplement_ratio_ins_co"), + key: "supplement_ratio_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + credits_not_received_date: { + title: i18n.t("reportcenter.templates.credits_not_received_date"), + description: "", + subject: i18n.t("reportcenter.templates.credits_not_received_date"), + key: "credits_not_received_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "purchases", + }, + void_ros: { + title: i18n.t("reportcenter.templates.void_ros"), + description: "", + subject: i18n.t("reportcenter.templates.void_ros"), + key: "void_ros", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "sales", + }, + 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"), + }, + group: "sales", + }, + gsr_by_make: { + title: i18n.t("reportcenter.templates.gsr_by_make"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_make"), + key: "gsr_by_make", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_delivery_date: { + title: i18n.t("reportcenter.templates.gsr_by_delivery_date"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_delivery_date"), + key: "gsr_by_delivery_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_delivery"), + }, + group: "sales", + }, + gsr_by_referral: { + title: i18n.t("reportcenter.templates.gsr_by_referral"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_referral"), + key: "gsr_by_referral", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_ro: { + title: i18n.t("reportcenter.templates.gsr_by_ro"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_ro"), + key: "gsr_by_ro", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_ins_co: { + title: i18n.t("reportcenter.templates.gsr_by_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_ins_co"), + key: "gsr_by_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_exported_date: { + title: i18n.t("reportcenter.templates.gsr_by_exported_date"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_exported_date"), + key: "gsr_by_exported_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_exported"), + }, + group: "sales", + }, + gsr_by_estimator: { + title: i18n.t("reportcenter.templates.gsr_by_estimator"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_estimator"), + key: "gsr_by_estimator", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_category: { + title: i18n.t("reportcenter.templates.gsr_by_category"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_category"), + key: "gsr_by_category", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_by_ats: { + title: i18n.t("reportcenter.templates.gsr_by_ats"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_by_ats"), + key: "gsr_by_ats", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + gsr_labor_only: { + title: i18n.t("reportcenter.templates.gsr_labor_only"), + description: "", + subject: i18n.t("reportcenter.templates.gsr_labor_only"), + key: "gsr_labor_only", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + open_orders: { + title: i18n.t("reportcenter.templates.open_orders"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders"), + key: "open_orders", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + open_orders_status: { + title: i18n.t("reportcenter.templates.open_orders_status"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders_status"), + key: "open_orders_status", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + 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"), + }, + group: "jobs", + }, + open_orders_estimator: { + title: i18n.t("reportcenter.templates.open_orders_estimator"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders_estimator"), + key: "open_orders_estimator", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + open_orders_ins_co: { + title: i18n.t("reportcenter.templates.open_orders_ins_co"), + description: "", + subject: i18n.t("reportcenter.templates.open_orders_ins_co"), + key: "open_orders_ins_co", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + 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", + }, + export_payables: { + title: i18n.t("reportcenter.templates.export_payables"), + description: "", + subject: i18n.t("reportcenter.templates.export_payables"), + key: "export_payables", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.exportlogs"), + field: i18n.t("exportlogs.fields.createdat"), + }, + group: "purchases", + }, + export_payments: { + title: i18n.t("reportcenter.templates.export_payments"), + description: "", + subject: i18n.t("reportcenter.templates.export_payments"), + key: "export_payments", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.exportlogs"), + field: i18n.t("exportlogs.fields.createdat"), + }, + group: "customers", + }, + export_receivables: { + title: i18n.t("reportcenter.templates.export_receivables"), + description: "", + subject: i18n.t("reportcenter.templates.export_receivables"), + key: "export_receivables", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.exportlogs"), + field: i18n.t("exportlogs.fields.createdat"), + }, + group: "sales", + }, + parts_backorder: { + title: i18n.t("reportcenter.templates.parts_backorder"), + description: "", + subject: i18n.t("reportcenter.templates.parts_backorder"), + key: "parts_backorder", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_in"), + }, + group: "purchases", + }, + thank_you_date: { + title: i18n.t("reportcenter.templates.thank_you_date"), + description: "", + subject: i18n.t("reportcenter.templates.thank_you_date"), + key: "thank_you_date", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "customers", + }, + unclaimed_hrs: { + title: i18n.t("reportcenter.templates.unclaimed_hrs"), + description: "", + subject: i18n.t("reportcenter.templates.unclaimed_hrs"), + key: "unclaimed_hrs", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "payroll", + }, + work_in_progress_labour: { + title: i18n.t("reportcenter.templates.work_in_progress_labour"), + description: "", + subject: i18n.t("reportcenter.templates.work_in_progress_labour"), + key: "work_in_progress_labour", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + work_in_progress_payables: { + title: i18n.t("reportcenter.templates.work_in_progress_payables"), + description: "", + subject: i18n.t("reportcenter.templates.work_in_progress_payables"), + key: "work_in_progress_payables", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + lag_time: { + title: i18n.t("reportcenter.templates.lag_time"), + description: "", + subject: i18n.t("reportcenter.templates.lag_time"), + key: "lag_time", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + parts_not_recieved: { + title: i18n.t("reportcenter.templates.parts_not_recieved"), + description: "", + subject: i18n.t("reportcenter.templates.parts_not_recieved"), + key: "parts_not_recieved", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "purchases", + }, + parts_not_recieved_vendor: { + title: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), + description: "", + subject: i18n.t("reportcenter.templates.parts_not_recieved_vendor"), + key: "parts_not_recieved_vendor", + idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "purchases", + }, + scoreboard_detail: { + title: i18n.t("reportcenter.templates.scoreboard_detail"), + description: "", + subject: i18n.t("reportcenter.templates.scoreboard_detail"), + key: "scoreboard_detail", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.scoreboard"), + field: i18n.t("scoreboard.fields.date"), + }, + group: "payroll", + }, + scoreboard_summary: { + title: i18n.t("reportcenter.templates.scoreboard_summary"), + description: "", + subject: i18n.t("reportcenter.templates.scoreboard_summary"), + key: "scoreboard_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.scoreboard"), + field: i18n.t("scoreboard.fields.date"), + }, + group: "payroll", + }, + anticipated_revenue: { + title: i18n.t("reportcenter.templates.anticipated_revenue"), + description: "", + subject: i18n.t("reportcenter.templates.anticipated_revenue"), + key: "anticipated_revenue", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.scheduled_completion"), // Also date invoice. + }, + group: "sales", + }, + csi: { + title: i18n.t("reportcenter.templates.csi"), + description: "", + subject: i18n.t("reportcenter.templates.csi"), + key: "csi", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.csi"), + field: i18n.t("csi.fields.created_at"), // Also date invoice. + }, + group: "customers", + }, + estimates_written_converted: { + title: i18n.t("reportcenter.templates.estimates_written_converted"), + description: "", + subject: i18n.t( + "reportcenter.templates.estimates_written_converted" + ), + key: "estimates_written_converted", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: + i18n.t("jobs.fields.date_open") + + "/" + + i18n.t("jobs.fields.date_invoiced"), // Also date invoice. + }, + group: "sales", + }, + credits_not_received_date_vendorid: { + title: i18n.t( + "reportcenter.templates.credits_not_received_date_vendorid" + ), + subject: i18n.t( + "reportcenter.templates.credits_not_received_date_vendorid" + ), + key: "credits_not_received_date_vendorid", + idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "purchases", + }, + jobs_reconcile: { + title: i18n.t("reportcenter.templates.jobs_reconcile"), + subject: i18n.t("reportcenter.templates.jobs_reconcile"), + key: "jobs_reconcile", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + parts_received_not_scheduled: { + title: i18n.t( + "reportcenter.templates.parts_received_not_scheduled" + ), + subject: i18n.t( + "reportcenter.templates.parts_received_not_scheduled" + ), + key: "parts_received_not_scheduled", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + }, + psr_by_make: { + title: i18n.t("reportcenter.templates.psr_by_make"), + subject: i18n.t("reportcenter.templates.psr_by_make"), + key: "psr_by_make", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "sales", + }, + cycle_time_analysis: { + title: i18n.t("reportcenter.templates.cycle_time_analysis"), + subject: i18n.t("reportcenter.templates.cycle_time_analysis"), + key: "cycle_time_analysis", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_completion"), + }, + group: "jobs", + }, + returns_grouped_by_vendor_summary: { + title: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_summary" + ), + subject: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_summary" + ), + key: "returns_grouped_by_vendor_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "jobs", + }, + returns_grouped_by_vendor_detailed: { + title: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_detailed" + ), + subject: i18n.t( + "reportcenter.templates.returns_grouped_by_vendor_detailed" + ), + key: "returns_grouped_by_vendor_detailed", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.parts_orders"), + field: i18n.t("parts_orders.fields.order_date"), + }, + group: "jobs", + }, + scheduled_parts_list: { + title: i18n.t("reportcenter.templates.scheduled_parts_list"), + subject: i18n.t("reportcenter.templates.scheduled_parts_list"), + key: "scheduled_parts_list", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.scheduled_in"), + }, + group: "jobs", + }, + jobs_completed_not_invoiced: { + title: i18n.t("reportcenter.templates.jobs_completed_not_invoiced"), + subject: i18n.t( + "reportcenter.templates.jobs_completed_not_invoiced" + ), + key: "jobs_completed_not_invoiced", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + jobs_invoiced_not_exported: { + title: i18n.t("reportcenter.templates.jobs_invoiced_not_exported"), + subject: i18n.t( + "reportcenter.templates.jobs_invoiced_not_exported" + ), + key: "jobs_invoiced_not_exported", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "jobs", + }, + purchase_return_ratio_grouped_by_vendor_detail: { + title: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" + ), + subject: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail" + ), + key: "purchase_return_ratio_grouped_by_vendor_detail", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.bills"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + purchase_return_ratio_grouped_by_vendor_summary: { + title: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" + ), + subject: i18n.t( + "reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary" + ), + key: "purchase_return_ratio_grouped_by_vendor_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.bills"), + field: i18n.t("bills.fields.date"), + }, + group: "purchases", + }, + production_over_time: { + title: i18n.t("reportcenter.templates.production_over_time"), + subject: i18n.t("reportcenter.templates.production_over_time"), + key: "production_over_time", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.actual_in"), + }, + group: "jobs", + }, + customer_list: { + title: i18n.t("reportcenter.templates.customer_list"), + subject: i18n.t("reportcenter.templates.customer_list"), + key: "customer_list", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_invoiced"), + }, + group: "customers", + }, + exported_gsr_by_ro: { + title: i18n.t("reportcenter.templates.exported_gsr_by_ro"), + subject: i18n.t("reportcenter.templates.exported_gsr_by_ro"), + key: "exported_gsr_by_ro", + //idtype: "vendor", + reporttype: "excel", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_exported"), + }, + group: "sales", + }, + exported_gsr_by_ro_labor: { + title: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"), + subject: i18n.t("reportcenter.templates.exported_gsr_by_ro_labor"), + key: "exported_gsr_by_ro_labor", + //idtype: "vendor", + reporttype: "excel", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_exported"), + }, + group: "sales", + }, + } + : {}), + ...(!type || type === "courtesycarcontract" + ? { + courtesy_car_contract: { + title: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_contract" + ), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_contract" + ), + key: "courtesy_car_contract", + disabled: false, + }, + courtesy_car_terms: { + title: i18n.t("printcenter.courtesycarcontract.courtesy_car_terms"), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_terms" + ), + key: "courtesy_car_terms", + disabled: false, + }, + courtesy_car_impound: { + title: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_impound" + ), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_impound" + ), + key: "courtesy_car_impound", + disabled: false, + }, + } + : {}), + ...(!type || type === "courtesycar" + ? { + courtesy_car_inventory: { + title: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_inventory" + ), + description: "Est Detail", + subject: i18n.t( + "printcenter.courtesycarcontract.courtesy_car_inventory" + ), + key: "courtesy_car_inventory", + disabled: false, + }, + } + : {}), + ...(!type || type === "bill" + ? { + inhouse_invoice: { + title: i18n.t("printcenter.bills.inhouse_invoice"), + description: "Est Detail", + subject: i18n.t("printcenter.bills.inhouse_invoice"), + key: "inhouse_invoice", + disabled: false, + }, + } + : {}), + ...(!type || type === "timeticket" + ? { + // timetickets: { + // title: i18n.t("printcenter.timetickets.timetickets"), + // description: "Est Detail", + // subject: `${i18n.t("printcenter.timetickets.timetickets")} - ${ + // context && context.job && context.job.ro_number + // }`, + // key: "timetickets", + // disabled: false, + // }, + } + : {}), + ...(!type || type === "vendor" + ? { + purchases_by_vendor_detailed: { + title: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), + description: "Est Detail", + subject: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"), + key: "purchases_by_vendor_detailed", + disabled: false, + }, + purchases_by_vendor_summary: { + title: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), + description: "Est Detail", + subject: i18n.t("printcenter.vendors.purchases_by_vendor_summary"), + key: "purchases_by_vendor_summary", + disabled: false, + }, + } + : {}), + ...(!type || type === "production" + ? { + production_by_last_name: { + title: i18n.t("reportcenter.templates.production_by_last_name"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_last_name"), + key: "production_by_last_name", + //idtype: "vendor", + disabled: false, + }, + production_by_repair_status: { + title: i18n.t("reportcenter.templates.production_by_repair_status"), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_repair_status" + ), + key: "production_by_repair_status", + //idtype: "vendor", + disabled: false, + }, + production_by_target_date: { + title: i18n.t("reportcenter.templates.production_by_target_date"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_target_date"), + key: "production_by_target_date", + //idtype: "vendor", + disabled: false, + }, + production_by_ro: { + title: i18n.t("reportcenter.templates.production_by_ro"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_ro"), + key: "production_by_ro", + //idtype: "vendor", + disabled: false, + }, + production_by_csr: { + title: i18n.t("reportcenter.templates.production_by_csr"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_csr"), + key: "production_by_csr", + //idtype: "vendor", + disabled: false, + }, + production_by_category: { + title: i18n.t("reportcenter.templates.production_by_category"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_category"), + key: "production_by_category", + //idtype: "vendor", + disabled: false, + }, + production_by_technician: { + title: i18n.t("reportcenter.templates.production_by_technician"), + description: "", + subject: i18n.t("reportcenter.templates.production_by_technician"), + key: "production_by_technician", + //idtype: "vendor", + disabled: false, + }, + } + : {}), + ...(!type || type === "special" + ? { + ca_bc_etf_table: { + title: i18n.t("printcenter.payments.ca_bc_etf_table"), + description: "Est Detail", + subject: i18n.t("printcenter.payments.ca_bc_etf_table"), + key: "ca_bc_etf_table", + disabled: false, + }, + exported_payroll: { + title: i18n.t("printcenter.payments.exported_payroll"), + description: "Est Detail", + subject: i18n.t("printcenter.payments.exported_payroll"), + key: "exported_payroll", + disabled: false, + }, + attendance_detail_csv: { + title: i18n.t("printcenter.special.attendance_detail_csv"), + description: "Est Detail", + subject: i18n.t("printcenter.special.attendance_detail_csv"), + key: "attendance_detail_csv", + disabled: false, + }, + production_by_technician_one: { + title: i18n.t( + "reportcenter.templates.production_by_technician_one" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_technician_one" + ), + key: "production_by_technician_one", + //idtype: "vendor", + disabled: false, + }, + production_by_category_one: { + title: i18n.t("reportcenter.templates.production_by_category_one"), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_category_one" + ), + key: "production_by_category_one", + //idtype: "vendor", + disabled: false, + }, + production_by_repair_status_one: { + title: i18n.t( + "reportcenter.templates.production_by_repair_status_one" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.production_by_repair_status_one" + ), + key: "production_by_repair_status_one", + //idtype: "vendor", + disabled: false, + }, + } + : {}), + }; }; From a68f8d688073a8caa62b19ece01267c04343f577 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 20 Apr 2023 15:05:23 -0700 Subject: [PATCH 12/44] Payroll schema changes. --- hasura/metadata/tables.yaml | 149 ++++++++++++++++++ .../down.sql | 4 + .../up.sql | 2 + .../down.sql | 1 + .../up.sql | 18 +++ 5 files changed, 174 insertions(+) create mode 100644 hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/down.sql create mode 100644 hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/up.sql create mode 100644 hasura/migrations/1682028025082_create_table_public_tt_approval_queue/down.sql create mode 100644 hasura/migrations/1682028025082_create_table_public_tt_approval_queue/up.sql diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index a456a9a0f..5a3212f7c 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -831,6 +831,13 @@ table: name: transitions schema: public + - name: tt_approval_queues + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: tt_approval_queue + schema: public - name: vehicles using: foreign_key_constraint_on: @@ -2262,6 +2269,13 @@ table: name: timetickets schema: public + - name: tt_approval_queues + using: + foreign_key_constraint_on: + column: employeeid + table: + name: tt_approval_queue + schema: public insert_permissions: - role: user permission: @@ -3145,6 +3159,13 @@ table: name: transitions schema: public + - name: tt_approval_queues + using: + foreign_key_constraint_on: + column: jobid + table: + name: tt_approval_queue + schema: public insert_permissions: - role: user permission: @@ -5210,6 +5231,14 @@ - name: job using: foreign_key_constraint_on: jobid + array_relationships: + - name: tt_approval_queues + using: + foreign_key_constraint_on: + column: timeticketid + table: + name: tt_approval_queue + schema: public insert_permissions: - role: user permission: @@ -5228,6 +5257,7 @@ - ciecacode - clockoff - clockon + - committed_at - cost_center - created_at - date @@ -5248,6 +5278,7 @@ - ciecacode - clockoff - clockon + - committed_at - cost_center - created_at - date @@ -5277,6 +5308,7 @@ - ciecacode - clockoff - clockon + - committed_at - cost_center - created_at - date @@ -5397,6 +5429,116 @@ authid: _eq: X-Hasura-User-Id check: {} +- table: + name: tt_approval_queue + schema: public + object_relationships: + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + - name: employee + using: + foreign_key_constraint_on: employeeid + - name: job + using: + foreign_key_constraint_on: jobid + - name: timeticket + using: + foreign_key_constraint_on: timeticketid + - name: user + using: + foreign_key_constraint_on: approved_by + insert_permissions: + - role: user + permission: + check: + bodyshop: + associations: + _and: + - active: + _eq: true + - user: + authid: + _eq: X-Hasura-User-Id + columns: + - id + - created_at + - updated_at + - bodyshopid + - jobid + - employeeid + - timeticketid + - approved_by + - approved_at + - actualhrs + - productivehrs + - rate + - flat_rate + - ciecacode + - cost_center + - date + - memo + select_permissions: + - role: user + permission: + columns: + - flat_rate + - date + - actualhrs + - productivehrs + - rate + - approved_by + - ciecacode + - cost_center + - memo + - approved_at + - created_at + - updated_at + - bodyshopid + - employeeid + - id + - jobid + - timeticketid + filter: + bodyshop: + associations: + _and: + - active: + _eq: true + - user: + authid: + _eq: X-Hasura-User-Id + update_permissions: + - role: user + permission: + columns: + - flat_rate + - date + - actualhrs + - productivehrs + - rate + - approved_by + - ciecacode + - cost_center + - memo + - approved_at + - created_at + - updated_at + - bodyshopid + - employeeid + - id + - jobid + - timeticketid + filter: + bodyshop: + associations: + _and: + - active: + _eq: true + - user: + authid: + _eq: X-Hasura-User-Id + check: null - table: name: users schema: public @@ -5467,6 +5609,13 @@ table: name: parts_orders schema: public + - name: tt_approval_queues + using: + foreign_key_constraint_on: + column: approved_by + table: + name: tt_approval_queue + schema: public insert_permissions: - role: user permission: diff --git a/hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/down.sql b/hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/down.sql new file mode 100644 index 000000000..7a27fe19f --- /dev/null +++ b/hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/down.sql @@ -0,0 +1,4 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- alter table "public"."timetickets" add column "committed_at" timestamptz +-- null; diff --git a/hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/up.sql b/hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/up.sql new file mode 100644 index 000000000..755139538 --- /dev/null +++ b/hasura/migrations/1682027512494_alter_table_public_timetickets_add_column_committed_at/up.sql @@ -0,0 +1,2 @@ +alter table "public"."timetickets" add column "committed_at" timestamptz + null; diff --git a/hasura/migrations/1682028025082_create_table_public_tt_approval_queue/down.sql b/hasura/migrations/1682028025082_create_table_public_tt_approval_queue/down.sql new file mode 100644 index 000000000..624fb0e17 --- /dev/null +++ b/hasura/migrations/1682028025082_create_table_public_tt_approval_queue/down.sql @@ -0,0 +1 @@ +DROP TABLE "public"."tt_approval_queue"; diff --git a/hasura/migrations/1682028025082_create_table_public_tt_approval_queue/up.sql b/hasura/migrations/1682028025082_create_table_public_tt_approval_queue/up.sql new file mode 100644 index 000000000..96ba736a7 --- /dev/null +++ b/hasura/migrations/1682028025082_create_table_public_tt_approval_queue/up.sql @@ -0,0 +1,18 @@ +CREATE TABLE "public"."tt_approval_queue" ("id" uuid NOT NULL DEFAULT gen_random_uuid(), "created_at" timestamptz NOT NULL DEFAULT now(), "updated_at" timestamptz NOT NULL DEFAULT now(), "bodyshopid" uuid NOT NULL, "jobid" uuid NOT NULL, "employeeid" uuid NOT NULL, "timeticketid" uuid, "approved_by" text, "approved_at" timestamptz NOT NULL, "actualhrs" numeric NOT NULL DEFAULT 0, "productivehrs" numeric NOT NULL DEFAULT 0, "rate" numeric NOT NULL DEFAULT 0, "flat_rate" boolean NOT NULL DEFAULT true, "ciecacode" text, "cost_center" text NOT NULL, "date" date NOT NULL DEFAULT now(), "memo" text NOT NULL, PRIMARY KEY ("id") , FOREIGN KEY ("bodyshopid") REFERENCES "public"."bodyshops"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("jobid") REFERENCES "public"."jobs"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("employeeid") REFERENCES "public"."employees"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("timeticketid") REFERENCES "public"."timetickets"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("approved_by") REFERENCES "public"."users"("email") ON UPDATE restrict ON DELETE restrict); +CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"() +RETURNS TRIGGER AS $$ +DECLARE + _new record; +BEGIN + _new := NEW; + _new."updated_at" = NOW(); + RETURN _new; +END; +$$ LANGUAGE plpgsql; +CREATE TRIGGER "set_public_tt_approval_queue_updated_at" +BEFORE UPDATE ON "public"."tt_approval_queue" +FOR EACH ROW +EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"(); +COMMENT ON TRIGGER "set_public_tt_approval_queue_updated_at" ON "public"."tt_approval_queue" +IS 'trigger to set value of column "updated_at" to current timestamp on row update'; +CREATE EXTENSION IF NOT EXISTS pgcrypto; From 60768c884765996c395fbae6355b5d600ab60fbf Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Thu, 20 Apr 2023 15:28:14 -0700 Subject: [PATCH 13/44] Timeticket approval queue aggregation permissions. --- hasura/metadata/tables.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 5a3212f7c..22d75a0e8 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -5508,6 +5508,7 @@ - user: authid: _eq: X-Hasura-User-Id + allow_aggregations: true update_permissions: - role: user permission: From 3086a654a145e1914b741ca55193c5c182da5870 Mon Sep 17 00:00:00 2001 From: swtmply Date: Fri, 21 Apr 2023 22:27:48 +0800 Subject: [PATCH 14/44] IO-1461 made the sider sticky --- .../components/tech-sider/tech-sider.component.jsx | 12 +++++++++++- client/src/pages/tech/tech.page.styles.scss | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/client/src/components/tech-sider/tech-sider.component.jsx b/client/src/components/tech-sider/tech-sider.component.jsx index 1bd3bcdf8..c6ea4f67f 100644 --- a/client/src/components/tech-sider/tech-sider.component.jsx +++ b/client/src/components/tech-sider/tech-sider.component.jsx @@ -29,7 +29,17 @@ export function TechSider({ technician, techLogout }) { }; return ( - + Date: Fri, 21 Apr 2023 08:42:47 -0700 Subject: [PATCH 15/44] Additional schema changes for payroll. --- .../down.sql | 1 + .../up.sql | 1 + .../down.sql | 1 + .../up.sql | 1 + 4 files changed, 4 insertions(+) create mode 100644 hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/down.sql create mode 100644 hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/up.sql create mode 100644 hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/down.sql create mode 100644 hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/up.sql diff --git a/hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/down.sql b/hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/down.sql new file mode 100644 index 000000000..e5306a3a4 --- /dev/null +++ b/hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/down.sql @@ -0,0 +1 @@ +alter table "public"."tt_approval_queue" alter column "approved_at" set not null; diff --git a/hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/up.sql b/hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/up.sql new file mode 100644 index 000000000..8f899317b --- /dev/null +++ b/hasura/migrations/1682031429191_alter_table_public_tt_approval_queue_alter_column_approved_at/up.sql @@ -0,0 +1 @@ +alter table "public"."tt_approval_queue" alter column "approved_at" drop not null; diff --git a/hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/down.sql b/hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/down.sql new file mode 100644 index 000000000..82d12df19 --- /dev/null +++ b/hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/down.sql @@ -0,0 +1 @@ +alter table "public"."tt_approval_queue" alter column "memo" set not null; diff --git a/hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/up.sql b/hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/up.sql new file mode 100644 index 000000000..b83aa38f0 --- /dev/null +++ b/hasura/migrations/1682031447950_alter_table_public_tt_approval_queue_alter_column_memo/up.sql @@ -0,0 +1 @@ +alter table "public"."tt_approval_queue" alter column "memo" drop not null; From ad9868b57591c099f4f2c4470a0a7a5ce330c226 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 21 Apr 2023 11:23:48 -0700 Subject: [PATCH 16/44] IO-2206 WIP Time Ticket Approval Queue. --- bodyshop_translations.babel | 194 ++++++++++++++ .../components/header/header.component.jsx | 5 + .../shop-info/shop-info.rbac.component.jsx | 24 ++ .../time-ticket-task-modal.container.jsx | 65 +++-- .../tt-approvals-list.component.jsx | 243 ++++++++++++++++++ .../tt-approvals-list.container.jsx | 66 +++++ .../tt-approve-button.component.jsx | 68 +++++ client/src/graphql/tt-approvals.queries.js | 93 +++++++ .../pages/manage/manage.page.component.jsx | 4 + .../tt-approvals.page.container.jsx | 42 +++ client/src/translations/en_us/common.json | 7 + client/src/translations/es/common.json | 7 + client/src/translations/fr/common.json | 7 + 13 files changed, 804 insertions(+), 21 deletions(-) create mode 100644 client/src/components/tt-approvals-list/tt-approvals-list.component.jsx create mode 100644 client/src/components/tt-approvals-list/tt-approvals-list.container.jsx create mode 100644 client/src/components/tt-approve-button/tt-approve-button.component.jsx create mode 100644 client/src/graphql/tt-approvals.queries.js create mode 100644 client/src/pages/tt-approvals/tt-approvals.page.container.jsx diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 81acd4f2e..ecb15e1e8 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -6963,6 +6963,53 @@ + + ttapprovals + + + approve + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + view + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + users @@ -16464,6 +16511,27 @@ + + excel + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + exceptiontitle false @@ -32429,6 +32497,27 @@ + + ttapprovals + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + vehicles false @@ -37714,6 +37803,27 @@ + + dms_posting_sheet + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + envelope_return_address false @@ -41367,6 +41477,48 @@ + + exported_gsr_by_ro + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + exported_gsr_by_ro_labor + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + gsr_by_atp false @@ -46228,6 +46380,27 @@ + + ttapprovals + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + vehicle-details false @@ -47154,6 +47327,27 @@ + + ttapprovals + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + vehicledetail false diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx index 1ed3f526d..d39169401 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -246,6 +246,11 @@ function Header({ {t("menus.header.timetickets")} + }> + + {t("menus.header.ttapprovals")} + + } diff --git a/client/src/components/shop-info/shop-info.rbac.component.jsx b/client/src/components/shop-info/shop-info.rbac.component.jsx index 5d7c244cc..2a32cca54 100644 --- a/client/src/components/shop-info/shop-info.rbac.component.jsx +++ b/client/src/components/shop-info/shop-info.rbac.component.jsx @@ -532,6 +532,30 @@ export function ShopInfoRbacComponent({ form, bodyshop }) { > + + + + + + - _.omit(ticket, "pay") - ), - }, - }); - if (result.errors) { - notification.open({ - type: "error", - message: t("timetickets.errors.creating", { - message: JSON.stringify(result.errors), - }), + if (true) { + const result = await insertTimeTicketApproval({ + variables: { + timeTicketInput: values.timetickets.map((ticket) => ({ + ..._.omit(ticket, "pay"), + bodyshopid: bodyshop.id, + })), + }, }); + if (result.errors) { + notification.open({ + type: "error", + message: t("timetickets.errors.creating", { + message: JSON.stringify(result.errors), + }), + }); + } else { + notification.open({ + type: "success", + message: t("timetickets.successes.created"), + }); + toggleModalVisible(); + } } else { - notification.open({ - type: "success", - message: t("timetickets.successes.created"), + const result = await insertTimeTickets({ + variables: { + timeTicketInput: values.timetickets.map((ticket) => + _.omit(ticket, "pay") + ), + }, }); - toggleModalVisible(); + if (result.errors) { + notification.open({ + type: "error", + message: t("timetickets.errors.creating", { + message: JSON.stringify(result.errors), + }), + }); + } else { + notification.open({ + type: "success", + message: t("timetickets.successes.created"), + }); + toggleModalVisible(); + } } } catch (error) { } finally { diff --git a/client/src/components/tt-approvals-list/tt-approvals-list.component.jsx b/client/src/components/tt-approvals-list/tt-approvals-list.component.jsx new file mode 100644 index 000000000..9c1befc79 --- /dev/null +++ b/client/src/components/tt-approvals-list/tt-approvals-list.component.jsx @@ -0,0 +1,243 @@ +import { EditFilled } from "@ant-design/icons"; +import { Button, Card, Space, Table, Tag } from "antd"; +import Dinero from "dinero.js"; +import moment from "moment"; +import React, { useMemo, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { Link, useHistory, useLocation } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import { setModalContext } from "../../redux/modals/modals.actions"; +import { + selectAuthLevel, + selectBodyshop, +} from "../../redux/user/user.selectors"; +import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter"; +import { onlyUnique } from "../../utils/arrayHelper"; +import { alphaSort, dateSort } from "../../utils/sorters"; +import RbacWrapper, { + HasRbacAccess, +} from "../rbac-wrapper/rbac-wrapper.component"; +import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component"; +import queryString from "query-string"; +import TtApproveButtonComponent from "../tt-approve-button/tt-approve-button.component"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, + authLevel: selectAuthLevel, +}); + +const mapDispatchToProps = (dispatch) => ({ + setTimeTicketTaskContext: (context) => + dispatch(setModalContext({ context: context, modal: "timeTicketTask" })), +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(TtApprovalsListComponent); + +export function TtApprovalsListComponent({ + bodyshop, + setTimeTicketTaskContext, + authLevel, + disabled, + loading, + tt_approval_queue, + total, + refetch, + techConsole, + jobId, + extra, +}) { + const [state, setState] = useState({ + sortedInfo: {}, + filteredInfo: { text: "" }, + }); + + const { t } = useTranslation(); + const history = useHistory(); + const search = queryString.parse(useLocation().search); + const { page } = search; + const [selectedTickets, setSelectedTickets] = useState([]); + + const columns = [ + { + title: t("timetickets.fields.date"), + dataIndex: "date", + key: "date", + sorter: (a, b) => dateSort(a.date, b.date), + sortOrder: + state.sortedInfo.columnKey === "date" && state.sortedInfo.order, + render: (text, record) => {record.date}, + }, + { + title: t("timetickets.fields.employee"), + dataIndex: "employeeid", + key: "employeeid", + sorter: (a, b) => alphaSort(a.employee.last_name, b.employee.last_name), + sortOrder: + state.sortedInfo.columnKey === "employee" && state.sortedInfo.order, + render: (text, record) => + `${record.employee.first_name} ${record.employee.last_name}`, + filters: + tt_approval_queue + .map((l) => l.employeeid) + .filter(onlyUnique) + .map((s) => { + return { + text: (() => { + const emp = bodyshop.employees.find((e) => e.id === s); + + return `${emp?.first_name} ${emp?.last_name}`; + })(), // + value: [s], + }; + }) || [], + onFilter: (value, record) => value.includes(record.employeeid), + }, + { + title: t("timetickets.fields.cost_center"), + dataIndex: "cost_center", + key: "cost_center", + sorter: (a, b) => alphaSort(a.cost_center, b.cost_center), + render: (text, record) => + record.cost_center === "timetickets.labels.shift" + ? t(record.cost_center) + : record.cost_center, + sortOrder: + state.sortedInfo.columnKey === "cost_center" && state.sortedInfo.order, + filters: + tt_approval_queue + .map((l) => l.cost_center) + .filter(onlyUnique) + .map((s) => { + return { + text: s === "timetickets.labels.shift" ? t(s) : s, //|| "No Status*", + value: [s], + }; + }) || [], + onFilter: (value, record) => value.includes(record.cost_center), + }, + { + title: t("jobs.fields.ro_number"), + dataIndex: "ro_number", + key: "ro_number", + sorter: (a, b) => + alphaSort(a.job && a.job.ro_number, b.job && b.job.ro_number), + sortOrder: + state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order, + render: (text, record) => + record.job && ( + + + {record.job.ro_number || "N/A"} + {record.job.status} + + + ), + }, + { + title: t("timetickets.fields.productivehrs"), + dataIndex: "productivehrs", + key: "productivehrs", + sorter: (a, b) => a.productivehrs - b.productivehrs, + sortOrder: + state.sortedInfo.columnKey === "productivehrs" && + state.sortedInfo.order, + }, + { + title: t("timetickets.fields.actualhrs"), + dataIndex: "actualhrs", + key: "actualhrs", + sorter: (a, b) => a.actualhrs - b.actualhrs, + sortOrder: + state.sortedInfo.columnKey === "actualhrs" && state.sortedInfo.order, + }, + { + title: t("timetickets.fields.memo"), + dataIndex: "memo", + key: "memo", + sorter: (a, b) => alphaSort(a.memo, b.memo), + sortOrder: + state.sortedInfo.columnKey === "memo" && state.sortedInfo.order, + render: (text, record) => + record.clockon || record.clockoff ? t(record.memo) : record.memo, + }, + { + title: t("timetickets.fields.clockon"), + dataIndex: "clockon", + key: "clockon", + + render: (text, record) => ( + {record.clockon} + ), + }, + { + title: "Pay", + dataIndex: "pay", + key: "pay", + render: (text, record) => + Dinero({ amount: Math.round(record.rate * 100) }) + .multiply(record.flat_rate ? record.productivehrs : record.actualhrs) + .toFormat("$0.00"), + }, + ]; + + const handleTableChange = (pagination, filters, sorter) => { + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); + search.page = pagination.current; + if (sorter && sorter.column && sorter.column.sortObject) { + search.searchObj = JSON.stringify(sorter.column.sortObject(sorter.order)); + } else { + delete search.searchObj; + search.sortcolumn = sorter.order ? sorter.columnKey : null; + search.sortorder = sorter.order; + } + + search.sort = JSON.stringify({ [sorter.columnKey]: sorter.order }); + history.push({ search: queryString.stringify(search) }); + }; + + return ( + + {extra} + + + } + > + + setSelectedTickets(selectedRows.map((i) => i.id)), + onSelect: (record, selected, selectedRows, nativeEvent) => { + setSelectedTickets(selectedRows.map((i) => i.id)); + }, + selectedRowKeys: selectedTickets, + type: "checkbox", + }} + /> + + ); +} diff --git a/client/src/components/tt-approvals-list/tt-approvals-list.container.jsx b/client/src/components/tt-approvals-list/tt-approvals-list.container.jsx new file mode 100644 index 000000000..0ef860fe5 --- /dev/null +++ b/client/src/components/tt-approvals-list/tt-approvals-list.container.jsx @@ -0,0 +1,66 @@ +import { useQuery } from "@apollo/client"; +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import AlertComponent from "../alert/alert.component"; +import { QUERY_TIME_TICKETS_IN_RANGE } from "../../graphql/timetickets.queries"; +import { + setBreadcrumbs, + setSelectedHeader, +} from "../../redux/application/application.actions"; +import TtApprovalsListComponent from "./tt-approvals-list.component"; +import { useLocation } from "react-router-dom"; +import queryString from "query-string"; +import { QUERY_ALL_TT_APPROVALS_PAGINATED } from "../../graphql/tt-approvals.queries"; + +const mapStateToProps = createStructuredSelector({}); + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), + setSelectedHeader: (key) => dispatch(setSelectedHeader(key)), +}); + +export function TimeTicketsContainer({ + bodyshop, + setBreadcrumbs, + setSelectedHeader, +}) { + const searchParams = queryString.parse(useLocation().search); + const { page, sortcolumn, sortorder, search, searchObj } = searchParams; + + const { loading, error, data } = useQuery(QUERY_ALL_TT_APPROVALS_PAGINATED, { + fetchPolicy: "network-only", + nextFetchPolicy: "network-only", + variables: { + search: search || "", + offset: page ? (page - 1) * 25 : 0, + limit: 25, + order: [ + searchObj + ? JSON.parse(searchObj) + : { + [sortcolumn || "date"]: sortorder + ? sortorder === "descend" + ? "desc" + : "asc" + : "desc", + }, + ], + }, + }); + + if (error) return ; + + return ( + + ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(TimeTicketsContainer); diff --git a/client/src/components/tt-approve-button/tt-approve-button.component.jsx b/client/src/components/tt-approve-button/tt-approve-button.component.jsx new file mode 100644 index 000000000..a8ab89aa9 --- /dev/null +++ b/client/src/components/tt-approve-button/tt-approve-button.component.jsx @@ -0,0 +1,68 @@ +import { useApolloClient } from "@apollo/client"; +import { Button } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + QUERY_TT_APPROVALS_BY_IDS, + UPDATE_TT_BY_APPROVAL, +} from "../../graphql/tt-approvals.queries"; +import { + selectBodyshop, + selectCurrentUser, +} from "../../redux/user/user.selectors"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, + currentUser: selectCurrentUser, +}); + +export function TtApproveButton({ + bodyshop, + currentUser, + selectedTickets, + disabled, + loadingCallback, + completedCallback, + refetch, +}) { + const { t } = useTranslation(); + const client = useApolloClient(); + + const [loading, setLoading] = useState(false); + + const handleQbxml = async () => { + const { data } = await client.query({ + query: QUERY_TT_APPROVALS_BY_IDS, + variables: { ids: selectedTickets }, + }); + + const { data: insertData } = await client.query({ + query: UPDATE_TT_BY_APPROVAL, + variables: { + ttApprovalUpdates: data.map((tta) => ({ + _set: {}, + where: { id: { _eq: tta.id } }, + })), + }, + }); + + // if (!!completedCallback) completedCallback([]); + // if (!!loadingCallback) loadingCallback(false); + + // setLoading(false); + }; + + return ( + + ); +} + +export default connect(mapStateToProps, null)(TtApproveButton); + +const generateGqlUpdate = (ttapproval) => { + return; +}; diff --git a/client/src/graphql/tt-approvals.queries.js b/client/src/graphql/tt-approvals.queries.js new file mode 100644 index 000000000..48540d935 --- /dev/null +++ b/client/src/graphql/tt-approvals.queries.js @@ -0,0 +1,93 @@ +import { gql } from "@apollo/client"; + +export const QUERY_ALL_TT_APPROVALS_PAGINATED = gql` + query QUERY_ALL_TT_APPROVALS_PAGINATED( + $offset: Int + $limit: Int + $order: [tt_approval_queue_order_by!]! + ) { + tt_approval_queue(offset: $offset, limit: $limit, order_by: $order) { + id + jobid + bodyshopid + employeeid + employee { + first_name + last_name + id + } + job { + ro_number + status + id + } + employeeid + actualhrs + productivehrs + ciecacode + cost_center + date + rate + } + tt_approval_queue_aggregate { + aggregate { + count(distinct: true) + } + } + } +`; + +export const INSERT_NEW_TT_APPROVALS = gql` + mutation INSERT_NEW_TT_APPROVALS( + $timeTicketInput: [tt_approval_queue_insert_input!]! + ) { + insert_tt_approval_queue(objects: $timeTicketInput) { + returning { + id + employeeid + productivehrs + actualhrs + ciecacode + date + memo + flat_rate + } + } + } +`; + +export const QUERY_TT_APPROVALS_BY_IDS = gql` + query QUERY_TT_APPROVALS_BY_IDS($ids: [uuid!]!) { + tt_approval_queue(where: { id: { _in: $ids } }) { + id + productivehrs + actualhrs + rate + memo + jobid + flat_rate + employeeid + date + ciecacode + bodyshopid + cost_center + } + } +`; + +export const UPDATE_TT_BY_APPROVAL = gql` + mutation UPDATE_TT_BY_APPROVAL( + $ttApprovalUpdates: [tt_approval_queue_updates!]! + ) { + update_tt_approval_queue_many(updates: $ttApprovalUpdates) { + returning { + id + approved_at + approved_by + timeticket { + id + } + } + } + } +`; diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index d117aaeec..2f8b8ae37 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -170,6 +170,9 @@ const Dms = lazy(() => import("../dms/dms.container")); const DmsPayables = lazy(() => import("../dms-payables/dms-payables.container") ); +const TtApprovals = lazy(() => + import("../tt-approvals/tt-approvals.page.container") +); const { Content, Footer } = Layout; @@ -370,6 +373,7 @@ export function Manage({ match, conflict, bodyshop }) { path={`${match.path}/accounting/exportlogs`} component={ExportLogs} /> + diff --git a/client/src/pages/tt-approvals/tt-approvals.page.container.jsx b/client/src/pages/tt-approvals/tt-approvals.page.container.jsx new file mode 100644 index 000000000..1d8b689ef --- /dev/null +++ b/client/src/pages/tt-approvals/tt-approvals.page.container.jsx @@ -0,0 +1,42 @@ +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; +import TtApprovalsList from "../../components/tt-approvals-list/tt-approvals-list.container"; +import { + setBreadcrumbs, + setSelectedHeader, +} from "../../redux/application/application.actions"; +import { selectBodyshop } from "../../redux/user/user.selectors"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), + setSelectedHeader: (key) => dispatch(setSelectedHeader(key)), +}); + +export function TtApprovalsPage({ setBreadcrumbs, setSelectedHeader }) { + const { t } = useTranslation(); + + useEffect(() => { + document.title = t("titles.ttapprovals"); + setSelectedHeader("ttapprovals"); + setBreadcrumbs([ + { + link: "/manage/ttapprovals", + label: t("titles.bc.ttapprovals"), + }, + ]); + }, [t, setBreadcrumbs, setSelectedHeader]); + + return ( + + + + ); +} +export default connect(mapStateToProps, mapDispatchToProps)(TtApprovalsPage); diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 9fe5d867e..400a413e0 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -439,6 +439,10 @@ "list": "Time Tickets -> List", "shiftedit": "Time Tickets -> Shift Edit" }, + "ttapprovals": { + "approve": "Time Ticket Approval -> Approve", + "view": "Time Ticket Approval -> View" + }, "users": { "editaccess": "Users -> Edit access" } @@ -1902,6 +1906,7 @@ "shop_vendors": "Vendors", "temporarydocs": "Temporary Documents", "timetickets": "Time Tickets", + "ttapprovals": "Time Ticket Approvals", "vehicles": "Vehicles" }, "jobsactions": { @@ -2733,6 +2738,7 @@ "shop-vendors": "Vendors", "temporarydocs": "Temporary Documents", "timetickets": "Time Tickets", + "ttapprovals": "Time Ticket Approvals", "vehicle-details": "Vehicle: {{vehicle}}", "vehicles": "Vehicles" }, @@ -2778,6 +2784,7 @@ "shop_vendors": "Vendors | $t(titles.app)", "temporarydocs": "Temporary Documents | $t(titles.app)", "timetickets": "Time Tickets | $t(titles.app)", + "ttapprovals": "Time Ticket Approvals | $t(titles.app)", "vehicledetail": "Vehicle Details {{vehicle}} | $t(titles.app)", "vehicles": "All Vehicles | $t(titles.app)" }, diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 1b4dda6b8..9184f2237 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -439,6 +439,10 @@ "list": "", "shiftedit": "" }, + "ttapprovals": { + "approve": "", + "view": "" + }, "users": { "editaccess": "" } @@ -1902,6 +1906,7 @@ "shop_vendors": "Vendedores", "temporarydocs": "", "timetickets": "", + "ttapprovals": "", "vehicles": "Vehículos" }, "jobsactions": { @@ -2733,6 +2738,7 @@ "shop-vendors": "", "temporarydocs": "", "timetickets": "", + "ttapprovals": "", "vehicle-details": "", "vehicles": "" }, @@ -2778,6 +2784,7 @@ "shop_vendors": "Vendedores | $t(titles.app)", "temporarydocs": "", "timetickets": "", + "ttapprovals": "", "vehicledetail": "Detalles del vehículo {{vehicle}} | $t(titles.app)", "vehicles": "Todos los vehiculos | $t(titles.app)" }, diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 35bba987c..5481a9dc5 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -439,6 +439,10 @@ "list": "", "shiftedit": "" }, + "ttapprovals": { + "approve": "", + "view": "" + }, "users": { "editaccess": "" } @@ -1902,6 +1906,7 @@ "shop_vendors": "Vendeurs", "temporarydocs": "", "timetickets": "", + "ttapprovals": "", "vehicles": "Véhicules" }, "jobsactions": { @@ -2733,6 +2738,7 @@ "shop-vendors": "", "temporarydocs": "", "timetickets": "", + "ttapprovals": "", "vehicle-details": "", "vehicles": "" }, @@ -2778,6 +2784,7 @@ "shop_vendors": "Vendeurs | $t(titles.app)", "temporarydocs": "", "timetickets": "", + "ttapprovals": "", "vehicledetail": "Détails du véhicule {{vehicle} | $t(titles.app)", "vehicles": "Tous les véhicules | $t(titles.app)" }, From 132cf98a37fb61d60faa30226390f06fc384b33e Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 21 Apr 2023 12:21:28 -0700 Subject: [PATCH 17/44] IO-2086 Resolve local media server pulling full size image for thumbnail. --- .../jobs-documents-local-gallery.external.component.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.external.component.jsx b/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.external.component.jsx index 49fef085e..ce8622713 100644 --- a/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.external.component.jsx +++ b/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.external.component.jsx @@ -52,11 +52,15 @@ function JobDocumentsLocalGalleryExternal({ val.type.mime && val.type.mime.startsWith("image") ) { - acc.push(val); + acc.push({ ...val, src: val.thumbnail }); } return acc; }, []) : []; + console.log( + "🚀 ~ file: jobs-documents-local-gallery.external.component.jsx:48 ~ useEffect ~ documents:", + documents + ); setgalleryImages(documents); }, [allMedia, jobId, setgalleryImages, t]); From 648e8aaae0822cc06892bae72c9d5c07c7d6f57d Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Mon, 24 Apr 2023 13:13:32 -0700 Subject: [PATCH 18/44] QBO USA Changes for tax and non tax items. --- bodyshop_translations.babel | 44 +++++- .../bill-form/bill-form.lines.component.jsx | 7 +- client/src/translations/en_us/common.json | 2 + client/src/translations/es/common.json | 2 + client/src/translations/fr/common.json | 2 + server/accounting/qb-receivables-lines.js | 137 +++++++++++++----- server/accounting/qbo/qbo-receivables.js | 4 +- server/accounting/qbxml/qbxml-payables.js | 13 +- server/graphql-client/queries.js | 7 +- 9 files changed, 168 insertions(+), 50 deletions(-) diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index f718f02c8..9a19357f6 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -1,4 +1,4 @@ - +