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>
104 lines
4.9 KiB
Markdown
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.).
|