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");