diff --git a/client/src/components/chat-open-button/chat-open-button.component.jsx b/client/src/components/chat-open-button/chat-open-button.component.jsx index 76db997cd..4874f43fd 100644 --- a/client/src/components/chat-open-button/chat-open-button.component.jsx +++ b/client/src/components/chat-open-button/chat-open-button.component.jsx @@ -19,30 +19,35 @@ const mapDispatchToProps = (dispatch) => ({ openChatByPhone: (phone) => dispatch(openChatByPhone(phone)) }); -export function ChatOpenButton({ bodyshop, searchingForConversation, phone, jobid, openChatByPhone }) { +export function ChatOpenButton({ bodyshop, searchingForConversation, phone, type, jobid, openChatByPhone }) { const { t } = useTranslation(); const { socket } = useSocket(); const notification = useNotification(); if (!phone) return <>; - if (!bodyshop.messagingservicesid) return {phone}; + if (!bodyshop.messagingservicesid) { + return {phone}; + } return ( { + e.preventDefault(); e.stopPropagation(); + + if (searchingForConversation) return; // Prevent finding the same thing twice. + const p = parsePhoneNumber(phone, "CA"); - if (searchingForConversation) return; //This is to prevent finding the same thing twice. if (p && p.isValid()) { - openChatByPhone({ phone_num: p.formatInternational(), jobid: jobid, socket }); + openChatByPhone({ phone_num: p.formatInternational(), jobid, socket }); } else { notification["error"]({ message: t("messaging.error.invalidphone") }); } }} > - {phone} + {phone} ); } diff --git a/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx b/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx index 36d7b977a..cea13cf95 100644 --- a/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx +++ b/client/src/components/contract-convert-to-ro/contract-convert-to-ro.component.jsx @@ -133,6 +133,9 @@ export function ContractConvertToRo({ bodyshop, currentUser, contract, disabled ownr_ln: contract.job.owner.ownr_ln, ownr_co_nm: contract.job.owner.ownr_co_nm, ownr_ph1: contract.job.owner.ownr_ph1, + ownr_ph2: contract.job.owner.ownr_ph2, + ownr_ph1_ty: contract.job.owner.ownr_ph1_ty, + ownr_ph2_ty: contract.job.owner.ownr_ph2_ty, ownr_ea: contract.job.owner.ownr_ea, v_model_desc: contract.job.vehicle && contract.job.vehicle.v_model_desc, v_model_yr: contract.job.vehicle && contract.job.vehicle.v_model_yr, diff --git a/client/src/components/dashboard-components/scheduled-delivery-today/scheduled-delivery-today.component.jsx b/client/src/components/dashboard-components/scheduled-delivery-today/scheduled-delivery-today.component.jsx index 12c2f6569..80c10a884 100644 --- a/client/src/components/dashboard-components/scheduled-delivery-today/scheduled-delivery-today.component.jsx +++ b/client/src/components/dashboard-components/scheduled-delivery-today/scheduled-delivery-today.component.jsx @@ -256,9 +256,9 @@ export default function DashboardScheduledDeliveryToday({ data, ...cardProps }) responsive: ["md"], render: (text, record) => ( - + - + ) }, @@ -397,6 +397,8 @@ export const DashboardScheduledDeliveryTodayGql = ` ownr_ln ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty production_vars ro_number scheduled_delivery diff --git a/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx b/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx index 05d76983e..a4936e78f 100644 --- a/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx +++ b/client/src/components/dashboard-components/scheduled-in-today/scheduled-in-today.component.jsx @@ -48,6 +48,8 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) { ownr_ln: item.job.ownr_ln, ownr_ph1: item.job.ownr_ph1, ownr_ph2: item.job.ownr_ph2, + ownr_ph1_ty: item.job.ownr_ph1_ty, + ownr_ph2_ty: item.job.ownr_ph2_ty, production_vars: item.job.production_vars, ro_number: item.job.ro_number, suspended: item.job.suspended, @@ -264,8 +266,8 @@ export default function DashboardScheduledInToday({ data, ...cardProps }) { responsive: ["md"], render: (text, record) => ( - - + + ) }, @@ -400,6 +402,8 @@ export const DashboardScheduledInTodayGql = ` ownr_ln ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty production_vars ro_number suspended diff --git a/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx b/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx index fdfcc53a5..05dac46a9 100644 --- a/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx +++ b/client/src/components/dashboard-components/scheduled-out-today/scheduled-out-today.component.jsx @@ -256,9 +256,9 @@ export default function DashboardScheduledOutToday({ data, ...cardProps }) { responsive: ["md"], render: (text, record) => ( - + - + ) }, @@ -397,6 +397,8 @@ export const DashboardScheduledOutTodayGql = ` ownr_ln ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty production_vars ro_number scheduled_completion diff --git a/client/src/components/global-search/global-search-os.component.jsx b/client/src/components/global-search/global-search-os.component.jsx index 2d4307344..2280f6c6d 100644 --- a/client/src/components/global-search/global-search-os.component.jsx +++ b/client/src/components/global-search/global-search-os.component.jsx @@ -73,8 +73,8 @@ export default function GlobalSearchOs() { - {owner.ownr_ph1} - {owner.ownr_ph2} + {owner.ownr_ph1} + {owner.ownr_ph2} ) diff --git a/client/src/components/global-search/global-search.component.jsx b/client/src/components/global-search/global-search.component.jsx index 3a9e29f77..c1fead582 100644 --- a/client/src/components/global-search/global-search.component.jsx +++ b/client/src/components/global-search/global-search.component.jsx @@ -63,8 +63,8 @@ export default function GlobalSearch() { - {owner.ownr_ph1} - {owner.ownr_ph2} + {owner.ownr_ph1} + {owner.ownr_ph2} ) diff --git a/client/src/components/job-at-change/schedule-event.component.jsx b/client/src/components/job-at-change/schedule-event.component.jsx index acaf839db..afdfd016a 100644 --- a/client/src/components/job-at-change/schedule-event.component.jsx +++ b/client/src/components/job-at-change/schedule-event.component.jsx @@ -220,10 +220,10 @@ export function ScheduleEventComponent({ {(event.job && event.job.ownr_ea) || ""} - + - + {(event.job && event.job.loss_of_use) || ""} diff --git a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx index 915509881..5509415a1 100644 --- a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx +++ b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.new.component.jsx @@ -1,4 +1,4 @@ -import { Form, Input } from "antd"; +import { Form, Input, Select } from "antd"; import { useContext } from "react"; import { useTranslation } from "react-i18next"; import JobCreateContext from "../../pages/jobs-create/jobs-create.context"; @@ -7,6 +7,11 @@ import FormItemPhone, { PhoneItemFormatterValidation } from "../form-items-forma import LayoutFormRow from "../layout-form-row/layout-form-row.component"; export default function JobsCreateOwnerInfoNewComponent() { + const PHONE_TYPE_OPTIONS = [ + { label: t("owners.labels.home"), value: "Home" }, + { label: t("owners.labels.work"), value: "Work" }, + { label: t("owners.labels.cell"), value: "Cell" } + ]; const [state] = useContext(JobCreateContext); const { t } = useTranslation(); @@ -105,26 +110,56 @@ export default function JobsCreateOwnerInfoNewComponent() { ]} name={["owner", "data", "ownr_ea"]} > - + - PhoneItemFormatterValidation(getFieldValue, "owner.data.ownr_ph1")]} - > - + + {/* Phone 1 + Type */} + +
+ PhoneItemFormatterValidation(getFieldValue, "owner.data.ownr_ph1")]} + > + + + + + + +
+ diff --git a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx index 9f93f4362..9693d4f67 100644 --- a/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx +++ b/client/src/components/jobs-create-owner-info/jobs-create-owner-info.search.component.jsx @@ -61,7 +61,7 @@ export default function JobsCreateOwnerInfoSearchComponent({ loading, owners }) title: t("owners.fields.ownr_ph1"), dataIndex: "ownr_ph1", key: "ownr_ph1", - render: (text, record) => {record.ownr_ph1}, + render: (text, record) => {record.ownr_ph1}, sorter: (a, b) => alphaSort(a.ownr_ph1, b.ownr_ph1), sortOrder: tableState.sortedInfo.columnKey === "ownr_ph1" && tableState.sortedInfo.order }, @@ -69,7 +69,7 @@ export default function JobsCreateOwnerInfoSearchComponent({ loading, owners }) title: t("owners.fields.ownr_ph2"), dataIndex: "ownr_ph2", key: "ownr_ph2", - render: (text, record) => {record.ownr_ph2}, + render: (text, record) => {record.ownr_ph2}, sorter: (a, b) => alphaSort(a.ownr_ph2, b.ownr_ph2), sortOrder: tableState.sortedInfo.columnKey === "ownr_ph2" && tableState.sortedInfo.order } 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 5ba5ce89e..80962c912 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 @@ -251,16 +251,16 @@ export function JobsDetailHeader({ job, bodyshop, disabled, insertAuditTrail, is
{disabled || isPartsEntry ? ( - {job.ownr_ph1} + {job.ownr_ph1} ) : ( - + )} {disabled || isPartsEntry ? ( - {job.ownr_ph2} + {job.ownr_ph2} ) : ( - + )} diff --git a/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx index a70e3d118..cf1679734 100644 --- a/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx +++ b/client/src/components/jobs-find-modal/jobs-find-modal.component.jsx @@ -64,7 +64,11 @@ export default function JobsFindModalComponent({ width: "12%", ellipsis: true, render: (text, record) => { - return record.ownr_ph1 ? {record.ownr_ph1} : t("general.labels.unknown"); + return record.ownr_ph1 ? ( + {record.ownr_ph1} + ) : ( + t("general.labels.unknown") + ); } }, { @@ -74,7 +78,11 @@ export default function JobsFindModalComponent({ width: "12%", ellipsis: true, render: (text, record) => { - return record.ownr_ph2 ? {record.ownr_ph2} : t("general.labels.unknown"); + return record.ownr_ph2 ? ( + {record.ownr_ph2} + ) : ( + t("general.labels.unknown") + ); } }, { @@ -245,7 +253,11 @@ export default function JobsFindModalComponent({ > {t("jobs.labels.override_header")} - setPartsQueueToggle(e.target.checked)} id="parts_queue_toggle"> + setPartsQueueToggle(e.target.checked)} + id="parts_queue_toggle" + > {t("bodyshop.fields.md_functionality_toggles.parts_queue_toggle")} + render: (text, record) => }, { title: t("jobs.fields.ownr_ph2"), dataIndex: "ownr_ph2", key: "ownr_ph2", ellipsis: true, - render: (text, record) => + render: (text, record) => }, { title: t("jobs.fields.status"), diff --git a/client/src/components/jobs-list/jobs-list.component.jsx b/client/src/components/jobs-list/jobs-list.component.jsx index bde88d161..efe52e959 100644 --- a/client/src/components/jobs-list/jobs-list.component.jsx +++ b/client/src/components/jobs-list/jobs-list.component.jsx @@ -139,7 +139,7 @@ export function JobsList({ bodyshop }) { key: "ownr_ph1", ellipsis: true, responsive: ["md"], - render: (text, record) => + render: (text, record) => }, { title: t("jobs.fields.ownr_ph2"), @@ -147,7 +147,7 @@ export function JobsList({ bodyshop }) { key: "ownr_ph2", ellipsis: true, responsive: ["md"], - render: (text, record) => + render: (text, record) => }, { diff --git a/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx b/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx index b218b46f4..f793f6b55 100644 --- a/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx +++ b/client/src/components/jobs-ready-list/jobs-ready-list.component.jsx @@ -140,7 +140,7 @@ export function JobsReadyList({ bodyshop }) { key: "ownr_ph1", ellipsis: true, responsive: ["md"], - render: (text, record) => + render: (text, record) => }, { title: t("jobs.fields.ownr_ph2"), @@ -148,7 +148,7 @@ export function JobsReadyList({ bodyshop }) { key: "ownr_ph2", ellipsis: true, responsive: ["md"], - render: (text, record) => + render: (text, record) => }, { title: t("jobs.fields.status"), diff --git a/client/src/components/owner-detail-form/owner-detail-form.component.jsx b/client/src/components/owner-detail-form/owner-detail-form.component.jsx index 608d66fb1..09b3c86fe 100644 --- a/client/src/components/owner-detail-form/owner-detail-form.component.jsx +++ b/client/src/components/owner-detail-form/owner-detail-form.component.jsx @@ -1,4 +1,4 @@ -import { Form, Input, Tooltip } from "antd"; +import { Form, Input, Select, Tooltip } from "antd"; import { CloseCircleFilled } from "@ant-design/icons"; import { useTranslation } from "react-i18next"; import FormFieldsChanged from "../form-fields-changed-alert/form-fields-changed-alert.component"; @@ -10,6 +10,12 @@ export default function OwnerDetailFormComponent({ form, isPhone1OptedOut, isPho const { t } = useTranslation(); const { getFieldValue } = form; + const PHONE_TYPE_OPTIONS = [ + { label: t("owners.labels.home"), value: "Home" }, + { label: t("owners.labels.work"), value: "Work" }, + { label: t("owners.labels.cell"), value: "Cell" } + ]; + return (
@@ -30,6 +36,7 @@ export default function OwnerDetailFormComponent({ form, isPhone1OptedOut, isPho + @@ -50,6 +57,7 @@ export default function OwnerDetailFormComponent({ form, isPhone1OptedOut, isPho + + + {/* Phone 1 + Type + Opt-out icon */}
+ + + + + + @@ -120,6 +143,7 @@ export default function OwnerDetailFormComponent({ form, isPhone1OptedOut, isPho + diff --git a/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx b/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx index b021660ff..78ab8454d 100644 --- a/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx +++ b/client/src/components/owner-detail-update-jobs/owner-detail-update-jobs.component.jsx @@ -25,8 +25,10 @@ export default function OwnerDetailUpdateJobsComponent({ owner, selectedJobs, di ownr_ea: owner["ownr_ea"], ownr_fn: owner["ownr_fn"], ownr_ph1: owner["ownr_ph1"], + ownr_ph1_ty: owner["ownr_ph1_ty"], ownr_ln: owner["ownr_ln"], ownr_ph2: owner["ownr_ph2"], + ownr_ph2_ty: owner["ownr_ph2_ty"], ownr_st: owner["ownr_st"], ownr_title: owner["ownr_title"], ownr_zip: owner["ownr_zip"] diff --git a/client/src/components/owner-find-modal/owner-find-modal.component.jsx b/client/src/components/owner-find-modal/owner-find-modal.component.jsx index 7527de91f..09067bda5 100644 --- a/client/src/components/owner-find-modal/owner-find-modal.component.jsx +++ b/client/src/components/owner-find-modal/owner-find-modal.component.jsx @@ -47,13 +47,13 @@ export default function OwnerFindModalComponent({ title: t("owners.fields.ownr_ph1"), dataIndex: "ownr_ph1", key: "ownr_ph1", - render: (text, record) => {record.ownr_ph1} + render: (text, record) => {record.ownr_ph1} }, { title: t("owners.fields.ownr_ph2"), dataIndex: "ownr_ph2", key: "ownr_ph2", - render: (text, record) => {record.ownr_ph2} + render: (text, record) => {record.ownr_ph2} }, { title: t("owners.fields.note"), diff --git a/client/src/components/owner-tag-popover/owner-tag-popover.component.jsx b/client/src/components/owner-tag-popover/owner-tag-popover.component.jsx index 8d086e4fa..8781fd116 100644 --- a/client/src/components/owner-tag-popover/owner-tag-popover.component.jsx +++ b/client/src/components/owner-tag-popover/owner-tag-popover.component.jsx @@ -15,10 +15,10 @@ export default function OwnerTagPopoverComponent({ job }) { - {job.ownr_ph1 || ""} + {job.ownr_ph1 || ""} - {job.ownr_ph2 || ""} + {job.ownr_ph2 || ""} {`${job.ownr_addr1 || ""} ${job.ownr_addr2 || ""} ${ @@ -36,13 +36,10 @@ export default function OwnerTagPopoverComponent({ job }) { - {job.owner.ownr_ph1 || ""} - - - {job.owner.ownr_ph2 || ""} + {job.owner.ownr_ph1 || ""} - {job.owner.ownr_ph2 || ""} + {job.owner.ownr_ph2 || ""} {`${job.owner.ownr_addr1 || ""} ${job.owner.ownr_addr2 || ""} ${ diff --git a/client/src/components/owners-list/owners-list.component.jsx b/client/src/components/owners-list/owners-list.component.jsx index cd30f7824..a93e5765c 100644 --- a/client/src/components/owners-list/owners-list.component.jsx +++ b/client/src/components/owners-list/owners-list.component.jsx @@ -39,7 +39,7 @@ export default function OwnersListComponent({ loading, owners, total, refetch }) dataIndex: "ownr_ph1", key: "ownr_ph1", render: (text, record) => { - return {record.ownr_ph1}; + return {record.ownr_ph1}; } }, { @@ -47,7 +47,7 @@ export default function OwnersListComponent({ loading, owners, total, refetch }) dataIndex: "ownr_ph2", key: "ownr_ph2", render: (text, record) => { - return {record.ownr_ph2}; + return {record.ownr_ph2}; } }, { diff --git a/client/src/components/production-list-columns/production-list-columns.data.jsx b/client/src/components/production-list-columns/production-list-columns.data.jsx index 165e15c1d..f5d73cf23 100644 --- a/client/src/components/production-list-columns/production-list-columns.data.jsx +++ b/client/src/components/production-list-columns/production-list-columns.data.jsx @@ -255,14 +255,14 @@ const productionListColumnsData = ({ technician, state, activeStatuses, data, bo dataIndex: "ownr_ph1", key: "ownr_ph1", ellipsis: true, - render: (text, record) => {record.ownr_ph1} + render: (text, record) => {record.ownr_ph1} }, { title: i18n.t("jobs.fields.ownr_ph2"), dataIndex: "ownr_ph2", key: "ownr_ph2", ellipsis: true, - render: (text, record) => {record.ownr_ph2} + render: (text, record) => {record.ownr_ph2} }, { title: i18n.t("jobs.fields.specialcoveragepolicy"), diff --git a/client/src/components/production-list-detail/production-list-detail.component.jsx b/client/src/components/production-list-detail/production-list-detail.component.jsx index d05110fc5..307e0409d 100644 --- a/client/src/components/production-list-detail/production-list-detail.component.jsx +++ b/client/src/components/production-list-detail/production-list-detail.component.jsx @@ -154,13 +154,25 @@ export function ProductionListDetail({ bodyshop, jobs, setPrintCenterContext, te {!technician ? ( <> - - + + ) : ( <> - {data.jobs_by_pk.ownr_ph1} - {data.jobs_by_pk.ownr_ph2} + + {data.jobs_by_pk.ownr_ph1} + + + {data.jobs_by_pk.ownr_ph2} + )} diff --git a/client/src/graphql/appointments.queries.js b/client/src/graphql/appointments.queries.js index c13c6a374..51117f39f 100644 --- a/client/src/graphql/appointments.queries.js +++ b/client/src/graphql/appointments.queries.js @@ -40,6 +40,8 @@ export const QUERY_ALL_ACTIVE_APPOINTMENTS = gql` ownr_fn ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_ea clm_total id diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index 35dde7016..aacbf9b52 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -19,7 +19,9 @@ export const QUERY_ALL_ACTIVE_JOBS_PAGINATED = gql` ownr_ln ownr_co_nm ownr_ph1 + ownr_ph1_ty ownr_ph2 + ownr_ph2_ty ownr_ea ownerid comment @@ -69,6 +71,8 @@ export const QUERY_ALL_ACTIVE_JOBS = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_ea ownerid comment @@ -122,6 +126,8 @@ export const QUERY_PARTS_QUEUE = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_ea plate_no plate_st @@ -179,6 +185,8 @@ export const QUERY_EXACT_JOB_IN_PRODUCTION = gql` clm_total ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty special_coverage_policy owner_owing production_vars @@ -249,6 +257,8 @@ export const QUERY_EXACT_JOBS_IN_PRODUCTION = gql` clm_total ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty special_coverage_policy owner_owing production_vars @@ -615,6 +625,8 @@ export const GET_JOB_BY_PK = gql` ownr_ln ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_st ownr_zip tax_number @@ -631,6 +643,8 @@ export const GET_JOB_BY_PK = gql` ownr_ln ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_st ownr_zip parts_tax_rates @@ -714,7 +728,7 @@ export const GET_JOB_BY_PK = gql` v_model_yr v_model_desc v_vin - notes(where:{pinned: {_eq: true}}, order_by: {updated_at: desc}) { + notes(where: { pinned: { _eq: true } }, order_by: { updated_at: desc }) { created_at created_by critical @@ -830,6 +844,8 @@ export const QUERY_JOB_CARD_DETAILS = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty comment ownr_ea ca_gst_registrant @@ -1000,7 +1016,6 @@ export const QUERY_JOB_CARD_DETAILS = gql` key type } - } } `; @@ -1230,6 +1245,8 @@ export const GET_JOB_INFO_FOR_STRIPE = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_ea } } @@ -1443,8 +1460,10 @@ export const QUERY_JOB_FOR_DUPE = gql` ownr_ln ownr_ph1 ownr_ph1x + ownr_ph1_ty ownr_ph2 ownr_ph2x + ownr_ph2_ty ownr_st ownr_title ownr_zip @@ -1690,8 +1709,10 @@ export const QUERY_ALL_JOB_FIELDS = gql` ownr_ln ownr_ph1 ownr_ph1x + ownr_ph1_ty ownr_ph2 ownr_ph2x + ownr_ph2_ty ownr_st ownr_title ownr_zip @@ -1829,6 +1850,8 @@ export const QUERY_ALL_JOBS_PAGINATED_STATUS_FILTERED = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty plate_no plate_st v_vin @@ -1869,6 +1892,8 @@ export const QUERY_SIMPLIFIED_PARTS_PAGINATED_STATUS_FILTERED = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty plate_no plate_st v_vin @@ -2117,6 +2142,8 @@ export const GET_JOB_FOR_CC_CONTRACT = gql` ownr_zip ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty } } `; @@ -2415,7 +2442,7 @@ export const QUERY_PARTS_QUEUE_CARD_DETAILS = gql` start status } - notes(where:{pinned: {_eq: true}}, order_by: {updated_at: desc}) { + notes(where: { pinned: { _eq: true } }, order_by: { updated_at: desc }) { created_at created_by critical @@ -2503,6 +2530,8 @@ export const QUERY_PARTS_QUEUE_CARD_DETAILS = gql` ownr_ln ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty owner { id preferred_contact @@ -2600,6 +2629,8 @@ export const QUERY_JOBS_IN_PRODUCTION = gql` clm_total ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty special_coverage_policy owner_owing production_vars diff --git a/client/src/graphql/owners.queries.js b/client/src/graphql/owners.queries.js index de1b654b7..37389bada 100644 --- a/client/src/graphql/owners.queries.js +++ b/client/src/graphql/owners.queries.js @@ -8,6 +8,8 @@ export const QUERY_SEARCH_OWNER_BY_IDX = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty ownr_addr1 ownr_addr2 ownr_city @@ -57,8 +59,10 @@ export const QUERY_OWNER_BY_ID = gql` ownr_ea ownr_fn ownr_ph1 + ownr_ph1_ty ownr_ln ownr_ph2 + ownr_ph2_ty ownr_st ownr_title ownr_zip @@ -112,8 +116,10 @@ export const QUERY_ALL_OWNERS = gql` ownr_ea ownr_fn ownr_ph1 + ownr_ph1_ty ownr_ln ownr_ph2 + ownr_ph2_ty ownr_st ownr_title ownr_zip @@ -136,8 +142,10 @@ export const QUERY_ALL_OWNERS_PAGINATED = gql` ownr_ea ownr_fn ownr_ph1 + ownr_ph1_ty ownr_ln ownr_ph2 + ownr_ph2_ty ownr_st ownr_title ownr_zip @@ -164,8 +172,10 @@ export const QUERY_OWNER_FOR_JOB_CREATION = gql` ownr_ea ownr_fn ownr_ph1 + ownr_ph1_ty ownr_ln ownr_ph2 + ownr_ph2_ty ownr_st ownr_title ownr_zip diff --git a/client/src/graphql/parts-orders.queries.js b/client/src/graphql/parts-orders.queries.js index de51fab3d..de4f07cee 100644 --- a/client/src/graphql/parts-orders.queries.js +++ b/client/src/graphql/parts-orders.queries.js @@ -177,10 +177,12 @@ export const QUERY_PARTS_ORDER_OEC = gql` ownr_fax ownr_faxx ownr_ph1 + ownr_ph1_ty ownr_fn ownr_ln ownr_ph1x ownr_ph2 + ownr_ph2_ty ownr_ph2x ownr_st ownr_title diff --git a/client/src/graphql/search.queries.js b/client/src/graphql/search.queries.js index 1c1943e30..ba91fc8af 100644 --- a/client/src/graphql/search.queries.js +++ b/client/src/graphql/search.queries.js @@ -22,6 +22,8 @@ export const GLOBAL_SEARCH_QUERY = gql` ownr_co_nm ownr_ph1 ownr_ph2 + ownr_ph1_ty + ownr_ph2_ty } search_vehicles(args: { search: $search }, limit: 25) { id diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index f79a1f166..e8cd7a3ba 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -2590,7 +2590,10 @@ "fromclaim": "Current Claim", "fromowner": "Historical Owner Record", "relatedjobs": "Related Jobs", - "updateowner": "Update Owner" + "updateowner": "Update Owner", + "work": "Work", + "home": "Home", + "cell": "Cell" }, "successes": { "delete": "Owner deleted successfully.", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 2a9a6229b..cc0d73716 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -2590,7 +2590,10 @@ "fromclaim": "", "fromowner": "", "relatedjobs": "", - "updateowner": "" + "updateowner": "", + "work": "", + "home": "", + "cell": "" }, "successes": { "delete": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 939f7752e..4a39253b1 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -2590,7 +2590,10 @@ "fromclaim": "", "fromowner": "", "relatedjobs": "", - "updateowner": "" + "updateowner": "", + "work": "", + "home": "", + "cell": "" }, "successes": { "delete": "", diff --git a/client/src/utils/PhoneFormatter.jsx b/client/src/utils/PhoneFormatter.jsx index 0e99308cc..90fc49e50 100644 --- a/client/src/utils/PhoneFormatter.jsx +++ b/client/src/utils/PhoneFormatter.jsx @@ -1,7 +1,23 @@ -//import NumberFormat from "react-number-format"; +import { Typography } from "antd"; import parsePhoneNumber from "libphonenumber-js"; -export default function PhoneNumberFormatter(props) { - const p = parsePhoneNumber(props.children || "", "CA"); - return p ? {p.formatNational()} : null; +const { Text } = Typography; + +export default function PhoneNumberFormatter({ children, type }) { + const p = parsePhoneNumber(children || "", "CA"); + if (!p) return null; + + const phone = p.formatNational(); + + return ( + + {phone} + {type ? ( + <> + {" "} + ({type}) + + ) : null} + + ); }