Skip to content

[ADD] project_stock_quick: create stock pickings from project tasks - #148

Closed
jcadhoc wants to merge 1 commit into
ingadhoc:19.0from
adhoc-dev:19.0-t-75517-jc
Closed

jcadhoc wants to merge 1 commit into
ingadhoc:19.0from
adhoc-dev:19.0-t-75517-jc

Conversation

@jcadhoc

@jcadhoc jcadhoc commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Qué duele

Cuando una tarea de proyecto mueve material —entregar algo en obra, sacar repuestos del depósito, devolver lo que sobró— la transferencia se crea aparte, desde Inventario, y el vínculo con la tarea queda en la cabeza de quien la hizo. project_stock (nativo, auto_install con project + stock) ya relaciona la transferencia con el proyecto, pero no con la tarea: falta el último eslabón. Desde la tarea no se ve qué material se movió, y desde la transferencia no se sabe a qué trabajo respondía.

Qué cambia

Módulo nuevo project_stock_quick. Replica el patrón de las cotizaciones extra de Servicios de Campo (industry_fsm_sale: casilla en el proyecto → botón de alta en el encabezado de la tarea → botón estadístico con el contador), aplicado a transferencias.

  • project.project.allow_stock_picking — casilla Transfer Management en Ajustes, grupo Inventario (visible para usuarios de Inventario).
  • project.project.picking_type_id y picking_stage_ids — opcionales: tipo de operación por defecto y etapas de la tarea en las que se permite crear transferencias. Vacíos, no restringen nada. Un @api.constrains impide un tipo de operación de otra compañía.
  • stock.picking.task_id — el vínculo que faltaba, al lado del project_id que aporta project_stock.
  • project.task — botón New Transfer en el encabezado y botón estadístico Transfers, ambos limitados a stock.group_stock_user.

task_id es un Many2one plano, sin related ni compute almacenados, para no disparar recálculos sobre un modelo transaccional de alto volumen: proyecto y contacto se propagan por los defaults de la acción y por un onchange. La visibilidad del botón la resuelve display_create_picking_button, y action_create_stock_picking vuelve a validar lo mismo del lado del servidor — esconder un botón no alcanza como control.

Cómo probarlo

  1. Proyecto → pestaña Ajustes → grupo Inventario → activar Transfer Management.
  2. Opcional: completar tipo de operación por defecto y etapas habilitadas.
  3. Abrir una tarea de ese proyecto: aparece New Transfer en el encabezado.
  4. Presionarlo: el formulario abre con contacto, proyecto, compañía y documento de origen cargados. Completar productos y guardar.
  5. Volver a la tarea: el botón estadístico Transfers muestra el contador.
  6. Para enganchar una transferencia existente, completar el campo Task en su formulario.

Verificación

  • Instalación desde cero en base nueva + tests del módulo: 0 failed, 0 error(s) of 11 tests, sin WARNINGs propios.
  • pre-commit en verde sobre los 13 archivos (ruff, ruff-format, pylint-odoo, oca-checks-odoo-module, check xml, rstcheck).
  • No verificado: nada se probó en navegador. El render de los botones y el gating por etapa quedan para la prueba manual / runbot.

Pendiente

  • Falta el icon.png (128×128) en static/description/.
  • Faltan las traducciones (i18n/es.po): el código quedó en inglés, como el resto del repo.

- Add project.project.allow_stock_picking, picking_type_id and
  picking_stage_ids to enable and scope the feature per project
- Add stock.picking.task_id (indexed, check_company) as the missing link;
  project_id already comes from the native project_stock module
- Add project.task picking_ids, picking_count, display_create_picking_button
  and the actions action_create_stock_picking / action_view_stock_pickings,
  which re-validate the same conditions server side
- Plain m2o instead of stored related/compute, per ADR 0003 on transactional
  models; project and partner propagate through onchange and action defaults
- Inherit project.project, project.task and stock.picking forms; header button
  and stat button restricted to stock.group_stock_user
- Add TransactionCase covering the count, the actions, the stage gating and
  the cross company constraint

Change note: En los proyectos donde se active "Transfer Management" (pestaña Ajustes, grupo Inventario), cada tarea suma un botón "New Transfer" que abre una transferencia de inventario con el contacto, el proyecto, la compañía y el documento de origen ya cargados. El proyecto puede fijar un tipo de operación por defecto y limitar en qué etapas de la tarea se permite crear transferencias. La tarea muestra además un contador "Transfers" con los movimientos originados en ella, y una transferencia existente se puede enganchar a una tarea desde el campo "Task" de su formulario. Todo esto lo ven únicamente los usuarios con permisos de Inventario.
@roboadhoc

Copy link
Copy Markdown
Contributor

Pull request status dashboard

@jcadhoc jcadhoc changed the title [WIP] [ADD] project_stock_quick: create stock pickings from project tasks [ADD] project_stock_quick: create stock pickings from project tasks Sep 24, 2026
@les-adhoc

Copy link
Copy Markdown
Contributor

@roboadhoc r+ nobump

@roboadhoc roboadhoc closed this in e9e5f8f Sep 29, 2026
@roboadhoc
roboadhoc deleted the 19.0-t-75517-jc branch September 29, 2026 16:25

This branch was successfully deployed

1 active deployment
merge — 9499039e Deployed Sep 29, 2026 by roboadhoc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants