Minor parts order additions.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
<babeledit_project be_version="2.6.1" version="1.2">
|
<babeledit_project version="1.2" be_version="2.6.1">
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
BabelEdit project file
|
BabelEdit project file
|
||||||
@@ -5884,6 +5884,136 @@
|
|||||||
</folder_node>
|
</folder_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>parts_orders</name>
|
||||||
|
<children>
|
||||||
|
<folder_node>
|
||||||
|
<name>errors</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>creating</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>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>fields</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>deliver_by</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>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>labels</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>email</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>
|
||||||
|
<name>print</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>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>successes</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>created</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>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
<folder_node>
|
<folder_node>
|
||||||
<name>profile</name>
|
<name>profile</name>
|
||||||
<children>
|
<children>
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { AutoComplete, Icon } from "antd";
|
import { AutoComplete, Icon, DatePicker, Radio } from "antd";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
export default function PartsOrderModalComponent({ vendorList, state }) {
|
export default function PartsOrderModalComponent({
|
||||||
|
vendorList,
|
||||||
|
state,
|
||||||
|
sendTypeState
|
||||||
|
}) {
|
||||||
const [partsOrder, setPartsOrder] = state;
|
const [partsOrder, setPartsOrder] = state;
|
||||||
|
const [sendType, setSendType] = sendTypeState;
|
||||||
const [vendorComplete, setVendorComplete] = useState(vendorList);
|
const [vendorComplete, setVendorComplete] = useState(vendorList);
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
@@ -17,27 +22,42 @@ export default function PartsOrderModalComponent({ vendorList, state }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleSelect = (value, option) => {
|
const handleSelect = (value, option) => {
|
||||||
|
console.log("value", value);
|
||||||
console.log("option", option);
|
console.log("option", option);
|
||||||
setPartsOrder({ ...partsOrder, vendorid: value });
|
setPartsOrder({ ...partsOrder, vendorid: option.key });
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
TODO Not sure why name is not populating.
|
|
||||||
<AutoComplete
|
<AutoComplete
|
||||||
onSearch={handleSearch}
|
onSearch={handleSearch}
|
||||||
onSelect={handleSelect}
|
onSelect={handleSelect}
|
||||||
optionLabelProp='id'
|
defaultOpen
|
||||||
backfill
|
backfill
|
||||||
|
optionLabelProp='value'
|
||||||
dataSource={vendorComplete}
|
dataSource={vendorComplete}
|
||||||
placeholder={t("vendors.labels.search")}>
|
placeholder={t("vendors.labels.search")}>
|
||||||
{vendorComplete.map(v => (
|
{vendorComplete.map(v => (
|
||||||
<AutoComplete.Option key={v.id}>
|
<AutoComplete.Option value={v.name} key={v.id}>
|
||||||
<div>{v.name}</div>
|
<div>{v.name}</div>
|
||||||
<div> {v.favorite ? <Icon type='heart' /> : null}</div>
|
<div> {v.favorite ? <Icon type='heart' /> : null}</div>
|
||||||
</AutoComplete.Option>
|
</AutoComplete.Option>
|
||||||
))}
|
))}
|
||||||
</AutoComplete>
|
</AutoComplete>
|
||||||
|
{t("parts_orders.fields.deliver_by")}
|
||||||
|
<DatePicker
|
||||||
|
defaultValue={partsOrder.deliver_by}
|
||||||
|
onChange={e => {
|
||||||
|
setPartsOrder({ ...partsOrder, deliver_by: e });
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Radio.Group
|
||||||
|
defaultValue={sendType}
|
||||||
|
onChange={e => setSendType(e.target.value)}>
|
||||||
|
<Radio value={"e"}>{t("parts_orders.labels.email")}</Radio>
|
||||||
|
<Radio value={"p"}>{t("parts_orders.labels.print")}</Radio>
|
||||||
|
</Radio.Group>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Modal } from "antd";
|
import { Modal, notification } from "antd";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useQuery, useMutation } from "react-apollo";
|
import { useQuery, useMutation } from "react-apollo";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
@@ -12,6 +12,7 @@ import {
|
|||||||
import AlertComponent from "../alert/alert.component";
|
import AlertComponent from "../alert/alert.component";
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||||
import PartsOrderModalComponent from "./parts-order-modal.component";
|
import PartsOrderModalComponent from "./parts-order-modal.component";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
currentUser: selectCurrentUser,
|
currentUser: selectCurrentUser,
|
||||||
@@ -32,8 +33,9 @@ export default connect(
|
|||||||
fetchPolicy: "network-only",
|
fetchPolicy: "network-only",
|
||||||
skip: !modalVisible
|
skip: !modalVisible
|
||||||
});
|
});
|
||||||
|
const { t } = useTranslation();
|
||||||
const [insertPartOrder] = useMutation(INSERT_NEW_PARTS_ORDERS);
|
const [insertPartOrder] = useMutation(INSERT_NEW_PARTS_ORDERS);
|
||||||
|
const sendTypeState = useState("e");
|
||||||
|
|
||||||
const partsOrderState = useState({
|
const partsOrderState = useState({
|
||||||
vendorid: null,
|
vendorid: null,
|
||||||
@@ -41,7 +43,8 @@ export default connect(
|
|||||||
user_email: currentUser.email
|
user_email: currentUser.email
|
||||||
});
|
});
|
||||||
|
|
||||||
const [partsOrder, setPartsOrder] = partsOrderState;
|
console.log("sendTypeState[0]", sendTypeState[0]);
|
||||||
|
const partsOrder = partsOrderState[0];
|
||||||
const handleOk = () => {
|
const handleOk = () => {
|
||||||
insertPartOrder({
|
insertPartOrder({
|
||||||
variables: {
|
variables: {
|
||||||
@@ -53,7 +56,9 @@ export default connect(
|
|||||||
data: linesToOrder.reduce((acc, value) => {
|
data: linesToOrder.reduce((acc, value) => {
|
||||||
acc.push({
|
acc.push({
|
||||||
line_desc: value.line_desc,
|
line_desc: value.line_desc,
|
||||||
joblineid: value.joblineid
|
joblineid: value.joblineid,
|
||||||
|
status:
|
||||||
|
bodyshop.md_order_statuses.default_ordered || "Ordered*"
|
||||||
});
|
});
|
||||||
return acc;
|
return acc;
|
||||||
}, [])
|
}, [])
|
||||||
@@ -61,8 +66,19 @@ export default connect(
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
setModalVisible(false);
|
.then(r => {
|
||||||
|
notification["success"]({
|
||||||
|
message: t("parts_orders.successes.created")
|
||||||
|
});
|
||||||
|
setModalVisible(false);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
notification["error"]({
|
||||||
|
message: t("parts_orders.errors.creating"),
|
||||||
|
description: error.message
|
||||||
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -75,6 +91,7 @@ export default connect(
|
|||||||
<PartsOrderModalComponent
|
<PartsOrderModalComponent
|
||||||
vendorList={(data && data.vendors) || []}
|
vendorList={(data && data.vendors) || []}
|
||||||
state={partsOrderState}
|
state={partsOrderState}
|
||||||
|
sendTypeState={sendTypeState}
|
||||||
/>
|
/>
|
||||||
</LoadingSpinner>
|
</LoadingSpinner>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|||||||
@@ -378,6 +378,21 @@
|
|||||||
"order": "Order Parts"
|
"order": "Order Parts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parts_orders": {
|
||||||
|
"errors": {
|
||||||
|
"creating": "Error encountered when creating parts order. "
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"deliver_by": "Deliver By"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"email": "Send by Email",
|
||||||
|
"print": "Show Printed Form"
|
||||||
|
},
|
||||||
|
"successes": {
|
||||||
|
"created": "Parts order created successfully. "
|
||||||
|
}
|
||||||
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"state": "Error reading page state. Please refresh."
|
"state": "Error reading page state. Please refresh."
|
||||||
|
|||||||
@@ -378,6 +378,21 @@
|
|||||||
"order": "Pedido de piezas"
|
"order": "Pedido de piezas"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parts_orders": {
|
||||||
|
"errors": {
|
||||||
|
"creating": "Se encontró un error al crear el pedido de piezas."
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"deliver_by": "Entregado por"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"email": "Enviar por correo electrónico",
|
||||||
|
"print": "Mostrar formulario impreso"
|
||||||
|
},
|
||||||
|
"successes": {
|
||||||
|
"created": "Pedido de piezas creado con éxito."
|
||||||
|
}
|
||||||
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"state": "Error al leer el estado de la página. Porfavor refresca."
|
"state": "Error al leer el estado de la página. Porfavor refresca."
|
||||||
|
|||||||
@@ -378,6 +378,21 @@
|
|||||||
"order": "Commander des pièces"
|
"order": "Commander des pièces"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parts_orders": {
|
||||||
|
"errors": {
|
||||||
|
"creating": "Erreur rencontrée lors de la création de la commande de pièces."
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"deliver_by": "Livrer par"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"email": "Envoyé par email",
|
||||||
|
"print": "Afficher le formulaire imprimé"
|
||||||
|
},
|
||||||
|
"successes": {
|
||||||
|
"created": "Commande de pièces créée avec succès."
|
||||||
|
}
|
||||||
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"state": "Erreur lors de la lecture de l'état de la page. Rafraichissez, s'il vous plait."
|
"state": "Erreur lors de la lecture de l'état de la page. Rafraichissez, s'il vous plait."
|
||||||
|
|||||||
Reference in New Issue
Block a user