feat(stock): reservar stock al pasar expedición a EnTransito #9
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
feat(stock): reservar stock al pasar expedición a EnTransito
Contexto
Actualmente el módulo Expeditions permite:
Sin embargo, cuando una expedición pasa a EnTransito el sistema no reserva los productos utilizados, por lo que esos mismos
stockitem_idpodrían ser utilizados por otras expediciones.Esto rompe el escenario operativo real:
Para resolverlo, al pasar una expedición a EnTransito se deben crear reservas de stock.
Objetivo
Cuando una expedición pase de:
Emitida → EnTransito
el sistema debe crear registros en:
PhLSM_StockReservation
para bloquear los
stockitem_idutilizados en esa expedición.Esto evitará que esos productos puedan ser utilizados por otras expediciones mientras están reservados para esa cirugía.
Modelo de datos involucrado
Tablas principales:
PhLSM_ExpeditionPhLSM_ExpeditionDetailsPhLSM_StockItemPhLSM_StockReservationCada
ExpeditionDetailya persiste:La tabla
PhLSM_StockReservationcontiene:Convenciones actuales del sistema:
Comportamiento esperado
Cuando se ejecute:
el sistema debe:
ExpeditionDetailsstockitem_idgenerar una reservaEstructura de la reserva
Para cada
ExpeditionDetailse debe crear:Consistencia de stock
El sistema actualmente calcula disponibilidad usando:
Por lo tanto, además de crear el registro en
PhLSM_StockReservation, la operación deberá:para reflejar correctamente la reserva en el cálculo de disponibilidad.
Reglas de negocio
ExpeditionDetailCriterios de aceptación
✔ al ejecutar
MarkInTransitAsyncse crean reservas✔ cada
ExpeditionDetailgenera una reserva✔ no se crean duplicados
✔ las reservas quedan asociadas al
stockitem_id✔
PhLSM_StockItem.reserved_quantityse actualiza correctamente✔ la transición de estado y la reserva ocurren en una sola transacción
✔ los mensajes de error están en español
Alcance técnico
Capas afectadas:
Data
Crear repositorio:
Responsabilidades:
reserved_quantityDomain
Usar entidad existente:
(No modificar modelos EF scaffolded)
Core
Actualizar lógica en:
La operación deberá:
reserved_quantityEnTransitoAPI
No requiere cambios.
Se reutiliza endpoint actual.
UI
No requiere cambios.
El botón Enviar / EnTransito ya existe en:
Fuera de alcance
No incluye:
StockReservationEstas funcionalidades se abordarán en futuras stories.
Branch
Checklist técnico
IPhLSMStockReservationRepositoryPhLSMStockReservationRepositoryExpeditionServiceMarkInTransitAsyncreserved_quantityResultado esperado
Al pasar una expedición a EnTransito: