[DOC] Actualizar documentación y instrucciones con cambios recientes (v18.0.1.3.1)
- [FIX] Actualizar copilot-instructions.md con nuevas secciones: * QWeb Template Best Practices (patrón crítico para templates complejos) * Eskaera System mejorado con info de lazy loading v18.0.1.3.0+ * QWeb Template Errors en Common Issues & Solutions * Recent Changes Summary (actualizado a 2026-02-18) - [ADD] Nuevo documento docs/RECENT_CHANGES.md: * Timeline completo de cambios (Feb 2-18, 2026) * 4 secciones principales de cambios documentados * Impacto y acciones requeridas por developers * Referencias cruzadas a documentación técnica - [UPD] README.md principal: * website_sale_aplicoop actualizado a v18.0.1.3.1 * Mención de fixes críticos de v18.0.1.3.1 * Referencias a FINAL_SOLUTION_SUMMARY.md - [REF] product_main_seller/README.md: * Removidas referencias obsoletas a default_supplier_id * Documentación actualizada para usar main_seller_id * Simplificada sección de Computation Logic - [UPD] docs/README.md: * Nueva sección "Cambios Recientes" * Reorganizado índice de documentación de template fixes * Mejorada estructura de secciones de troubleshooting Cambios Documentados: ✅ Refactoring product_main_seller (18 Feb) - Removido campo alias ✅ v18.0.1.3.1 Fixes (16 Feb) - Date calculations y template rendering ✅ v18.0.1.3.0 Lazy Loading (12 Feb) - Performance improvement 95% ✅ Template Logic Refactoring (Feb 2-16) - QWeb best practices +438 líneas de documentación nueva/actualizada
This commit is contained in:
parent
ed048c85eb
commit
fee8ec9c45
5 changed files with 374 additions and 33 deletions
74
.github/copilot-instructions.md
vendored
74
.github/copilot-instructions.md
vendored
|
|
@ -227,6 +227,30 @@ class ProductTemplate(models.Model):
|
|||
|
||||
**Por qué**: Evita problemas con pricelists y reportes que operan a nivel de variante. Ver `product_sale_price_from_pricelist` como ejemplo.
|
||||
|
||||
### QWeb Template Best Practices
|
||||
|
||||
**CRÍTICO**: QWeb tiene limitaciones estrictas con lógica compleja. **Siempre mover lógica al controller**:
|
||||
|
||||
```python
|
||||
# ❌ MAL - QWeb no puede parsear esto
|
||||
# <t t-set="price" t-value="price_info.get('price') or product.list_price or 0"/>
|
||||
|
||||
# ✅ CORRECTO - Preparar datos en controller
|
||||
class WebsiteController:
|
||||
def _prepare_product_display_info(self, product, price_info):
|
||||
"""Pre-procesar todos los valores para QWeb."""
|
||||
price = price_info.get(product.id, {}).get('price') or product.list_price or 0.0
|
||||
return {
|
||||
'display_price': float(price),
|
||||
'safe_uom_category': product.uom_id.category_id.name or '',
|
||||
}
|
||||
|
||||
# En template: acceso simple, sin lógica
|
||||
# <span t-esc="product_display['display_price']"/>
|
||||
```
|
||||
|
||||
Ver [docs/QWEB_BEST_PRACTICES.md](../docs/QWEB_BEST_PRACTICES.md) para más detalles.
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### Extending Models
|
||||
|
|
@ -381,6 +405,30 @@ access_model_user,model.name.user,model_model_name,base.group_user,1,1,1,0
|
|||
**Problem**: Module not loading, dependency errors
|
||||
**Solution**: Check both `__manifest__.py` depends AND `oca_dependencies.txt` for OCA repos
|
||||
|
||||
### QWeb Template Errors
|
||||
|
||||
**Problem**: `TypeError: 'NoneType' object is not callable` in templates
|
||||
**Solution**:
|
||||
|
||||
1. Move complex logic from template to controller
|
||||
2. Use simple attribute access in templates (no conditionals)
|
||||
3. Pre-process all display values in Python
|
||||
4. See [docs/QWEB_BEST_PRACTICES.md](../docs/QWEB_BEST_PRACTICES.md) for patterns
|
||||
|
||||
**Example Pattern**:
|
||||
|
||||
```python
|
||||
# Controller: prepare clean data
|
||||
def _prepare_display_info(self, product):
|
||||
return {
|
||||
'price': product.price or 0.0,
|
||||
'uom': product.uom_id.name or '',
|
||||
}
|
||||
|
||||
# Template: use simple access
|
||||
<span t-esc="display_info['price']"/>
|
||||
```
|
||||
|
||||
## Testing Guidelines
|
||||
|
||||
### Unit Tests
|
||||
|
|
@ -529,6 +577,7 @@ Sistema completo de compras colaborativas para cooperativas de consumo:
|
|||
- **Separate Carts**: Carrito independiente por miembro y por grupo
|
||||
- **Cutoff Dates**: Validación de fechas límite para pedidos
|
||||
- **Pickup Management**: Gestión de días de recogida
|
||||
- **Lazy Loading**: Carga configurable de productos (v18.0.1.3.0+)
|
||||
- **Multi-language**: ES, EU, CA, GL, PT, FR, IT
|
||||
- **Member Tracking**: Gestión de miembros activos/inactivos por grupo
|
||||
|
||||
|
|
@ -540,7 +589,21 @@ Sistema completo de compras colaborativas para cooperativas de consumo:
|
|||
4. Notificaciones automáticas al cambiar estados
|
||||
5. Tracking de fulfillment por miembro
|
||||
|
||||
Ver [website_sale_aplicoop/README.md](../website_sale_aplicoop/README.md) para detalles.
|
||||
**Configuración Lazy Loading** (v18.0.1.3.0+):
|
||||
|
||||
```
|
||||
Settings > Website > Shop Performance
|
||||
[✓] Enable Lazy Loading
|
||||
[20] Products Per Page
|
||||
```
|
||||
|
||||
**Mejoras Recientes**:
|
||||
|
||||
- v18.0.1.3.1: Fixes críticos de cálculo de fechas
|
||||
- v18.0.1.3.0: Lazy loading, mejora de rendimiento de 10-20s → 500-800ms
|
||||
- Refactor de template rendering: Mover lógica QWeb al controller
|
||||
|
||||
Ver [website_sale_aplicoop/README.md](../website_sale_aplicoop/README.md) y [docs/LAZY_LOADING.md](../docs/LAZY_LOADING.md) para detalles.
|
||||
|
||||
### Triple Discount System
|
||||
|
||||
|
|
@ -583,6 +646,13 @@ last_purchase_price_compute_type != "manual_update" # Para auto-cálculo
|
|||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-02-16
|
||||
**Last Updated**: 2026-02-18
|
||||
**Odoo Version**: 18.0
|
||||
**Python Version**: 3.10+
|
||||
|
||||
## Recent Changes Summary
|
||||
|
||||
- **2026-02-18**: Refactor `product_main_seller` - Remover alias innecesario `default_supplier_id`
|
||||
- **2026-02-16**: v18.0.1.3.1 fixes críticos de cálculo de fechas en Eskaera
|
||||
- **2026-02-12**: v18.0.1.3.0 Lazy loading y fixes de template rendering QWeb
|
||||
- **2026-02-02**: UI improvements y date calculation fixes
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue