- 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
4.4 KiB
4.4 KiB
Changelog - Website Sale Aplicoop
[18.0.1.4.0] - 2026-02-22
Added
- Product Blacklist Feature: New exclusion system for group orders
- New field:
excluded_product_ids(Many2many to product.product) - Blacklist has absolute priority over all inclusion sources (product_ids, category_ids, supplier_ids)
- Model method: Updated
_get_products_for_group_order()with blacklist filter - Comprehensive test suite in
test_product_discovery.py(TestProductBlacklist class)
- New field:
Changed
-
UI Improvements: Renamed "Associations" section to "Catálogo de Productos" for better user clarity
- New subsection: "Productos Incluidos" (whitelist: suppliers, categories, direct products)
- New subsection: "Productos Excluidos" (blacklist: explicit exclusions)
- Updated help texts for all inclusion fields
- Complete Spanish and Euskera translations
-
Product Discovery Logic:
_get_products_for_group_order()now appliesexcluded_product_idsfilter at the end- Products in blacklist never appear, regardless of inclusion source
_compute_available_products_count()now depends onexcluded_product_ids- Detailed logging for excluded product count
Technical Details
- New M2M relation:
group_order_excluded_product_rel(separate from whitelist relations) - Blacklist filter uses set subtraction:
products = products - order.excluded_product_ids - All tests validate absolute priority: direct products, category products, supplier products, and multi-source products all respect blacklist
Use Case
- Admin selects a category with 100 products → adds to category_ids
- Admin identifies 5 unwanted products → adds to excluded_product_ids
- Result: 95 products available in the order
- Workflow: Bulk inclusion via categories/suppliers + fine-grained exclusion via blacklist
[18.0.1.3.0] - 2026-02-16
Added
-
Lazy Loading Feature: Configurable product pagination for significantly faster page loads
- New Settings:
Enable Lazy Loading,Products Per Page - New endpoint:
GET /eskaera/<order_id>/load-page?page=N - JavaScript method:
_attachLoadMoreListener() - Model method:
group_order._get_products_paginated()
- New Settings:
-
Configuration Parameters:
website_sale_aplicoop.lazy_loading_enabled(Boolean, default: True)website_sale_aplicoop.products_per_page(Integer, default: 20)
-
Frontend Components:
- New template:
eskaera_shop_products(reusable for initial page + AJAX) - Load More button with pagination controls
- Spinner during AJAX load ("Loading..." state)
- Event listener re-attachment for dynamically loaded products
- New template:
-
Documentation:
- Complete lazy loading guide:
docs/LAZY_LOADING.md - Configuration examples
- Troubleshooting section
- Performance metrics
- Complete lazy loading guide:
Changed
-
Template
eskaera_shop:- Products grid now has
id="products-grid" - Calls reusable
eskaera_shop_productstemplate - Conditional "Load More" button display
- Products grid now has
-
JavaScript
website_sale.js:_attachEventListeners()now calls_attachLoadMoreListener()- Re-attaches listeners after AJAX loads new products
-
README.md:
- Added lazy loading feature to features list
- Added version 18.0.1.3.0 to changelog
Performance Impact
- Initial page load: 10-20s → 500-800ms (20x faster)
- Product DOM size: 1000 elements → 20 elements (initial)
- Subsequent page loads: 200-400ms via AJAX
- Price calculation: Only for visible products (reduced from 1000+ to 20)
Technical Details
- Zero-impact if lazy loading disabled
- Transparent pagination (no URL changes)
- Maintains cart synchronization
- Compatible with existing search/filter
- No changes to pricing logic or validation
[18.0.1.2.0] - 2026-02-02
Added
- Improved UI elements in cart and checkout
Fixed
- Pickup date calculation (was adding extra week)
- Delivery date display on order pages
Changed
- Cart styling: 2x text size, larger icons
- Checkout button: Enhanced visibility
[18.0.1.0.0] - 2024-12-20
Added
- Initial release of Website Sale Aplicoop
- Group order management system
- Multi-language support (ES, PT, GL, CA, EU, FR, IT)
- Member management and tracking
- Order state machine (draft → confirmed → collected → invoiced → completed)
- Separate shopping carts per group order
- Cutoff and pickup date validation
- Integration with OCA ecosystem (pricing, taxes, etc.)