erp-core/docs/05-user-stories/mgn-005/US-MGN-005-005-001-crear-ajuste-inventario.md

3.4 KiB

US-MGN-005-005-001: Crear Ajuste de Inventario

RF Asociado: RF-MGN-005-007 Módulo: MGN-005 - Inventario Básico Epic: Ajustes de Inventario Prioridad: P0 Story Points: 4 Sprint: Sprint 11 Estado: Ready for Development Fecha: 2025-11-24


User Story

Como usuario de inventario, Quiero crear ajustes de inventario para corregir diferencias entre stock físico y sistema, Para mantener la precisión del inventario tras conteos físicos.


Descripción Detallada

Los ajustes de inventario se usan cuando el conteo físico no coincide con el sistema. Tienen líneas con:

  • Producto y ubicación
  • Cantidad teórica (sistema)
  • Cantidad contada (física)
  • Diferencia (contada - teórica)

Al validar, se generan movimientos de stock automáticamente para ajustar a la cantidad real.


Criterios de Aceptación

Escenario 1: Crear ajuste con diferencias positivas y negativas (Camino Feliz)

Dado que creo ajuste con líneas: Producto A (teórica=10, contada=12, diff=+2), Producto B (teórica=5, contada=3, diff=-2), Cuando guardo el ajuste, Entonces el sistema crea ajuste en estado draft con las líneas.

Escenario 2: Calcular diferencia automáticamente

Dado que ingreso cantidad teórica=10 y contada=8, Cuando guardo la línea, Entonces el sistema calcula diferencia=-2 automáticamente.

Escenario 3: Validar producto y ubicación existen

Dado que ingreso product_id=999 (no existe), Cuando intento guardar, Entonces el sistema retorna error 404 "Producto no encontrado".


Reglas de Negocio

  • RN-1: Ajustes se crean en estado draft.
  • RN-2: Diferencia = cantidad_contada - cantidad_teórica.
  • RN-3: Ajustes pueden tener líneas positivas y negativas.
  • RN-4: Al validar se generan movimientos de stock automáticamente.

Tareas Técnicas

Backend

  • Endpoint: POST /api/v1/inventory/adjustments
  • Service: InventoryAdjustmentService.create(dto)
  • DTO: CreateAdjustmentDto, AdjustmentLineDto
  • Unit tests (>80%)
  • Integration tests
  • Swagger docs

Frontend

  • Componente: CreateAdjustmentForm.tsx
  • Tabla editable de líneas
  • Cálculo automático de diferencias
  • Component tests
  • E2E test

Database

  • Tabla: inventory.inventory_adjustments
  • Tabla: inventory.inventory_adjustment_lines
  • RLS policy: company_isolation

Estimación Detallada

Tarea Horas
Backend 2
Frontend 2.5
Testing 1.5
Code Review 0.5
TOTAL 6.5 horas = 4 SP

Definition of Done

  • Código implementado según ET
  • Tests pasando (>80%)
  • Code review aprobado
  • QA validado
  • PO aprobado

Referencias