diff --git a/client/src/components/invoices-list-table/invoices-list-table.component.jsx b/client/src/components/invoices-list-table/invoices-list-table.component.jsx
index 89b638bff..83b349288 100644
--- a/client/src/components/invoices-list-table/invoices-list-table.component.jsx
+++ b/client/src/components/invoices-list-table/invoices-list-table.component.jsx
@@ -1,21 +1,29 @@
-import { Button, Descriptions, Table, Checkbox } from "antd";
+import { SyncOutlined } from "@ant-design/icons";
+import { Button, Checkbox, Descriptions, Table } from "antd";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
+import { connect } from "react-redux";
import { Link } from "react-router-dom";
+import { setModalContext } from "../../redux/modals/modals.actions";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import { DateFormatter } from "../../utils/DateFormatter";
import { alphaSort } from "../../utils/sorters";
-import { SyncOutlined } from "@ant-design/icons";
-export default function InvoicesListTableComponent({
+const mapDispatchToProps = (dispatch) => ({
+ setPartsOrderContext: (context) =>
+ dispatch(setModalContext({ context: context, modal: "partsOrder" })),
+});
+
+export function InvoicesListTableComponent({
+ job,
loading,
invoices,
selectedInvoice,
handleOnRowClick,
refetch,
+ setPartsOrderContext,
}) {
const { t } = useTranslation();
-
const [state, setState] = useState({
sortedInfo: {},
});
@@ -61,15 +69,52 @@ export default function InvoicesListTableComponent({
{record.total}
),
},
+ {
+ title: t("invoices.fields.is_credit_memo"),
+ dataIndex: "is_credit_memo",
+ key: "is_credit_memo",
+ sorter: (a, b) => a.is_credit_memo - b.is_credit_memo,
+ sortOrder:
+ state.sortedInfo.columnKey === "is_credit_memo" &&
+ state.sortedInfo.order,
+ render: (text, record) => ,
+ },
{
title: t("general.labels.actions"),
dataIndex: "actions",
key: "actions",
render: (text, record) => (
-
-
-
+
+
+
+
+
+
),
},
];
@@ -208,7 +253,7 @@ export default function InvoicesListTableComponent({
)}
expandedRowRender={rowExpander}
pagination={{ position: "top", defaultPageSize: 25 }}
- columns={columns.map((item) => ({ ...item }))}
+ columns={columns}
rowKey='id'
dataSource={invoices}
onChange={handleTableChange}
@@ -239,3 +284,4 @@ export default function InvoicesListTableComponent({
/>
);
}
+export default connect(null, mapDispatchToProps)(InvoicesListTableComponent);
diff --git a/client/src/components/job-reconciliation-invoices-table/job-reconciliation-invoices-table.component.jsx b/client/src/components/job-reconciliation-invoices-table/job-reconciliation-invoices-table.component.jsx
index 04c644ac3..21b4085de 100644
--- a/client/src/components/job-reconciliation-invoices-table/job-reconciliation-invoices-table.component.jsx
+++ b/client/src/components/job-reconciliation-invoices-table/job-reconciliation-invoices-table.component.jsx
@@ -1,9 +1,9 @@
-import { Button, Table, Statistic, Checkbox } from "antd";
+import { Checkbox, Statistic, Table } from "antd";
+import Dinero from "dinero.js";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import { alphaSort } from "../../utils/sorters";
-import Dinero from "dinero.js";
export default function JobReconciliationInvoiceTable({
invoiceLineState,
diff --git a/client/src/components/job-reconciliation-modal/job-reconciliation.modal.container.jsx b/client/src/components/job-reconciliation-modal/job-reconciliation.modal.container.jsx
index 9048da9c4..10227e72d 100644
--- a/client/src/components/job-reconciliation-modal/job-reconciliation.modal.container.jsx
+++ b/client/src/components/job-reconciliation-modal/job-reconciliation.modal.container.jsx
@@ -5,10 +5,7 @@ import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { toggleModalVisible } from "../../redux/modals/modals.actions";
import { selectReconciliation } from "../../redux/modals/modals.selectors";
-import {
- selectBodyshop,
- selectCurrentUser,
-} from "../../redux/user/user.selectors";
+import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
import JobReconciliationModalComponent from "./job-reconciliation-modal.component";
const mapStateToProps = createStructuredSelector({
@@ -27,7 +24,7 @@ function InvoiceEnterModalContainer({
currentUser,
}) {
const { t } = useTranslation();
- const { actions, context, visible } = reconciliationModal;
+ const { context, visible } = reconciliationModal;
const { job, invoices } = context;
const handleCancel = () => {
diff --git a/client/src/components/job-reconciliation-parts-table/job-reconciliation-parts-table.component.jsx b/client/src/components/job-reconciliation-parts-table/job-reconciliation-parts-table.component.jsx
index eb88978b8..a37862440 100644
--- a/client/src/components/job-reconciliation-parts-table/job-reconciliation-parts-table.component.jsx
+++ b/client/src/components/job-reconciliation-parts-table/job-reconciliation-parts-table.component.jsx
@@ -1,9 +1,9 @@
-import { Button, Table, Statistic } from "antd";
+import { Statistic, Table } from "antd";
+import Dinero from "dinero.js";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import { alphaSort } from "../../utils/sorters";
-import Dinero from "dinero.js";
export default function JobReconcilitionPartsTable({
jobLineState,
diff --git a/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx b/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx
index cfdfb615b..6f858b65c 100644
--- a/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx
+++ b/client/src/components/jobs-detail-pli/jobs-detail-pli.component.jsx
@@ -6,6 +6,8 @@ import AlertComponent from "../alert/alert.component";
import InvoicesListTableComponent from "../invoices-list-table/invoices-list-table.component";
import JobInvoicesTotalsComponent from "../job-invoices-total/job-invoices-total.component";
import { useTranslation } from "react-i18next";
+import PartsOrderModalContainer from "../parts-order-modal/parts-order-modal.container";
+
const mapDispatchToProps = (dispatch) => ({
setInvoiceEnterContext: (context) =>
dispatch(setModalContext({ context: context, modal: "invoiceEnter" })),
@@ -24,6 +26,7 @@ export function JobsDetailPliComponent({
const { t } = useTranslation();
return (
+