From 5ec5be0852c2b05b0243863c24d6e81bdd7db553 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 31 Aug 2022 13:04:36 -0700 Subject: [PATCH] IO-1981 Add Sublet Order. --- bodyshop_translations.babel | 105 ++++++++++++++++++ .../parts-order-modal.component.jsx | 12 ++ .../parts-order-modal.container.jsx | 92 ++++++++------- client/src/translations/en_us/common.json | 9 +- client/src/translations/es/common.json | 9 +- client/src/translations/fr/common.json | 9 +- client/src/utils/TemplateConstants.js | 14 +++ 7 files changed, 201 insertions(+), 49 deletions(-) diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 95f87f121..03e5170f6 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -34539,6 +34539,27 @@ + + order_type + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + orderhistory false @@ -34560,6 +34581,27 @@ + + parts_order + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + parts_orders false @@ -34665,6 +34707,27 @@ + + sublet_order + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + @@ -37474,6 +37537,27 @@ + + sublet_order + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + supplement_request false @@ -38090,6 +38174,27 @@ + + sublet_order + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + diff --git a/client/src/components/parts-order-modal/parts-order-modal.component.jsx b/client/src/components/parts-order-modal/parts-order-modal.component.jsx index 49c3350cd..8cdd40c8a 100644 --- a/client/src/components/parts-order-modal/parts-order-modal.component.jsx +++ b/client/src/components/parts-order-modal/parts-order-modal.component.jsx @@ -134,6 +134,18 @@ export function PartsOrderModalComponent({ )} + + + + {t("parts_orders.labels.parts_order")} + + {t("parts_orders.labels.sublet")} + + {t("parts_orders.labels.inthisorder")} diff --git a/client/src/components/parts-order-modal/parts-order-modal.container.jsx b/client/src/components/parts-order-modal/parts-order-modal.container.jsx index 643d39200..0f30012a3 100644 --- a/client/src/components/parts-order-modal/parts-order-modal.container.jsx +++ b/client/src/components/parts-order-modal/parts-order-modal.container.jsx @@ -94,6 +94,7 @@ export function PartsOrderModalContainer({ const [updateJob] = useMutation(UPDATE_JOB); const handleFinish = async ({ + order_type, removefrompartsqueue, is_quote, ...values @@ -102,47 +103,46 @@ export function PartsOrderModalContainer({ setSaving(true); let insertResult; - insertResult = await insertPartOrder({ - variables: { - po: [ - { - ...values, - order_date: moment().format("YYYY-MM-DD"), - orderedby: currentUser.email, - jobid: jobId, - user_email: currentUser.email, - return: isReturn, - status: is_quote - ? bodyshop.md_order_statuses.default_quote || "Quote" - : bodyshop.md_order_statuses.default_ordered || "Ordered*", - }, - ], - }, - refetchQueries: ["QUERY_PARTS_BILLS_BY_JOBID"], + insertResult = await insertPartOrder({ + variables: { + po: [ + { + ...values, + order_date: moment().format("YYYY-MM-DD"), + orderedby: currentUser.email, + jobid: jobId, + user_email: currentUser.email, + return: isReturn, + status: is_quote + ? bodyshop.md_order_statuses.default_quote || "Quote" + : bodyshop.md_order_statuses.default_ordered || "Ordered*", + }, + ], + }, + refetchQueries: ["QUERY_PARTS_BILLS_BY_JOBID"], + }); + if (!!insertResult.errors) { + notification["error"]({ + message: t("parts_orders.errors.creating"), + description: JSON.stringify(insertResult.errors), }); - if (!!insertResult.errors) { - notification["error"]({ - message: t("parts_orders.errors.creating"), - description: JSON.stringify(insertResult.errors), - }); - return; - } - notification["success"]({ - message: values.isReturn - ? t("parts_orders.successes.return_created") - : t("parts_orders.successes.created"), - }); - insertAuditTrail({ - jobid: jobId, - operation: isReturn - ? AuditTrailMapping.jobspartsreturn( - insertResult.data.insert_parts_orders.returning[0].order_number - ) - : AuditTrailMapping.jobspartsorder( - insertResult.data.insert_parts_orders.returning[0].order_number - ), - }); - + return; + } + notification["success"]({ + message: values.isReturn + ? t("parts_orders.successes.return_created") + : t("parts_orders.successes.created"), + }); + insertAuditTrail({ + jobid: jobId, + operation: isReturn + ? AuditTrailMapping.jobspartsreturn( + insertResult.data.insert_parts_orders.returning[0].order_number + ) + : AuditTrailMapping.jobspartsorder( + insertResult.data.insert_parts_orders.returning[0].order_number + ), + }); const jobLinesResult = await updateJobLines({ variables: { @@ -228,7 +228,9 @@ export function PartsOrderModalContainer({ { name: isReturn ? Templates.parts_return_slip.key - : Templates.parts_order.key, + : order_type === "parts_order" + ? Templates.parts_order.key + : Templates.sublet_order.key, variables: { id: insertResult.data.insert_parts_orders.returning[0].id, }, @@ -238,7 +240,9 @@ export function PartsOrderModalContainer({ replyTo: bodyshop.email, subject: isReturn ? Templates.parts_return_slip.subject - : Templates.parts_order.subject, + : order_type === "parts_order" + ? Templates.parts_order.subject + : Templates.sublet_order.subject, }, "e", jobId @@ -248,7 +252,9 @@ export function PartsOrderModalContainer({ { name: isReturn ? Templates.parts_return_slip.key - : Templates.parts_order.key, + : order_type === "parts_order" + ? Templates.parts_order.key + : Templates.sublet_order.key, variables: { id: insertResult.data.insert_parts_orders.returning[0].id, }, diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index dbb32683d..e5f80d58d 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -2042,12 +2042,15 @@ "newpartsorder": "New Parts Order", "notyetordered": "This part has not yet been ordered.", "oec": "Order via OEC", + "order_type": "Order Type", "orderhistory": "Order History", + "parts_order": "Parts Order", "parts_orders": "Parts Orders", "print": "Show Printed Form", "receive": "Receive Parts Order", "removefrompartsqueue": "Remove from Parts Queue?", - "returnpartsorder": "Return Parts Order" + "returnpartsorder": "Return Parts Order", + "sublet_order": "Sublet Order" }, "successes": { "created": "Parts order created successfully. ", @@ -2217,6 +2220,7 @@ "sgi_certificate_of_repairs": "SGI - Certificate of Repairs", "sgi_windshield_auth": "SGI - Windshield Authorization", "stolen_recovery_checklist": "Stolen Recovery Checklist", + "sublet_order": "Sublet Order", "supplement_request": "Supplement Request", "thank_you_ro": "Thank You Letter", "thirdpartypayer": "Third Party Payer", @@ -2255,7 +2259,8 @@ }, "subjects": { "jobs": { - "parts_order": "Parts Order PO: {{ro_number}} - {{name}}" + "parts_order": "Parts Order PO: {{ro_number}} - {{name}}", + "sublet_order": "Sublet Order PO: {{ro_number}} - {{name}}" } }, "vendors": { diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index d1da1e8fc..5e509315e 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -2042,12 +2042,15 @@ "newpartsorder": "", "notyetordered": "", "oec": "", + "order_type": "", "orderhistory": "Historial de pedidos", + "parts_order": "", "parts_orders": "", "print": "Mostrar formulario impreso", "receive": "", "removefrompartsqueue": "", - "returnpartsorder": "" + "returnpartsorder": "", + "sublet_order": "" }, "successes": { "created": "Pedido de piezas creado con éxito.", @@ -2217,6 +2220,7 @@ "sgi_certificate_of_repairs": "", "sgi_windshield_auth": "", "stolen_recovery_checklist": "", + "sublet_order": "", "supplement_request": "", "thank_you_ro": "", "thirdpartypayer": "", @@ -2255,7 +2259,8 @@ }, "subjects": { "jobs": { - "parts_order": "" + "parts_order": "", + "sublet_order": "" } }, "vendors": { diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 8535cca1b..11d7a18be 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -2042,12 +2042,15 @@ "newpartsorder": "", "notyetordered": "", "oec": "", + "order_type": "", "orderhistory": "Historique des commandes", + "parts_order": "", "parts_orders": "", "print": "Afficher le formulaire imprimé", "receive": "", "removefrompartsqueue": "", - "returnpartsorder": "" + "returnpartsorder": "", + "sublet_order": "" }, "successes": { "created": "Commande de pièces créée avec succès.", @@ -2217,6 +2220,7 @@ "sgi_certificate_of_repairs": "", "sgi_windshield_auth": "", "stolen_recovery_checklist": "", + "sublet_order": "", "supplement_request": "", "thank_you_ro": "", "thirdpartypayer": "", @@ -2255,7 +2259,8 @@ }, "subjects": { "jobs": { - "parts_order": "" + "parts_order": "", + "sublet_order": "" } }, "vendors": { diff --git a/client/src/utils/TemplateConstants.js b/client/src/utils/TemplateConstants.js index 2b3f5dc76..69da361ef 100644 --- a/client/src/utils/TemplateConstants.js +++ b/client/src/utils/TemplateConstants.js @@ -551,6 +551,20 @@ export const TemplateList = (type, context) => { }), disabled: false, }, + sublet_order: { + title: i18n.t("printcenter.jobs.sublet_order"), + description: "Parts Order", + key: "sublet_order", + subject: i18n.t("printcenter.subjects.jobs.sublet_order", { + ro_number: context && context.job && context.job.ro_number, + name: ( + (context && context.job && context.job.ownr_ln) || + (context && context.job && context.job.ownr_co_nm) || + "" + ).trim(), + }), + disabled: false, + }, parts_return_slip: { title: i18n.t("printcenter.jobs.parts_return_slip"), subject: i18n.t("printcenter.jobs.parts_return_slip"),