diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 7ca06523b..a63cff464 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -29001,6 +29001,27 @@ + + courtesy_car_impound + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + courtesy_car_terms false diff --git a/client/src/components/production-list-table/production-list-print.component.jsx b/client/src/components/production-list-table/production-list-print.component.jsx new file mode 100644 index 000000000..bd26d2313 --- /dev/null +++ b/client/src/components/production-list-table/production-list-print.component.jsx @@ -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 ( + + {Object.keys(ProdTemplates).map((key) => ( + { + setLoading(true); + await GenerateDocument( + { + name: ProdTemplates[key].key, + // variables: { id: contract.id }, + }, + {}, + "p" + ); + setLoading(false); + }} + > + {ProdTemplates[key].title} + + ))} + + } + > + + + ); +} diff --git a/client/src/components/production-list-table/production-list-table.component.jsx b/client/src/components/production-list-table/production-list-table.component.jsx index 5ea082771..59507c593 100644 --- a/client/src/components/production-list-table/production-list-table.component.jsx +++ b/client/src/components/production-list-table/production-list-table.component.jsx @@ -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) => ( + } /> diff --git a/client/src/pages/contract-detail/contract-detail.page.component.jsx b/client/src/pages/contract-detail/contract-detail.page.component.jsx index 6cf5ff1f2..3cf317236 100644 --- a/client/src/pages/contract-detail/contract-detail.page.component.jsx +++ b/client/src/pages/contract-detail/contract-detail.page.component.jsx @@ -110,6 +110,23 @@ export function ContractDetailPage({ "printcenter.courtesycarcontract.courtesy_car_terms" )} + + GenerateDocument( + { + name: TemplateList("courtesycarcontract") + .courtesy_car_impound.key, + variables: { id: contract.id }, + }, + {}, + "p" + ) + } + > + {t( + "printcenter.courtesycarcontract.courtesy_car_impound" + )} + } > diff --git a/client/src/pages/cdk/cdk.container.jsx b/client/src/pages/dms/dms.container.jsx similarity index 84% rename from client/src/pages/cdk/cdk.container.jsx rename to client/src/pages/dms/dms.container.jsx index 79d5277d0..342035ec5 100644 --- a/client/src/pages/cdk/cdk.container.jsx +++ b/client/src/pages/dms/dms.container.jsx @@ -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 ; + const dmsType = determineDmsType(bodyshop); + return (