Added ownr_co_nm to owner display fields. BOD-256

This commit is contained in:
Patrick Fic
2020-08-19 09:19:59 -07:00
parent 534e0a0398
commit 8488b07ca5
22 changed files with 141 additions and 99 deletions

View File

@@ -1,4 +1,3 @@
import { Grid } from "antd";
import "antd/dist/antd.css"; import "antd/dist/antd.css";
import React, { lazy, Suspense, useEffect } from "react"; import React, { lazy, Suspense, useEffect } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@@ -40,7 +39,7 @@ export function App({ checkUserSession, currentUser }) {
checkUserSession(); checkUserSession();
}, [checkUserSession]); }, [checkUserSession]);
const b = Grid.useBreakpoint(); //const b = Grid.useBreakpoint();
// console.log("Breakpoints:", b); // console.log("Breakpoints:", b);
const { t } = useTranslation(); const { t } = useTranslation();

View File

@@ -61,11 +61,13 @@ export default function AccountingPayablesTableComponent({
render: (text, record) => { render: (text, record) => {
return record.job.owner ? ( return record.job.owner ? (
<Link to={"/manage/owners/" + record.job.owner.id}> <Link to={"/manage/owners/" + record.job.owner.id}>
{`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""}`} {`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""} ${
record.job.ownr_co_nm
}`}
</Link> </Link>
) : ( ) : (
<span>{`${record.job.ownr_fn || ""} ${ <span>{`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""} ${
record.job.ownr_ln || "" record.job.ownr_co_nm
}`}</span> }`}</span>
); );
}, },
@@ -168,10 +170,10 @@ export default function AccountingPayablesTableComponent({
); );
}} }}
dataSource={dataSource} dataSource={dataSource}
size='small' size="small"
pagination={{ position: "top", pageSize: 50 }} pagination={{ position: "top", pageSize: 50 }}
columns={columns} columns={columns}
rowKey='id' rowKey="id"
onChange={handleTableChange} onChange={handleTableChange}
rowSelection={{ rowSelection={{
onSelectAll: (selected, selectedRows) => onSelectAll: (selected, selectedRows) =>

View File

@@ -63,10 +63,14 @@ export default function AccountingReceivablesTableComponent({ loading, jobs }) {
render: (text, record) => { render: (text, record) => {
return record.owner ? ( return record.owner ? (
<Link to={"/manage/owners/" + record.owner.id}> <Link to={"/manage/owners/" + record.owner.id}>
{`${record.ownr_fn || ""} ${record.ownr_ln || ""}`} {`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}
</Link> </Link>
) : ( ) : (
<span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""}`}</span> <span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}</span>
); );
}, },
}, },

View File

@@ -31,12 +31,13 @@ export default function ChatTagRoComponent({
onSearch={handleSearchQuery} onSearch={handleSearchQuery}
onSelect={handleInsertTag} onSelect={handleInsertTag}
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
onKeyDown={handleKeyDown}> onKeyDown={handleKeyDown}
>
{roOptions.map((item, idx) => ( {roOptions.map((item, idx) => (
<AutoComplete.Option key={item.id || idx}> <AutoComplete.Option key={item.id || idx}>
{` ${item.ro_number || ""} | ${item.ownr_fn || ""} ${ {` ${item.ro_number || ""} | ${item.ownr_fn || ""} ${
item.ownr_ln || "" item.ownr_ln || ""
}`} } ${item.ownr_co_nm || ""}`}
</AutoComplete.Option> </AutoComplete.Option>
))} ))}
</AutoComplete> </AutoComplete>

View File

@@ -7,12 +7,12 @@ export default function ContractsJobsComponent({
loading, loading,
data, data,
selectedJob, selectedJob,
handleSelect handleSelect,
}) { }) {
const [state, setState] = useState({ const [state, setState] = useState({
sortedInfo: {}, sortedInfo: {},
filteredInfo: { text: "" }, filteredInfo: { text: "" },
search: "" search: "",
}); });
const { t } = useTranslation(); const { t } = useTranslation();
@@ -35,7 +35,7 @@ export default function ContractsJobsComponent({
<span> <span>
{record.ro_number ? record.ro_number : "EST-" + record.est_number} {record.ro_number ? record.ro_number : "EST-" + record.est_number}
</span> </span>
) ),
}, },
{ {
title: t("jobs.fields.owner"), title: t("jobs.fields.owner"),
@@ -49,12 +49,14 @@ export default function ContractsJobsComponent({
render: (text, record) => { render: (text, record) => {
return record.owner ? ( return record.owner ? (
<span> <span>
{record.ownr_fn} {record.ownr_ln} {record.ownr_fn} {record.ownr_ln} {record.ownr_co_nm || ""}
</span> </span>
) : ( ) : (
<span>{`${record.ownr_fn} ${record.ownr_ln}`}</span> <span>{`${record.ownr_fn} ${record.ownr_ln} ${
record.ownr_co_nm || ""
}`}</span>
); );
} },
}, },
{ {
title: t("jobs.fields.status"), title: t("jobs.fields.status"),
@@ -67,7 +69,7 @@ export default function ContractsJobsComponent({
state.sortedInfo.columnKey === "status" && state.sortedInfo.order, state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
render: (text, record) => { render: (text, record) => {
return record.status || t("general.labels.na"); return record.status || t("general.labels.na");
} },
}, },
{ {
@@ -79,13 +81,14 @@ export default function ContractsJobsComponent({
render: (text, record) => { render: (text, record) => {
return record.vehicleid ? ( return record.vehicleid ? (
<span> <span>
{`${record.v_model_yr || ""} ${record.v_make_desc || {`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
""} ${record.v_model_desc || ""}`} record.v_model_desc || ""
}`}
</span> </span>
) : ( ) : (
t("jobs.errors.novehicle") t("jobs.errors.novehicle")
); );
} },
}, },
{ {
title: t("vehicles.fields.plate_no"), title: t("vehicles.fields.plate_no"),
@@ -102,7 +105,7 @@ export default function ContractsJobsComponent({
) : ( ) : (
t("general.labels.unknown") t("general.labels.unknown")
); );
} },
}, },
{ {
title: t("jobs.fields.clm_no"), title: t("jobs.fields.clm_no"),
@@ -119,8 +122,8 @@ export default function ContractsJobsComponent({
) : ( ) : (
t("general.labels.unknown") t("general.labels.unknown")
); );
} },
} },
]; ];
const handleTableChange = (pagination, filters, sorter) => { const handleTableChange = (pagination, filters, sorter) => {
@@ -131,7 +134,7 @@ export default function ContractsJobsComponent({
state.search === "" state.search === ""
? data ? data
: data.filter( : data.filter(
j => (j) =>
(j.est_number || "") (j.est_number || "")
.toString() .toString()
.toLowerCase() .toLowerCase()
@@ -140,6 +143,9 @@ export default function ContractsJobsComponent({
.toString() .toString()
.toLowerCase() .toLowerCase()
.includes(state.search.toLowerCase()) || .includes(state.search.toLowerCase()) ||
(j.ownr_co_nm || "")
.toLowerCase()
.includes(state.search.toLowerCase()) ||
(j.ownr_fn || "") (j.ownr_fn || "")
.toLowerCase() .toLowerCase()
.includes(state.search.toLowerCase()) || .includes(state.search.toLowerCase()) ||
@@ -160,7 +166,6 @@ export default function ContractsJobsComponent({
.includes(state.search.toLowerCase()) .includes(state.search.toLowerCase())
); );
return ( return (
<Table <Table
loading={loading} loading={loading}
@@ -168,19 +173,19 @@ export default function ContractsJobsComponent({
<Input.Search <Input.Search
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
value={state.search} value={state.search}
onChange={e => setState({ ...state, search: e.target.value })} onChange={(e) => setState({ ...state, search: e.target.value })}
/> />
)} )}
size="small" size="small"
pagination={{ position: "top" }} pagination={{ position: "top" }}
columns={columns.map(item => ({ ...item }))} columns={columns.map((item) => ({ ...item }))}
rowKey="id" rowKey="id"
dataSource={filteredData} dataSource={filteredData}
onChange={handleTableChange} onChange={handleTableChange}
rowSelection={{ rowSelection={{
onSelect: handleSelect, onSelect: handleSelect,
type: "radio", type: "radio",
selectedRowKeys: [selectedJob] selectedRowKeys: [selectedJob],
}} }}
/> />
); );

View File

@@ -60,11 +60,13 @@ export default function CsiResponseListPaginated({
render: (text, record) => { render: (text, record) => {
return record.owner ? ( return record.owner ? (
<Link to={"/manage/owners/" + record.owner.id}> <Link to={"/manage/owners/" + record.owner.id}>
{`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""}`} {`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""} ${
record.job.ownr_co_nm
}`}
</Link> </Link>
) : ( ) : (
<span>{`${record.job.ownr_fn || ""} ${ <span>{`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""} ${
record.job.ownr_ln || "" record.job.ownr_co_nm
}`}</span> }`}</span>
); );
}, },

View File

@@ -36,9 +36,11 @@ const JobSearchSelect = (
<Option key={o.id} value={o.id}> <Option key={o.id} value={o.id}>
{`${o.ro_number ? o.ro_number : o.est_number} | ${ {`${o.ro_number ? o.ro_number : o.est_number} | ${
o.ownr_ln || "" o.ownr_ln || ""
} ${o.ownr_fn || ""} | ${o.v_model_yr || ""} ${ } ${o.ownr_fn || ""} ${
o.v_make_desc || "" o.ownr_co_nm ? ` ${o.ownr_co_num}` : ""
} ${o.v_model_desc || ""}`} }| ${o.v_model_yr || ""} ${o.v_make_desc || ""} ${
o.v_model_desc || ""
}`}
</Option> </Option>
)) ))
: null} : null}

View File

@@ -36,6 +36,15 @@ export default function JobsCreateOwnerInfoSearchComponent({
tableState.sortedInfo.columnKey === "ownr_fn" && tableState.sortedInfo.columnKey === "ownr_fn" &&
tableState.sortedInfo.order, tableState.sortedInfo.order,
}, },
{
title: t("owners.fields.ownr_co_nm"),
dataIndex: "ownr_co_nm",
key: "ownr_co_nm",
sorter: (a, b) => alphaSort(a.ownr_co_nm, b.ownr_co_nm),
sortOrder:
tableState.sortedInfo.columnKey === "ownr_co_nm" &&
tableState.sortedInfo.order,
},
{ {
title: t("owners.fields.ownr_addr1"), title: t("owners.fields.ownr_addr1"),
dataIndex: "ownr_addr1", dataIndex: "ownr_addr1",
@@ -86,9 +95,9 @@ export default function JobsCreateOwnerInfoSearchComponent({
loading={loading} loading={loading}
title={() => { title={() => {
return ( return (
<div className='imex-table-header'> <div className="imex-table-header">
<Input.Search <Input.Search
className='imex-table-header__search' className="imex-table-header__search"
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
onSearch={(value) => { onSearch={(value) => {
setState({ setState({
@@ -101,11 +110,11 @@ export default function JobsCreateOwnerInfoSearchComponent({
</div> </div>
); );
}} }}
size='small' size="small"
scroll={{ x: true }} scroll={{ x: true }}
pagination={{ position: "top" }} pagination={{ position: "top" }}
columns={columns} columns={columns}
rowKey='id' rowKey="id"
dataSource={owners} dataSource={owners}
onChange={handleTableChange} onChange={handleTableChange}
rowSelection={{ rowSelection={{

View File

@@ -1,21 +1,16 @@
import { Col, Divider, Form, Row, Select } from "antd"; import { Form, Select } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import { DateTimeFormatter } from "../../utils/DateFormatter";
import CurrencyInput from "../form-items-formatted/currency-form-item.component"; import CurrencyInput from "../form-items-formatted/currency-form-item.component";
import JobTotalsTable from "../job-totals-table/job-totals-table.component";
import FormRow from "../layout-form-row/layout-form-row.component"; import FormRow from "../layout-form-row/layout-form-row.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
}); });
const stripeTestEnv = process.env.REACT_APP_STRIPE_PUBLIC_KEY; //.includes("test");
export function JobsDetailRates({ job, bodyshop }) { export function JobsDetailRates({ job, bodyshop }) {
const { t } = useTranslation(); const { t } = useTranslation();

View File

@@ -1,4 +1,4 @@
import { Col, Divider, Form, Row, Select, Typography } from "antd"; import { Divider, Typography } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
@@ -6,9 +6,7 @@ import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import CurrencyFormatter from "../../utils/CurrencyFormatter"; import CurrencyFormatter from "../../utils/CurrencyFormatter";
import { DateTimeFormatter } from "../../utils/DateFormatter"; import { DateTimeFormatter } from "../../utils/DateFormatter";
import CurrencyInput from "../form-items-formatted/currency-form-item.component";
import JobTotalsTable from "../job-totals-table/job-totals-table.component"; import JobTotalsTable from "../job-totals-table/job-totals-table.component";
import FormRow from "../layout-form-row/layout-form-row.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -19,11 +17,6 @@ const stripeTestEnv = process.env.REACT_APP_STRIPE_PUBLIC_KEY; //.includes("test
export function JobsDetailTotals({ job, bodyshop }) { export function JobsDetailTotals({ job, bodyshop }) {
const { t } = useTranslation(); const { t } = useTranslation();
const colSpan = {
sm: { span: 24 },
lg: { span: 12 },
};
return ( return (
<div> <div>
<Typography.Title level={4}> <Typography.Title level={4}>

View File

@@ -43,11 +43,15 @@ export default function JobsFindModalComponent({
render: (text, record) => { render: (text, record) => {
return record.owner ? ( return record.owner ? (
<Link to={"/manage/owners/" + record.owner.id}> <Link to={"/manage/owners/" + record.owner.id}>
{record.ownr_fn} {record.ownr_ln} {`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}
</Link> </Link>
) : ( ) : (
// t("jobs.errors.noowner") // t("jobs.errors.noowner")
<span>{`${record.ownr_fn} ${record.ownr_ln}`}</span> <span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}</span>
); );
}, },
}, },
@@ -143,7 +147,8 @@ export default function JobsFindModalComponent({
<Button <Button
onClick={() => { onClick={() => {
jobsListRefetch(); jobsListRefetch();
}}> }}
>
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
<Input <Input
@@ -154,10 +159,10 @@ export default function JobsFindModalComponent({
/> />
</div> </div>
)} )}
size='small' size="small"
pagination={{ position: "bottom" }} pagination={{ position: "bottom" }}
columns={columns.map((item) => ({ ...item }))} columns={columns.map((item) => ({ ...item }))}
rowKey='id' rowKey="id"
loading={jobsListLoading} loading={jobsListLoading}
dataSource={jobsList} dataSource={jobsList}
rowSelection={{ rowSelection={{
@@ -183,7 +188,8 @@ export default function JobsFindModalComponent({
...importOptions, ...importOptions,
overrideHeaders: e.target.checked, overrideHeaders: e.target.checked,
}) })
}> }
>
{t("jobs.labels.override_header")} {t("jobs.labels.override_header")}
</Checkbox> </Checkbox>
</div> </div>

View File

@@ -55,10 +55,14 @@ export default function JobsList({ refetch, loading, jobs, total }) {
render: (text, record) => { render: (text, record) => {
return record.owner ? ( return record.owner ? (
<Link to={"/manage/owners/" + record.owner.id}> <Link to={"/manage/owners/" + record.owner.id}>
{`${record.ownr_fn || ""} ${record.ownr_ln || ""}`} {`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}
</Link> </Link>
) : ( ) : (
<span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""}`}</span> <span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}</span>
); );
}, },
}, },
@@ -176,7 +180,7 @@ export default function JobsList({ refetch, loading, jobs, total }) {
<div> <div>
<Table <Table
loading={loading} loading={loading}
size='small' size="small"
scroll={{ x: true }} scroll={{ x: true }}
pagination={{ pagination={{
position: "top", position: "top",
@@ -185,17 +189,17 @@ export default function JobsList({ refetch, loading, jobs, total }) {
total: total, total: total,
}} }}
columns={columns} columns={columns}
rowKey='id' rowKey="id"
dataSource={jobs} dataSource={jobs}
onChange={handleTableChange} onChange={handleTableChange}
title={() => { title={() => {
return ( return (
<div className='imex-table-header'> <div className="imex-table-header">
<Button onClick={() => refetch()}> <Button onClick={() => refetch()}>
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
<Input.Search <Input.Search
className='imex-table-header__search' className="imex-table-header__search"
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
onSearch={(value) => { onSearch={(value) => {
search.search = value; search.search = value;

View File

@@ -39,7 +39,7 @@ export function JobsList({ bodyshop }) {
const history = useHistory(); const history = useHistory();
const [searchText, setSearchText] = useState(""); const [searchText, setSearchText] = useState("");
if (error) return <AlertComponent message={error.message} type='error' />; if (error) return <AlertComponent message={error.message} type="error" />;
const jobs = data const jobs = data
? searchText === "" ? searchText === ""
@@ -50,6 +50,9 @@ export function JobsList({ bodyshop }) {
.toString() .toString()
.toLowerCase() .toLowerCase()
.includes(searchText.toLowerCase()) || .includes(searchText.toLowerCase()) ||
(j.ownr_co_nm || "")
.toLowerCase()
.includes(searchText.toLowerCase()) ||
(j.ownr_fn || "") (j.ownr_fn || "")
.toLowerCase() .toLowerCase()
.includes(searchText.toLowerCase()) || .includes(searchText.toLowerCase()) ||
@@ -122,10 +125,14 @@ export function JobsList({ bodyshop }) {
render: (text, record) => { render: (text, record) => {
return record.owner ? ( return record.owner ? (
<Link to={"/manage/owners/" + record.owner.id}> <Link to={"/manage/owners/" + record.owner.id}>
{`${record.ownr_fn || ""} ${record.ownr_ln || ""}`} {`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}
</Link> </Link>
) : ( ) : (
<span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""}`}</span> <span>{`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}</span>
); );
}, },
}, },
@@ -242,21 +249,21 @@ export function JobsList({ bodyshop }) {
return ( return (
<Table <Table
loading={loading} loading={loading}
size='small' size="small"
pagination={false} pagination={false}
columns={columns} columns={columns}
rowKey='id' rowKey="id"
dataSource={jobs} dataSource={jobs}
style={{ height: "100%" }} style={{ height: "100%" }}
scroll={{ x: true }} scroll={{ x: true }}
title={() => { title={() => {
return ( return (
<div className='imex-table-header'> <div className="imex-table-header">
<Button onClick={() => refetch()}> <Button onClick={() => refetch()}>
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
<Input.Search <Input.Search
className='imex-table-header__search' className="imex-table-header__search"
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
onChange={(e) => { onChange={(e) => {
setSearchText(e.target.value); setSearchText(e.target.value);

View File

@@ -7,7 +7,7 @@ export default function OwnerFindModalComponent({
selectedOwner, selectedOwner,
setSelectedOwner, setSelectedOwner,
ownersListLoading, ownersListLoading,
ownersList ownersList,
}) { }) {
//setSelectedOwner is used to set the record id of the owner to use for adding the job. //setSelectedOwner is used to set the record id of the owner to use for adding the job.
const { t } = useTranslation(); const { t } = useTranslation();
@@ -16,27 +16,32 @@ export default function OwnerFindModalComponent({
{ {
title: t("owners.fields.ownr_ln"), title: t("owners.fields.ownr_ln"),
dataIndex: "ownr_ln", dataIndex: "ownr_ln",
key: "ownr_ln" key: "ownr_ln",
}, },
{ {
title: t("owners.fields.ownr_fn"), title: t("owners.fields.ownr_fn"),
dataIndex: "ownr_fn", dataIndex: "ownr_fn",
key: "ownr_fn" key: "ownr_fn",
},
{
title: t("owners.fields.ownr_co_nm"),
dataIndex: "ownr_co_nm",
key: "ownr_co_nm",
}, },
{ {
title: t("owners.fields.ownr_addr1"), title: t("owners.fields.ownr_addr1"),
dataIndex: "ownr_addr1", dataIndex: "ownr_addr1",
key: "ownr_addr1" key: "ownr_addr1",
}, },
{ {
title: t("owners.fields.ownr_city"), title: t("owners.fields.ownr_city"),
dataIndex: "ownr_city", dataIndex: "ownr_city",
key: "ownr_city" key: "ownr_city",
}, },
{ {
title: t("owners.fields.ownr_ea"), title: t("owners.fields.ownr_ea"),
dataIndex: "ownr_ea", dataIndex: "ownr_ea",
key: "ownr_ea" key: "ownr_ea",
}, },
{ {
title: t("owners.fields.ownr_ph1"), title: t("owners.fields.ownr_ph1"),
@@ -44,11 +49,11 @@ export default function OwnerFindModalComponent({
key: "ownr_ph1", key: "ownr_ph1",
render: (text, record) => ( render: (text, record) => (
<PhoneFormatter>{record.ownr_ph1}</PhoneFormatter> <PhoneFormatter>{record.ownr_ph1}</PhoneFormatter>
) ),
} },
]; ];
const handleOnRowClick = record => { const handleOnRowClick = (record) => {
if (record) { if (record) {
if (record.id) { if (record.id) {
setSelectedOwner(record.id); setSelectedOwner(record.id);
@@ -64,22 +69,22 @@ export default function OwnerFindModalComponent({
title={() => t("owners.labels.existing_owners")} title={() => t("owners.labels.existing_owners")}
size="small" size="small"
pagination={{ position: "bottom" }} pagination={{ position: "bottom" }}
columns={columns.map(item => ({ ...item }))} columns={columns.map((item) => ({ ...item }))}
rowKey="id" rowKey="id"
loading={ownersListLoading} loading={ownersListLoading}
dataSource={ownersList} dataSource={ownersList}
rowSelection={{ rowSelection={{
onSelect: props => { onSelect: (props) => {
setSelectedOwner(props.id); setSelectedOwner(props.id);
}, },
type: "radio", type: "radio",
selectedRowKeys: [selectedOwner] selectedRowKeys: [selectedOwner],
}} }}
onRow={(record, rowIndex) => { onRow={(record, rowIndex) => {
return { return {
onClick: event => { onClick: (event) => {
handleOnRowClick(record); handleOnRowClick(record);
} },
}; };
}} }}
/> />

View File

@@ -33,7 +33,9 @@ export default function OwnersListComponent({
key: "name", key: "name",
render: (text, record) => ( render: (text, record) => (
<Link to={"/manage/owners/" + record.id}> <Link to={"/manage/owners/" + record.id}>
{`${record.ownr_fn} ${record.ownr_ln}`} {`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}
</Link> </Link>
), ),
}, },

View File

@@ -56,11 +56,13 @@ export default function PaymentsListPaginated({
render: (text, record) => { render: (text, record) => {
return record.job.owner ? ( return record.job.owner ? (
<Link to={"/manage/owners/" + record.job.owner.id}> <Link to={"/manage/owners/" + record.job.owner.id}>
{`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""}`} {`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""} ${
record.job.ownr_co_nm
}`}
</Link> </Link>
) : ( ) : (
<span>{`${record.job.ownr_fn || ""} ${ <span>{`${record.job.ownr_fn || ""} ${record.job.ownr_ln || ""} ${
record.job.ownr_ln || "" record.job.ownr_co_nm
}`}</span> }`}</span>
); );
}, },

View File

@@ -92,6 +92,7 @@ const CheckSearch = (search, job) => {
.toLowerCase() .toLowerCase()
.includes(search.toLowerCase()) || .includes(search.toLowerCase()) ||
(job.ownr_fn || "").toLowerCase().includes(search.toLowerCase()) || (job.ownr_fn || "").toLowerCase().includes(search.toLowerCase()) ||
(job.ownr_co_nm || "").toLowerCase().includes(search.toLowerCase()) ||
(job.ownr_ln || "").toLowerCase().includes(search.toLowerCase()) || (job.ownr_ln || "").toLowerCase().includes(search.toLowerCase()) ||
(job.status || "").toLowerCase().includes(search.toLowerCase()) || (job.status || "").toLowerCase().includes(search.toLowerCase()) ||
(job.v_make_desc || "").toLowerCase().includes(search.toLowerCase()) || (job.v_make_desc || "").toLowerCase().includes(search.toLowerCase()) ||

View File

@@ -24,10 +24,10 @@ export function ProductionListSaveConfigButton({
const [updateShop] = useMutation(UPDATE_SHOP); const [updateShop] = useMutation(UPDATE_SHOP);
const { t } = useTranslation(); const { t } = useTranslation();
const handleSaveConfig = () => { const handleSaveConfig = async () => {
logImEXEvent("production_save_config"); logImEXEvent("production_save_config");
updateShop({ await updateShop({
variables: { variables: {
id: bodyshop.id, id: bodyshop.id,
shop: { shop: {
@@ -39,8 +39,6 @@ export function ProductionListSaveConfigButton({
}, },
}, },
}, },
}).then((response) => {
const shopDetails = response.data.update_bodyshops.returning[0];
}); });
}; };

View File

@@ -89,6 +89,9 @@ export function ProductionListTable({
.toString() .toString()
.toLowerCase() .toLowerCase()
.includes(searchText.toLowerCase()) || .includes(searchText.toLowerCase()) ||
(j.ownr_co_nm || "")
.toLowerCase()
.includes(searchText.toLowerCase()) ||
(j.ownr_fn || "") (j.ownr_fn || "")
.toLowerCase() .toLowerCase()
.includes(searchText.toLowerCase()) || .includes(searchText.toLowerCase()) ||

View File

@@ -108,7 +108,7 @@ export function ScheduleEventComponent({
<div> <div>
<strong>{`${(event.job && event.job.ownr_fn) || ""} ${ <strong>{`${(event.job && event.job.ownr_fn) || ""} ${
(event.job && event.job.ownr_ln) || "" (event.job && event.job.ownr_ln) || ""
}`}</strong> } ${(event.job && event.job.ownr_co_nm) || ""}`}</strong>
<div style={{ margin: 4 }}> <div style={{ margin: 4 }}>
{`${(event.job && event.job.v_model_yr) || ""} ${ {`${(event.job && event.job.v_model_yr) || ""} ${
(event.job && event.job.v_make_desc) || "" (event.job && event.job.v_make_desc) || ""

View File

@@ -34,7 +34,9 @@ export function VehicleDetailJobsComponent({ vehicle, bodyshop }) {
key: "owner", key: "owner",
render: (text, record) => ( render: (text, record) => (
<Link to={`/manage/owners/${record.owner.id}`}> <Link to={`/manage/owners/${record.owner.id}`}>
{`${record.ownr_fn} ${record.ownr_ln}`} {`${record.ownr_fn || ""} ${record.ownr_ln || ""} ${
record.ownr_co_nm || ""
}`}
</Link> </Link>
), ),
}, },
@@ -72,7 +74,7 @@ export function VehicleDetailJobsComponent({ vehicle, bodyshop }) {
)} )}
pagination={{ position: "bottom" }} pagination={{ position: "bottom" }}
columns={columns} columns={columns}
rowKey='id' rowKey="id"
scroll={{ x: true }} scroll={{ x: true }}
dataSource={vehicle.jobs} dataSource={vehicle.jobs}
rowSelection={{ rowSelection={{

View File

@@ -94,7 +94,7 @@ export default function CsiContainerPage() {
</div> </div>
</div> </div>
<Typography.Title>{t("csi.labels.title")}</Typography.Title> <Typography.Title>{t("csi.labels.title")}</Typography.Title>
<strong>{`Hi ${job.ownr_fn || ""}!`}</strong> <strong>{`Hi ${job.ownr_co_nm || job.ownr_fn || ""}!`}</strong>
<Typography.Paragraph> <Typography.Paragraph>
{`At ${ {`At ${
bodyshop.shopname || "" bodyshop.shopname || ""