addons-cm/README.md
GitHub Copilot d9d9e8be2d
[ADD] ci: Forgejo Actions CI and Claude bots ported from ecocentral
Same system as ecocentral-18 (see its docs/CI-CD.md):

- ci.yml: lint (pre-commit), test (tools/ci/run_tests.py, OCA-style
  two-phase install) and review (PR bot, after lint and test).
- issue-bot.yml: the issue bot answers issues or opens a PR on bot/issue-N.
- pr-bot.yml: review when WIP is removed or the i18n label is added.
- .gitea/issue-bot.md: context for the bots; this repo is shared by
  several clients.

The bot scripts are copies of ecocentral's. Only the defaults differ (repo,
token and state files, i18n languages es,eu,ca,gl) along with the [I18N]
commit message and the references to the runner's sources.txt.

The jobs run on a second forgejo-runner registration (CriptoMart org) on
ecocentral's runner machine, sharing its image, mounts and cache. The
runner files (Dockerfile, update.sh, sources.txt) live in ecocentral.
Specific to this repo:

- ODOO_SRC_SKIP: the runner's /odoo-src/18.0 holds a clone of addons-cm,
  so test skips it and checks the PR checkout instead.
- BOT_BASE_BRANCH "18.0": the repo's default branch is 16.0.
- test PostgreSQL on port 54330: ecocentral's runs on 54329 and a test job
  from each repo can run at the same time.

The lint job fails until the repo is cleaned up with
pre-commit run --all-files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 14:34:58 +02:00

104 lines
4.9 KiB
Markdown

# 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_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 <nombre_addon> --stop-after-init
```
### Tests
```bash
docker-compose exec -T odoo odoo -d odoo --test-enable --stop-after-init -u <nombre_addon>
```
### Linters
```bash
# Python
black . && isort . && flake8 . && pylint --load-plugins=pylint_odoo <addon>/
# JS
npx eslint <addon>/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.).