[ADD] website_sale_aplicoop: Product blacklist feature for group orders

- Add excluded_product_ids field for explicit product exclusion
- Blacklist has absolute priority over all inclusion sources (product_ids, category_ids, supplier_ids)
- Update _get_products_for_group_order() with blacklist filter logic
- Rename 'Associations' section to 'Catálogo de Productos' with subsections:
  * Productos Incluidos (whitelist: suppliers, categories, direct products)
  * Productos Excluidos (blacklist: explicit exclusions)
- Add comprehensive test suite (TestProductBlacklist class with 7 tests)
- Add Spanish and Euskera translations
- Update available_products_count computation to include excluded_product_ids
- Version bump to 18.0.1.4.0

Use case: Bulk inclusion via categories/suppliers + fine-grained exclusion via blacklist
Example: Select a category with 100 products, exclude 5 unwanted → 95 available
This commit is contained in:
snt 2026-02-22 20:41:11 +01:00
parent 4a4639f13a
commit 75ebb7b907
7 changed files with 4765 additions and 7222 deletions

View file

@ -80,10 +80,15 @@
<group string="Delivery">
<field name="delivery_notice" placeholder="Information about home delivery..." nolabel="1"/>
</group>
<group string="Associations">
<field name="supplier_ids" widget="many2many_tags" help="Products from these suppliers will be available"/>
<field name="product_ids" widget="many2many_tags" help="Directly assigned products (highest priority)"/>
<field name="category_ids" widget="many2many_tags" help="Products in these categories will be available"/>
<group string="Catálogo de Productos">
<group string="Productos Incluidos" col="2">
<field name="supplier_ids" widget="many2many_tags" help="All products from these suppliers will be included"/>
<field name="category_ids" widget="many2many_tags" help="All products in these categories (including subcategories) will be included"/>
<field name="product_ids" widget="many2many_tags" help="Specific products to include directly"/>
</group>
<group string="Productos Excluidos" col="2">
<field name="excluded_product_ids" widget="many2many_tags" help="Products explicitly excluded from this order (blacklist has absolute priority over inclusions)"/>
</group>
</group>
</sheet>
</form>