Added invoice page titling BOD-63

This commit is contained in:
Patrick Fic
2020-05-11 14:36:37 -07:00
parent fc4e07bb32
commit 630e7df3fd
6 changed files with 82 additions and 18 deletions

View File

@@ -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>

View File

@@ -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}

View File

@@ -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);

View File

@@ -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)",

View File

@@ -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)",

View File

@@ -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)",