Merged in release/2024-08-16-LEGACY (pull request #1624)

IO-2884 Production List Filter LEGACY
This commit is contained in:
Dave Richer
2024-08-16 16:17:42 +00:00

View File

@@ -9,9 +9,7 @@ import { onlyUnique } from "../../utils/arrayHelper";
import { alphaSort, dateSort, statusSort } from "../../utils/sorters"; import { alphaSort, dateSort, statusSort } from "../../utils/sorters";
import JobAltTransportChange from "../job-at-change/job-at-change.component"; import JobAltTransportChange from "../job-at-change/job-at-change.component";
import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component"; import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component";
import OwnerNameDisplay, { import OwnerNameDisplay, { OwnerNameDisplayFunction } from "../owner-name-display/owner-name-display.component";
OwnerNameDisplayFunction,
} from "../owner-name-display/owner-name-display.component";
import ProductionSubletsManageComponent from "../production-sublets-manage/production-sublets-manage.component"; import ProductionSubletsManageComponent from "../production-sublets-manage/production-sublets-manage.component";
import ProductionListColumnAlert from "./production-list-columns.alert.component"; import ProductionListColumnAlert from "./production-list-columns.alert.component";
import ProductionListColumnBodyPriority from "./production-list-columns.bodypriority.component"; import ProductionListColumnBodyPriority from "./production-list-columns.bodypriority.component";
@@ -34,11 +32,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
dataIndex: "viewdetail", dataIndex: "viewdetail",
key: "viewdetail", key: "viewdetail",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <Link to={{ search: `?selected=${record.id}` }}>{i18n.t("general.labels.view")}</Link>
<Link to={{ search: `?selected=${record.id}` }}>
{i18n.t("general.labels.view")}
</Link>
),
}, },
{ {
title: i18n.t("jobs.fields.ro_number"), title: i18n.t("jobs.fields.ro_number"),
@@ -46,23 +40,18 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "ro_number", key: "ro_number",
ellipsis: true, ellipsis: true,
sorter: (a, b) => alphaSort(a.ro_number, b.ro_number), sorter: (a, b) => alphaSort(a.ro_number, b.ro_number),
sortOrder: sortOrder: state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order,
state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order,
render: (text, record) => render: (text, record) =>
technician ? ( technician ? (
<Link to={`/tech/joblookup?selected=${record.id}`}> <Link to={`/tech/joblookup?selected=${record.id}`}>
{record.ro_number} {record.ro_number}
{record.suspended && ( {record.suspended && <PauseCircleOutlined style={{ color: "orangered" }} />}
<PauseCircleOutlined style={{ color: "orangered" }} />
)}
</Link> </Link>
) : ( ) : (
<Link to={`/manage/jobs/${record.id}`}> <Link to={`/manage/jobs/${record.id}`}>
<Space> <Space>
{record.ro_number} {record.ro_number}
{record.suspended && ( {record.suspended && <PauseCircleOutlined style={{ color: "orangered" }} />}
<PauseCircleOutlined style={{ color: "orangered" }} />
)}
{record.iouparent && ( {record.iouparent && (
<Tooltip title={i18n.t("jobs.labels.iou")}> <Tooltip title={i18n.t("jobs.labels.iou")}>
<BranchesOutlined style={{ color: "orangered" }} /> <BranchesOutlined style={{ color: "orangered" }} />
@@ -70,7 +59,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
)} )}
</Space> </Space>
</Link> </Link>
), )
}, },
{ {
title: i18n.t("jobs.fields.owner"), title: i18n.t("jobs.fields.owner"),
@@ -85,10 +74,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
<OwnerNameDisplay ownerObject={record} /> <OwnerNameDisplay ownerObject={record} />
</Link> </Link>
), ),
sorter: (a, b) => sorter: (a, b) => alphaSort(OwnerNameDisplayFunction(a), OwnerNameDisplayFunction(b)),
alphaSort(OwnerNameDisplayFunction(a), OwnerNameDisplayFunction(b)), sortOrder: state.sortedInfo.columnKey === "ownr" && state.sortedInfo.order
sortOrder:
state.sortedInfo.columnKey === "ownr" && state.sortedInfo.order,
}, },
{ {
title: i18n.t("jobs.fields.vehicle"), title: i18n.t("jobs.fields.vehicle"),
@@ -97,13 +84,10 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
ellipsis: true, ellipsis: true,
sorter: (a, b) => sorter: (a, b) =>
alphaSort( alphaSort(
`${a.v_model_yr || ""} ${a.v_make_desc || ""} ${ `${a.v_model_yr || ""} ${a.v_make_desc || ""} ${a.v_model_desc || ""}`,
a.v_model_desc || ""
}`,
`${b.v_model_yr || ""} ${b.v_make_desc || ""} ${b.v_model_desc || ""}` `${b.v_model_yr || ""} ${b.v_make_desc || ""} ${b.v_model_desc || ""}`
), ),
sortOrder: sortOrder: state.sortedInfo.columnKey === "vehicle" && state.sortedInfo.order,
state.sortedInfo.columnKey === "vehicle" && state.sortedInfo.order,
render: (text, record) => render: (text, record) =>
technician ? ( technician ? (
<>{`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${ <>{`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
@@ -115,7 +99,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
} ${record.v_make_desc || ""} ${record.v_model_desc || ""} ${ } ${record.v_make_desc || ""} ${record.v_model_desc || ""} ${
record.v_color || "" record.v_color || ""
} ${record.plate_no || ""}`}</Link> } ${record.plate_no || ""}`}</Link>
), )
}, },
{ {
title: i18n.t("jobs.fields.actual_in"), title: i18n.t("jobs.fields.actual_in"),
@@ -123,11 +107,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "actual_in", key: "actual_in",
ellipsis: true, ellipsis: true,
sorter: (a, b) => dateSort(a.actual_in, b.actual_in), sorter: (a, b) => dateSort(a.actual_in, b.actual_in),
sortOrder: sortOrder: state.sortedInfo.columnKey === "actual_in" && state.sortedInfo.order,
state.sortedInfo.columnKey === "actual_in" && state.sortedInfo.order, render: (text, record) => <ProductionListDate record={record} field="actual_in" time />
render: (text, record) => (
<ProductionListDate record={record} field="actual_in" time />
),
}, },
{ {
title: i18n.t("jobs.fields.actual_in") + " (HH:MM)", title: i18n.t("jobs.fields.actual_in") + " (HH:MM)",
@@ -135,28 +116,16 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "actual_in_time", key: "actual_in_time",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <TimeFormatter>{record.actual_in}</TimeFormatter>
<TimeFormatter>{record.actual_in}</TimeFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.scheduled_completion"), title: i18n.t("jobs.fields.scheduled_completion"),
dataIndex: "scheduled_completion", dataIndex: "scheduled_completion",
key: "scheduled_completion", key: "scheduled_completion",
ellipsis: true, ellipsis: true,
sorter: (a, b) => sorter: (a, b) => dateSort(a.scheduled_completion, b.scheduled_completion),
dateSort(a.scheduled_completion, b.scheduled_completion), sortOrder: state.sortedInfo.columnKey === "scheduled_completion" && state.sortedInfo.order,
sortOrder: render: (text, record) => <ProductionListDate record={record} field="scheduled_completion" pastIndicator time />
state.sortedInfo.columnKey === "scheduled_completion" &&
state.sortedInfo.order,
render: (text, record) => (
<ProductionListDate
record={record}
field="scheduled_completion"
pastIndicator
time
/>
),
}, },
{ {
title: i18n.t("jobs.fields.scheduled_completion") + " (HH:MM)", title: i18n.t("jobs.fields.scheduled_completion") + " (HH:MM)",
@@ -164,9 +133,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "scheduled_completion_time", key: "scheduled_completion_time",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <TimeFormatter>{record.scheduled_completion}</TimeFormatter>
<TimeFormatter>{record.scheduled_completion}</TimeFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.date_last_contacted"), title: i18n.t("jobs.fields.date_last_contacted"),
@@ -174,10 +141,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "date_last_contacted", key: "date_last_contacted",
ellipsis: true, ellipsis: true,
sorter: (a, b) => dateSort(a.date_last_contacted, b.date_last_contacted), sorter: (a, b) => dateSort(a.date_last_contacted, b.date_last_contacted),
sortOrder: sortOrder: state.sortedInfo.columnKey === "date_last_contacted" && state.sortedInfo.order,
state.sortedInfo.columnKey === "date_last_contacted" && render: (text, record) => <ProductionListLastContacted record={record} />
state.sortedInfo.order,
render: (text, record) => <ProductionListLastContacted record={record} />,
}, },
{ {
title: i18n.t("jobs.fields.date_next_contact"), title: i18n.t("jobs.fields.date_next_contact"),
@@ -185,17 +150,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "date_next_contact", key: "date_next_contact",
ellipsis: true, ellipsis: true,
sorter: (a, b) => dateSort(a.date_next_contact, b.date_next_contact), sorter: (a, b) => dateSort(a.date_next_contact, b.date_next_contact),
sortOrder: sortOrder: state.sortedInfo.columnKey === "date_next_contact" && state.sortedInfo.order,
state.sortedInfo.columnKey === "date_next_contact" && render: (text, record) => <ProductionListDate record={record} field="date_next_contact" pastIndicator time />
state.sortedInfo.order,
render: (text, record) => (
<ProductionListDate
record={record}
field="date_next_contact"
pastIndicator
time
/>
),
}, },
{ {
title: i18n.t("jobs.fields.scheduled_delivery"), title: i18n.t("jobs.fields.scheduled_delivery"),
@@ -203,17 +159,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "scheduled_delivery", key: "scheduled_delivery",
ellipsis: true, ellipsis: true,
sorter: (a, b) => dateSort(a.scheduled_delivery, b.scheduled_delivery), sorter: (a, b) => dateSort(a.scheduled_delivery, b.scheduled_delivery),
sortOrder: sortOrder: state.sortedInfo.columnKey === "scheduled_delivery" && state.sortedInfo.order,
state.sortedInfo.columnKey === "scheduled_delivery" && render: (text, record) => <ProductionListDate record={record} field="scheduled_delivery" pastIndicator time />
state.sortedInfo.order,
render: (text, record) => (
<ProductionListDate
record={record}
field="scheduled_delivery"
pastIndicator
time
/>
),
}, },
{ {
title: i18n.t("jobs.fields.scheduled_delivery") + " (HH:MM)", title: i18n.t("jobs.fields.scheduled_delivery") + " (HH:MM)",
@@ -221,9 +168,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "scheduled_delivery_time", key: "scheduled_delivery_time",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <TimeFormatter>{record.scheduled_delivery}</TimeFormatter>
<TimeFormatter>{record.scheduled_delivery}</TimeFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.ins_co_nm"), title: i18n.t("jobs.fields.ins_co_nm"),
@@ -231,8 +176,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "ins_co_nm", key: "ins_co_nm",
ellipsis: true, ellipsis: true,
sorter: (a, b) => alphaSort(a.ins_co_nm, b.ins_co_nm), sorter: (a, b) => alphaSort(a.ins_co_nm, b.ins_co_nm),
sortOrder: sortOrder: state.sortedInfo.columnKey === "ins_co_nm" && state.sortedInfo.order
state.sortedInfo.columnKey === "ins_co_nm" && state.sortedInfo.order,
}, },
{ {
title: i18n.t("jobs.fields.clm_no"), title: i18n.t("jobs.fields.clm_no"),
@@ -240,8 +184,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "clm_no", key: "clm_no",
ellipsis: true, ellipsis: true,
sorter: (a, b) => alphaSort(a.clm_no, b.clm_no), sorter: (a, b) => alphaSort(a.clm_no, b.clm_no),
sortOrder: sortOrder: state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order
state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order,
}, },
{ {
title: i18n.t("jobs.fields.clm_total"), title: i18n.t("jobs.fields.clm_total"),
@@ -249,11 +192,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "clm_total", key: "clm_total",
ellipsis: true, ellipsis: true,
sorter: (a, b) => a.clm_total - b.clm_total, sorter: (a, b) => a.clm_total - b.clm_total,
sortOrder: sortOrder: state.sortedInfo.columnKey === "clm_total" && state.sortedInfo.order,
state.sortedInfo.columnKey === "clm_total" && state.sortedInfo.order, render: (text, record) => <CurrencyFormatter>{record.clm_total}</CurrencyFormatter>
render: (text, record) => (
<CurrencyFormatter>{record.clm_total}</CurrencyFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.owner_owing"), title: i18n.t("jobs.fields.owner_owing"),
@@ -261,49 +201,36 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "owner_owing", key: "owner_owing",
ellipsis: true, ellipsis: true,
sorter: (a, b) => a.owner_owing - b.owner_owing, sorter: (a, b) => a.owner_owing - b.owner_owing,
sortOrder: sortOrder: state.sortedInfo.columnKey === "owner_owing" && state.sortedInfo.order,
state.sortedInfo.columnKey === "owner_owing" && state.sortedInfo.order, render: (text, record) => <CurrencyFormatter>{record.owner_owing}</CurrencyFormatter>
render: (text, record) => (
<CurrencyFormatter>{record.owner_owing}</CurrencyFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.ownr_ph1"), title: i18n.t("jobs.fields.ownr_ph1"),
dataIndex: "ownr_ph1", dataIndex: "ownr_ph1",
key: "ownr_ph1", key: "ownr_ph1",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <PhoneFormatter>{record.ownr_ph1}</PhoneFormatter>
<PhoneFormatter>{record.ownr_ph1}</PhoneFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.ownr_ph2"), title: i18n.t("jobs.fields.ownr_ph2"),
dataIndex: "ownr_ph2", dataIndex: "ownr_ph2",
key: "ownr_ph2", key: "ownr_ph2",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <PhoneFormatter>{record.ownr_ph2}</PhoneFormatter>
<PhoneFormatter>{record.ownr_ph2}</PhoneFormatter>
),
}, },
{ {
title: i18n.t("jobs.fields.specialcoveragepolicy"), title: i18n.t("jobs.fields.specialcoveragepolicy"),
dataIndex: "special_coverage_policy", dataIndex: "special_coverage_policy",
key: "special_coverage_policy", key: "special_coverage_policy",
ellipsis: true, ellipsis: true,
sorter: (a, b) => sorter: (a, b) => Number(a.special_coverage_policy) - Number(b.special_coverage_policy),
Number(a.special_coverage_policy) - Number(b.special_coverage_policy), sortOrder: state.sortedInfo.columnKey === "special_coverage_policy" && state.sortedInfo.order,
sortOrder:
state.sortedInfo.columnKey === "special_coverage_policy" &&
state.sortedInfo.order,
filters: [ filters: [
{ text: "True", value: true }, { text: "True", value: true },
{ text: "False", value: false }, { text: "False", value: false }
], ],
onFilter: (value, record) => onFilter: (value, record) => value === record.special_coverage_policy,
value.includes(record.special_coverage_policy), render: (text, record) => <Checkbox checked={record.special_coverage_policy} />
render: (text, record) => (
<Checkbox checked={record.special_coverage_policy} />
),
}, },
{ {
@@ -312,15 +239,13 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "alt_transport", key: "alt_transport",
ellipsis: true, ellipsis: true,
sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport), sorter: (a, b) => alphaSort(a.alt_transport, b.alt_transport),
sortOrder: sortOrder: state.sortedInfo.columnKey === "alt_transport" && state.sortedInfo.order,
state.sortedInfo.columnKey === "alt_transport" &&
state.sortedInfo.order,
filters: filters:
(bodyshop && (bodyshop &&
bodyshop.appt_alt_transport.map((s) => { bodyshop.appt_alt_transport.map((s) => {
return { return {
text: s, text: s,
value: [s], value: [s]
}; };
})) || })) ||
[], [],
@@ -330,7 +255,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
{record.alt_transport} {record.alt_transport}
<JobAltTransportChange job={record} /> <JobAltTransportChange job={record} />
</div> </div>
), )
}, },
{ {
title: i18n.t("jobs.fields.status"), title: i18n.t("jobs.fields.status"),
@@ -338,9 +263,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "status", key: "status",
ellipsis: true, ellipsis: true,
sorter: (a, b) => statusSort(a.status, b.status, activeStatuses), sorter: (a, b) => statusSort(a.status, b.status, activeStatuses),
sortOrder: sortOrder: state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
state.sortedInfo.columnKey === "status" && state.sortedInfo.order, render: (text, record) => <ProductionListColumnStatus record={record} />
render: (text, record) => <ProductionListColumnStatus record={record} />,
}, },
{ {
title: i18n.t("jobs.fields.category"), title: i18n.t("jobs.fields.category"),
@@ -353,37 +277,30 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
bodyshop.md_categories.map((s) => { bodyshop.md_categories.map((s) => {
return { return {
text: s, text: s,
value: [s], value: [s]
}; };
})) || })) ||
[], [],
onFilter: (value, record) => value.includes(record.category), onFilter: (value, record) => value.includes(record.category),
sorter: (a, b) => alphaSort(a.category, b.category), sorter: (a, b) => alphaSort(a.category, b.category),
sortOrder: sortOrder: state.sortedInfo.columnKey === "category" && state.sortedInfo.order,
state.sortedInfo.columnKey === "category" && state.sortedInfo.order, render: (text, record) => <ProductionListColumnCategory record={record} />
render: (text, record) => (
<ProductionListColumnCategory record={record} />
),
}, },
{ {
title: i18n.t("production.labels.bodyhours"), title: i18n.t("production.labels.bodyhours"),
dataIndex: "labhrs", dataIndex: "labhrs",
key: "labhrs", key: "labhrs",
sorter: (a, b) => sorter: (a, b) => a.labhrs.aggregate.sum.mod_lb_hrs - b.labhrs.aggregate.sum.mod_lb_hrs,
a.labhrs.aggregate.sum.mod_lb_hrs - b.labhrs.aggregate.sum.mod_lb_hrs, sortOrder: state.sortedInfo.columnKey === "labhrs" && state.sortedInfo.order,
sortOrder: render: (text, record) => record.labhrs.aggregate.sum.mod_lb_hrs
state.sortedInfo.columnKey === "labhrs" && state.sortedInfo.order,
render: (text, record) => record.labhrs.aggregate.sum.mod_lb_hrs,
}, },
{ {
title: i18n.t("production.labels.refinishhours"), title: i18n.t("production.labels.refinishhours"),
dataIndex: "larhrs", dataIndex: "larhrs",
key: "larhrs", key: "larhrs",
sorter: (a, b) => sorter: (a, b) => a.larhrs.aggregate.sum.mod_lb_hrs - b.larhrs.aggregate.sum.mod_lb_hrs,
a.larhrs.aggregate.sum.mod_lb_hrs - b.larhrs.aggregate.sum.mod_lb_hrs, sortOrder: state.sortedInfo.columnKey === "larhrs" && state.sortedInfo.order,
sortOrder: render: (text, record) => record.larhrs.aggregate.sum.mod_lb_hrs
state.sortedInfo.columnKey === "larhrs" && state.sortedInfo.order,
render: (text, record) => record.larhrs.aggregate.sum.mod_lb_hrs,
}, },
{ {
title: i18n.t("production.labels.totalhours"), title: i18n.t("production.labels.totalhours"),
@@ -393,38 +310,36 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
a.labhrs.aggregate.sum.mod_lb_hrs + a.labhrs.aggregate.sum.mod_lb_hrs +
a.larhrs.aggregate.sum.mod_lb_hrs - a.larhrs.aggregate.sum.mod_lb_hrs -
(b.labhrs.aggregate.sum.mod_lb_hrs + b.larhrs.aggregate.sum.mod_lb_hrs), (b.labhrs.aggregate.sum.mod_lb_hrs + b.larhrs.aggregate.sum.mod_lb_hrs),
sortOrder: sortOrder: state.sortedInfo.columnKey === "totalhours" && state.sortedInfo.order,
state.sortedInfo.columnKey === "totalhours" && state.sortedInfo.order,
render: (text, record) => render: (text, record) =>
( (record.labhrs.aggregate.sum.mod_lb_hrs + record.larhrs.aggregate.sum.mod_lb_hrs).toFixed(1)
record.labhrs.aggregate.sum.mod_lb_hrs +
record.larhrs.aggregate.sum.mod_lb_hrs
).toFixed(1),
}, },
{ {
title: i18n.t("production.labels.alert"), title: i18n.t("production.labels.alert"),
dataIndex: "alert", dataIndex: "alert",
key: "alert", key: "alert",
sorter: (a, b) => sorter: (a, b) => Number(a.production_vars?.alert || false) - Number(b.production_vars?.alert || false),
Number(a.production_vars?.alert || false) - sortOrder: state.sortedInfo.columnKey === "alert" && state.sortedInfo.order,
Number(b.production_vars?.alert || false), filters: [
sortOrder: { text: "True", value: true },
state.sortedInfo.columnKey === "alert" && state.sortedInfo.order, { text: "False", value: false }
render: (text, record) => <ProductionListColumnAlert record={record} />, ],
onFilter: (value, record) => value === (record.production_vars?.alert || false),
render: (text, record) => <ProductionListColumnAlert record={record} />
}, },
{ {
title: i18n.t("production.labels.note"), title: i18n.t("production.labels.note"),
dataIndex: "note", dataIndex: "note",
key: "note", key: "note",
ellipsis: true, ellipsis: true,
render: (text, record) => <ProductionListColumnNote record={record} />, render: (text, record) => <ProductionListColumnNote record={record} />
}, },
{ {
title: i18n.t("production.labels.comment"), title: i18n.t("production.labels.comment"),
dataIndex: "comment", dataIndex: "comment",
key: "comment", key: "comment",
ellipsis: true, ellipsis: true,
render: (text, record) => <ProductionListColumnComment record={record} />, render: (text, record) => <ProductionListColumnComment record={record} />
}, },
{ {
title: i18n.t("production.labels.touchtime"), title: i18n.t("production.labels.touchtime"),
@@ -432,7 +347,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "tt", key: "tt",
render: (text, record) => { render: (text, record) => {
return <ProductionlistColumnTouchTime job={record} />; return <ProductionlistColumnTouchTime job={record} />;
}, }
}, },
{ {
title: i18n.t("production.labels.bodypriority"), title: i18n.t("production.labels.bodypriority"),
@@ -442,11 +357,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
sorter: (a, b) => sorter: (a, b) =>
((a.production_vars && a.production_vars.bodypriority) || 11) - ((a.production_vars && a.production_vars.bodypriority) || 11) -
((b.production_vars && b.production_vars.bodypriority) || 11), ((b.production_vars && b.production_vars.bodypriority) || 11),
sortOrder: sortOrder: state.sortedInfo.columnKey === "bodypriority" && state.sortedInfo.order,
state.sortedInfo.columnKey === "bodypriority" && state.sortedInfo.order, render: (text, record) => <ProductionListColumnBodyPriority record={record} />
render: (text, record) => (
<ProductionListColumnBodyPriority record={record} />
),
}, },
{ {
title: i18n.t("production.labels.paintpriority"), title: i18n.t("production.labels.paintpriority"),
@@ -456,12 +368,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
sorter: (a, b) => sorter: (a, b) =>
((a.production_vars && a.production_vars.paintpriority) || 11) - ((a.production_vars && a.production_vars.paintpriority) || 11) -
((b.production_vars && b.production_vars.paintpriority) || 11), ((b.production_vars && b.production_vars.paintpriority) || 11),
sortOrder: sortOrder: state.sortedInfo.columnKey === "paintpriority" && state.sortedInfo.order,
state.sortedInfo.columnKey === "paintpriority" && render: (text, record) => <ProductionListColumnPaintPriority record={record} />
state.sortedInfo.order,
render: (text, record) => (
<ProductionListColumnPaintPriority record={record} />
),
}, },
{ {
title: i18n.t("production.labels.detailpriority"), title: i18n.t("production.labels.detailpriority"),
@@ -471,110 +379,74 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
sorter: (a, b) => sorter: (a, b) =>
((a.production_vars && a.production_vars.detailpriority) || 11) - ((a.production_vars && a.production_vars.detailpriority) || 11) -
((b.production_vars && b.production_vars.detailpriority) || 11), ((b.production_vars && b.production_vars.detailpriority) || 11),
sortOrder: sortOrder: state.sortedInfo.columnKey === "detailpriority" && state.sortedInfo.order,
state.sortedInfo.columnKey === "detailpriority" && render: (text, record) => <ProductionListColumnDetailPriority record={record} />
state.sortedInfo.order,
render: (text, record) => (
<ProductionListColumnDetailPriority record={record} />
),
}, },
{ {
title: i18n.t("production.labels.sublets"), title: i18n.t("production.labels.sublets"),
dataIndex: "sublets", dataIndex: "sublets",
key: "sublets", key: "sublets",
render: (text, record) => ( render: (text, record) => <ProductionSubletsManageComponent subletJobLines={record.subletLines} />
<ProductionSubletsManageComponent subletJobLines={record.subletLines} />
),
}, },
{ {
title: i18n.t("jobs.fields.employee_body"), title: i18n.t("jobs.fields.employee_body"),
dataIndex: "employee_body", dataIndex: "employee_body",
key: "employee_body", key: "employee_body",
sortOrder: sortOrder: state.sortedInfo.columnKey === "employee_body" && state.sortedInfo.order,
state.sortedInfo.columnKey === "employee_body" &&
state.sortedInfo.order,
sorter: (a, b) => sorter: (a, b) =>
alphaSort( alphaSort(
bodyshop.employees?.find((e) => e.id === a.employee_body)?.first_name, bodyshop.employees?.find((e) => e.id === a.employee_body)?.first_name,
bodyshop.employees?.find((e) => e.id === b.employee_body)?.first_name bodyshop.employees?.find((e) => e.id === b.employee_body)?.first_name
), ),
render: (text, record) => ( render: (text, record) => <ProductionListEmployeeAssignment record={record} type="employee_body" />
<ProductionListEmployeeAssignment
record={record}
type="employee_body"
/>
),
}, },
{ {
title: i18n.t("jobs.fields.employee_prep"), title: i18n.t("jobs.fields.employee_prep"),
dataIndex: "employee_prep", dataIndex: "employee_prep",
key: "employee_prep", key: "employee_prep",
sortOrder: sortOrder: state.sortedInfo.columnKey === "employee_prep" && state.sortedInfo.order,
state.sortedInfo.columnKey === "employee_prep" &&
state.sortedInfo.order,
sorter: (a, b) => sorter: (a, b) =>
alphaSort( alphaSort(
bodyshop.employees?.find((e) => e.id === a.employee_prep)?.first_name, bodyshop.employees?.find((e) => e.id === a.employee_prep)?.first_name,
bodyshop.employees?.find((e) => e.id === b.employee_prep)?.first_name bodyshop.employees?.find((e) => e.id === b.employee_prep)?.first_name
), ),
render: (text, record) => ( render: (text, record) => <ProductionListEmployeeAssignment record={record} type="employee_prep" />
<ProductionListEmployeeAssignment
record={record}
type="employee_prep"
/>
),
}, },
{ {
title: i18n.t("jobs.fields.employee_csr"), title: i18n.t("jobs.fields.employee_csr"),
dataIndex: "employee_csr", dataIndex: "employee_csr",
key: "employee_csr", key: "employee_csr",
sortOrder: sortOrder: state.sortedInfo.columnKey === "employee_csr" && state.sortedInfo.order,
state.sortedInfo.columnKey === "employee_csr" && state.sortedInfo.order,
sorter: (a, b) => sorter: (a, b) =>
alphaSort( alphaSort(
bodyshop.employees?.find((e) => e.id === a.employee_csr)?.first_name, bodyshop.employees?.find((e) => e.id === a.employee_csr)?.first_name,
bodyshop.employees?.find((e) => e.id === b.employee_csr)?.first_name bodyshop.employees?.find((e) => e.id === b.employee_csr)?.first_name
), ),
render: (text, record) => ( render: (text, record) => <ProductionListEmployeeAssignment record={record} type="employee_csr" />
<ProductionListEmployeeAssignment record={record} type="employee_csr" />
),
}, },
{ {
title: i18n.t("jobs.fields.employee_refinish"), title: i18n.t("jobs.fields.employee_refinish"),
dataIndex: "employee_refinish", dataIndex: "employee_refinish",
key: "employee_refinish", key: "employee_refinish",
sortOrder: sortOrder: state.sortedInfo.columnKey === "employee_refinish" && state.sortedInfo.order,
state.sortedInfo.columnKey === "employee_refinish" &&
state.sortedInfo.order,
sorter: (a, b) => sorter: (a, b) =>
alphaSort( alphaSort(
bodyshop.employees?.find((e) => e.id === a.employee_refinish) bodyshop.employees?.find((e) => e.id === a.employee_refinish)?.first_name,
?.first_name, bodyshop.employees?.find((e) => e.id === b.employee_refinish)?.first_name
bodyshop.employees?.find((e) => e.id === b.employee_refinish)
?.first_name
), ),
render: (text, record) => ( render: (text, record) => <ProductionListEmployeeAssignment record={record} type="employee_refinish" />
<ProductionListEmployeeAssignment
record={record}
type="employee_refinish"
/>
),
}, },
{ {
title: i18n.t("jobs.labels.parts_received"), title: i18n.t("jobs.labels.parts_received"),
dataIndex: "parts_received", dataIndex: "parts_received",
key: "parts_received", key: "parts_received",
render: (text, record) => ( render: (text, record) => <ProductionListColumnPartsReceived record={record} />
<ProductionListColumnPartsReceived record={record} />
),
}, },
{ {
title: i18n.t("jobs.fields.partsstatus"), title: i18n.t("jobs.fields.partsstatus"),
dataIndex: "partsstatus", dataIndex: "partsstatus",
key: "partsstatus", key: "partsstatus",
render: (text, record) => ( render: (text, record) => <JobPartsQueueCount parts={record.joblines_status} record={record} />
<JobPartsQueueCount parts={record.joblines_status} record={record} />
),
}, },
{ {
title: i18n.t("jobs.labels.estimator"), title: i18n.t("jobs.labels.estimator"),
@@ -585,8 +457,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
`${a.est_ct_fn || ""} ${a.est_ct_ln || ""}`.trim(), `${a.est_ct_fn || ""} ${a.est_ct_ln || ""}`.trim(),
`${b.est_ct_fn || ""} ${b.est_ct_ln || ""}`.trim() `${b.est_ct_fn || ""} ${b.est_ct_ln || ""}`.trim()
), ),
sortOrder: sortOrder: state.sortedInfo.columnKey === "estimator" && state.sortedInfo.order,
state.sortedInfo.columnKey === "estimator" && state.sortedInfo.order,
filters: filters:
(data && (data &&
data data
@@ -595,16 +466,12 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
.map((s) => { .map((s) => {
return { return {
text: s || "N/A", text: s || "N/A",
value: [s], value: [s]
}; };
})) || })) ||
[], [],
onFilter: (value, record) => onFilter: (value, record) => value.includes(`${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim()),
value.includes( render: (text, record) => `${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim()
`${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim()
),
render: (text, record) =>
`${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim(),
}, },
//Added as a place holder for St Claude. Not implemented as it requires another join for a field used by only 1 client. //Added as a place holder for St Claude. Not implemented as it requires another join for a field used by only 1 client.
@@ -634,12 +501,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "date_repairstarted", key: "date_repairstarted",
ellipsis: true, ellipsis: true,
sorter: (a, b) => dateSort(a.date_repairstarted, b.date_repairstarted), sorter: (a, b) => dateSort(a.date_repairstarted, b.date_repairstarted),
sortOrder: sortOrder: state.sortedInfo.columnKey === "date_repairstarted" && state.sortedInfo.order,
state.sortedInfo.columnKey === "date_repairstarted" && render: (text, record) => <ProductionListDate record={record} field="date_repairstarted" time />
state.sortedInfo.order,
render: (text, record) => (
<ProductionListDate record={record} field="date_repairstarted" time />
),
}, },
{ {
title: i18n.t("jobs.fields.date_repairstarted") + " (HH:MM)", title: i18n.t("jobs.fields.date_repairstarted") + " (HH:MM)",
@@ -647,10 +510,8 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
key: "date_repairstarted_time", key: "date_repairstarted_time",
ellipsis: true, ellipsis: true,
render: (text, record) => ( render: (text, record) => <TimeFormatter>{record.date_repairstarted}</TimeFormatter>
<TimeFormatter>{record.date_repairstarted}</TimeFormatter> }
),
},
]; ];
}; };
export default r; export default r;