# US-MGN-005-006-002: Valoración de Inventario Promedio **RF Asociado:** [RF-MGN-005-006](../../02-modelado/requerimientos-funcionales/mgn-005/RF-MGN-005-006-valoración-de-inventario-fifo,-promedio.md) **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 --- ## Referencias - [RF-MGN-005-006](../../02-modelado/requerimientos-funcionales/mgn-005/RF-MGN-005-006-valoración-de-inventario-fifo,-promedio.md) - [ET Backend](../../02-modelado/especificaciones-tecnicas/backend/mgn-005/ET-BACKEND-MGN-005-006-valoración-de-inventario-fifo-promedio.md) - [ET Frontend](../../02-modelado/especificaciones-tecnicas/frontend/mgn-005/ET-FRONTEND-MGN-005-006-valoración-de-inventario-fifo-promedio.md) - [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-005.yaml) - [Schema](../../02-modelado/database-design/schemas/inventory-schema-ddl.sql)