# Odoo Addons — Criptomart Colección de addons Odoo 18.0 para Criptomart / Elika Bilbo. Incluye addons OCA incluidos como dependencias y addons custom desarrollados internamente. ## Addons OCA (dependencias incluidas) Addons del ecosistema [OCA](https://github.com/OCA) incorporados al repositorio. No se modifican salvo hotfixes puntuales. | Addon | Versión | Descripción | | ----- | ------- | ----------- | | [account_invoice_triple_discount](account_invoice_triple_discount/) | 18.0.1.0.0 | Triple descuento en líneas de factura | | [product_get_price_helper](product_get_price_helper/) | 18.0.1.1.0 | Helper para obtener precios de producto respetando tarifas | | [product_main_seller](product_main_seller/) | 18.0.1.0.0 | Campo "proveedor principal" en producto | | [product_origin_char](product_origin_char/) | 18.0.2.0.0 | Campo de texto libre para origen del producto | | [product_price_category](product_price_category/) | 18.0.1.0.0 | Categoría de precio en producto + aplicación masiva vía tarifas | | [purchase_triple_discount](purchase_triple_discount/) | 18.0.1.0.0 | Triple descuento en líneas de pedido de compra | ## Addons Custom Addons desarrollados por Criptomart para necesidades específicas del proyecto. | Addon | Versión | Descripción | | ----- | ------- | ----------- | | [account_invoice_triple_discount_readonly](account_invoice_triple_discount_readonly/) | 18.0.1.0.0 | Corrige bug de acumulación de descuentos y pone descuento total en solo lectura | | [membership_expiry_reminder](membership_expiry_reminder/) | 18.0.1.0.0 | Recordatorio por email de membresías próximas a vencer | | [portal_event_registration](portal_event_registration/) | 18.0.1.0.0 | Vista portal de inscripciones a eventos con adjuntos al chatter | | [product_price_category_supplier](product_price_category_supplier/) | 18.0.1.0.0 | Categoría de precio por defecto en proveedor + actualización masiva de productos | | [product_pricelist_total_margin](product_pricelist_total_margin/) | 18.0.1.2.0 | Margen aditivo (no compuesto) en tarifas encadenadas, con límites globales | | [product_sale_price_from_pricelist](product_sale_price_from_pricelist/) | 18.0.2.7.0 | Calcula precio de venta desde último precio de compra vía tarifa configurable | | [stock_picking_batch_collect](stock_picking_batch_collect/) | 18.0.2.0.0 | Montaje de cestas en lotes: columnas extra, resumen por producto y vista operario | | [web_checkbox_contrast](web_checkbox_contrast/) | 18.0.1.0.0 | Borde visible en casillas, radios e interruptores sin marcar del backend (sólo CSS) | | [web_list_striped](web_list_striped/) | 18.0.1.0.0 | Efecto cebra y hover suave en todas las listas del backend (sólo CSS) | | [website_sale_aplicoop](website_sale_aplicoop/) | 18.0.1.17.0 | Sistema de pedidos colaborativos para grupos de consumo (reemplazo de Aplicoop) | ## Dependencias entre addons custom ```text website_sale_aplicoop └── product_sale_price_from_pricelist └── product_pricelist_total_margin └── product_price_category └── product_main_seller └── product_price_category_supplier └── product_price_category └── stock_picking_batch_collect └── stock_move_manual_quantity stock_picking_batch_collect └── stock_move_manual_quantity └── stock_picking_batch (Odoo core) account_invoice_triple_discount_readonly └── account_invoice_triple_discount └── purchase_triple_discount ``` ## Desarrollo ### Instalación / actualización de un addon ```bash docker-compose exec -T odoo odoo -d odoo -u --stop-after-init ``` ### Tests ```bash docker-compose exec -T odoo odoo -d odoo --test-enable --stop-after-init -u ``` ### Linters ```bash # Python black . && isort . && flake8 . && pylint --load-plugins=pylint_odoo / # JS npx eslint /static/src/ ``` Ver [docs/LINTERS_README.md](docs/LINTERS_README.md) para configuración completa. ### Traducciones Ver [docs/TRANSLATIONS.md](docs/TRANSLATIONS.md). ## CI/CD (Forgejo Actions) En `.gitea/workflows/`, sobre un runner (etiqueta `issue-bot`) registrado en la organización CriptoMart en la misma máquina e imagen que el de ecocentral; ver [tools/issue_bot/README.md](tools/issue_bot/README.md#con-actions): | Workflow | Cuándo | Qué hace | | -------- | ------ | -------- | | `ci.yml` | PR y push a `18.0` | `lint` (pre-commit), `test` ([tools/ci/run_tests.py](tools/ci/run_tests.py)) y `review` (bot de revisión, tras pasar los dos) | | `issue-bot.yml` | Incidencia abierta o comentada | [Bot de incidencias](tools/issue_bot/README.md): responde o abre un PR en `bot/issue-N` | | `pr-bot.yml` | Se quita `WIP` o se pone la etiqueta `i18n` | [Bot de revisión](tools/pr_bot/README.md), si el CI ya había pasado | El contexto que reciben los bots sobre este repo está en [.gitea/issue-bot.md](.gitea/issue-bot.md). Los repos OCA de los que dependen los tests y la imagen del runner se mantienen en el repo de ecocentral (`tools/issue_bot/runner/`). ## Documentación técnica Ver carpeta [docs/](docs/) para documentación transversal (instalación, lazy loading, QWeb, etc.).