All CC screen improvements + date type changes. BOD-235 BOD-233
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { Slider } from "antd";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import React, { useEffect, useState, forwardRef } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
const CourtesyCarFuelComponent = ({ value = 100, onChange }) => {
|
||||
const CourtesyCarFuelComponent = ({ value = 100, onChange }, ref) => {
|
||||
const [option, setOption] = useState(value);
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -15,9 +15,9 @@ const CourtesyCarFuelComponent = ({ value = 100, onChange }) => {
|
||||
const marks = {
|
||||
0: {
|
||||
style: {
|
||||
color: "#f50"
|
||||
color: "#f50",
|
||||
},
|
||||
label: t("courtesycars.labels.fuel.empty")
|
||||
label: t("courtesycars.labels.fuel.empty"),
|
||||
},
|
||||
13: t("courtesycars.labels.fuel.18"),
|
||||
25: t("courtesycars.labels.fuel.14"),
|
||||
@@ -28,14 +28,15 @@ const CourtesyCarFuelComponent = ({ value = 100, onChange }) => {
|
||||
88: t("courtesycars.labels.fuel.78"),
|
||||
100: {
|
||||
style: {
|
||||
color: "#008000"
|
||||
color: "#008000",
|
||||
},
|
||||
label: <strong>{t("courtesycars.labels.fuel.full")}</strong>
|
||||
}
|
||||
label: <strong>{t("courtesycars.labels.fuel.full")}</strong>,
|
||||
},
|
||||
};
|
||||
|
||||
return (
|
||||
<Slider
|
||||
ref={ref}
|
||||
marks={marks}
|
||||
defaultValue={value}
|
||||
onChange={setOption}
|
||||
@@ -43,4 +44,4 @@ const CourtesyCarFuelComponent = ({ value = 100, onChange }) => {
|
||||
/>
|
||||
);
|
||||
};
|
||||
export default CourtesyCarFuelComponent;
|
||||
export default forwardRef(CourtesyCarFuelComponent);
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import React, { useState, useEffect } from "react";
|
||||
import React, { useState, useEffect, forwardRef } from "react";
|
||||
import { Select } from "antd";
|
||||
import { useTranslation } from "react-i18next";
|
||||
const { Option } = Select;
|
||||
|
||||
const CourtesyCarStatusComponent = ({
|
||||
value = "courtesycars.status.in",
|
||||
onChange
|
||||
}) => {
|
||||
const CourtesyCarStatusComponent = (
|
||||
{ value = "courtesycars.status.in", onChange },
|
||||
ref
|
||||
) => {
|
||||
const [option, setOption] = useState(value);
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -18,9 +18,10 @@ const CourtesyCarStatusComponent = ({
|
||||
|
||||
return (
|
||||
<Select
|
||||
ref={ref}
|
||||
value={option}
|
||||
style={{
|
||||
width: 100
|
||||
width: 100,
|
||||
}}
|
||||
onChange={setOption}
|
||||
>
|
||||
@@ -36,4 +37,4 @@ const CourtesyCarStatusComponent = ({
|
||||
</Select>
|
||||
);
|
||||
};
|
||||
export default CourtesyCarStatusComponent;
|
||||
export default forwardRef(CourtesyCarStatusComponent);
|
||||
|
||||
@@ -9,7 +9,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
sortedInfo: {},
|
||||
filteredInfo: { text: "" },
|
||||
});
|
||||
|
||||
const [searchText, setSearchText] = useState("");
|
||||
const { t } = useTranslation();
|
||||
|
||||
const columns = [
|
||||
@@ -36,6 +36,17 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
dataIndex: "status",
|
||||
key: "status",
|
||||
sorter: (a, b) => alphaSort(a.status, b.status),
|
||||
filters: [
|
||||
{
|
||||
text: t("courtesycars.status.in"),
|
||||
value: "courtesycars.status.in",
|
||||
},
|
||||
{
|
||||
text: t("courtesycars.status.out"),
|
||||
value: "courtesycars.status.out",
|
||||
},
|
||||
],
|
||||
onFilter: (value, record) => value.includes(record.status),
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
|
||||
render: (text, record) => t(record.status),
|
||||
@@ -64,17 +75,45 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "model" && state.sortedInfo.order,
|
||||
},
|
||||
{
|
||||
title: t("courtesycars.fields.outwith"),
|
||||
dataIndex: "outwith",
|
||||
key: "outwith",
|
||||
// sorter: (a, b) => alphaSort(a.model, b.model),
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "model" && state.sortedInfo.order,
|
||||
render: (text, record) => (
|
||||
<div>
|
||||
{record.cccontracts.length === 1
|
||||
? record.cccontracts[0].job.ro_number
|
||||
: null}
|
||||
</div>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
const handleTableChange = (pagination, filters, sorter) => {
|
||||
setState({ ...state, filteredInfo: filters, sortedInfo: sorter });
|
||||
};
|
||||
|
||||
const tableData = searchText
|
||||
? courtesycars.filter(
|
||||
(c) =>
|
||||
(c.fleetnumber || "")
|
||||
.toLowerCase()
|
||||
.includes(searchText.toLowerCase()) ||
|
||||
(c.vin || "").toLowerCase().includes(searchText.toLowerCase()) ||
|
||||
(c.year || "").toLowerCase().includes(searchText.toLowerCase()) ||
|
||||
(c.make || "").toLowerCase().includes(searchText.toLowerCase()) ||
|
||||
(c.model || "").toLowerCase().includes(searchText.toLowerCase()) ||
|
||||
(t(c.status) || "").toLowerCase().includes(searchText.toLowerCase())
|
||||
)
|
||||
: courtesycars;
|
||||
return (
|
||||
<Table
|
||||
loading={loading}
|
||||
title={() => (
|
||||
<div className='imex-table-header'>
|
||||
<div className="imex-table-header">
|
||||
<Button onClick={() => refetch()}>
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
@@ -82,21 +121,21 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
<Button>{t("courtesycars.actions.new")}</Button>
|
||||
</Link>
|
||||
<Input.Search
|
||||
className='imex-table-header__search'
|
||||
className="imex-table-header__search"
|
||||
placeholder={t("general.labels.search")}
|
||||
onChange={(e) => {
|
||||
//setSearchText(e.target.value);
|
||||
setSearchText(e.target.value);
|
||||
}}
|
||||
//value={searchText}
|
||||
value={searchText}
|
||||
enterButton
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
size='small'
|
||||
size="small"
|
||||
pagination={{ position: "top" }}
|
||||
columns={columns.map((item) => ({ ...item }))}
|
||||
rowKey='id'
|
||||
dataSource={courtesycars}
|
||||
rowKey="id"
|
||||
dataSource={tableData}
|
||||
onChange={handleTableChange}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -55,6 +55,17 @@ export const QUERY_ALL_CC = gql`
|
||||
status
|
||||
vin
|
||||
year
|
||||
cccontracts(
|
||||
where: { status: { _eq: "contracts.status.out" } }
|
||||
order_by: { contract_date: desc }
|
||||
limit: 1
|
||||
) {
|
||||
id
|
||||
job {
|
||||
id
|
||||
ro_number
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@@ -33,7 +33,6 @@ export function InvoicesListPage({
|
||||
const search = queryString.parse(useLocation().search);
|
||||
const { page } = search;
|
||||
|
||||
const selectedInvoice = search.invoiceid;
|
||||
const columns = [
|
||||
{
|
||||
title: t("invoices.fields.vendorname"),
|
||||
@@ -131,18 +130,6 @@ export function InvoicesListPage({
|
||||
history.push({ search: queryString.stringify(search) });
|
||||
};
|
||||
|
||||
const handleOnRowClick = (record) => {
|
||||
if (record) {
|
||||
if (record.id) {
|
||||
search.invoiceid = record.id;
|
||||
history.push({ search: queryString.stringify(search) });
|
||||
}
|
||||
} else {
|
||||
delete search.invoiceid;
|
||||
history.push({ search: queryString.stringify(search) });
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Typography.Title level={4}>
|
||||
|
||||
@@ -8,6 +8,7 @@ import InvoiceDetailEditContainer from "../../components/invoice-detail-edit/inv
|
||||
import { QUERY_ALL_INVOICES_PAGINATED } from "../../graphql/invoices.queries";
|
||||
import { setBreadcrumbs } from "../../redux/application/application.actions";
|
||||
import InvoicesPageComponent from "./invoices.page.component";
|
||||
import AlertComponent from "../../components/alert/alert.component";
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||
@@ -45,6 +46,7 @@ export function InvoicesPageContainer({ setBreadcrumbs }) {
|
||||
}
|
||||
);
|
||||
|
||||
if (error) return <AlertComponent message={error.message} type="error" />;
|
||||
return (
|
||||
<div>
|
||||
<InvoicesPageComponent
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" DROP COLUMN "contract_date";
|
||||
type: run_sql
|
||||
@@ -0,0 +1,6 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ADD COLUMN "contract_date" date NOT NULL
|
||||
DEFAULT now();
|
||||
type: run_sql
|
||||
@@ -0,0 +1,52 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- id
|
||||
- created_at
|
||||
- updated_at
|
||||
- agreementnumber
|
||||
- courtesycarid
|
||||
- jobid
|
||||
- status
|
||||
- start
|
||||
- scheduledreturn
|
||||
- actualreturn
|
||||
- kmstart
|
||||
- kmend
|
||||
- driver_dlnumber
|
||||
- driver_dlexpiry
|
||||
- driver_dlst
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- driver_ph1
|
||||
- driver_dob
|
||||
- cc_num
|
||||
- cc_expiry
|
||||
- cc_cardholder
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,53 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- actualreturn
|
||||
- agreementnumber
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- contract_date
|
||||
- courtesycarid
|
||||
- created_at
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlexpiry
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_dob
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- id
|
||||
- jobid
|
||||
- kmend
|
||||
- kmstart
|
||||
- scheduledreturn
|
||||
- start
|
||||
- status
|
||||
- updated_at
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,53 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- actualreturn
|
||||
- driver_dlexpiry
|
||||
- driver_dob
|
||||
- scheduledreturn
|
||||
- start
|
||||
- agreementnumber
|
||||
- kmend
|
||||
- kmstart
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
- courtesycarid
|
||||
- id
|
||||
- jobid
|
||||
computed_fields: []
|
||||
filter:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,54 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- actualreturn
|
||||
- agreementnumber
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- contract_date
|
||||
- courtesycarid
|
||||
- created_at
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlexpiry
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_dob
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- id
|
||||
- jobid
|
||||
- kmend
|
||||
- kmstart
|
||||
- scheduledreturn
|
||||
- start
|
||||
- status
|
||||
- updated_at
|
||||
computed_fields: []
|
||||
filter:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,52 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- actualreturn
|
||||
- driver_dlexpiry
|
||||
- driver_dob
|
||||
- scheduledreturn
|
||||
- start
|
||||
- agreementnumber
|
||||
- kmend
|
||||
- kmstart
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
- courtesycarid
|
||||
- id
|
||||
- jobid
|
||||
filter:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,53 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- actualreturn
|
||||
- agreementnumber
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- contract_date
|
||||
- courtesycarid
|
||||
- created_at
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlexpiry
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_dob
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- id
|
||||
- jobid
|
||||
- kmend
|
||||
- kmstart
|
||||
- scheduledreturn
|
||||
- start
|
||||
- status
|
||||
- updated_at
|
||||
filter:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: cccontracts
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "scheduledreturn" TYPE date;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "scheduledreturn" TYPE timestamptz;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "actualreturn" TYPE date;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "actualreturn" TYPE timestamptz;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "start" TYPE date;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: ALTER TABLE "public"."cccontracts" ALTER COLUMN "start" TYPE timestamptz;
|
||||
type: run_sql
|
||||
@@ -564,64 +564,66 @@ tables:
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- id
|
||||
- created_at
|
||||
- updated_at
|
||||
- agreementnumber
|
||||
- courtesycarid
|
||||
- jobid
|
||||
- status
|
||||
- start
|
||||
- scheduledreturn
|
||||
- actualreturn
|
||||
- kmstart
|
||||
- kmend
|
||||
- driver_dlnumber
|
||||
- driver_dlexpiry
|
||||
- driver_dlst
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- agreementnumber
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- contract_date
|
||||
- courtesycarid
|
||||
- created_at
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlexpiry
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_dob
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- driver_ph1
|
||||
- driver_dob
|
||||
- cc_num
|
||||
- cc_expiry
|
||||
- cc_cardholder
|
||||
- id
|
||||
- jobid
|
||||
- kmend
|
||||
- kmstart
|
||||
- scheduledreturn
|
||||
- start
|
||||
- status
|
||||
- updated_at
|
||||
select_permissions:
|
||||
- role: user
|
||||
permission:
|
||||
columns:
|
||||
- actualreturn
|
||||
- driver_dlexpiry
|
||||
- driver_dob
|
||||
- scheduledreturn
|
||||
- start
|
||||
- agreementnumber
|
||||
- kmend
|
||||
- kmstart
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- contract_date
|
||||
- courtesycarid
|
||||
- created_at
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlexpiry
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_dob
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
- courtesycarid
|
||||
- id
|
||||
- jobid
|
||||
- kmend
|
||||
- kmstart
|
||||
- scheduledreturn
|
||||
- start
|
||||
- status
|
||||
- updated_at
|
||||
filter:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
@@ -637,32 +639,33 @@ tables:
|
||||
permission:
|
||||
columns:
|
||||
- actualreturn
|
||||
- driver_dlexpiry
|
||||
- driver_dob
|
||||
- scheduledreturn
|
||||
- start
|
||||
- agreementnumber
|
||||
- kmend
|
||||
- kmstart
|
||||
- cc_cardholder
|
||||
- cc_expiry
|
||||
- cc_num
|
||||
- contract_date
|
||||
- courtesycarid
|
||||
- created_at
|
||||
- driver_addr1
|
||||
- driver_addr2
|
||||
- driver_city
|
||||
- driver_dlexpiry
|
||||
- driver_dlnumber
|
||||
- driver_dlst
|
||||
- driver_dob
|
||||
- driver_fn
|
||||
- driver_ln
|
||||
- driver_ph1
|
||||
- driver_state
|
||||
- driver_zip
|
||||
- status
|
||||
- created_at
|
||||
- updated_at
|
||||
- courtesycarid
|
||||
- id
|
||||
- jobid
|
||||
- kmend
|
||||
- kmstart
|
||||
- scheduledreturn
|
||||
- start
|
||||
- status
|
||||
- updated_at
|
||||
filter:
|
||||
courtesycar:
|
||||
bodyshop:
|
||||
|
||||
Reference in New Issue
Block a user