# Kidekoop - Addons Custom para Odoo 18.0

Sistema de gestión de compras colaborativas (grupo de consumo) basado en Odoo 18.0 con módulos personalizados y modificados.

## 🎯 Descripción

Este repositorio contiene los addons personalizados para Kidekoop, un sistema completo de gestión de grupos de consumo que permite:

- **Gestión de compras colaborativas** (eskaera)
- **Sistema de precios multinivel** con categorías y descuentos múltiples
- **Integración con proveedores** y gestión de precios automática
- **Interfaz web moderna** para pedidos grupales
- **Multiidioma** (ES, EU, CA, GL, PT, FR, IT)

## 📦 Componentes del Proyecto

### 1. OCB - Odoo Community Backports
- **Ubicación**: `/ocb`
- **Versión**: 18.0
- **Descripción**: Base de Odoo Community Edition
- **Repositorio**: https://github.com/OCA/OCB

### 2. Addons OCA Modificados

| Addon | Propósito | Repositorio OCA |
|-------|-----------|-----------------|
| [account_invoice_triple_discount](account_invoice_triple_discount/) | Sistema de triple descuento en facturas | account-invoicing |
| [purchase_triple_discount](purchase_triple_discount/) | Sistema de triple descuento en compras | purchase-workflow |
| [product_origin](product_origin/) | Campo de origen del producto | product-attribute |
| [product_get_price_helper](product_get_price_helper/) | Helper para cálculo de precios | product-attribute |
| [product_main_seller](product_main_seller/) | Proveedor principal por producto | purchase-workflow |
| [product_price_category](product_price_category/) | Sistema de categorías de precio | product-attribute |

### 3. Addons Custom Propios

| Addon | Propósito | Estado |
|-------|-----------|--------|
| [account_invoice_triple_discount_readonly](account_invoice_triple_discount_readonly/) | Fix para bug de descuentos acumulados | ✅ Estable |
| [product_price_category_supplier](product_price_category_supplier/) | Gestión de categorías por proveedor | ✅ Estable |
| [product_sale_price_from_pricelist](product_sale_price_from_pricelist/) | Auto-cálculo precio venta desde compra | ✅ Estable |
| [website_sale_aplicoop](website_sale_aplicoop/) | Sistema completo de eskaera web | ✅ **v18.0.1.3.1** - Estable |

**✨ Feature v18.0.1.3.0**: `website_sale_aplicoop` incluye **lazy loading configurable** para mejorar el rendimiento de carga de productos (10-20s → 500-800ms).

**🔧 Fixes v18.0.1.3.1**: Correcciones críticas en cálculo de fechas y refactor de template rendering para evitar errores QWeb.

Ver [docs/LAZY_LOADING.md](docs/LAZY_LOADING.md) y [docs/FINAL_SOLUTION_SUMMARY.md](docs/FINAL_SOLUTION_SUMMARY.md) para detalles.

## 🚀 Quick Start

### Requisitos

- Docker & Docker Compose
- Python 3.10+
- PostgreSQL 14+

### Instalación

```bash
# Clonar repositorio
git clone [URL_REPO]
cd addons-cm

# Iniciar entorno
docker-compose up -d

# Verificar logs
docker-compose logs -f odoo
```

### Instalar un addon

```bash
docker-compose exec odoo odoo -d odoo -u addon_name --stop-after-init
```

## 🛠️ Desarrollo

### Estructura de Carpetas

```
addons-cm/
├── .github/                    # GitHub Copilot instructions
├── ocb/                        # Odoo 18.0 base
├── account_invoice_*/          # Addons de facturación
├── purchase_*/                 # Addons de compras
├── product_*/                  # Addons de productos
├── website_sale_aplicoop/      # Sistema eskaera
├── docker-compose.yml          # Configuración Docker
├── requirements.txt            # Dependencias Python
├── oca_dependencies.txt        # Dependencias OCA
├── Makefile                    # Comandos útiles
└── .pre-commit-config.yaml     # Hooks de pre-commit
```

### Herramientas de Calidad

```bash
# Ejecutar checks de código
make lint

# Formatear código
make format

# Ejecutar todos los pre-commit hooks
pre-commit run --all-files

# Verificar addon específico
./check_addon.sh addon_name
```

### Tests

