# US-MGN-005-007-002: Reporte de Movimientos de Stock

**RF Asociado:** [RF-MGN-005-003](../../02-modelado/requerimientos-funcionales/mgn-005/RF-MGN-005-003-movimientos-de-stock.md)
**Módulo:** MGN-005 - Inventario Básico
**Epic:** Reportes de Inventario
**Prioridad:** P0
**Story Points:** 2
**Sprint:** Sprint 12
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** usuario de inventario,
**Quiero** visualizar historial de movimientos de stock con filtros,
**Para** auditar y analizar el flujo de productos.

---

## Descripción Detallada
El reporte muestra todos los movimientos de stock con:
- Fecha
- Producto
- Ubicación origen → destino
- Cantidad
- Tipo de movimiento (entrada, salida, transferencia)
- Referencia (picking, ajuste, etc.)
- Estado

Filtros por fecha, producto, ubicación, tipo.

---

## Criterios de Aceptación

### Escenario 1: Listar movimientos con filtros (Camino Feliz)
**Dado que** hay movimientos validados,
**Cuando** filtro por producto_id=1 y rango de fechas,
**Entonces** el sistema muestra movimientos ordenados por fecha desc.

### Escenario 2: Filtrar por tipo de movimiento
**Dado que** filtro por tipo="entrada",
**Cuando** genero reporte,
**Entonces** el sistema muestra solo movimientos de entrada (supplier → internal).

### Escenario 3: Exportar reporte
**Dado que** visualizo movimientos,
**Cuando** exporto a Excel,
**Entonces** el sistema descarga archivo con todos los movimientos filtrados.

---

## Reglas de Negocio
- **RN-1:** Reporte incluye solo movimientos validados (state=done).
- **RN-2:** Ordenado por fecha descendente por defecto.
- **RN-3:** Exportable a Excel, PDF.

---

## Tareas Técnicas

### Backend
- [ ] Endpoint: GET /api/v1/inventory/reports/stock-moves
- [ ] Service: ReportService.getStockMovesReport(filters)
- [ ] DTO: StockMoveReportFiltersDto
- [ ] Export service
- [ ] Unit tests
- [ ] Integration tests
- [ ] Swagger docs

### Frontend
- [ ] Componente: StockMovesReportPage.tsx
- [ ] Filtros: fecha, producto, ubicación, tipo
- [ ] Tabla paginada
- [ ] Botón exportar
- [ ] API client: reportApi.getStockMoves()
- [ ] Component tests
- [ ] E2E test

### Database
- [ ] View: vw_stock_moves_report
- [ ] Índices: idx_stock_moves_date

---

## Estimación Detallada
| Tarea | Horas |
|-------|-------|
| Backend | 1.5 |
| Frontend | 1.5 |
| Testing | 0.5 |
| Code Review | 0.5 |
| **TOTAL** | **4 horas = 2 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-003](../../02-modelado/requerimientos-funcionales/mgn-005/RF-MGN-005-003-movimientos-de-stock.md)
- [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-005.yaml)
- [Schema](../../02-modelado/database-design/schemas/inventory-schema-ddl.sql)
