diff --git a/.platform/hooks/predeploy/01-install-dd.sh b/.platform-disabled/hooks/predeploy/01-install-dd.sh similarity index 100% rename from .platform/hooks/predeploy/01-install-dd.sh rename to .platform-disabled/hooks/predeploy/01-install-dd.sh diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx index bdf216d3b..cc343d54d 100644 --- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx +++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx @@ -77,6 +77,8 @@ export function JobsDetailHeader({ job, bodyshop, disabled, insertAuditTrail, is .reduce((acc, val) => acc + val.mod_lb_hrs, 0); const ownerTitle = OwnerNameDisplayFunction(job).trim(); + const employeeData = bodyshop.associations.find((a) => a.useremail === job.admin_clerk)?.user?.employee ?? null; + // Handle checkbox changes const handleCheckboxChange = async (field, checked) => { const value = checked ? dayjs().toISOString() : null; @@ -162,7 +164,7 @@ export function JobsDetailHeader({ job, bodyshop, disabled, insertAuditTrail, is {job.cccontracts.map((c, index) => ( - {`${c.agreementnumber} - ${c.courtesycar.fleetnumber} ${c.courtesycar.year} ${c.courtesycar.make} ${c.courtesycar.model}`} + {`${c.agreementnumber} - ${c.courtesycar.fleetnumber} ${c.courtesycar.year} ${c.courtesycar.make} ${c.courtesycar.model} ${c.courtesycar.plate} - ${t(c.status)}`} {index !== job.cccontracts.length - 1 ? "," : null} @@ -355,6 +357,14 @@ export function JobsDetailHeader({ job, bodyshop, disabled, insertAuditTrail, is >
+ {job.admin_clerk && ( + <> + + + {employeeData?.displayName ?? job.admin_clerk} + + + )} {bodyHrs.toFixed(1)} / {refinishHrs.toFixed(1)} / {(bodyHrs + refinishHrs).toFixed(1)} diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index d7874e14a..3caf46059 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -424,6 +424,7 @@ export const GET_JOB_BY_PK = gql` actual_delivery actual_in acv_amount + admin_clerk adjustment_bottom_line alt_transport area_of_damage @@ -2352,12 +2353,13 @@ export const MARK_JOB_AS_UNINVOICED = gql` mutation MARK_JOB_AS_UNINVOICED($jobId: uuid!, $default_delivered: String!) { update_jobs_by_pk( pk_columns: { id: $jobId } - _set: { date_exported: null, date_invoiced: null, status: $default_delivered } + _set: { date_exported: null, date_invoiced: null, status: $default_delivered, admin_clerk: null } ) { id date_exported date_invoiced status + admin_clerk } } `; diff --git a/client/src/pages/jobs-close/jobs-close.component.jsx b/client/src/pages/jobs-close/jobs-close.component.jsx index 043e0677a..d9e949b94 100644 --- a/client/src/pages/jobs-close/jobs-close.component.jsx +++ b/client/src/pages/jobs-close/jobs-close.component.jsx @@ -39,13 +39,14 @@ import { UPDATE_JOB } from "../../graphql/jobs.queries"; import { insertAuditTrail } from "../../redux/application/application.actions"; import { selectJobReadOnly } from "../../redux/application/application.selectors"; import { setModalContext } from "../../redux/modals/modals.actions.js"; -import { selectBodyshop } from "../../redux/user/user.selectors"; +import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors"; import AuditTrailMapping from "../../utils/AuditTrailMappings"; import dayjs from "../../utils/day"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, - jobRO: selectJobReadOnly + jobRO: selectJobReadOnly, + currentUser: selectCurrentUser }); const mapDispatchToProps = (dispatch) => ({ @@ -59,7 +60,7 @@ const mapDispatchToProps = (dispatch) => ({ ) }); -export function JobsCloseComponent({ job, bodyshop, jobRO, insertAuditTrail, setPrintCenterContext }) { +export function JobsCloseComponent({ job, bodyshop, jobRO, insertAuditTrail, setPrintCenterContext, currentUser }) { const { t } = useTranslation(); const [form] = Form.useForm(); const client = useApolloClient(); @@ -97,6 +98,7 @@ export function JobsCloseComponent({ job, bodyshop, jobRO, insertAuditTrail, set kmin: values.kmin, kmout: values.kmout, dms_allocation: values.dms_allocation, + admin_clerk: currentUser.email, ...(removefromproduction ? { inproduction: false } : {}), ...(values.qb_multiple_payers ? { qb_multiple_payers: values.qb_multiple_payers } : {}) } diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 05219fd5e..193aba22a 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1678,6 +1678,7 @@ "actual_delivery": "Actual Delivery", "actual_in": "Actual In", "acv_amount": "ACV Amount", + "admin_clerk": "Admin Clerk", "adjustment_bottom_line": "Adjustments", "adjustmenthours": "Adjustment Hours", "alt_transport": "Alt. Trans.", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 20610391c..41a01b191 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1679,6 +1679,7 @@ "actual_in": "Real en", "acv_amount": "", "adjustment_bottom_line": "Ajustes", + "admin_clerk": "", "adjustmenthours": "", "alt_transport": "", "area_of_damage_impact": { diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 76d5bbd1d..e80baacbc 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1678,6 +1678,7 @@ "actual_delivery": "Livraison réelle", "actual_in": "En réel", "acv_amount": "", + "admin_clerk": "", "adjustment_bottom_line": "Ajustements", "adjustmenthours": "", "alt_transport": "", diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 0f04c9179..be33aaf1e 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -3615,6 +3615,7 @@ - adj_strdis - adj_towdis - adjustment_bottom_line + - admin_clerk - agt_addr1 - agt_addr2 - agt_city @@ -3890,6 +3891,7 @@ - adj_strdis - adj_towdis - adjustment_bottom_line + - admin_clerk - agt_addr1 - agt_addr2 - agt_city @@ -4178,6 +4180,7 @@ - adj_strdis - adj_towdis - adjustment_bottom_line + - admin_clerk - agt_addr1 - agt_addr2 - agt_city diff --git a/hasura/migrations/1762393769918_alter_table_public_jobs_add_column_admin_clerk/down.sql b/hasura/migrations/1762393769918_alter_table_public_jobs_add_column_admin_clerk/down.sql new file mode 100644 index 000000000..43e3c403d --- /dev/null +++ b/hasura/migrations/1762393769918_alter_table_public_jobs_add_column_admin_clerk/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"."jobs" add column "admin_clerk" text +-- null; diff --git a/hasura/migrations/1762393769918_alter_table_public_jobs_add_column_admin_clerk/up.sql b/hasura/migrations/1762393769918_alter_table_public_jobs_add_column_admin_clerk/up.sql new file mode 100644 index 000000000..ec6f510c5 --- /dev/null +++ b/hasura/migrations/1762393769918_alter_table_public_jobs_add_column_admin_clerk/up.sql @@ -0,0 +1,2 @@ +alter table "public"."jobs" add column "admin_clerk" text + null; diff --git a/package.json b/package.json index 8626cee74..f51009568 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,6 @@ "cookie-parser": "^1.4.7", "cors": "^2.8.5", "crisp-status-reporter": "^1.2.2", - "dd-trace": "^5.75.0", "dinero.js": "^1.9.1", "dotenv": "^17.2.3", "express": "^4.21.1", diff --git a/server.js b/server.js index 4751d7d00..5193bcd3b 100644 --- a/server.js +++ b/server.js @@ -4,14 +4,14 @@ require("dotenv").config({ path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`) }); -// Commented out due to stability issues -if (process.env.NODE_ENV) { - require("dd-trace").init({ - profiling: true, - env: process.env.NODE_ENV, - service: "bodyshop-api" - }); -} +// DATADOG TRACE Implemention (Uncomment to enable tracing, requires dd-trace package) +// if (process.env.NODE_ENV) { +// require("dd-trace").init({ +// profiling: true, +// env: process.env.NODE_ENV, +// service: "bodyshop-api" +// }); +// } const cors = require("cors"); const http = require("http");