From 3b5b5cbf7ce6147ac88d0af0fe47395c5006d015 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Fri, 17 Apr 2026 02:48:03 -0400 Subject: [PATCH] feat(reports): centralised Job Traveller / Shop Router MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One PDF that follows a job through the shop — prints from either the Sale Order or the Manufacturing Order. Matches existing design language (fp_landscape_styles, .fp-header-primary banners, bordered tables, .sig-line for sign-off, .highlight-box for callouts). Sections per traveller: 1. Title bar with REWORK / RUSH ORDER badges 2. Job header — customer, PO #, part #, coating, recipe, facility, qty, dates, current parts location 3. Receiving summary — received qty, state, damage flag 4. Process Routing table — one row per WO with step #, operation, work centre, bath, tank, target thickness, dwell, expected duration, + sign-off columns (operator, date/time, initials, qty pass/reject) 5. Bath chemistry targets snapshot per bath used 6. Quality holds — red callout only when present 7. Certificates issued + Delivery info (side-by-side) 8. Rework reason block (only on rework MOs) 9. Ruled notes / exceptions area 10. Final supervisor + QA sign-off Four ir.actions.report entries registered: - Job Traveller (Landscape) on mrp.production [default print] - Job Traveller (Portrait) on mrp.production - Job Traveller (Landscape) on sale.order [iterates MOs] - Job Traveller (Portrait) on sale.order Regression-tested all 15 existing reports (SO, WO, MO margin, invoice, BoL, CoC EN, receipt) — every one still renders. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../fusion_plating_reports/__manifest__.py | 1 + .../report/report_actions.xml | 50 ++ .../report/report_fp_job_traveller.xml | 539 ++++++++++++++++++ 3 files changed, 590 insertions(+) create mode 100644 fusion_plating/fusion_plating_reports/report/report_fp_job_traveller.xml diff --git a/fusion_plating/fusion_plating_reports/__manifest__.py b/fusion_plating/fusion_plating_reports/__manifest__.py index 3925d0e6..b76343dc 100644 --- a/fusion_plating/fusion_plating_reports/__manifest__.py +++ b/fusion_plating/fusion_plating_reports/__manifest__.py @@ -40,6 +40,7 @@ # Quote-to-cash reports (portrait + landscape) 'report/report_fp_sale.xml', 'report/report_fp_work_order.xml', + 'report/report_fp_job_traveller.xml', 'report/report_fp_packing_slip.xml', 'report/report_fp_bol.xml', 'report/report_fp_invoice.xml', diff --git a/fusion_plating/fusion_plating_reports/report/report_actions.xml b/fusion_plating/fusion_plating_reports/report/report_actions.xml index 87cb12ca..0e8d715e 100644 --- a/fusion_plating/fusion_plating_reports/report/report_actions.xml +++ b/fusion_plating/fusion_plating_reports/report/report_actions.xml @@ -418,4 +418,54 @@ report + + + + + + + Job Traveller (Landscape) + mrp.production + qweb-pdf + fusion_plating_reports.report_fp_job_traveller_mo_landscape + fusion_plating_reports.report_fp_job_traveller_mo_landscape + 'Traveller - %s' % object.name + + report + + + + + Job Traveller (Portrait) + mrp.production + qweb-pdf + fusion_plating_reports.report_fp_job_traveller_mo_portrait + fusion_plating_reports.report_fp_job_traveller_mo_portrait + 'Traveller - %s' % object.name + + report + + + + Job Traveller (Landscape) + sale.order + qweb-pdf + fusion_plating_reports.report_fp_job_traveller_so_landscape + fusion_plating_reports.report_fp_job_traveller_so_landscape + 'Traveller - %s' % object.name + + report + + + + + Job Traveller (Portrait) + sale.order + qweb-pdf + fusion_plating_reports.report_fp_job_traveller_so_portrait + fusion_plating_reports.report_fp_job_traveller_so_portrait + 'Traveller - %s' % object.name + + report + diff --git a/fusion_plating/fusion_plating_reports/report/report_fp_job_traveller.xml b/fusion_plating/fusion_plating_reports/report/report_fp_job_traveller.xml new file mode 100644 index 00000000..ea88aae7 --- /dev/null +++ b/fusion_plating/fusion_plating_reports/report/report_fp_job_traveller.xml @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +