# Guía de Actualización: Lazy Loading v18.0.1.3.0

**Fecha**: 16 de febrero de 2026
**Versión**: 18.0.1.3.0
**Cambios Principales**: Lazy loading configurable de productos

## 📋 Resumen de Cambios

La tienda de Aplicoop ahora carga productos bajo demanda en lugar de cargar todos a la vez. Esto reduce dramáticamente el tiempo de carga de la página inicial (de 10-20 segundos a 500-800ms).

## 🔄 Pasos de Actualización

### 1. Descargar Cambios
```bash
cd /home/snt/Documentos/lab/odoo/addons-cm
git pull origin main  # o tu rama correspondiente
```

### 2. Actualizar Addon en Odoo
```bash
# En Docker
docker-compose exec odoo odoo -d odoo -u website_sale_aplicoop --stop-after-init

# O sin Docker
./odoo-bin -d odoo -u website_sale_aplicoop --stop-after-init
```

### 3. Activar Lazy Loading (Recomendado)
```
Settings → Website → Shop Performance
  [✓] Enable Lazy Loading
  [20] Products Per Page

Click: "Save"
```

## ⚙️ Configuración

### Opción A: Lazy Loading Habilitado (Recomendado)
```
Enable Lazy Loading: ✓ (checked)
Products Per Page: 20
```
**Resultado**: Página carga rápido, botón "Load More" visible

### Opción B: Lazy Loading Deshabilitado (Compatibilidad)
```
Enable Lazy Loading: ☐ (unchecked)
Products Per Page: 20 (ignorado)
```
**Resultado**: Carga TODOS los productos como antes (no hay cambios visibles)

### Opción C: Ajuste de Cantidad
```
Products Per Page: 50  (o el valor que desees)
```
**Valores recomendados**: 15-30
**No recomendado**: <5 (muchas páginas) o >100 (lento)

## ✅ Validación Post-Actualización

### 1. Verificar Lazy Loading Activo
1. Ir a `/eskaera/<order_id>` en tienda
2. Verificar que carga rápido (~500ms)
3. Buscar botón "Load More" al final
4. Producto debe tener ~20 items inicialmente

### 2. Verificar Funcionamiento
1. Click en "Load More"
2. Spinner debe aparecer ("Loading...")
3. Nuevos productos se agregan al grid
4. Botón +/- y agregar al carrito funciona en nuevos productos

### 3. Verificar Compatibilidad
1. Búsqueda (realtime-search) debe funcionar en página 1
2. Carrito debe estar sincronizado
3. Checkout debe funcionar normalmente
4. Notificaciones de carrito deben actualizarse

### 4. Verificar Logs
```bash
# En Docker
docker-compose logs -f odoo | grep -i "lazy_loading\|eskaera_shop"

# Debería ver:
# [LAZY_LOADING] Attaching load-more-btn listener
# [LAZY_LOADING] Loading page 2 for order 1
# [LAZY_LOADING] Products inserted into grid
```

## 🐛 Troubleshooting

### Problema: Botón "Load More" no aparece
**Causa**: Lazy loading está deshabilitado o hay <20 productos

**Solución**:
1. Settings → Website → Shop Performance
2. Verificar "Enable Lazy Loading" está ✓
3. Asegurarse que hay >20 productos en orden

### Problema: Botón no funciona (error AJAX)
**Causa**: Ruta `/eskaera/<id>/load-page` no funciona

**Solución**:
1. Verificar que addon está actualizado: `odoo -u website_sale_aplicoop`
2. Revisar logs: `docker logs -f odoo | grep load-page`
3. Verificar que grupo tiene >20 productos

### Problema: Event listeners no funcionan en nuevos productos
**Causa**: No se re-atacharon los listeners

**Solución**:
1. Abrir console JS (F12)
2. Ver si hay errores en "Load More"
3. Verificar que `_attachEventListeners()` se ejecuta
4. Clear cache del navegador (Ctrl+Shift+Delete)

### Problema: Precios incorrectos al cargar más
**Causa**: Cambio en pricelist entre cargas

**Solución**: Sin validación de precios (no cambian frecuentemente). Si cambiaron:
1. Recargar página (no solo Load More)
2. O deshabilitar lazy loading

## 📊 Verificación de Performance

### Método: Usar Developer Tools (F12)

1. **Abrir Network tab**
2. **Recargar página completa**
3. **Buscar request a `/eskaera/<id>`**
4. **Timing debería ser**:
   - Antes de cambios: 10-20s
   - Después de cambios: 500-800ms

5. **Click en "Load More"**
6. **Buscar request a `/eskaera/<id>/load-page`**
7. **Timing debería ser**: 200-400ms

## 🔙 Rollback (Si Necesario)

Si hay problemas críticos:

```bash
# Desactivar lazy loading (opción rápida)
Settings → Website → Shop Performance
  ☐ Disable Lazy Loading
  Click: Save
```

O revertir código:
```bash
git revert <commit_hash>
odoo -u website_sale_aplicoop --stop-after-init
```

## 📝 Notas Importantes

1. **Sin validación de precios**: No se revalidan precios al cargar nuevas páginas. Asumir que no cambian frecuentemente.

2. **Búsqueda local**: La búsqueda realtime busca en DOM actual (20 productos). Para buscar en TODOS, refrescar página.

3. **Sin cambio de URL**: Las páginas no cambian la URL a `?page=2`. Todo es transparente vía AJAX.

4. **Carrito sincronizado**: El carrito funciona normalmente, se guarda en localStorage y sincroniza entre páginas.

5. **Traducciones**: Las etiquetas del botón "Load More" se traducen automáticamente desde `i18nManager`.

## 📚 Documentación Adicional

- **Guía completa**: `docs/LAZY_LOADING.md`
- **Changelog**: `website_sale_aplicoop/CHANGELOG.md`
- **README**: `website_sale_aplicoop/README.md`

## 📞 Soporte

Para problemas:

1. Revisar `docs/LAZY_LOADING.md` sección "Troubleshooting"
2. Revisar logs: `docker-compose logs odoo | grep -i lazy`
3. Limpiar cache: Ctrl+Shift+Delete en navegador
4. Recargar addon: `odoo -u website_sale_aplicoop`

---

**Actualización completada**: 16 de febrero de 2026
**Versión instalada**: 18.0.1.3.0
