IO-1951 Added quote for OEC orders.

This commit is contained in:
Patrick Fic
2022-06-27 13:42:48 -07:00
parent acf99584ea
commit 974a0ec1f1
7 changed files with 160 additions and 47 deletions

View File

@@ -1,4 +1,4 @@
<babeledit_project version="1.2" be_version="2.7.1"> <babeledit_project be_version="2.7.1" version="1.2">
<!-- <!--
BabelEdit project file BabelEdit project file
@@ -8138,6 +8138,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>default_quote</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node> <concept_node>
<name>default_received</name> <name>default_received</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -33967,6 +33988,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>is_quote</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node> <concept_node>
<name>mark_as_received</name> <name>mark_as_received</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -290,18 +290,42 @@ export function PartsOrderModalComponent({
> >
<Input.TextArea rows={3} /> <Input.TextArea rows={3} />
</Form.Item> </Form.Item>
{OEConnection.treatment === "on" && !isReturn && (
<Form.Item
name="is_quote"
label={t("parts_orders.labels.is_quote")}
valuePropName="checked"
>
<Checkbox />
</Form.Item>
)}
<Radio.Group <Form.Item noStyle shouldUpdate>
defaultValue={sendType} {() => {
onChange={(e) => setSendType(e.target.value)} const is_quote = form.getFieldValue("is_quote");
> if (is_quote) setSendType("oec");
<Radio value={"none"}>{t("general.labels.none")}</Radio> return (
<Radio value={"e"}>{t("parts_orders.labels.email")}</Radio> <Radio.Group
<Radio value={"p"}>{t("parts_orders.labels.print")}</Radio> defaultValue={sendType}
{OEConnection.treatment === "on" && !isReturn && ( value={sendType}
<Radio value={"oec"}>{t("parts_orders.labels.oec")}</Radio> onChange={(e) => setSendType(e.target.value)}
)} >
</Radio.Group> <Radio disabled={is_quote} value={"none"}>
{t("general.labels.none")}
</Radio>
<Radio disabled={is_quote} value={"e"}>
{t("parts_orders.labels.email")}
</Radio>
<Radio disabled={is_quote} value={"p"}>
{t("parts_orders.labels.print")}
</Radio>
{OEConnection.treatment === "on" && !isReturn && (
<Radio value={"oec"}>{t("parts_orders.labels.oec")}</Radio>
)}
</Radio.Group>
);
}}
</Form.Item>
</div> </div>
); );
} }

View File

