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 { Statistic, Table } from "antd";
import Dinero from "dinero.js";
import { Table } from "antd";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
@@ -16,20 +15,8 @@ export default function JobReconcilitionPartsTable({
});
const [selectedLines, setSelectedLines] = jobLineState;
const [total, setTotal] = useState(Dinero({ amount: 0 }).toFormat());
const columns = [
// {
// title: t("joblines.fields.line_no"),
// dataIndex: "line_no",
// key: "line_no",
// sorter: (a, b) => a.line_no - b.line_no,
// sortOrder:
// state.sortedInfo.columnKey === "line_no" && state.sortedInfo.order,
// //ellipsis: true,
// editable: true,
// width: 75,
// },
{
title: t("joblines.fields.line_desc"),
dataIndex: "line_desc",
@@ -38,32 +25,32 @@ export default function JobReconcilitionPartsTable({
sortOrder:
state.sortedInfo.columnKey === "line_desc" && state.sortedInfo.order,
},
{
title: t("joblines.fields.oem_partno"),
dataIndex: "oem_partno",
key: "oem_partno",
sorter: (a, b) =>
alphaSort(
a.oem_partno ? a.oem_partno : a.op_code_desc,
b.oem_partno ? b.oem_partno : b.op_code_desc
),
sortOrder:
state.sortedInfo.columnKey === "oem_partno" && state.sortedInfo.order,
// {
// title: t("joblines.fields.oem_partno"),
// dataIndex: "oem_partno",
// key: "oem_partno",
// sorter: (a, b) =>
// alphaSort(
// a.oem_partno ? a.oem_partno : a.op_code_desc,
// b.oem_partno ? b.oem_partno : b.op_code_desc
// ),
// sortOrder:
// state.sortedInfo.columnKey === "oem_partno" && state.sortedInfo.order,
render: (text, record) => (
<span>
{record.oem_partno ? record.oem_partno : record.op_code_desc}
</span>
),
},
{
title: t("joblines.fields.part_type"),
dataIndex: "part_type",
key: "part_type",
sorter: (a, b) => alphaSort(a.part_type, b.part_type),
sortOrder:
state.sortedInfo.columnKey === "part_type" && state.sortedInfo.order,
},
// render: (text, record) => (
// <span>
// {record.oem_partno ? record.oem_partno : record.op_code_desc}
// </span>
// ),
// },
// {
// title: t("joblines.fields.part_type"),
// dataIndex: "part_type",
// key: "part_type",
// sorter: (a, b) => alphaSort(a.part_type, b.part_type),
// sortOrder:
// state.sortedInfo.columnKey === "part_type" && state.sortedInfo.order,
// },
{
title: t("joblines.fields.act_price"),
dataIndex: "act_price",
@@ -95,14 +82,7 @@ export default function JobReconcilitionPartsTable({
</CurrencyFormatter>
),
},
{
title: t("joblines.fields.mod_lb_hrs"),
dataIndex: "mod_lb_hrs",
key: "mod_lb_hrs",
sorter: (a, b) => a.mod_lb_hrs - b.mod_lb_hrs,
sortOrder:
state.sortedInfo.columnKey === "mod_lb_hrs" && state.sortedInfo.order,
},
{
title: t("joblines.fields.status"),
dataIndex: "status",
@@ -118,32 +98,16 @@ export default function JobReconcilitionPartsTable({
};
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.act_price * 100 }).multiply(record.part_qty)
))
);
setTotal(total.toFormat());
};
return (
<div>
<Table
size='small'
title={() => (
<div>
</div>
)}
pagination={{ position: "top", defaultPageSize: 25 }}
size="small"
pagination={false}
columns={columns}
rowKey='id'
scroll={{ y: "40vh", x: true }}
rowKey="id"
dataSource={jobLineData}
onChange={handleTableChange}
rowSelection={{
@@ -151,7 +115,6 @@ export default function JobReconcilitionPartsTable({
selectedRowKeys: selectedLines,
}}
/>
<Statistic value={total} title='total' />
</div>
);
}