From f35bf0c5a13ccf4f5acf754feed9651fcb60df1f Mon Sep 17 00:00:00 2001 From: snt Date: Sat, 21 Feb 2026 14:31:34 +0100 Subject: [PATCH] [FIX] website_sale_aplicoop: Calculate UoM quantity step server-side for portal users Portal users cannot read uom.uom model due to ACL restrictions (1,0,0,0 permissions). This caused products sold by weight (kg) to have incorrect quantity step (1 instead of 0.1). Solution: - Calculate quantity_step in Python controller using product.uom_id.sudo() - Check if UoM category contains 'weight' or 'kg' -> use step=0.1 - For other products, use default step=1 - Pass quantity_step to template via product_display_info dict - Update XML input attributes (value, min, step) to use dynamic quantity_step This maintains proper UX for bulk products while respecting security permissions. --- website_sale_aplicoop/controllers/website_sale.py | 7 +++++++ website_sale_aplicoop/views/website_templates.xml | 11 ++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/website_sale_aplicoop/controllers/website_sale.py b/website_sale_aplicoop/controllers/website_sale.py index a8e64b1..fb78819 100644 --- a/website_sale_aplicoop/controllers/website_sale.py +++ b/website_sale_aplicoop/controllers/website_sale.py @@ -416,14 +416,21 @@ class AplicoopWebsiteSale(WebsiteSale): # Safety: Get UoM category name (use sudo for read-only display to avoid ACL issues) uom_category_name = "" + quantity_step = 1 # Default step for integer quantities if product.uom_id: uom = product.uom_id.sudo() if uom.category_id: uom_category_name = uom.category_id.sudo().name or "" + # Use 0.1 step for weight-based products (kg, g, etc.) + # This allows fractional quantities for bulk products + category_name_lower = uom_category_name.lower() + if "weight" in category_name_lower or "kg" in category_name_lower: + quantity_step = 0.1 return { "display_price": price_safe, "safe_uom_category": uom_category_name, + "quantity_step": quantity_step, } def _compute_price_info(self, products, pricelist): diff --git a/website_sale_aplicoop/views/website_templates.xml b/website_sale_aplicoop/views/website_templates.xml index 49aa797..0273cf3 100644 --- a/website_sale_aplicoop/views/website_templates.xml +++ b/website_sale_aplicoop/views/website_templates.xml @@ -1225,6 +1225,10 @@ t-set="safe_uom_category" t-value="product_display_info.get(product.id, {}).get('safe_uom_category', '')" /> +