Instead of converting templates to variants before calling super(), check the model type when processing results. If working with product.template, get the variant from the template using browse(). This preserves the expected ID mapping in the result dictionary and avoids lambda variable binding issues. Fixes: KeyError: 9 in pricelist computation |
||
|---|---|---|
| .github | ||
| .vscode | ||
| account_invoice_triple_discount | ||
| account_invoice_triple_discount_readonly | ||
| docs | ||
| product_get_price_helper | ||
| product_main_seller | ||
| product_origin | ||
| product_price_category | ||
| product_price_category_supplier | ||
| product_sale_price_from_pricelist | ||
| purchase_triple_discount | ||
| setup | ||
| website_sale_aplicoop | ||
| .editorconfig | ||
| .flake8 | ||
| .gitignore | ||
| .isort.cfg | ||
| .pre-commit-config.yaml | ||
| .pylintrc | ||
| .pylintrc-mandatory | ||
| check_addon.sh | ||
| check_tax_config.sh | ||
| docker-compose.yml | ||
| Makefile | ||
| oca_dependencies.txt | ||
| odoo.conf | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| run_price_tests.sh | ||
| setup.cfg | ||
| test_prices.py | ||
| test_with_docker_run.sh | ||
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 | Sistema de triple descuento en facturas | account-invoicing |
| purchase_triple_discount | Sistema de triple descuento en compras | purchase-workflow |
| product_origin | Campo de origen del producto | product-attribute |
| product_get_price_helper | Helper para cálculo de precios | product-attribute |
| product_main_seller | Proveedor principal por producto | purchase-workflow |
| product_price_category | Sistema de categorías de precio | product-attribute |
3. Addons Custom Propios
| Addon | Propósito | Estado |
|---|---|---|
| account_invoice_triple_discount_readonly | Fix para bug de descuentos acumulados | ✅ Estable |
| product_price_category_supplier | Gestión de categorías por proveedor | ✅ Estable |
| product_sale_price_from_pricelist | Auto-cálculo precio venta desde compra | ✅ Estable |
| website_sale_aplicoop | Sistema completo de eskaera web | ✅ Estable |
🚀 Quick Start
Requisitos
- Docker & Docker Compose
- Python 3.10+
- PostgreSQL 14+
Instalación
# 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
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
# 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
# Ejecutar tests de un addon
docker-compose exec odoo odoo -d odoo --test-enable --stop-after-init -u addon_name
# 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
# 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
📖 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 - Guía para desarrollo con AI
- Documentación Técnica - Guías de instalación, linters, y troubleshooting
- Makefile - Comandos disponibles
- requirements.txt - Dependencias Python
- 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
- 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