From 5a6d9c989428db763e70c870fd493328339b4027 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Date: Wed, 15 Jul 2026 18:23:11 +0200 Subject: [PATCH] [FIX] website_sale_aplicoop: precio por kg/litro con IVA y granel por litro MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El precio por unidad de las tarjetas usaba el campo nativo base_unit_price (list_price sin impuestos), mostrando un importe distinto al precio principal de la tarjeta, que sí incluye IVA. Ahora se calcula a partir del precio ya impositado. Además se extiende el sufijo de precio por unidad ("/L") a productos vendidos por litro, que ya tenían el step de 0.1 pero no el indicador visual. --- .../controllers/website_sale_pricing.py | 12 ++++++++++-- website_sale_aplicoop/views/website_templates.xml | 5 +++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/website_sale_aplicoop/controllers/website_sale_pricing.py b/website_sale_aplicoop/controllers/website_sale_pricing.py index 379baf8..9deef53 100644 --- a/website_sale_aplicoop/controllers/website_sale_pricing.py +++ b/website_sale_aplicoop/controllers/website_sale_pricing.py @@ -54,6 +54,10 @@ def _prepare_product_display_info(self, product, product_price_info, request_obj uom_category_name = "" quantity_step = 1 price_unit_suffix = "" + bulk_unit_suffixes = { + "uom.product_uom_categ_kgm": "/Kg", + "uom.product_uom_categ_vol": "/L", + } if product.uom_id: uom = product.uom_id.sudo() @@ -82,8 +86,7 @@ def _prepare_product_display_info(self, product, product_price_info, request_obj full_xmlid = f"{external_id.module}.{external_id.name}" if full_xmlid in fractional_categories: quantity_step = 0.1 - if full_xmlid == "uom.product_uom_categ_kgm": - price_unit_suffix = "/Kg" + price_unit_suffix = bulk_unit_suffixes.get(full_xmlid, "") except Exception as e: _logger.warning( "_prepare_product_display_info: Error detecting UoM category XML ID for product %s: %s", @@ -91,6 +94,10 @@ def _prepare_product_display_info(self, product, product_price_info, request_obj str(e), ) + base_unit_price = 0.0 + if product.base_unit_count and price_safe: + base_unit_price = price_safe / product.base_unit_count + try: req = request_obj or request tr_env = req.env @@ -106,6 +113,7 @@ def _prepare_product_display_info(self, product, product_price_info, request_obj "safe_uom_category": uom_category_name, "quantity_step": quantity_step, "price_unit_suffix": price_unit_suffix, + "base_unit_price": base_unit_price, "out_of_stock_label": out_of_stock_label, "add_to_cart_label": add_to_cart_label, } diff --git a/website_sale_aplicoop/views/website_templates.xml b/website_sale_aplicoop/views/website_templates.xml index dce168e..9754f29 100644 --- a/website_sale_aplicoop/views/website_templates.xml +++ b/website_sale_aplicoop/views/website_templates.xml @@ -693,9 +693,10 @@ - + +

- € / + € /