diff --git a/client/src/components/print-center-jobs/print-center-jobs.component.jsx b/client/src/components/print-center-jobs/print-center-jobs.component.jsx index ddb9a247d..96169a7d5 100644 --- a/client/src/components/print-center-jobs/print-center-jobs.component.jsx +++ b/client/src/components/print-center-jobs/print-center-jobs.component.jsx @@ -1,3 +1,4 @@ +import { useTreatments } from "@splitsoftware/splitio-react"; import { Card, Col, Input, Row, Space, Typography } from "antd"; import _ from "lodash"; import React, { useState } from "react"; @@ -23,8 +24,13 @@ export function PrintCenterJobsComponent({ printCenterModal, bodyshop }) { const { id: jobId, job } = printCenterModal.context; const tempList = TemplateList("job", {}); const { t } = useTranslation(); + const { Enhanced_Payroll } = useTreatments( + ["Enhanced_Payroll"], + {}, + bodyshop.imexshopid + ); - const JobsReportsList = + const Templates = bodyshop.cdk_dealerid === null && bodyshop.pbs_serialnumber === null ? Object.keys(tempList) .map((key) => { @@ -51,7 +57,26 @@ export function PrintCenterJobsComponent({ printCenterModal, bodyshop }) { bodyshop.region_config.includes(Object.keys(temp.regions)) === true) ); - + const JobsReportsList = + Enhanced_Payroll.treatment === "on" + ? Object.keys(Templates) + .map((key) => { + return Templates[key]; + }) + .filter( + (temp) => + temp.enhanced_payroll === undefined || + temp.enhanced_payroll === true + ) + : Object.keys(Templates) + .map((key) => { + return Templates[key]; + }) + .filter( + (temp) => + temp.enhanced_payroll === undefined || + temp.enhanced_payroll === false + ); const filteredJobsReportsList = search !== "" ? JobsReportsList.filter((r) => 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 913d27282..a18fcfbf1 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,4 +1,5 @@ import { useLazyQuery } from "@apollo/client"; +import { useTreatments } from "@splitsoftware/splitio-react"; import { Button, Card, @@ -19,6 +20,7 @@ import { createStructuredSelector } from "reselect"; import { QUERY_ACTIVE_EMPLOYEES } from "../../graphql/employees.queries"; import { QUERY_ALL_VENDORS } from "../../graphql/vendors.queries"; import { selectReportCenter } from "../../redux/modals/modals.selectors"; +import { selectBodyshop } from "../../redux/user/user.selectors"; import DatePIckerRanges from "../../utils/DatePickerRanges"; import { GenerateDocument } from "../../utils/RenderTemplate"; import { TemplateList } from "../../utils/TemplateConstants"; @@ -27,6 +29,7 @@ import VendorSearchSelect from "../vendor-search-select/vendor-search-select.com import "./report-center-modal.styles.scss"; const mapStateToProps = createStructuredSelector({ reportCenterModal: selectReportCenter, + bodyshop: selectBodyshop, }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) @@ -36,16 +39,38 @@ export default connect( mapDispatchToProps )(ReportCenterModalComponent); -export function ReportCenterModalComponent({ reportCenterModal }) { +export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) { const [form] = Form.useForm(); const [search, setSearch] = useState(""); + const { Enhanced_Payroll } = useTreatments( + ["Enhanced_Payroll"], + {}, + bodyshop.imexshopid + ); const [loading, setLoading] = useState(false); const { t } = useTranslation(); const Templates = TemplateList("report_center"); - const ReportsList = Object.keys(Templates).map((key) => { - return Templates[key]; - }); + const ReportsList = + Enhanced_Payroll.treatment === "on" + ? Object.keys(Templates) + .map((key) => { + return Templates[key]; + }) + .filter( + (temp) => + temp.enhanced_payroll === undefined || + temp.enhanced_payroll === true + ) + : Object.keys(Templates) + .map((key) => { + return Templates[key]; + }) + .filter( + (temp) => + temp.enhanced_payroll === undefined || + temp.enhanced_payroll === false + ); const { visible } = reportCenterModal; const [callVendorQuery, { data: vendorData, called: vendorCalled }] = diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index beafdd55a..0810befc7 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -614,6 +614,7 @@ "laborrates": "Labor Rates", "licensing": "Licensing", "md_tasks_presets": "Tasks Presets", + "md_parts_scan": "Parts Scan Rules", "md_to_emails": "Preset To Emails", "md_to_emails_emails": "Emails", "messagingpresets": "Messaging Presets", @@ -2343,6 +2344,7 @@ "appointment_confirmation": "Appointment Confirmation", "appointment_reminder": "Appointment Reminder", "casl_authorization": "CASL Authorization", + "committed_timetickets_ro": "Committed Time Tickets", "coversheet_landscape": "Coversheet (Landscape)", "coversheet_portrait": "Coversheet Portrait", "csi_invitation": "CSI Invitation", @@ -2380,6 +2382,7 @@ "mpi_final_acct_sheet": "MPI - Final Accounting Sheet (Direct Repair)", "mpi_final_repair_acct_sheet": "MPI - Final Accounting Sheet", "paint_grid": "Paint Grid", + "parts_dispatch": "Parts Dispatch", "parts_invoice_label_single": "Parts Label Single", "parts_label_multiple": "Parts Label - Multi", "parts_label_single": "Parts Label - Single", @@ -2414,7 +2417,8 @@ "worksheet_sorted_by_operation": "Worksheet by Operation", "worksheet_sorted_by_operation_no_hours": "Worksheet by Operation (No Hours)", "worksheet_sorted_by_operation_part_type": "Worksheet by Operation & Part Type", - "worksheet_sorted_by_operation_type": "Worksheet by Operation Type" + "worksheet_sorted_by_operation_type": "Worksheet by Operation Type", + "worksheet_sorted_by_team": "Worksheet by Team" }, "labels": { "groups": { @@ -2441,6 +2445,7 @@ "subjects": { "jobs": { "individual_job_note": "Job Note RO: {{ro_number}}", + "parts_dispatch": "Parts Dispatch RO: {{ro_number}}", "parts_order": "Parts Order PO: {{ro_number}} - {{name}}", "parts_return_slip": "Parts Return PO: {{ro_number}} - {{name}}", "sublet_order": "Sublet Order PO: {{ro_number}} - {{name}}" @@ -2561,6 +2566,9 @@ "attendance_detail": "Attendance (All Employees)", "attendance_employee": "Employee Attendance", "attendance_summary": "Attendance Summary (All Employees)", + "committed_timetickets": "Committed Time Tickets", + "committed_timetickets_employee": "Committed Employee Time Tickets", + "committed_timetickets_summary": "Committed Time Tickets Summary", "credits_not_received_date": "Credits not Received by Date", "credits_not_received_date_vendorid": "Credits not Received by Vendor", "csi": "CSI Responses", @@ -2659,6 +2667,7 @@ "timetickets_summary": "Time Tickets Summary", "unclaimed_hrs": "Unflagged Hours", "void_ros": "Void ROs", + "work_in_progress_committed_labour": "Work in Progress - Committed Labor", "work_in_progress_jobs": "Work in Progress - Jobs", "work_in_progress_labour": "Work in Progress - Labor", "work_in_progress_payables": "Work in Progress - Payables" @@ -2765,6 +2774,7 @@ "clockoff": "Clock Off", "clockon": "Clocked In", "committed": "Committed", + "committed_at": "Committed At", "cost_center": "Cost Center", "created_by": "Created By", "date": "Ticket Date", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 0239ac1d0..3525e8e60 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -613,6 +613,7 @@ "jobstatuses": "", "laborrates": "", "licensing": "", + "md_parts_scan": "", "md_tasks_presets": "", "md_to_emails": "", "md_to_emails_emails": "", @@ -2343,6 +2344,7 @@ "appointment_confirmation": "", "appointment_reminder": "", "casl_authorization": "", + "committed_timetickets_ro": "", "coversheet_landscape": "", "coversheet_portrait": "", "csi_invitation": "", @@ -2380,6 +2382,7 @@ "mpi_final_acct_sheet": "", "mpi_final_repair_acct_sheet": "", "paint_grid": "", + "parts_dispatch": "", "parts_invoice_label_single": "", "parts_label_multiple": "", "parts_label_single": "", @@ -2414,7 +2417,8 @@ "worksheet_sorted_by_operation": "", "worksheet_sorted_by_operation_no_hours": "", "worksheet_sorted_by_operation_part_type": "", - "worksheet_sorted_by_operation_type": "" + "worksheet_sorted_by_operation_type": "", + "worksheet_sorted_by_team": "" }, "labels": { "groups": { @@ -2441,6 +2445,7 @@ "subjects": { "jobs": { "individual_job_note": "", + "parts_dispatch": "", "parts_order": "", "parts_return_slip": "", "sublet_order": "" @@ -2561,6 +2566,9 @@ "attendance_detail": "", "attendance_employee": "", "attendance_summary": "", + "committed_timetickets": "", + "committed_timetickets_employee": "", + "committed_timetickets_summary": "", "credits_not_received_date": "", "credits_not_received_date_vendorid": "", "csi": "", @@ -2659,6 +2667,7 @@ "timetickets_summary": "", "unclaimed_hrs": "", "void_ros": "", + "work_in_progress_committed_labour": "", "work_in_progress_jobs": "", "work_in_progress_labour": "", "work_in_progress_payables": "" @@ -2765,6 +2774,7 @@ "clockoff": "", "clockon": "", "committed": "", + "committed_at": "", "cost_center": "", "created_by": "", "date": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index a017932ac..5ab128624 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -613,6 +613,7 @@ "jobstatuses": "", "laborrates": "", "licensing": "", + "md_parts_scan": "", "md_tasks_presets": "", "md_to_emails": "", "md_to_emails_emails": "", @@ -2343,6 +2344,7 @@ "appointment_confirmation": "", "appointment_reminder": "", "casl_authorization": "", + "committed_timetickets_ro": "", "coversheet_landscape": "", "coversheet_portrait": "", "csi_invitation": "", @@ -2380,6 +2382,7 @@ "mpi_final_acct_sheet": "", "mpi_final_repair_acct_sheet": "", "paint_grid": "", + "parts_dispatch": "", "parts_invoice_label_single": "", "parts_label_multiple": "", "parts_label_single": "", @@ -2414,7 +2417,8 @@ "worksheet_sorted_by_operation": "", "worksheet_sorted_by_operation_no_hours": "", "worksheet_sorted_by_operation_part_type": "", - "worksheet_sorted_by_operation_type": "" + "worksheet_sorted_by_operation_type": "", + "worksheet_sorted_by_team": "" }, "labels": { "groups": { @@ -2441,6 +2445,7 @@ "subjects": { "jobs": { "individual_job_note": "", + "parts_dispatch": "", "parts_order": "", "parts_return_slip": "", "sublet_order": "" @@ -2561,6 +2566,9 @@ "attendance_detail": "", "attendance_employee": "", "attendance_summary": "", + "committed_timetickets": "", + "committed_timetickets_employee": "", + "committed_timetickets_summary": "", "credits_not_received_date": "", "credits_not_received_date_vendorid": "", "csi": "", @@ -2659,6 +2667,7 @@ "timetickets_summary": "", "unclaimed_hrs": "", "void_ros": "", + "work_in_progress_committed_labour": "", "work_in_progress_jobs": "", "work_in_progress_labour": "", "work_in_progress_payables": "" @@ -2765,6 +2774,7 @@ "clockoff": "", "clockon": "", "committed": "", + "committed_at": "", "cost_center": "", "created_by": "", "date": "", diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js index 65989ac84..4f649d0e2 100644 --- a/client/src/utils/TemplateConstants.js +++ b/client/src/utils/TemplateConstants.js @@ -189,6 +189,16 @@ export const TemplateList = (type, context) => { key: "worksheet_by_line_number", disabled: false, group: "worksheet", + enhanced_payroll: false, + }, + worksheet_by_line_number_enhanced: { + title: i18n.t("printcenter.jobs.worksheet_by_line_number"), + description: "", + subject: i18n.t("printcenter.jobs.worksheet_by_line_number"), + key: "worksheet_by_line_number_enhanced", + disabled: false, + group: "worksheet", + enhanced_payroll: true, }, worksheet_sorted_by_operation_type: { title: i18n.t( @@ -201,6 +211,20 @@ export const TemplateList = (type, context) => { key: "worksheet_sorted_by_operation_type", disabled: false, group: "worksheet", + enhanced_payroll: false, + }, + worksheet_sorted_by_operation_type_enhanced: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_type" + ), + description: "", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_type" + ), + key: "worksheet_sorted_by_operation_type_enhanced", + disabled: false, + group: "worksheet", + enhanced_payroll: true, }, worksheet_sorted_by_operation: { title: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), @@ -209,6 +233,16 @@ export const TemplateList = (type, context) => { key: "worksheet_sorted_by_operation", disabled: false, group: "worksheet", + enhanced_payroll: false, + }, + worksheet_sorted_by_operation_enhanced: { + title: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), + description: "", + subject: i18n.t("printcenter.jobs.worksheet_sorted_by_operation"), + key: "worksheet_sorted_by_operation_enhanced", + disabled: false, + group: "worksheet", + enhanced_payroll: true, }, worksheet_sorted_by_operation_no_hours: { title: i18n.t( @@ -221,6 +255,20 @@ export const TemplateList = (type, context) => { key: "worksheet_sorted_by_operation_no_hours", disabled: false, group: "worksheet", + enhanced_payroll: false, + }, + worksheet_sorted_by_operation_no_hours_enhanced: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_no_hours" + ), + description: "", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_no_hours" + ), + key: "worksheet_sorted_by_operation_no_hours_enhanced", + disabled: false, + group: "worksheet", + enhanced_payroll: true, }, worksheet_sorted_by_operation_part_type: { title: i18n.t( @@ -233,6 +281,20 @@ export const TemplateList = (type, context) => { key: "worksheet_sorted_by_operation_part_type", disabled: false, group: "worksheet", + enhanced_payroll: false, + }, + worksheet_sorted_by_operation_part_type_enhanced: { + title: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_part_type" + ), + description: "", + subject: i18n.t( + "printcenter.jobs.worksheet_sorted_by_operation_part_type" + ), + key: "worksheet_sorted_by_operation_part_type_enhanced", + disabled: false, + group: "worksheet", + enhanced_payroll: true, }, payments_by_job: { title: i18n.t("printcenter.jobs.payments_by_job"), @@ -514,6 +576,24 @@ export const TemplateList = (type, context) => { group: "financial", dms: true, }, + worksheet_sorted_by_team: { + title: i18n.t("printcenter.jobs.worksheet_sorted_by_team"), + description: "", + subject: i18n.t("printcenter.jobs.worksheet_sorted_by_team"), + key: "worksheet_sorted_by_team", + disabled: false, + group: "worksheet", + enhanced_payroll: true, + }, + committed_timetickets_ro: { + title: i18n.t("printcenter.jobs.committed_timetickets_ro"), + description: "", + subject: i18n.t("printcenter.jobs.committed_timetickets_ro"), + key: "committed_timetickets_ro", + disabled: false, + group: "financial", + enhanced_payroll: true, + }, } : {}), ...(!type || type === "job_special" @@ -1144,6 +1224,10 @@ export const TemplateList = (type, context) => { key: "timetickets_employee", idtype: "employee", disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.date"), + }, group: "payroll", }, attendance_detail: { @@ -1582,6 +1666,24 @@ export const TemplateList = (type, context) => { }, group: "jobs", }, + work_in_progress_committed_labour: { + title: i18n.t( + "reportcenter.templates.work_in_progress_committed_labour" + ), + description: "", + subject: i18n.t( + "reportcenter.templates.work_in_progress_committed_labour" + ), + key: "work_in_progress_committed_labour", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.jobs"), + field: i18n.t("jobs.fields.date_open"), + }, + group: "jobs", + enhanced_payroll: true, + }, work_in_progress_payables: { title: i18n.t("reportcenter.templates.work_in_progress_payables"), description: "", @@ -1938,6 +2040,52 @@ export const TemplateList = (type, context) => { }, group: "jobs", }, + committed_timetickets: { + title: i18n.t("reportcenter.templates.committed_timetickets"), + subject: i18n.t("reportcenter.templates.committed_timetickets"), + key: "committed_timetickets", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.committed_at"), + }, + group: "payroll", + enhanced_payroll: true, + }, + committed_timetickets_employee: { + title: i18n.t( + "reportcenter.templates.committed_timetickets_employee" + ), + subject: i18n.t( + "reportcenter.templates.committed_timetickets_employee" + ), + key: "committed_timetickets_employee", + idtype: "employee", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.committed_at"), + }, + group: "payroll", + enhanced_payroll: true, + }, + committed_timetickets_summary: { + title: i18n.t( + "reportcenter.templates.committed_timetickets_summary" + ), + subject: i18n.t( + "reportcenter.templates.committed_timetickets_summary" + ), + key: "committed_timetickets_summary", + //idtype: "vendor", + disabled: false, + rangeFilter: { + object: i18n.t("reportcenter.labels.objects.timetickets"), + field: i18n.t("timetickets.fields.committed_at"), + }, + group: "payroll", + enhanced_payroll: true, + }, } : {}), ...(!type || type === "courtesycarcontract"