# US-MGN-005-005-001: Crear Ajuste de Inventario **RF Asociado:** [RF-MGN-005-007](../../02-modelado/requerimientos-funcionales/mgn-005/RF-MGN-005-007-inventario-físico-y-ajustes.md) **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 - [RF-MGN-005-007](../../02-modelado/requerimientos-funcionales/mgn-005/RF-MGN-005-007-inventario-físico-y-ajustes.md) - [ET Backend](../../02-modelado/especificaciones-tecnicas/backend/mgn-005/ET-BACKEND-MGN-005-007-inventario-físico-y-ajustes.md) - [ET Frontend](../../02-modelado/especificaciones-tecnicas/frontend/mgn-005/ET-FRONTEND-MGN-005-007-inventario-físico-y-ajustes.md) - [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-005.yaml) - [Schema](../../02-modelado/database-design/schemas/inventory-schema-ddl.sql)