[REF] stock_picking_batch_collect: rename and drop the aplicoop dependency
"custom" said nothing about what the module does. It is really about collecting goods into baskets: the extra detailed-operation columns, the is_collected flag, the Product Summary tab, the per-company validation restrictions and the Basket Assembly operator view all serve that one job. Rename it accordingly. Invert the dependency while at it. A generic warehouse addon was dragging in an entire eCommerce application, and the whole coupling was a single field: stock.move.line.home_delivery, related to picking_id.home_delivery. Everything else was already duck-typed. website_sale_aplicoop now depends on this module and injects its own consumer group columns into these views. This removes duplicated logic rather than relocating it: stock.picking .batch_consumer_group_id re-derived from sale_id a value aplicoop already stored as stock.picking.consumer_group_id, and the duplicate carried no @api.depends, so it never recomputed reliably. The batch transfers list now shows the stored field, which is sortable and groupable. The two aplicoop tests that probed information_schema for the res_company batch_* columns can drop that guard: a real dependency guarantees them. Renaming an addon is not something a migrations/ script can do, since a renamed addon is a brand new module to Odoo and its migration scripts never run. A pre_init_hook does it instead: it fires on install after the Python is imported but before registry.load(), which is the window where remapping ir_model_data makes Odoo reuse the existing tables and columns. is_collected, the summary line table and the company settings all survive untouched. Two details the hook has to get right: - ir_model_constraint.module and ir_model_relation.module are integer FKs with ON DELETE CASCADE, so they must be repointed before the old module row is deleted or the bookkeeping goes with it. - Deleting an ir_model_data row does not cascade to the record it points at. Artifacts handed over to aplicoop only need the xmlid dropped, but artifacts that disappear need the record deleted too, or the field survives as an orphan manual field and the view as a custom view referencing it. Verified against a restored copy of the dev database: 50 xmlids moved, 19 summary lines and 5 collected move lines preserved, no orphans, both test suites green, and the module installs cleanly on a database without website_sale_aplicoop. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
704f0def1b
commit
ef1283be7c
42 changed files with 926 additions and 709 deletions
127
stock_picking_batch_collect/README.rst
Normal file
127
stock_picking_batch_collect/README.rst
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
===========================
|
||||
Stock Picking Batch Collect
|
||||
===========================
|
||||
|
||||
Visión general
|
||||
==============
|
||||
Este módulo convierte un lote de picking en una hoja de trabajo para el operario
|
||||
que monta las cestas: amplía las operaciones detalladas, añade un resumen por
|
||||
producto y una vista a pantalla completa para el almacén.
|
||||
|
||||
- ``picking_partner_id`` (Partner del albarán) para que el personal de almacén
|
||||
identifique rápido el cliente/proveedor.
|
||||
- ``product_categ_id`` (Categoría de producto) para ordenar y agrupar. Las
|
||||
líneas del lote se ordenan por categoría, producto y partner.
|
||||
- ``product_default_code`` (Referencia interna) como columna opcional.
|
||||
- ``is_collected`` (Recogido) como check manual en cada línea para marcar si se
|
||||
ha recolectado.
|
||||
- Nueva pestaña **Product Summary** con totales por producto (demandado, hecho,
|
||||
pendiente), categoría y el check de recogido consolidado.
|
||||
- Botón **Basket Assembly**: una vista de lista a pantalla completa, con
|
||||
cantidades grandes y controles táctiles, pensada para tablet en el almacén.
|
||||
- Restricciones de validación configurables por compañía: el lote no se puede
|
||||
validar hasta que las líneas estén marcadas como recogidas.
|
||||
|
||||
Las columnas se añaden con ``optional="show"`` en la vista de líneas del lote
|
||||
(salvo ``product_default_code``, oculta por defecto), de modo que el usuario
|
||||
puede desactivarlas desde el selector de columnas sin recargar la vista.
|
||||
|
||||
Si además está instalado ``website_sale_aplicoop``, ese módulo añade a estas
|
||||
mismas vistas las columnas de grupo de consumo (**Consumer Group** y **Home
|
||||
Delivery**). Este módulo no depende de él: funciona igual sin la parte de
|
||||
eCommerce.
|
||||
|
||||
Instalación
|
||||
===========
|
||||
|
||||
Actualizar o instalar el módulo:
|
||||
|
||||
::
|
||||
|
||||
docker-compose run --rm odoo odoo -d odoo --stop-after-init -u stock_picking_batch_collect
|
||||
|
||||
Este módulo sustituye a ``stock_picking_batch_custom``. Al instalarlo sobre una
|
||||
base de datos que tuviera el módulo antiguo, un ``pre_init_hook`` adopta sus
|
||||
datos (ver ``hooks.py``): se conservan las líneas recogidas, el resumen por
|
||||
producto y la configuración por compañía.
|
||||
|
||||
Configuración
|
||||
=============
|
||||
|
||||
Restricciones de validación
|
||||
---------------------------
|
||||
|
||||
En **Inventory > Configuration > Settings**, bloque *Operations*, hay dos
|
||||
ajustes por compañía:
|
||||
|
||||
- **Restricciones del resumen de productos**: exige que las líneas de la
|
||||
pestaña *Product Summary* estén marcadas como recogidas para validar el lote.
|
||||
Desactivado por defecto (el check es sólo informativo).
|
||||
- **Restricciones de operaciones detalladas**: exige que las líneas de la
|
||||
pestaña *Detailed Operations* estén marcadas como recogidas.
|
||||
**Activado por defecto**: recién instalado el módulo, un lote no se puede
|
||||
validar hasta marcar las líneas.
|
||||
|
||||
Cada restricción tiene un alcance:
|
||||
|
||||
- *Sólo procesadas*: se comprueban únicamente las líneas con cantidad hecha
|
||||
mayor que cero (por defecto).
|
||||
- *Todas*: se comprueban todas las líneas del lote, procesadas o no.
|
||||
|
||||
Columnas
|
||||
--------
|
||||
|
||||
Las columnas están visibles por defecto. Para ajustarlas:
|
||||
|
||||
- Abrir un **Lote de picking**.
|
||||
- Ir a la pestaña **Detailed Operations**.
|
||||
- Abrir el **selector de columnas** y activar o desactivar *Partner*,
|
||||
*Product Category*, *Product Code* o *Collected* según necesidad.
|
||||
|
||||
Uso
|
||||
===
|
||||
|
||||
1. Accede a **Inventory > Operations > Batch Transfers** y abre un lote.
|
||||
2. Pestaña **Detailed Operations**: usa el selector de columnas para ajustar:
|
||||
|
||||
- **Partner** (``picking_partner_id``) para ver el cliente/proveedor.
|
||||
- **Product Category** (``product_categ_id``) para ordenar/agrupación por categoría.
|
||||
- **Collected** (``is_collected``) para marcar manualmente líneas recolectadas.
|
||||
|
||||
3. Pestaña **Product Summary**: consulta los totales por producto (demandado,
|
||||
hecho y pendiente) y marca el check de recogido consolidado si corresponde.
|
||||
|
||||
4. Con el lote **en progreso**, el botón **Basket Assembly** abre la vista de
|
||||
operario: la misma lista de líneas a pantalla completa, con la cantidad en
|
||||
grande y el check *Collected* como interruptor táctil. Está pensada para
|
||||
trabajar desde una tablet mientras se montan las cestas.
|
||||
|
||||
5. Ordena o agrupa por categoría en cualquiera de las vistas según convenga.
|
||||
|
||||
6. La cantidad que teclea el operario (el peso real de la balanza) queda fijada:
|
||||
se marca como *Picked* y ni el planificador ni la validación de otros
|
||||
albaranes vuelven a modificarla. Marcar **Collected** protege igualmente la
|
||||
cantidad de la línea. Ver ``stock_move_manual_quantity``.
|
||||
|
||||
7. Al validar el lote, según la configuración de la compañía, se comprueba que
|
||||
las líneas estén recogidas y se avisa con la lista de productos pendientes.
|
||||
La comprobación se ejecuta después de resolver el backorder, de modo que
|
||||
sólo bloquea sobre las líneas que realmente se van a procesar.
|
||||
|
||||
Contribuidores
|
||||
==============
|
||||
|
||||
* Criptomart
|
||||
|
||||
Créditos
|
||||
========
|
||||
|
||||
Autor
|
||||
-----
|
||||
|
||||
* Criptomart
|
||||
|
||||
Financiador
|
||||
-----------
|
||||
|
||||
* Elika Bilbo
|
||||
Loading…
Add table
Add a link
Reference in a new issue