Started refactoring parts order reconciliation BOD-406

This commit is contained in:
Patrick Fic
2020-10-01 09:21:22 -07:00
parent c68835153f
commit 88951da11d
7 changed files with 117 additions and 98 deletions

View File

@@ -1,5 +1,4 @@
import { Checkbox, Statistic, Table } from "antd";
import Dinero from "dinero.js";
import { Checkbox, Table } from "antd";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
@@ -16,7 +15,6 @@ export default function JobReconciliationBillsTable({
});
const [selectedLines, setSelectedLines] = billLineState;
const [total, setTotal] = useState(Dinero({ amount: 0 }).toFormat());
const columns = [
{
@@ -27,6 +25,15 @@ export default function JobReconciliationBillsTable({
sortOrder:
state.sortedInfo.columnKey === "line_desc" && state.sortedInfo.order,
},
{
title: t("billlines.labels.from"),
dataIndex: "from",
key: "from",
render: (text, record) =>
`${record.bill.vendor && record.bill.vendor.name} / ${
record.bill.invoice_number
}`,
},
{
title: t("billlines.fields.retail"),
dataIndex: "actual_price",
@@ -61,11 +68,13 @@ export default function JobReconciliationBillsTable({
title: t("bills.fields.is_credit_memo"),
dataIndex: "is_credit_memo",
key: "is_credit_memo",
sorter: (a, b) => a.is_credit_memo - b.is_credit_memo,
sorter: (a, b) => a.bill.is_credit_memo - b.bill.is_credit_memo,
sortOrder:
state.sortedInfo.columnKey === "is_credit_memo" &&
state.sortedInfo.order,
render: (text, record) => <Checkbox checked={record.is_credit_memo} />,
render: (text, record) => (
<Checkbox disabled checked={record.bill.is_credit_memo} />
),
},
];
@@ -74,30 +83,14 @@ export default function JobReconciliationBillsTable({
};
const handleOnRowClick = (selectedRecordKeys, selectedRecords) => {
setSelectedLines(selectedRecordKeys);
calculateTotal(selectedRecords);
};
const calculateTotal = (selectedRecords) => {
let total = Dinero({ amount: 0 });
selectedRecords.forEach(
(record) =>
(total = total.add(
Dinero({
amount:
record.actual_price * 100 * (record.is_credit_memo ? -1 : 1),
}).multiply(record.quantity)
))
);
setTotal(total.toFormat());
};
return (
<div>
<Table
size="small"
title={() => <div></div>}
pagination={{ position: "top", defaultPageSize: 25 }}
pagination={false}
scroll={{ y: "40vh", x: true }}
columns={columns}
rowKey="id"
dataSource={invoiceLineData}
@@ -107,7 +100,6 @@ export default function JobReconciliationBillsTable({
selectedRowKeys: selectedLines,
}}
/>
<Statistic value={total} title="total" />
</div>
);
}