@@ -93,31 +93,48 @@ export function PartsOrderModalContainer({
const [updateJobLines] = useMutation(UPDATE_JOB_LINE_STATUS); const [updateJobLines] = useMutation(UPDATE_JOB_LINE_STATUS);
const [updateJob] = useMutation(UPDATE_JOB); const [updateJob] = useMutation(UPDATE_JOB);
const handleFinish = async ({ removefrompartsqueue, ...values }) => { const handleFinish = async ({
removefrompartsqueue,
is_quote,
...values
}) => {
logImEXEvent("parts_order_insert"); logImEXEvent("parts_order_insert");
setSaving(true); setSaving(true);
const insertResult = await insertPartOrder({ let insertResult;
variables: { if (!is_quote) {
po: [ await insertPartOrder({
{ variables: {
...values, po: [
order_date: moment().format("YYYY-MM-DD"), {
orderedby: currentUser.email, ...values,
jobid: jobId, order_date: moment().format("YYYY-MM-DD"),
user_email: currentUser.email, orderedby: currentUser.email,
return: isReturn, jobid: jobId,
status: bodyshop.md_order_statuses.default_ordered || "Ordered*", user_email: currentUser.email,
}, return: isReturn,
], status: bodyshop.md_order_statuses.default_ordered || "Ordered*",
}, },
refetchQueries: ["QUERY_PARTS_BILLS_BY_JOBID"], ],
}); },
if (!!insertResult.error) { refetchQueries: ["QUERY_PARTS_BILLS_BY_JOBID"],
notification["error"]({ });
message: t("parts_orders.errors.creating"), if (!!insertResult.error) {
description: JSON.stringify(insertResult.error), notification["error"]({
message: t("parts_orders.errors.creating"),
description: JSON.stringify(insertResult.error),
});
return;
}
insertAuditTrail({
jobid: jobId,
operation: isReturn
? AuditTrailMapping.jobspartsreturn(
insertResult.data.insert_parts_orders.returning[0].order_number
)
: AuditTrailMapping.jobspartsorder(
insertResult.data.insert_parts_orders.returning[0].order_number
),
}); });
return;
} }
const jobLinesResult = await updateJobLines({ const jobLinesResult = await updateJobLines({
@@ -127,6 +144,8 @@ export function PartsOrderModalContainer({
.map((item) => item.job_line_id), .map((item) => item.job_line_id),
status: isReturn status: isReturn
? bodyshop.md_order_statuses.default_returned || "Returned*" ? bodyshop.md_order_statuses.default_returned || "Returned*"
: is_quote
? bodyshop.md_order_statuses.default_quote || "Quote"
: bodyshop.md_order_statuses.default_ordered || "Ordered*", : bodyshop.md_order_statuses.default_ordered || "Ordered*",
}, },
}); });
@@ -142,17 +161,6 @@ export function PartsOrderModalContainer({
}); });
} }
insertAuditTrail({
jobid: jobId,
operation: isReturn
? AuditTrailMapping.jobspartsreturn(
insertResult.data.insert_parts_orders.returning[0].order_number
)
: AuditTrailMapping.jobspartsorder(
insertResult.data.insert_parts_orders.returning[0].order_number
),
});
if (!!jobLinesResult.errors) { if (!!jobLinesResult.errors) {
notification["error"]({ notification["error"]({
message: t("parts_orders.errors.creating"), message: t("parts_orders.errors.creating"),

View File

@@ -2,9 +2,28 @@ import { Form, Input } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component";
export default function ShopInfoOrderStatusComponent({ form }) { import { connect } from "react-redux";
const { t } = useTranslation(); import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
import { useTreatments } from "@splitsoftware/splitio-react";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
});
const mapDispatchToProps = (dispatch) => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(ShopInfoOrderStatusComponent);
export function ShopInfoOrderStatusComponent({ bodyshop, form }) {
const { t } = useTranslation();
const { OEConnection } = useTreatments(
["OEConnection"],
{},
bodyshop.imexshopid
);
return ( return (
<LayoutFormRow header={t("bodyshop.labels.orderstatuses")}> <LayoutFormRow header={t("bodyshop.labels.orderstatuses")}>
<Form.Item <Form.Item
@@ -56,6 +75,20 @@ export default function ShopInfoOrderStatusComponent({ form }) {
> >
<Input /> <Input />
</Form.Item> </Form.Item>
{OEConnection.treatment === "on" && (
<Form.Item
label={t("bodyshop.fields.statuses.default_quote")}
rules={[
{
required: true,
//message: t("general.validation.required"),
},
]}
name={["md_order_statuses", "default_quote"]}
>
<Input />
</Form.Item>
)}
</LayoutFormRow> </LayoutFormRow>
); );
} }

View File

@@ -502,6 +502,7 @@
"default_imported": "Default Imported Status", "default_imported": "Default Imported Status",
"default_invoiced": "Default Invoiced Status", "default_invoiced": "Default Invoiced Status",
"default_ordered": "Default Ordered Status", "default_ordered": "Default Ordered Status",
"default_quote": "Default Quote Status",
"default_received": "Default Received Status", "default_received": "Default Received Status",
"default_returned": "Default Returned", "default_returned": "Default Returned",
"default_scheduled": "Default Scheduled Status", "default_scheduled": "Default Scheduled Status",
@@ -2013,6 +2014,7 @@
"confirmdelete": "Are you sure you want to delete this item? It cannot be recovered. Job line statuses will not be updated and may require manual review. ", "confirmdelete": "Are you sure you want to delete this item? It cannot be recovered. Job line statuses will not be updated and may require manual review. ",
"email": "Send by Email", "email": "Send by Email",
"inthisorder": "Parts in this Order", "inthisorder": "Parts in this Order",
"is_quote": "Parts Quote?",
"mark_as_received": "Mark as Received?", "mark_as_received": "Mark as Received?",
"newpartsorder": "New Parts Order", "newpartsorder": "New Parts Order",
"notyetordered": "This part has not yet been ordered.", "notyetordered": "This part has not yet been ordered.",

View File

@@ -502,6 +502,7 @@
"default_imported": "", "default_imported": "",
"default_invoiced": "", "default_invoiced": "",
"default_ordered": "", "default_ordered": "",
"default_quote": "",
"default_received": "", "default_received": "",
"default_returned": "", "default_returned": "",
"default_scheduled": "", "default_scheduled": "",
@@ -2013,6 +2014,7 @@
"confirmdelete": "", "confirmdelete": "",
"email": "Enviar por correo electrónico", "email": "Enviar por correo electrónico",
"inthisorder": "Partes en este pedido", "inthisorder": "Partes en este pedido",
"is_quote": "",
"mark_as_received": "", "mark_as_received": "",
"newpartsorder": "", "newpartsorder": "",
"notyetordered": "", "notyetordered": "",

View File

@@ -502,6 +502,7 @@
"default_imported": "", "default_imported": "",
"default_invoiced": "", "default_invoiced": "",
"default_ordered": "", "default_ordered": "",
"default_quote": "",
"default_received": "", "default_received": "",
"default_returned": "", "default_returned": "",
"default_scheduled": "", "default_scheduled": "",
@@ -2013,6 +2014,7 @@
"confirmdelete": "", "confirmdelete": "",
"email": "Envoyé par email", "email": "Envoyé par email",
"inthisorder": "Pièces dans cette commande", "inthisorder": "Pièces dans cette commande",
"is_quote": "",
"mark_as_received": "", "mark_as_received": "",
"newpartsorder": "", "newpartsorder": "",
"notyetordered": "", "notyetordered": "",