IO-233 WS Updates and templat eadditions

This commit is contained in:
Patrick Fic
2021-06-25 07:42:49 -07:00
parent b49555e111
commit 2172cc2d04
13 changed files with 203 additions and 89 deletions

View File

@@ -29001,6 +29001,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>courtesy_car_impound</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>courtesy_car_terms</name> <name>courtesy_car_terms</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -0,0 +1,42 @@
import { Button, Dropdown, Menu } from "antd";
import React, { useState } from "react";
import { TemplateList } from "../../utils/TemplateConstants";
import { useTranslation } from "react-i18next";
import { GenerateDocument } from "../../utils/RenderTemplate";
const ProdTemplates = TemplateList("production");
export default function ProductionListPrint() {
const { t } = useTranslation();
const [loading, setLoading] = useState(false);
return (
<Dropdown
trigger="click"
overlay={
<Menu>
{Object.keys(ProdTemplates).map((key) => (
<Menu.Item
key={key}
onClick={async () => {
setLoading(true);
await GenerateDocument(
{
name: ProdTemplates[key].key,
// variables: { id: contract.id },
},
{},
"p"
);
setLoading(false);
}}
>
{ProdTemplates[key].title}
</Menu.Item>
))}
</Menu>
}
>
<Button loading={loading}>{t("general.labels.print")}</Button>
</Dropdown>
);
}

View File

@@ -13,6 +13,7 @@ import ProductionListColumnsAdd from "../production-list-columns/production-list
import ProductionListColumns from "../production-list-columns/production-list-columns.data"; import ProductionListColumns from "../production-list-columns/production-list-columns.data";
import ProductionListDetail from "../production-list-detail/production-list-detail.component"; import ProductionListDetail from "../production-list-detail/production-list-detail.component";
import ProductionListSaveConfigButton from "../production-list-save-config-button/production-list-save-config-button.component"; import ProductionListSaveConfigButton from "../production-list-save-config-button/production-list-save-config-button.component";
import ProductionListPrint from "./production-list-print.component";
import ProductionListTableViewSelect from "./production-list-table-view-select.component"; import ProductionListTableViewSelect from "./production-list-table-view-select.component";
import ResizeableTitle from "./production-list-table.resizeable.component"; import ResizeableTitle from "./production-list-table.resizeable.component";
@@ -88,14 +89,16 @@ export function ProductionListTable({
setColumns(columns.filter((i) => i.key !== key)); setColumns(columns.filter((i) => i.key !== key));
}; };
const handleResize = (index) => (e, { size }) => { const handleResize =
const nextColumns = [...columns]; (index) =>
nextColumns[index] = { (e, { size }) => {
...nextColumns[index], const nextColumns = [...columns];
width: size.width, nextColumns[index] = {
...nextColumns[index],
width: size.width,
};
setColumns(nextColumns);
}; };
setColumns(nextColumns);
};
const headerItem = (col) => ( const headerItem = (col) => (
<Dropdown <Dropdown
@@ -178,6 +181,7 @@ export function ProductionListTable({
placeholder={t("general.labels.search")} placeholder={t("general.labels.search")}
value={searchText} value={searchText}
/> />
<ProductionListPrint />
</Space> </Space>
} }
/> />

View File

@@ -110,6 +110,23 @@ export function ContractDetailPage({
"printcenter.courtesycarcontract.courtesy_car_terms" "printcenter.courtesycarcontract.courtesy_car_terms"
)} )}
</Menu.Item> </Menu.Item>
<Menu.Item
onClick={() =>
GenerateDocument(
{
name: TemplateList("courtesycarcontract")
.courtesy_car_impound.key,
variables: { id: contract.id },
},
{},
"p"
)
}
>
{t(
"printcenter.courtesycarcontract.courtesy_car_impound"
)}
</Menu.Item>
</Menu> </Menu>
} }
> >

View File

