Odoo addons personalizados por Criptomart
Find a file
GitHub Copilot d433e50f2f [ADD] stock_move_manual_quantity: a hand-typed quantity is the picked one
An operator weighing a basket types 0.87 kg where the member ordered 1 kg,
and a few hours later the line is back at 1 kg. Raising the quantity never
reverts. The asymmetry is the reservation engine: below the demand the move
goes back to `partially_available` (`_recompute_state`), which is exactly
the state `_action_assign` looks for, while above it stays `assigned` and
matches no domain.

Two things call `_action_assign` on their own: the `Procurement: run
scheduler` cron, and `_trigger_assign`, which runs every time another
transfer of the same product is validated -- the second explains the "a few
hours" better than a daily cron. Both respect one flag only, `picked`, and
nobody was setting it: the checkbox is `optional="hide"` on the transfer
form and absent from the detailed operation lists.

So an onchange on `quantity` marks the record as picked. Onchanges only run
from the interface, never from the reservation engine, so a manual edit is
told apart from a reservation without guessing at contexts, and if the
onchange ever stops firing the behaviour degrades to today's instead of
freezing reservations across the system. `picked` also keeps
`_free_reservation` from stealing the quantity when stock runs short
elsewhere. The three lists where a quantity can be typed now load the field,
since the client only sends back what the arch declares.

When the typed quantity is below the demand, the demand follows it down. The
move stays `assigned` and no backorder is asked for a weight that will never
be completed. Only downwards: above the demand nothing needs adjusting. A
line left at zero keeps its demand, so a transfer still offers its usual
backorder choice for what was not delivered, and chained moves are only
frozen -- lowering their demand would leave the next step of the route
asking for more than this one delivers.

`_pre_action_done_hook` needs the counterpart. Core auto-picks a transfer
only when *no* move is picked yet, so freezing one weighed line would push
the untouched ones to a backorder, or cancel them if the user answers "no
backorder", with the goods already in the basket. Picking everything that
carries a quantity keeps validation exactly as operators know it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 13:26:44 +02:00
.claude [IMP] website_sale_aplicoop: accessibility and responsive polish — phase 8 2026-08-16 11:34:38 +02:00
.github [ADD] website_sale_lazy_loading: load the /shop listing on demand 2026-08-24 12:33:09 +02:00
.vscode build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
account_banking_mandate_batch acción de servidor para crear mandatos bancarios en lote 2026-08-07 16:38:15 +02:00
account_invoice_triple_discount_readonly iconos 2026-02-25 18:41:16 +01:00
docs [IMP] website_sale_aplicoop: accessibility and responsive polish — phase 8 2026-08-16 11:34:38 +02:00
l10n_es_edi_tbai_reagyp_recibidas Revert "[FIX] l10n_es_edi_tbai_reagyp_recibidas: fix chaining within same invoice series" 2026-07-31 19:11:49 +02:00
l10n_es_partner_ccpae addons portados en el repo de ecocentral 2026-08-07 16:34:38 +02:00
membership_expiry_reminder cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
membership_monthly_invoicing create monthly recurring membership lines 2026-06-02 14:22:13 +02:00
membership_payment_date #2 #3 add membership_payment_date: membership start date -> payment date. Don't overlap membership periods on renewals 2026-07-14 11:56:57 +02:00
portal_event_registration cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
pos_account_payment_order_sepa paso a pos.sessions más natural, los apuntes están ahí. 2026-06-26 19:57:07 +02:00
pos_full_refund addons portados en el repo de ecocentral 2026-08-07 16:34:38 +02:00
pos_order_reorder addons portados en el repo de ecocentral 2026-08-07 16:34:38 +02:00
pos_payment_method_cashdro_fix [IMP] docker-compose: host paths in .env, override merged in 2026-08-17 13:57:25 +02:00
pos_payment_method_cashdro_rounding [ADD] pos_payment_method_cashdro_rounding: migration to 18.0 2026-08-11 13:30:49 +02:00
product_origin_char [I18N] website_sale_aplicoop, product_origin_char: add Catalan translation 2026-08-13 11:52:54 +02:00
product_price_category_supplier iconos 2026-02-25 18:41:16 +01:00
product_pricelist_total_margin iconos 2026-02-25 18:41:16 +01:00
product_public_category_from_internal [ADD] product_public_category_from_internal: mirror internal categories into eCommerce ones 2026-08-17 19:42:01 +02:00
product_sale_price_from_pricelist [ADD] product_sale_price_from_pricelist: server action to bulk-correct purchase price from supplierinfo 2026-06-12 16:30:15 +02:00
purchase_rappel Ecocentral/ecocentral#172: migrate purchase_rappel to 18.0 2026-06-23 14:30:03 +02:00
scripts [I18N] website_sale_aplicoop: Limpieza de traducciones y etiquetas UI en inglés por defecto 2026-02-26 14:33:44 +01:00
setup build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
sort_lines_by_product_name addons portados en el repo de ecocentral 2026-08-07 16:34:38 +02:00
stock_move_manual_quantity [ADD] stock_move_manual_quantity: a hand-typed quantity is the picked one 2026-08-27 13:26:44 +02:00
stock_picking_batch_custom [IMP] stock_picking_batch_custom: allow deleting operator lines, show picking reference 2026-07-15 16:26:14 +02:00
stock_picking_report_undelivered_product addons portados en el repo de ecocentral 2026-08-07 16:34:38 +02:00
website_membership_associate add website_membership_associate 2026-07-28 09:29:14 +02:00
website_membership_signup_required website_membership_signup_required: fix reset_password form 2026-07-27 11:25:19 +02:00
website_sale_aplicoop [IMP] website_sale_aplicoop: pay on the checkout page, not a step later 2026-08-17 19:14:49 +02:00
website_sale_disable_cart [ADD] website_sale_disable_cart: extract cart restriction from website_sale_aplicoop 2026-08-06 11:34:59 +02:00
website_sale_lazy_loading [I18N] website_sale_lazy_loading: add es, ca, eu and gl translations 2026-08-24 13:06:00 +02:00
.editorconfig build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
.env.example [IMP] docker-compose: host paths in .env, override merged in 2026-08-17 13:57:25 +02:00
.flake8 cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
.gitignore [REM] CLAUDE.md: untrack it, ignored like the rest of the agent config 2026-08-11 13:32:36 +02:00
.isort.cfg build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
.pre-commit-config.yaml cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
.prettierignore [FIX] product_sale_price_from_pricelist: Actualizar tests para Odoo 18 2026-02-12 19:23:29 +01:00
.prettierrc.yml [REF] website_sale_aplicoop: Mejorar legibilidad del XML (reformatear con mejor indentación) 2026-02-26 14:59:34 +01:00
.pylintrc cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
.pylintrc-mandatory cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
check_addon.sh build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
check_tax_config.sh Revertir cambio: eliminar cálculo duplicado de impuestos 2026-02-11 19:54:28 +01:00
docker-compose.yml [IMP] docker-compose: host paths in .env, override merged in 2026-08-17 13:57:25 +02:00
eslint.config.js [CHORE] Add ESLint configuration file 2026-02-17 01:29:17 +01:00
Makefile build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
oca_dependencies.txt build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00
odoo.conf docker test files 2026-02-11 15:33:31 +01:00
pyproject.toml cron better exception management. show supplier commercial name in product card template. linters config 2026-06-02 10:43:54 +02:00
README.md [DOC] actualizar y sincronizar documentación de todos los addons 2026-05-20 16:27:17 +02:00
requirements.txt build: configurar herramientas de verificación OCA 2026-02-11 16:09:41 +01:00

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 incorporados al repositorio. No se modifican salvo hotfixes puntuales.

