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', '')"
/>
+