# US-MGN-005-007-001: Reporte de Inventario Valorizado

**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:** Reportes de Inventario
**Prioridad:** P0
**Story Points:** 3
**Sprint:** Sprint 12
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** usuario financiero,
**Quiero** generar reporte de inventario valorizado,
**Para** conocer el valor total del stock por producto, categoría y ubicación.

---

## Descripción Detallada
El reporte muestra para cada producto:
- SKU y nombre
- Cantidad en stock
- Costo unitario (según método: FIFO o Promedio)
- Valor total (cantidad × costo)
- Agrupaciones por categoría, almacén, ubicación

Incluye totales y subtotales por agrupación.

---

## Criterios de Aceptación

### Escenario 1: Generar reporte completo (Camino Feliz)
**Dado que** hay productos con stock y valoración,
**Cuando** genero el reporte,
**Entonces** el sistema muestra: SKU, nombre, qty, costo, valor_total por producto.

### Escenario 2: Filtrar por categoría
**Dado que** filtro por category_id=1,
**Cuando** genero el reporte,
**Entonces** el sistema muestra solo productos de esa categoría con sus valores.

### Escenario 3: Agrupar por ubicación
**Dado que** selecciono agrupar por ubicación,
**Cuando** genero el reporte,
**Entonces** el sistema muestra productos agrupados por ubicación con subtotales.

### Escenario 4: Exportar a Excel
**Dado que** genero el reporte,
**Cuando** hago clic en "Exportar Excel",
**Entonces** el sistema descarga archivo .xlsx con los datos.

---

## Reglas de Negocio
- **RN-1:** Reporte usa método de valoración configurado (FIFO/Promedio).
- **RN-2:** Solo incluye productos con stock > 0.
- **RN-3:** Incluye totales generales y subtotales por agrupación.
- **RN-4:** Exportable a Excel, PDF, CSV.

---

## Tareas Técnicas

### Backend
- [ ] Endpoint: GET /api/v1/inventory/reports/valuation
- [ ] Service: ReportService.getValuationReport(filters)
- [ ] Query: JOIN products, quants, valuation_layers
- [ ] Agregaciones por categoría/ubicación
- [ ] Export service (Excel, PDF)
- [ ] Unit tests
- [ ] Integration tests
- [ ] Swagger docs

### Frontend
- [ ] Componente: ValuationReportPage.tsx
- [ ] Filtros: categoría, almacén, fecha
- [ ] Tabla con totales/subtotales
- [ ] Botones exportar (Excel, PDF)
- [ ] API client: reportApi.getValuation()
- [ ] Component tests
- [ ] E2E test

### Database
- [ ] View: vw_inventory_valuation
- [ ] Índices optimizados para consulta

---

## Estimación Detallada
| Tarea | Horas |
|-------|-------|
| Backend | 2 |
| Frontend | 2 |
| Testing | 1 |
| Code Review | 0.5 |
| **TOTAL** | **5.5 horas = 3 SP** |

---

## Definition of Done
- [ ] Código implementado según ET
- [ ] Tests pasando (>80%)
- [ ] Code review aprobado
- [ ] Exportación funciona
- [ ] 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)
- [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-005.yaml)
- [Schema](../../02-modelado/database-design/schemas/inventory-schema-ddl.sql)