@@ -21,7 +21,7 @@ const mapDispatchToProps = (dispatch) => ({
setSelectedHeader: (key) => dispatch(setSelectedHeader(key)), setSelectedHeader: (key) => dispatch(setSelectedHeader(key)),
}); });
export default connect(mapStateToProps, mapDispatchToProps)(CdkContainer); export default connect(mapStateToProps, mapDispatchToProps)(DmsContainer);
export const socket = SocketIO( export const socket = SocketIO(
process.env.NODE_ENV === "production" process.env.NODE_ENV === "production"
@@ -29,7 +29,6 @@ export const socket = SocketIO(
: window.location.origin, : window.location.origin,
{ {
path: "/ws", path: "/ws",
// transports: ["websocket"],
auth: async (callback) => { auth: async (callback) => {
const token = auth.currentUser && (await auth.currentUser.getIdToken()); const token = auth.currentUser && (await auth.currentUser.getIdToken());
callback({ token }); callback({ token });
@@ -37,16 +36,17 @@ export const socket = SocketIO(
} }
); );
export function CdkContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) { export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
const { t } = useTranslation(); const { t } = useTranslation();
const [logs, setLogs] = useState([]); const [logs, setLogs] = useState([]);
useEffect(() => { useEffect(() => {
document.title = t("titles.cdk"); document.title = t("titles.dms");
setSelectedHeader("cdk"); setSelectedHeader("dms");
setBreadcrumbs([ setBreadcrumbs([
{ {
link: "/manage/cdk", link: "/manage/dms",
label: t("titles.bc.cdk"), label: t("titles.bc.dms"),
}, },
]); ]);
}, [t, setBreadcrumbs, setSelectedHeader]); }, [t, setBreadcrumbs, setSelectedHeader]);
@@ -63,7 +63,6 @@ export function CdkContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
}); });
socket.connect(); socket.connect();
socket.emit("set-log-level", "TRACE"); socket.emit("set-log-level", "TRACE");
return () => { return () => {
@@ -74,11 +73,16 @@ export function CdkContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
if (!bodyshop.cdk_dealerid) return <Result status="404" />; if (!bodyshop.cdk_dealerid) return <Result status="404" />;
const dmsType = determineDmsType(bodyshop);
return ( return (
<div> <div>
<Button <Button
onClick={() => { onClick={() => {
socket.emit("export-job", "752a4f5f-22ab-414b-b182-98d4e62227ef"); socket.emit(
`${dmsType}-export-job`,
"752a4f5f-22ab-414b-b182-98d4e62227ef"
);
}} }}
> >
Export Export
@@ -126,3 +130,10 @@ function LogLevelHierarchy(level) {
return 0; return 0;
} }
} }
const determineDmsType = (bodyshop) => {
if (bodyshop.cdk_dealerid) return "cdk";
else {
return "pbs";
}
};

View File

@@ -159,7 +159,7 @@ const EmailTest = lazy(() =>
import("../../components/email-test/email-test-component") import("../../components/email-test/email-test-component")
); );
const Dashboard = lazy(() => import("../dashboard/dashboard.container")); const Dashboard = lazy(() => import("../dashboard/dashboard.container"));
const Cdk = lazy(() => import("../cdk/cdk.container")); const Dms = lazy(() => import("../dms/dms.container"));
const { Content, Footer } = Layout; const { Content, Footer } = Layout;
@@ -368,7 +368,7 @@ export function Manage({ match, conflict, bodyshop }) {
<Route exact path={`${match.path}/help`} component={Help} /> <Route exact path={`${match.path}/help`} component={Help} />
<Route exact path={`${match.path}/emailtest`} component={EmailTest} /> <Route exact path={`${match.path}/emailtest`} component={EmailTest} />
<Route exact path={`${match.path}/dashboard`} component={Dashboard} /> <Route exact path={`${match.path}/dashboard`} component={Dashboard} />
<Route exact path={`${match.path}/cdk`} component={Cdk} /> <Route exact path={`${match.path}/dms`} component={Dms} />
</Suspense> </Suspense>
); );

