Merged in feature/IO-3480-Production-Actual-Completion (pull request #2746)

IO-3480 Production List Actual Completion

Approved-by: Dave Richer
This commit is contained in:
Allan Carr
2025-12-26 22:54:12 +00:00
committed by Dave Richer
3 changed files with 28 additions and 15 deletions

View File

@@ -161,7 +161,6 @@ const productionListColumnsData = ({ technician, state, activeStatuses, data, bo
dataIndex: "actual_in_time", dataIndex: "actual_in_time",
key: "actual_in_time", key: "actual_in_time",
ellipsis: true, ellipsis: true,
render: (text, record) => <TimeFormatter>{record.actual_in}</TimeFormatter> render: (text, record) => <TimeFormatter>{record.actual_in}</TimeFormatter>
}, },
{ {
@@ -181,6 +180,22 @@ const productionListColumnsData = ({ technician, state, activeStatuses, data, bo
render: (text, record) => <TimeFormatter>{record.scheduled_completion}</TimeFormatter> render: (text, record) => <TimeFormatter>{record.scheduled_completion}</TimeFormatter>
}, },
{
title: i18n.t("jobs.fields.actual_completion"),
dataIndex: "actual_completion",
key: "actual_completion",
ellipsis: true,
sorter: (a, b) => dateSort(a.actual_completion, b.actual_completion),
sortOrder: state.sortedInfo.columnKey === "actual_completion" && state.sortedInfo.order,
render: (text, record) => <ProductionListDate record={record} field="actual_completion" time />
},
{
title: i18n.t("jobs.fields.actual_completion") + " (HH:MM)",
dataIndex: "actual_completion_time",
key: "actual_completion_time",
ellipsis: true,
render: (text, record) => <TimeFormatter>{record.actual_completion}</TimeFormatter>
},
{ {
title: i18n.t("jobs.fields.date_last_contacted"), title: i18n.t("jobs.fields.date_last_contacted"),
dataIndex: "date_last_contacted", dataIndex: "date_last_contacted",

View File

@@ -1096,6 +1096,7 @@ export const UPDATE_JOB = gql`
scheduled_completion scheduled_completion
scheduled_delivery scheduled_delivery
actual_in actual_in
actual_completion
date_repairstarted date_repairstarted
date_void date_void
date_lost_sale date_lost_sale
@@ -2592,6 +2593,7 @@ export const QUERY_JOBS_IN_PRODUCTION = gql`
vehicleid vehicleid
plate_no plate_no
actual_in actual_in
actual_completion
scheduled_completion scheduled_completion
scheduled_delivery scheduled_delivery
date_last_contacted date_last_contacted

View File

@@ -239,22 +239,13 @@ export function* signInSuccessSaga({ payload }) {
try { try {
window.$crisp.push(["set", "user:nickname", [payload.displayName || payload.email]]); window.$crisp.push(["set", "user:nickname", [payload.displayName || payload.email]]);
const currentUserSegment = InstanceRenderManager({
imex: "imex-online-user",
rome: "rome-online-user"
});
window.$crisp.push(["set", "session:segments", [[currentUserSegment]]]);
InstanceRenderManager({ InstanceRenderManager({
executeFunction: true, executeFunction: true,
args: [], args: [],
imex: () => {
window.$crisp.push(["set", "session:segments", [["imex"]]]);
},
rome: () => { rome: () => {
window.$zoho.salesiq.visitor.name(payload.displayName || payload.email); window.$zoho.salesiq.visitor.name(payload.displayName || payload.email);
window.$zoho.salesiq.visitor.email(payload.email); window.$zoho.salesiq.visitor.email(payload.email);
window.$crisp.push(["set", "session:segments", [["rome"]]]);
} }
}); });
@@ -262,11 +253,13 @@ export function* signInSuccessSaga({ payload }) {
try { try {
const state = yield select(); const state = yield select();
const isParts = state?.application?.isPartsEntry === true; const isParts = state?.application?.isPartsEntry === true;
const instanceSeg = InstanceRenderManager({ imex: "imex", rome: "rome" }); const instanceSeg = InstanceRenderManager({
imex: ["imex-online-user", "imex"],
rome: ["rome-online-user", "rome"]
});
// Always ensure segments include instance + user, and append partsManagement if applicable // Always ensure segments include instance + user, and append partsManagement if applicable
const segs = [ const segs = [
currentUserSegment, ...instanceSeg,
instanceSeg,
...(isParts ...(isParts
? [ ? [
InstanceRenderManager({ InstanceRenderManager({
@@ -373,7 +366,10 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
// Build consolidated Crisp segments including instance, region, features, and parts mode // Build consolidated Crisp segments including instance, region, features, and parts mode
const isParts = yield select((state) => state.application.isPartsEntry === true); const isParts = yield select((state) => state.application.isPartsEntry === true);
const instanceSeg = InstanceRenderManager({ imex: "imex", rome: "rome" }); const instanceSeg = InstanceRenderManager({
imex: ["imex-online-user", "imex"],
rome: ["rome-online-user", "rome"]
});
const featureSegments = const featureSegments =
payload.features?.allAccess === true payload.features?.allAccess === true
@@ -402,7 +398,7 @@ export function* SetAuthLevelFromShopDetails({ payload }) {
featureSegments.push(...additionalSegments); featureSegments.push(...additionalSegments);
const regionSeg = payload.region_config ? `region:${payload.region_config}` : null; const regionSeg = payload.region_config ? `region:${payload.region_config}` : null;
const segments = [instanceSeg, ...(regionSeg ? [regionSeg] : []), ...featureSegments]; const segments = [...instanceSeg, ...(regionSeg ? [regionSeg] : []), ...featureSegments];
if (isParts) { if (isParts) {
segments.push(InstanceRenderManager({ imex: "ImexPartsManagement", rome: "RomePartsManagement" })); segments.push(InstanceRenderManager({ imex: "ImexPartsManagement", rome: "RomePartsManagement" }));
} }