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>
</translations>
</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>
<name>courtesy_car_terms</name>
<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 ProductionListDetail from "../production-list-detail/production-list-detail.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 ResizeableTitle from "./production-list-table.resizeable.component";
@@ -88,14 +89,16 @@ export function ProductionListTable({
setColumns(columns.filter((i) => i.key !== key));
};
const handleResize = (index) => (e, { size }) => {
const nextColumns = [...columns];
nextColumns[index] = {
...nextColumns[index],
width: size.width,
const handleResize =
(index) =>
(e, { size }) => {
const nextColumns = [...columns];
nextColumns[index] = {
...nextColumns[index],
width: size.width,
};
setColumns(nextColumns);
};
setColumns(nextColumns);
};
const headerItem = (col) => (
<Dropdown
@@ -178,6 +181,7 @@ export function ProductionListTable({
placeholder={t("general.labels.search")}
value={searchText}
/>
<ProductionListPrint />
</Space>
}
/>

View File

@@ -110,6 +110,23 @@ export function ContractDetailPage({
"printcenter.courtesycarcontract.courtesy_car_terms"
)}
</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>
}
>

View File

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

View File

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

View File

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

View File

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

View File

@@ -326,7 +326,7 @@ export const TemplateList = (type, context) => {
key: "parts_label_single",
subject: i18n.t("printcenter.jobs.parts_label_single"),
disabled: false,
group: "post",
group: "ro",
},
}
: {}),
@@ -1061,6 +1061,88 @@ export const TemplateList = (type, context) => {
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: {
title: i18n.t("reportcenter.templates.production_by_last_name"),
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"
? {
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}`);
});
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 soap = require("soap");
const queries = require("../graphql-client/queries");
const CdkBase = require("./cdk");
const CdkBase = require("../web-sockets/web-socket");
const CdkWsdl = require("./cdk-wsdl").default;
const IMEX_CDK_USER = process.env.IMEX_CDK_USER,

View File

@@ -9,7 +9,7 @@ require("dotenv").config({
const { io } = require("../../server");
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");
io.use(function (socket, next) {
@@ -43,7 +43,7 @@ io.on("connection", (socket) => {
createLogEvent(socket, "DEBUG", `Updated log level to ${level}`);
});
socket.on("export-job", (jobid) => {
socket.on("cdk-export-job", (jobid) => {
CdkJobExport(socket, jobid);
});