diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 0911111b4..5dd73d1ff 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -17796,6 +17796,27 @@ + + novehicle + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + ownerinfo false diff --git a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx index d7025f1ee..6cf80242d 100644 --- a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx +++ b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.new.component.jsx @@ -19,6 +19,7 @@ export default function JobsCreateVehicleInfoNewComponent() { ...state, vehicle: { ...state.vehicle, + none: false, new: !state.vehicle.new, selectedid: null, }, @@ -27,6 +28,23 @@ export default function JobsCreateVehicleInfoNewComponent() { > {t("jobs.labels.create.newvehicle")} + { + setState({ + ...state, + vehicle: { + ...state.vehicle, + new: false, + none: !state.vehicle.none, + selectedid: null, + }, + }); + }} + > + {t("jobs.labels.create.novehicle")} + { return ( -
+
{ setState({ @@ -74,11 +74,11 @@ export default function JobsCreateVehicleInfoSearchComponent({
); }} - size='small' + size="small" scroll={{ x: true }} pagination={{ position: "top" }} columns={columns} - rowKey='id' + rowKey="id" dataSource={vehicles} onChange={handleTableChange} rowSelection={{ @@ -87,6 +87,7 @@ export default function JobsCreateVehicleInfoSearchComponent({ ...state, vehicle: { ...state.vehicle, + none: false, new: false, selectedid: props.id, vehicleObj: props, @@ -105,6 +106,7 @@ export default function JobsCreateVehicleInfoSearchComponent({ ...state, vehicle: { ...state.vehicle, + none: false, new: false, selectedid: record.id, vehicleObj: record, diff --git a/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx b/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx index 985662da5..213d815e8 100644 --- a/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx +++ b/client/src/components/jobs-detail-rates/jobs-detail-rates.parts.component.jsx @@ -1,4 +1,4 @@ -import { Collapse, Form, InputNumber, Select, Switch } from "antd"; +import { Collapse, Form, InputNumber, Switch } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; diff --git a/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx b/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx index f236761af..0293e0459 100644 --- a/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx +++ b/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx @@ -5,6 +5,8 @@ import { Link } from "react-router-dom"; export default function VehicleTagPopoverComponent({ job }) { const { t } = useTranslation(); + if (!job.vehicle) return null; + const content = (
diff --git a/client/src/pages/jobs-create/jobs-create.component.jsx b/client/src/pages/jobs-create/jobs-create.component.jsx index ec838b4e4..74576eb3d 100644 --- a/client/src/pages/jobs-create/jobs-create.component.jsx +++ b/client/src/pages/jobs-create/jobs-create.component.jsx @@ -18,7 +18,10 @@ export default function JobsCreateComponent({ form }) { { title: t("jobs.labels.create.vehicleinfo"), content: , - validation: !!state.vehicle.new || !!state.vehicle.selectedid, + validation: + !!state.vehicle.new || + !!state.vehicle.selectedid || + !!state.vehicle.none, error: t("vehicles.errors.selectexistingornew"), }, { diff --git a/client/src/pages/jobs-create/jobs-create.container.jsx b/client/src/pages/jobs-create/jobs-create.container.jsx index 857b0a7af..f6a66f417 100644 --- a/client/src/pages/jobs-create/jobs-create.container.jsx +++ b/client/src/pages/jobs-create/jobs-create.container.jsx @@ -26,7 +26,13 @@ const mapDispatchToProps = (dispatch) => ({ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) { const { t } = useTranslation(); const contextState = useState({ - vehicle: { new: false, search: "", selectedid: null, vehicleObj: null }, + vehicle: { + new: false, + search: "", + selectedid: null, + vehicleObj: null, + none: false, + }, owner: { new: false, search: "", selectedid: null }, job: null, created: false, @@ -79,12 +85,16 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) { }); }; + console.log("Manual State", state); const handleFinish = (values) => { let job = Object.assign( {}, values, { - vehicle: state.vehicle.selectedid ? null : values.vehicle, + vehicle: + state.vehicle.selectedid || state.vehicle.none + ? null + : values.vehicle, vehicleid: state.vehicle.selectedid || null, }, { @@ -109,24 +119,26 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) { delete ownerData.id; delete ownerData.__typename; } - if (!!!job.vehicleid) { - delete job.vehicleid; - job.vehicle.data.shopid = bodyshop.id; - job.plate_no = job.vehicle.data.plate_no; - job.plate_st = job.vehicle.data.plate_st; - job.v_vin = job.vehicle.data.v_vin; - job.v_model_yr = job.vehicle.data.v_model_yr; - job.v_model_desc = job.vehicle.data.v_model_desc; - job.v_make_desc = job.vehicle.data.v_make_desc; - job.v_color = job.vehicle.data.v_color; - } else { - job.plate_no = state.vehicle.vehicleObj.plate_no; - job.plate_st = state.vehicle.vehicleObj.plate_st; - job.v_vin = state.vehicle.vehicleObj.v_vin; - job.v_model_yr = state.vehicle.vehicleObj.v_model_yr; - job.v_model_desc = state.vehicle.vehicleObj.v_model_desc; - job.v_make_desc = state.vehicle.vehicleObj.v_make_desc; - job.v_color = state.vehicle.vehicleObj.v_color; + if (!state.vehicle.none) { + if (!!!job.vehicleid) { + delete job.vehicleid; + job.vehicle.data.shopid = bodyshop.id; + job.plate_no = job.vehicle.data.plate_no; + job.plate_st = job.vehicle.data.plate_st; + job.v_vin = job.vehicle.data.v_vin; + job.v_model_yr = job.vehicle.data.v_model_yr; + job.v_model_desc = job.vehicle.data.v_model_desc; + job.v_make_desc = job.vehicle.data.v_make_desc; + job.v_color = job.vehicle.data.v_color; + } else { + job.plate_no = state.vehicle.vehicleObj.plate_no; + job.plate_st = state.vehicle.vehicleObj.plate_st; + job.v_vin = state.vehicle.vehicleObj.v_vin; + job.v_model_yr = state.vehicle.vehicleObj.v_model_yr; + job.v_model_desc = state.vehicle.vehicleObj.v_model_desc; + job.v_make_desc = state.vehicle.vehicleObj.v_make_desc; + job.v_color = state.vehicle.vehicleObj.v_color; + } } job = { ...job, ...ownerData }; diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index bf238bd2c..247501752 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -1087,6 +1087,7 @@ "jobinfo": "Job Info", "newowner": "Create a new Owner instead. ", "newvehicle": "Create a new Vehicle Instead", + "novehicle": "No vehicle (only for ROs to track parts/labor only work).", "ownerinfo": "Owner Info", "vehicleinfo": "Vehicle Info" }, diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index a0783e7ab..80903d486 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -1087,6 +1087,7 @@ "jobinfo": "", "newowner": "", "newvehicle": "", + "novehicle": "", "ownerinfo": "", "vehicleinfo": "" }, diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index b3fc7527d..53149e4d0 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -1087,6 +1087,7 @@ "jobinfo": "", "newowner": "", "newvehicle": "", + "novehicle": "", "ownerinfo": "", "vehicleinfo": "" },