Added invoice page titling BOD-63
This commit is contained in:
@@ -12992,6 +12992,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>invoices-list</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>jobs</name>
|
<name>jobs</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -13351,6 +13372,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>invoices-list</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>jobs</name>
|
<name>jobs</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -4,18 +4,14 @@ import React, { useEffect, useState } from "react";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { EmailSettings } from "../../emails/constants";
|
import { INSERT_NEW_INVOICE } from "../../graphql/invoices.queries";
|
||||||
import { UPDATE_JOB_LINE_STATUS } from "../../graphql/jobs-lines.queries";
|
import { UPDATE_JOB_LINE_STATUS } from "../../graphql/jobs-lines.queries";
|
||||||
import { INSERT_NEW_PARTS_ORDERS } from "../../graphql/parts-orders.queries";
|
import { INSERT_NEW_PARTS_ORDERS } from "../../graphql/parts-orders.queries";
|
||||||
import { QUERY_ALL_VENDORS_FOR_ORDER } from "../../graphql/vendors.queries";
|
import { QUERY_ALL_VENDORS_FOR_ORDER } from "../../graphql/vendors.queries";
|
||||||
import { INSERT_NEW_INVOICE } from "../../graphql/invoices.queries";
|
|
||||||
import { setEmailOptions } from "../../redux/email/email.actions";
|
import { setEmailOptions } from "../../redux/email/email.actions";
|
||||||
import { toggleModalVisible } from "../../redux/modals/modals.actions";
|
import { toggleModalVisible } from "../../redux/modals/modals.actions";
|
||||||
import { selectPartsOrder } from "../../redux/modals/modals.selectors";
|
import { selectPartsOrder } from "../../redux/modals/modals.selectors";
|
||||||
import {
|
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
|
||||||
selectBodyshop,
|
|
||||||
selectCurrentUser,
|
|
||||||
} from "../../redux/user/user.selectors";
|
|
||||||
import AlertComponent from "../alert/alert.component";
|
import AlertComponent from "../alert/alert.component";
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||||
import PartsOrderModalComponent from "./parts-order-modal.component";
|
import PartsOrderModalComponent from "./parts-order-modal.component";
|
||||||
@@ -56,8 +52,6 @@ export function PartsOrderModalContainer({
|
|||||||
const [insertInvoice] = useMutation(INSERT_NEW_INVOICE);
|
const [insertInvoice] = useMutation(INSERT_NEW_INVOICE);
|
||||||
|
|
||||||
const handleFinish = async (values) => {
|
const handleFinish = async (values) => {
|
||||||
//Check if this was actuall an inhouse invoice
|
|
||||||
|
|
||||||
insertPartOrder({
|
insertPartOrder({
|
||||||
variables: {
|
variables: {
|
||||||
po: [
|
po: [
|
||||||
@@ -109,7 +103,7 @@ export function PartsOrderModalContainer({
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const invoiceResult = insertInvoice({
|
insertInvoice({
|
||||||
variables: { invoice: invoiceToPost },
|
variables: { invoice: invoiceToPost },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -177,19 +171,17 @@ export function PartsOrderModalContainer({
|
|||||||
<Modal
|
<Modal
|
||||||
visible={visible}
|
visible={visible}
|
||||||
onCancel={() => toggleModalVisible()}
|
onCancel={() => toggleModalVisible()}
|
||||||
width="90%"
|
width='90%'
|
||||||
onOk={() => form.submit()}
|
onOk={() => form.submit()}
|
||||||
destroyOnClose
|
destroyOnClose
|
||||||
forceRender
|
forceRender>
|
||||||
>
|
{error ? <AlertComponent message={error.message} type='error' /> : null}
|
||||||
{error ? <AlertComponent message={error.message} type="error" /> : null}
|
|
||||||
<LoadingSpinner loading={loading}>
|
<LoadingSpinner loading={loading}>
|
||||||
<Form
|
<Form
|
||||||
form={form}
|
form={form}
|
||||||
autoComplete="no"
|
autoComplete='no'
|
||||||
onFinish={handleFinish}
|
onFinish={handleFinish}
|
||||||
initialValues={{ parts_order_lines: { data: initialValues } }}
|
initialValues={{ parts_order_lines: { data: initialValues } }}>
|
||||||
>
|
|
||||||
<PartsOrderModalComponent
|
<PartsOrderModalComponent
|
||||||
vendorList={(data && data.vendors) || []}
|
vendorList={(data && data.vendors) || []}
|
||||||
sendTypeState={sendTypeState}
|
sendTypeState={sendTypeState}
|
||||||
|
|||||||
@@ -1,10 +1,30 @@
|
|||||||
import { Col, Row } from "antd";
|
import { Col, Row } from "antd";
|
||||||
import React from "react";
|
import React, { useEffect } from "react";
|
||||||
import InvoicesByVendorList from "../../components/invoices-by-vendor-list/invoices-by-vendor-list.component";
|
import InvoicesByVendorList from "../../components/invoices-by-vendor-list/invoices-by-vendor-list.component";
|
||||||
import VendorsList from "../../components/invoices-vendors-list/invoices-vendors-list.component";
|
import VendorsList from "../../components/invoices-vendors-list/invoices-vendors-list.component";
|
||||||
import InvoiceDetailEditContainer from "../../components/invoice-detail-edit/invoice-detail-edit.container";
|
import InvoiceDetailEditContainer from "../../components/invoice-detail-edit/invoice-detail-edit.container";
|
||||||
|
import { setBreadcrumbs } from "../../redux/application/application.actions";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
|
||||||
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
//currentUser: selectCurrentUser
|
||||||
|
});
|
||||||
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
|
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||||
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
|
});
|
||||||
|
|
||||||
|
export function InvoicesPageContainer({ setBreadcrumbs }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
useEffect(() => {
|
||||||
|
document.title = t("titles.invoices-list");
|
||||||
|
setBreadcrumbs([
|
||||||
|
{ link: "/manage/invoices", label: t("titles.bc.invoices-list") },
|
||||||
|
]);
|
||||||
|
}, [t, setBreadcrumbs]);
|
||||||
|
|
||||||
export default function InvoicesPageContainer() {
|
|
||||||
return (
|
return (
|
||||||
<Row>
|
<Row>
|
||||||
<Col span={8}>
|
<Col span={8}>
|
||||||
@@ -21,3 +41,7 @@ export default function InvoicesPageContainer() {
|
|||||||
</Row>
|
</Row>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(InvoicesPageContainer);
|
||||||
|
|||||||
@@ -838,6 +838,7 @@
|
|||||||
"courtesycars": "Courtesy Cars",
|
"courtesycars": "Courtesy Cars",
|
||||||
"courtesycars-detail": "Courtesy Car {{number}}",
|
"courtesycars-detail": "Courtesy Car {{number}}",
|
||||||
"courtesycars-new": "New Courtesy Car",
|
"courtesycars-new": "New Courtesy Car",
|
||||||
|
"invoices-list": "Invoices",
|
||||||
"jobs": "Jobs",
|
"jobs": "Jobs",
|
||||||
"jobs-active": "Active Jobs",
|
"jobs-active": "Active Jobs",
|
||||||
"jobs-detail": "Job {{number}}",
|
"jobs-detail": "Job {{number}}",
|
||||||
@@ -856,6 +857,7 @@
|
|||||||
"courtesycars": "Courtesy Cars | $t(titles.app)",
|
"courtesycars": "Courtesy Cars | $t(titles.app)",
|
||||||
"courtesycars-create": "New Courtesy Car | $t(titles.app)",
|
"courtesycars-create": "New Courtesy Car | $t(titles.app)",
|
||||||
"courtesycars-detail": "Courtesy Car {{id}} | $t(titles.app)",
|
"courtesycars-detail": "Courtesy Car {{id}} | $t(titles.app)",
|
||||||
|
"invoices-list": "Invoices | $t(titles.app)",
|
||||||
"jobs": "Active Jobs | $t(titles.app)",
|
"jobs": "Active Jobs | $t(titles.app)",
|
||||||
"jobs-create": "Create a New Job | $t(titles.app)",
|
"jobs-create": "Create a New Job | $t(titles.app)",
|
||||||
"jobsavailable": "Available Jobs | $t(titles.app)",
|
"jobsavailable": "Available Jobs | $t(titles.app)",
|
||||||
|
|||||||
@@ -838,6 +838,7 @@
|
|||||||
"courtesycars": "",
|
"courtesycars": "",
|
||||||
"courtesycars-detail": "",
|
"courtesycars-detail": "",
|
||||||
"courtesycars-new": "",
|
"courtesycars-new": "",
|
||||||
|
"invoices-list": "",
|
||||||
"jobs": "",
|
"jobs": "",
|
||||||
"jobs-active": "",
|
"jobs-active": "",
|
||||||
"jobs-detail": "",
|
"jobs-detail": "",
|
||||||
@@ -856,6 +857,7 @@
|
|||||||
"courtesycars": "",
|
"courtesycars": "",
|
||||||
"courtesycars-create": "",
|
"courtesycars-create": "",
|
||||||
"courtesycars-detail": "",
|
"courtesycars-detail": "",
|
||||||
|
"invoices-list": "",
|
||||||
"jobs": "Todos los trabajos | $t(titles.app)",
|
"jobs": "Todos los trabajos | $t(titles.app)",
|
||||||
"jobs-create": "",
|
"jobs-create": "",
|
||||||
"jobsavailable": "Empleos disponibles | $t(titles.app)",
|
"jobsavailable": "Empleos disponibles | $t(titles.app)",
|
||||||
|
|||||||
@@ -838,6 +838,7 @@
|
|||||||
"courtesycars": "",
|
"courtesycars": "",
|
||||||
"courtesycars-detail": "",
|
"courtesycars-detail": "",
|
||||||
"courtesycars-new": "",
|
"courtesycars-new": "",
|
||||||
|
"invoices-list": "",
|
||||||
"jobs": "",
|
"jobs": "",
|
||||||
"jobs-active": "",
|
"jobs-active": "",
|
||||||
"jobs-detail": "",
|
"jobs-detail": "",
|
||||||
@@ -856,6 +857,7 @@
|
|||||||
"courtesycars": "",
|
"courtesycars": "",
|
||||||
"courtesycars-create": "",
|
"courtesycars-create": "",
|
||||||
"courtesycars-detail": "",
|
"courtesycars-detail": "",
|
||||||
|
"invoices-list": "",
|
||||||
"jobs": "Tous les emplois | $t(titles.app)",
|
"jobs": "Tous les emplois | $t(titles.app)",
|
||||||
"jobs-create": "",
|
"jobs-create": "",
|
||||||
"jobsavailable": "Emplois disponibles | $t(titles.app)",
|
"jobsavailable": "Emplois disponibles | $t(titles.app)",
|
||||||
|
|||||||
Reference in New Issue
Block a user