- Add fallback values for display_price in t-attf-data-product-price attribute to prevent TypeError when display_price is None - Add fallback for product.uom_id.category_id.name to prevent None errors - Use chained 'or' operators to ensure safe fallback: * display_price or product.list_price or 0 * product.uom_id.category_id.name if exists else empty string This fixes the QWeb rendering error: 'TypeError: NoneType object is not callable' The error occurred when the template tried to render data attributes with None values. Now the template safely handles missing or None values by using sensible defaults. |
||
|---|---|---|
| .github | ||
| .vscode | ||
| account_invoice_triple_discount | ||
| account_invoice_triple_discount_readonly | ||
| docs | ||
| ocb@6fb141fc75 | ||
| 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 | ||
| .prettierignore | ||
| .prettierrc.yml | ||
| .pylintrc | ||
| .pylintrc-mandatory | ||
| check_addon.sh | ||
| check_tax_config.sh | ||
| docker-compose.yml | ||
| DOCUMENTATION.md | ||
| DOCUMENTATION_UPDATE_SUMMARY.md | ||
| 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 con lazy loading 🚀 | ✅ Estable |
✨ Nueva Feature v18.0.1.3.0: website_sale_aplicoop incluye lazy loading configurable para mejorar el rendimiento de carga de productos. Reduce el tiempo de carga inicial de 10-20s a 500-800ms. Ver docs/LAZY_LOADING.md para detalles.
🚀 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
- 🚀 Lazy Loading Documentation - Guía técnica completa sobre la nueva feature de carga lazy
- 📦 Upgrade Instructions v18.0.1.3.0 - Guía de actualización e instalación de lazy loading
- 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