View File

@@ -1736,6 +1736,7 @@
}, },
"courtesycarcontract": { "courtesycarcontract": {
"courtesy_car_contract": "Courtesy Car Contract", "courtesy_car_contract": "Courtesy Car Contract",
"courtesy_car_impound": "Impound Charges",
"courtesy_car_terms": "Courtesy Car Terms" "courtesy_car_terms": "Courtesy Car Terms"
}, },
"errors": { "errors": {

View File

@@ -1736,6 +1736,7 @@
}, },
"courtesycarcontract": { "courtesycarcontract": {
"courtesy_car_contract": "", "courtesy_car_contract": "",
"courtesy_car_impound": "",
"courtesy_car_terms": "" "courtesy_car_terms": ""
}, },
"errors": { "errors": {

View File

@@ -1736,6 +1736,7 @@
}, },
"courtesycarcontract": { "courtesycarcontract": {
"courtesy_car_contract": "", "courtesy_car_contract": "",
"courtesy_car_impound": "",
"courtesy_car_terms": "" "courtesy_car_terms": ""
}, },
"errors": { "errors": {

View File

@@ -326,7 +326,7 @@ export const TemplateList = (type, context) => {
key: "parts_label_single", key: "parts_label_single",
subject: i18n.t("printcenter.jobs.parts_label_single"), subject: i18n.t("printcenter.jobs.parts_label_single"),
disabled: false, disabled: false,
group: "post", group: "ro",
}, },
} }
: {}), : {}),
@@ -1061,6 +1061,88 @@ export const TemplateList = (type, context) => {
field: i18n.t("jobs.fields.date_open"), field: i18n.t("jobs.fields.date_open"),
}, },
}, },
}
: {}),
...(!type || type === "courtesycarcontract"
? {
courtesy_car_contract: {
title: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_contract"
),
description: "Est Detail",
subject: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_contract"
),
key: "courtesy_car_contract",
disabled: false,
},
courtesy_car_terms: {
title: i18n.t("printcenter.courtesycarcontract.courtesy_car_terms"),
description: "Est Detail",
subject: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_terms"
),
key: "courtesy_car_terms",
disabled: false,
},
courtesy_car_impound: {
title: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_impound"
),
description: "Est Detail",
subject: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_impound"
),
key: "courtesy_car_impound",
disabled: false,
},
}
: {}),
...(!type || type === "bill"
? {
inhouse_invoice: {
title: i18n.t("printcenter.bills.inhouse_invoice"),
description: "Est Detail",
subject: i18n.t("printcenter.bills.inhouse_invoice"),
key: "inhouse_invoice",
disabled: false,
},
}
: {}),
...(!type || type === "timeticket"
? {
// timetickets: {
// title: i18n.t("printcenter.timetickets.timetickets"),
// description: "Est Detail",
// subject: `${i18n.t("printcenter.timetickets.timetickets")} - ${
// context && context.job && context.job.ro_number
// }`,
// key: "timetickets",
// disabled: false,
// },
}
: {}),
...(!type || type === "vendor"
? {
purchases_by_vendor_detailed: {
title: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"),
description: "Est Detail",
subject: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"),
key: "purchases_by_vendor_detailed",
disabled: false,
},
purchases_by_vendor_summary: {
title: i18n.t("printcenter.vendors.purchases_by_vendor_summary"),
description: "Est Detail",
subject: i18n.t("printcenter.vendors.purchases_by_vendor_summary"),
key: "purchases_by_vendor_summary",
disabled: false,
},
}
: {}),
...(!type || type === "production"
? {
production_by_last_name: { production_by_last_name: {
title: i18n.t("reportcenter.templates.production_by_last_name"), title: i18n.t("reportcenter.templates.production_by_last_name"),
description: "", description: "",
@@ -1113,72 +1195,6 @@ export const TemplateList = (type, context) => {
}, },
} }
: {}), : {}),
...(!type || type === "courtesycarcontract"
? {
courtesy_car_contract: {
title: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_contract"
),
description: "Est Detail",
subject: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_contract"
),
key: "courtesy_car_contract",
disabled: false,
},
courtesy_car_terms: {
title: i18n.t("printcenter.courtesycarcontract.courtesy_car_terms"),
description: "Est Detail",
subject: i18n.t(
"printcenter.courtesycarcontract.courtesy_car_terms"
),
key: "courtesy_car_terms",
disabled: false,
},
}
: {}),
...(!type || type === "bill"
? {
inhouse_invoice: {
title: i18n.t("printcenter.bills.inhouse_invoice"),
description: "Est Detail",
subject: i18n.t("printcenter.bills.inhouse_invoice"),
key: "inhouse_invoice",
disabled: false,
},
}
: {}),
...(!type || type === "timeticket"
? {
// timetickets: {
// title: i18n.t("printcenter.timetickets.timetickets"),
// description: "Est Detail",
// subject: `${i18n.t("printcenter.timetickets.timetickets")} - ${
// context && context.job && context.job.ro_number
// }`,
// key: "timetickets",
// disabled: false,
// },
}
: {}),
...(!type || type === "vendor"
? {
purchases_by_vendor_detailed: {
title: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"),
description: "Est Detail",
subject: i18n.t("printcenter.vendors.purchases_by_vendor_detailed"),
key: "purchases_by_vendor_detailed",
disabled: false,
},
purchases_by_vendor_summary: {
title: i18n.t("printcenter.vendors.purchases_by_vendor_summary"),
description: "Est Detail",
subject: i18n.t("printcenter.vendors.purchases_by_vendor_summary"),
key: "purchases_by_vendor_summary",
disabled: false,
},
}
: {}),
...(!type || type === "special" ...(!type || type === "special"
? { ? {
ca_bc_etf_table: { ca_bc_etf_table: {

View File

@@ -168,4 +168,4 @@ server.listen(port, (error) => {
console.log(`[${process.env.NODE_ENV}] Server running on port ${port}`); console.log(`[${process.env.NODE_ENV}] Server running on port ${port}`);
}); });
exports.io = io; exports.io = io;
require("./server/cdk/cdk"); require("./server/web-sockets/web-socket");

View File

@@ -8,7 +8,7 @@ require("dotenv").config({
const GraphQLClient = require("graphql-request").GraphQLClient; const GraphQLClient = require("graphql-request").GraphQLClient;
const soap = require("soap"); const soap = require("soap");
const queries = require("../graphql-client/queries"); const queries = require("../graphql-client/queries");
const CdkBase = require("./cdk"); const CdkBase = require("../web-sockets/web-socket");
const CdkWsdl = require("./cdk-wsdl").default; const CdkWsdl = require("./cdk-wsdl").default;
const IMEX_CDK_USER = process.env.IMEX_CDK_USER, const IMEX_CDK_USER = process.env.IMEX_CDK_USER,

View File

@@ -9,7 +9,7 @@ require("dotenv").config({
const { io } = require("../../server"); const { io } = require("../../server");
const { admin } = require("../firebase/firebase-handler"); const { admin } = require("../firebase/firebase-handler");
const CdkJobExport = require("./cdk-job-export").default; const CdkJobExport = require("../cdk/cdk-job-export").default;
const { isArray } = require("lodash"); const { isArray } = require("lodash");
io.use(function (socket, next) { io.use(function (socket, next) {
@@ -43,7 +43,7 @@ io.on("connection", (socket) => {
createLogEvent(socket, "DEBUG", `Updated log level to ${level}`); createLogEvent(socket, "DEBUG", `Updated log level to ${level}`);
}); });
socket.on("export-job", (jobid) => { socket.on("cdk-export-job", (jobid) => {
CdkJobExport(socket, jobid); CdkJobExport(socket, jobid);
}); });