Addon Versión Descripción
account_invoice_triple_discount 18.0.1.0.0 Triple descuento en líneas de factura
product_get_price_helper 18.0.1.1.0 Helper para obtener precios de producto respetando tarifas
product_main_seller 18.0.1.0.0 Campo "proveedor principal" en producto
product_origin_char 18.0.2.0.0 Campo de texto libre para origen del producto
product_price_category 18.0.1.0.0 Categoría de precio en producto + aplicación masiva vía tarifas
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 18.0.1.0.0 Corrige bug de acumulación de descuentos y pone descuento total en solo lectura
membership_expiry_reminder 18.0.1.0.0 Recordatorio por email de membresías próximas a vencer
portal_event_registration 18.0.1.0.0 Vista portal de inscripciones a eventos con adjuntos al chatter
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 18.0.1.2.0 Margen aditivo (no compuesto) en tarifas encadenadas, con límites globales
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_custom 18.0.1.0.0 Columnas extra en operaciones detalladas de lotes: partner, categoría, recogido
website_sale_aplicoop 18.0.1.9.0 Sistema de pedidos colaborativos para grupos de consumo (reemplazo de Aplicoop)

Dependencias entre addons custom

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

account_invoice_triple_discount_readonly
  └── account_invoice_triple_discount
  └── purchase_triple_discount

Desarrollo

Instalación / actualización de un addon

docker-compose exec -T odoo odoo -d odoo -u <nombre_addon> --stop-after-init

Tests

docker-compose exec -T odoo odoo -d odoo --test-enable --stop-after-init -u <nombre_addon>

Linters

# Python
black . && isort . && flake8 . && pylint --load-plugins=pylint_odoo <addon>/

# JS
npx eslint <addon>/static/src/

Ver docs/LINTERS_README.md para configuración completa.

Traducciones

Ver docs/TRANSLATIONS.md.

Documentación técnica

Ver carpeta docs/ para documentación transversal (instalación, lazy loading, QWeb, etc.).