3.6 KiB
US-MGN-005-006-002: Valoración de Inventario Promedio
RF Asociado: RF-MGN-005-006 Módulo: MGN-005 - Inventario Básico Epic: Valoración de Inventario Prioridad: P0 Story Points: 5 Sprint: Sprint 11 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como usuario financiero, Quiero que el sistema calcule la valoración de inventario usando método Promedio Ponderado, Para simplificar la contabilidad y conocer el costo promedio del stock.
Descripción Detallada
El método Promedio Ponderado calcula un costo unitario promedio que se actualiza con cada entrada:
Nuevo Costo Promedio = (Valor Stock Actual + Valor Entrada) / (Cantidad Actual + Cantidad Entrada)
Al consumir stock, se usa el costo promedio actual. No se mantienen capas separadas como en FIFO.
Criterios de Aceptación
Escenario 1: Calcular costo promedio en entrada (Camino Feliz)
Dado que tengo stock: qty=10, avg_cost=100 (valor=1000), recibo 5 unidades a cost=120 (valor=600), Cuando valido la entrada, Entonces el sistema calcula: nuevo_avg_cost = (1000+600)/(10+5) = 106.67, qty=15.
Escenario 2: Consumir stock con costo promedio
Dado que stock tiene qty=15, avg_cost=106.67, Cuando consumo 5 unidades, Entonces el sistema valora salida en 5×106.67=533.35, queda qty=10, avg_cost=106.67.
Escenario 3: Recalcular costo promedio tras múltiples movimientos
Dado que hay múltiples entradas y salidas, Cuando consulto costo promedio actual, Entonces el sistema retorna el avg_cost actualizado del producto.
Reglas de Negocio
- RN-1: Costo promedio se recalcula con cada entrada.
- RN-2: Salidas usan el costo promedio actual.
- RN-3: No se mantienen capas de valoración (simplificado vs FIFO).
- RN-4: Costo promedio se guarda en inventory.products.standard_price.
Tareas Técnicas
Backend
- Service: ValuationService.calculateAverageCost(product, entry)
- Service: ValuationService.updateAverageCost(productId, newCost)
- Service: ValuationService.valueExitAverage(product, quantity)
- Algoritmo costo promedio ponderado
- Unit tests (>80%)
- Integration tests
- Swagger docs
Frontend
- Componente: AverageCostReport.tsx
- Gráfico evolución de costo promedio
- API client: valuationApi
- Component tests
- E2E test
Database
- Campo: inventory.products.standard_price (costo promedio actual)
- Índices: idx_products_company_id
- Trigger: actualizar standard_price en movimientos
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 3 |
| Frontend | 2.5 |
| Testing | 2 |
| Code Review | 0.5 |
| TOTAL | 8 horas = 5 SP |
Definition of Done
- Código implementado según ET
- Tests pasando (>80%)
- Code review aprobado
- Algoritmo promedio correcto
- QA validado
- PO aprobado