From 4e54ecc32f9d4e32e2d1883faa3e8f10817a561f Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Mon, 18 May 2026 00:22:36 -0400 Subject: [PATCH] fix(portal): sidebar values + Purchase Order naming on /my/orders detail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Odoo's portal_order_page route calls _get_page_view_values which doesn't touch _prepare_portal_layout_values, so our sidebar context (fp_sidebar_items, fp_partner_display_name) was missing on every Odoo detail page (SO, invoice, delivery, quote). Override _get_page_view_values to setdefault our two keys into the values dict — non-clobbering, covers every detail route. 2. Rename "Sales Order(s)" / "Your Orders" to "Purchase Order(s)" on the customer portal so the wording matches the sidebar item and the customer's perspective (they purchase from us). Inherits in fp_sale_order_portal.xml replace the relevant text nodes in sale.portal_my_home_menu_sale / sale.portal_my_orders / sale.sale_order_portal_content. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../controllers/portal.py | 14 +++ .../views/fp_sale_order_portal.xml | 95 +++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/fusion_plating/fusion_plating_portal/controllers/portal.py b/fusion_plating/fusion_plating_portal/controllers/portal.py index 2dd5d95b..81baeddf 100644 --- a/fusion_plating/fusion_plating_portal/controllers/portal.py +++ b/fusion_plating/fusion_plating_portal/controllers/portal.py @@ -196,6 +196,20 @@ class FpCustomerPortal(CustomerPortal): values['fp_partner_display_name'] = commercial.name or partner.name return values + def _get_page_view_values(self, document, access_token, values, session_history, no_breadcrumbs, **kwargs): + # Odoo's detail-page routes (sale order, invoice, delivery, etc.) + # funnel through this helper. It sets up chatter/pager but doesn't + # touch _prepare_portal_layout_values, so our sidebar context wouldn't + # otherwise reach those templates. Inject our keys conservatively via + # setdefault — never overwrite anything the page already set. + values = super()._get_page_view_values( + document, access_token, values, session_history, no_breadcrumbs, **kwargs, + ) + layout = self._prepare_portal_layout_values() + values.setdefault('fp_sidebar_items', layout.get('fp_sidebar_items')) + values.setdefault('fp_partner_display_name', layout.get('fp_partner_display_name')) + return values + # ========================================================================== # Customer-visible stage timeline (detail page) # ========================================================================== diff --git a/fusion_plating/fusion_plating_portal/views/fp_sale_order_portal.xml b/fusion_plating/fusion_plating_portal/views/fp_sale_order_portal.xml index a7846abd..92e9da7d 100644 --- a/fusion_plating/fusion_plating_portal/views/fp_sale_order_portal.xml +++ b/fusion_plating/fusion_plating_portal/views/fp_sale_order_portal.xml @@ -95,4 +95,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +