IO-791 Bill Edit with Labor Adjustments confirmation

This commit is contained in:
Patrick Fic
2021-03-22 17:29:39 -07:00
parent af30651d7b
commit 43a266c463
9 changed files with 108 additions and 23 deletions

View File

@@ -1,5 +1,5 @@
import { useMutation, useQuery } from "@apollo/client";
import { Button, Form } from "antd";
import { Button, Form, Popconfirm } from "antd";
import moment from "moment";
import queryString from "query-string";
import React, { useEffect, useState } from "react";
@@ -19,6 +19,7 @@ export default function BillDetailEditcontainer() {
const search = queryString.parse(useLocation().search);
const { t } = useTranslation();
const [form] = Form.useForm();
const [visible, setVisible] = useState(false);
const [updateLoading, setUpdateLoading] = useState(false);
const [update_bill] = useMutation(UPDATE_BILL);
const [insertBillLine] = useMutation(INSERT_NEW_BILL_LINES);
@@ -29,6 +30,15 @@ export default function BillDetailEditcontainer() {
skip: !!!search.billid,
});
const handleSave = () => {
//It's got a previously deducted bill line!
if (data.bills_by_pk.billlines.filter((b) => b.deductedfromlbr).length > 0)
setVisible(true);
else {
form.submit();
}
};
const handleFinish = async (values) => {
setUpdateLoading(true);
//let adjustmentsToInsert = {};
@@ -42,7 +52,7 @@ export default function BillDetailEditcontainer() {
);
billlines.forEach((billline) => {
const { deductfromlabor, ...il } = billline;
const { deductedfromlbr, ...il } = billline;
delete il.__typename;
//Need to compare this line to the previous version of the line to see if there is a change in the adjustments.
@@ -52,7 +62,7 @@ export default function BillDetailEditcontainer() {
if (theOldBillLine) {
//It was there! Need to change the diff.
if (theOldBillLine.deductfromlabor !== deductfromlabor) {
if (theOldBillLine.deductedfromlbr !== deductedfromlbr) {
//There's a different
}
}
@@ -64,7 +74,7 @@ export default function BillDetailEditcontainer() {
billLineId: il.id,
billLine: {
...il,
deductedfromlbr: deductfromlabor,
deductedfromlbr: deductedfromlbr,
joblineid: il.joblineid === "noline" ? null : il.joblineid,
},
},
@@ -78,7 +88,7 @@ export default function BillDetailEditcontainer() {
billLines: [
{
...il,
deductedfromlbr: deductfromlabor,
deductedfromlbr: deductedfromlbr,
billid: search.billid,
joblineid: il.joblineid === "noline" ? null : il.joblineid,
},
@@ -93,6 +103,7 @@ export default function BillDetailEditcontainer() {
await refetch();
form.resetFields();
form.resetFields();
setVisible(false);
setUpdateLoading(false);
};
@@ -109,19 +120,28 @@ export default function BillDetailEditcontainer() {
return (
<LoadingSkeleton loading={loading}>
<Form
form={form}
onFinish={handleFinish}
initialValues={transformData(data)}
<Popconfirm
visible={visible}
onConfirm={() => form.submit()}
onCancel={() => setVisible(false)}
okButtonProps={{ loading: updateLoading }}
title={t("bills.labels.editadjwarning")}
>
<Button
htmlType="submit"
disabled={exported}
onClick={handleSave}
loading={updateLoading}
type="primary"
>
{t("general.actions.save")}
</Button>
</Popconfirm>
<Form
form={form}
onFinish={handleFinish}
initialValues={transformData(data)}
>
<BillFormContainer form={form} billEdit disabled={exported} />
<JobDocumentsGallery
jobId={data ? data.bills_by_pk.jobid : null}