From c29337c469b631cd418412de5579dd636a0f3fc5 Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Tue, 16 Mar 2021 12:27:07 -0700 Subject: [PATCH] IO-768 Update Backorder Parts ETA --- .../parts-order-backorder-eta.component.jsx | 91 +++++++++++++++++++ .../parts-order-list-table.component.jsx | 11 ++- client/src/graphql/parts-orders.queries.js | 18 ++++ 3 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 client/src/components/parts-order-backorder-eta/parts-order-backorder-eta.component.jsx diff --git a/client/src/components/parts-order-backorder-eta/parts-order-backorder-eta.component.jsx b/client/src/components/parts-order-backorder-eta/parts-order-backorder-eta.component.jsx new file mode 100644 index 000000000..5df9127e9 --- /dev/null +++ b/client/src/components/parts-order-backorder-eta/parts-order-backorder-eta.component.jsx @@ -0,0 +1,91 @@ +import { useMutation } from "@apollo/client"; +import { Button, Form, notification, Popover, Spin } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { logImEXEvent } from "../../firebase/firebase.utils"; +import { MUTATION_UPDATE_BO_ETA } from "../../graphql/parts-orders.queries"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import { DateFormatter } from "../../utils/DateFormatter"; +import FormDatePicker from "../form-date-picker/form-date-picker.component"; +import { CalendarFilled } from "@ant-design/icons"; +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +export function PartsOrderBackorderEta({ + backordered_eta, + partsOrderStatus, + partsLineId, + jobLineId, + disabled, + bodyshop, +}) { + const [visibility, setVisibility] = useState(false); + const [loading, setLoading] = useState(false); + const [updateBoDate] = useMutation(MUTATION_UPDATE_BO_ETA); + const { t } = useTranslation(); + const [form] = Form.useForm(); + + const isAlreadyBackordered = + bodyshop.md_order_statuses.default_bo === partsOrderStatus; + + const handleFinish = async (values) => { + setLoading(true); + logImEXEvent("job_parts_backorder_update_eta"); + + const result = await updateBoDate({ + variables: { + partsLineId, + partsOrder: { backordered_eta: values.eta }, + }, + }); + + if (!!result.errors) { + notification["error"]({ + message: t("parts_orders.errors.backordering", { + message: JSON.stringify(result.errors), + }), + }); + } + + setVisibility(false); + setLoading(false); + }; + + const handlePopover = (e) => { + setVisibility(true); + }; + + const popContent = ( +