```bash

# Ejecutar tests de un addon
docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
# NOTA: Usa `docker-compose run` (no `exec`) para lanzar un contenedor limpio y evitar efectos de caché. Cambia `addon_name` por el módulo a testear.

# Tests específicos con Python unittest
docker-compose exec odoo python -m pytest addons/addon_name/tests/
```

## 🌍 Sistema de Traducciones

Todos los addons custom incluyen traducciones completas en:

- **Español** (es) - Obligatorio
- **Euskera** (eu) - Obligatorio
- **Catalán** (ca)
- **Gallego** (gl)
- **Portugués** (pt)
- **Francés** (fr)
- **Italiano** (it)

### Actualizar Traducciones

```bash
# Exportar términos traducibles
docker-compose exec odoo odoo \
    --addons-path=/mnt/extra-addons \
    --i18n-export=/tmp/addon_name.pot \
    --modules=addon_name \
    --db=odoo

# Actualizar archivos .po
cd addon_name/i18n
msgmerge --update es.po addon_name.pot
msgmerge --update eu.po addon_name.pot
```

**Importante**: No usar `_()` en definiciones de campos a nivel de módulo. Solo usar en métodos.

📖 **[Ver guía completa de traducciones](docs/TRANSLATIONS.md)**

## 📖 Documentación Adicional

Cada addon incluye su propio README.md con:
- Arquitectura y diseño
- Detalles de implementación
- Ejemplos de uso
- Casos de prueba

### Documentos Principales

- [GitHub Copilot Instructions](.github/copilot-instructions.md) - Guía para desarrollo con AI
- [Documentación Técnica](docs/) - Guías de instalación, linters, y troubleshooting
- **[🚀 Lazy Loading Documentation](docs/LAZY_LOADING.md)** - Guía técnica completa sobre la nueva feature de carga lazy
- **[📦 Upgrade Instructions v18.0.1.3.0](docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md)** - Guía de actualización e instalación de lazy loading
- [Makefile](Makefile) - Comandos disponibles
- [requirements.txt](requirements.txt) - Dependencias Python
- [oca_dependencies.txt](oca_dependencies.txt) - Repositorios OCA necesarios

## 🔧 Configuración

### Dependencias OCA

Este proyecto depende de los siguientes repositorios OCA:

- **account-invoicing**: Sistema de facturación extendido
- **product-attribute**: Gestión avanzada de productos
- **purchase-workflow**: Flujos de compra personalizados
- **sale-workflow**: Flujos de venta personalizados

### Configuración de Odoo

Archivo `odoo.conf` incluye:
- Configuración de addons path
- Parámetros de base de datos
- Configuración de workers y límites

## 🐛 Issues Conocidos y Soluciones

### Descuentos Acumulándose en discount1

**Problema**: Al usar triple descuento, todos los descuentos se acumulan en el primer campo.

**Solución**: Instalar `account_invoice_triple_discount_readonly`

### Precio de Venta No Actualiza

**Problema**: El precio de venta no se calcula automáticamente desde el precio de compra.

**Solución**: Configurar `product_sale_price_from_pricelist` correctamente.

### Warnings de Traducción

**Problema**: `WARNING: _() called at import time at module...`

**Solución**: No usar `_()` en definiciones de campos, solo en métodos ejecutables.

## 🤝 Contribuir

### Estándares de Código

- Seguir [OCA Guidelines](https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst)
- Usar **black** para formateo
- Usar **isort** para imports
- Pasar **flake8** y **pylint-odoo**
- Todos los commits deben pasar pre-commit hooks

### Estructura de Commits

```
[TAG] module_name: Brief description

Detailed explanation if needed

Tags: [ADD], [FIX], [IMP], [REF], [REM], [I18N], [DOC]
```

### Testing

Todos los nuevos features deben incluir:
- Tests unitarios
- Tests de integración (si aplica)
- Documentación actualizada

## 📝 License

AGPL-3.0 or later

## 👥 Autores

- **Criptomart** - Development
- **OCA Community** - Base addons

## 🔗 Enlaces

- **Odoo Documentation**: https://www.odoo.com/documentation/18.0/
- **OCA**: https://github.com/OCA
- **OCB**: https://github.com/OCA/OCB
- **OCA Guidelines**: https://github.com/OCA/odoo-community.org

---

**Versión Odoo**: 18.0
**Python**: 3.10+
**Última Actualización**: 2026-02-12
