[FIX] stock_picking_batch_custom: prevent product_id null error on summary lines

- Use regular dict instead of defaultdict to avoid empty entries
- Make summary_line_ids readonly=True to prevent UI from inserting empty lines
- Add SQL constraint CHECK(product_id IS NOT NULL) as safeguard
- Use boolean_toggle widget for is_collected field
- Fix tests to use TransactionCase and invalidate_recordset
- Add test for empty batch + add pickings + confirm flow
This commit is contained in:
snt 2026-03-05 21:47:18 +01:00
parent ad8b759643
commit 3eeca66551
5 changed files with 304 additions and 45 deletions

View file

@ -1,13 +1,66 @@
===============================
============================
Stock Picking Batch Custom
===============================
============================
.. contents::
:local:
Visión general
==============
Este módulo amplía las operaciones detalladas y añade un resumen por producto
en los lotes de picking:
.. include:: readme/DESCRIPTION.rst
.. include:: readme/INSTALL.rst
.. include:: readme/CONFIGURE.rst
.. include:: readme/USAGE.rst
.. include:: readme/CONTRIBUTORS.rst
.. include:: readme/CREDITS.rst
- ``picking_partner_id`` (Partner del albarán) para identificar cliente/proveedor.
- ``product_categ_id`` (Categoría de producto) para ordenar y agrupar.
- ``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.
Instalación
===========
Actualizar o instalar el módulo:
::
docker-compose run --rm odoo odoo -d odoo --stop-after-init -u stock_picking_batch_custom
Configuración
=============
No requiere configuración adicional. Para usar las columnas:
- Abrir un **Lote de picking**.
- Ir a la pestaña **Detailed Operations**.
- Abrir el **selector de columnas** y activar *Partner*, *Product Category* y *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 activar:
- **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. Ordena o agrupa por categoría en cualquiera de las vistas según convenga.
Contribuidores
==============
* Criptomart
Créditos
========
Autor
-----
* Criptomart
Financiador
-----------
* Elika Bilbo