Persistir stockitem_id en ExpeditionDetail (base trazabilidad) #3

Closed
opened 2026-02-12 23:07:32 +00:00 by leandro · 0 comments
Owner

🔴 Contexto

Actualmente, en el módulo de Expeditions, el flujo permite seleccionar stock real (incluye StockItemId durante el proceso de selección), pero ese vínculo no se persiste en PhLSM_ExpeditionDetails.

Esto implica que:

No existe trazabilidad real por unidad (especialmente para productos serializados).

No se puede garantizar bloqueo de doble traza.

No se puede mover físicamente el stock correcto en estados logísticos (Ej. En Tránsito).

Se pierde auditoría exacta de qué unidad/lote fue emitida.

Esta es una deuda técnica crítica que debe resolverse antes de implementar estados logísticos avanzados.

🎯 Objetivo

Persistir el vínculo ExpeditionDetail → StockItem mediante la columna stockitem_id.

Esto permitirá:

Bloqueo real de doble trazabilidad.

Implementación correcta de reservas.

Movimiento físico exacto de stock.

Auditoría por unidad.

📦 Alcance
DATA

Agregar columna stockitem_id INT NULL en PhLSM_ExpeditionDetails.

Crear FK hacia PhLSM_StockItem(id).

Crear índice IX_PhLSM_ExpeditionDetails_stockitem_id.

Nota: Se mantiene NULL para compatibilidad con expediciones históricas.

DOMAIN

Agregar propiedad StockItemId en ELSExpeditionDetail.

MODELS (EF)

Agregar StockitemId en PhLsmExpeditionDetail.

Ajustar mapeos correspondientes.

CORE

Ajustar CreateFullExpeditionAsync para persistir stockitem_id.

Ajustar EntityMapper.MapEntity para incluir la nueva propiedad.

UI

Verificar que StockItemId seleccionado en el flujo de creación se propague correctamente al DTO final.

Criterios de aceptación

Una nueva expedición persiste stockitem_id por cada renglón seleccionado desde stock.

Expediciones anteriores (sin stockitem_id) continúan funcionando sin ruptura.

No se rompen endpoints existentes.

La impresión PDF continúa funcionando correctamente.

🔗 Dependencias

Bloquea directamente:

Implementación real de reservas.

Estado logístico En Tránsito.

Movimiento físico de stock.

Control de doble traza.

🧠 Impacto

Esta incidencia es estructural y debe completarse antes de cualquier mejora logística.

🔴 Contexto Actualmente, en el módulo de Expeditions, el flujo permite seleccionar stock real (incluye StockItemId durante el proceso de selección), pero ese vínculo no se persiste en PhLSM_ExpeditionDetails. Esto implica que: No existe trazabilidad real por unidad (especialmente para productos serializados). No se puede garantizar bloqueo de doble traza. No se puede mover físicamente el stock correcto en estados logísticos (Ej. En Tránsito). Se pierde auditoría exacta de qué unidad/lote fue emitida. Esta es una deuda técnica crítica que debe resolverse antes de implementar estados logísticos avanzados. 🎯 Objetivo Persistir el vínculo ExpeditionDetail → StockItem mediante la columna stockitem_id. Esto permitirá: Bloqueo real de doble trazabilidad. Implementación correcta de reservas. Movimiento físico exacto de stock. Auditoría por unidad. 📦 Alcance DATA Agregar columna stockitem_id INT NULL en PhLSM_ExpeditionDetails. Crear FK hacia PhLSM_StockItem(id). Crear índice IX_PhLSM_ExpeditionDetails_stockitem_id. Nota: Se mantiene NULL para compatibilidad con expediciones históricas. DOMAIN Agregar propiedad StockItemId en ELSExpeditionDetail. MODELS (EF) Agregar StockitemId en PhLsmExpeditionDetail. Ajustar mapeos correspondientes. CORE Ajustar CreateFullExpeditionAsync para persistir stockitem_id. Ajustar EntityMapper.MapEntity para incluir la nueva propiedad. UI Verificar que StockItemId seleccionado en el flujo de creación se propague correctamente al DTO final. ✅ Criterios de aceptación Una nueva expedición persiste stockitem_id por cada renglón seleccionado desde stock. Expediciones anteriores (sin stockitem_id) continúan funcionando sin ruptura. No se rompen endpoints existentes. La impresión PDF continúa funcionando correctamente. 🔗 Dependencias Bloquea directamente: Implementación real de reservas. Estado logístico En Tránsito. Movimiento físico de stock. Control de doble traza. 🧠 Impacto Esta incidencia es estructural y debe completarse antes de cualquier mejora logística.
leandro added this to the Expeditions milestone 2026-02-12 23:07:32 +00:00
leandro added the
STORY
label 2026-02-12 23:07:32 +00:00
leandro self-assigned this 2026-02-12 23:07:32 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-02-12 23:07:32 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-12 03:08:31 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-12 03:08:35 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-12 03:08:42 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-15 14:28:56 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-16 22:47:27 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-16 22:47:29 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:36 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:37 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:39 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:40 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:42 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:45 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:47 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:49 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:51 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:52 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-24 20:24:05 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-24 20:24:07 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-25 13:27:46 +00:00
Sign in to join this conversation.
No Milestone Expeditions
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leandro/phronCare#3
No description provided.