diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 6409919e0..bf1239ac9 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -5446,6 +5446,27 @@ + + return + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + @@ -12218,6 +12239,27 @@ + + newpartsorder + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + orderhistory false @@ -12260,6 +12302,27 @@ + + returnpartsorder + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + 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 (
+ @@ -73,11 +70,10 @@ export default function ShopInfoOrderStatusComponent({ form }) { rules={[ { required: true, - message: t("general.validation.required") - } + message: t("general.validation.required"), + }, ]} - name={["md_order_statuses", "default_bo"]} - > + name={["md_order_statuses", "default_bo"]}> {options.map((item, idx) => ( {item} @@ -105,11 +100,10 @@ export default function ShopInfoOrderStatusComponent({ form }) { rules={[ { required: true, - message: t("general.validation.required") - } + message: t("general.validation.required"), + }, ]} - name={["md_order_statuses", "default_canceled"]} - > + name={["md_order_statuses", "default_canceled"]}> + {options.map((item, idx) => ( + {item} + ))} + + +