# US-MMD004-010: Realizar Inventario Fisico

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD004-010 |
| **Epica** | EPIC-MMD-004 - Inventario y Refacciones |
| **Modulo** | inventario |
| **Prioridad** | P2 |
| **Story Points** | 5 |
| **Sprint** | Sprint 6 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** administrador,
**quiero** realizar conteo de inventario fisico,
**para** verificar existencias y detectar diferencias con el sistema.

## Descripcion Detallada

El proceso de inventario fisico permite contar las existencias reales, compararlas con el sistema, y generar ajustes automaticos para las diferencias encontradas.

---

## Criterios de Aceptacion

**Escenario 1: Crear sesion de inventario**
```gherkin
DADO que inicio inventario fisico
CUANDO creo sesion:
  | Fecha | 2025-11-30 |
  | Tipo | Completo |
  | Zonas | A, B, C |
ENTONCES se genera lista de conteo
Y se congela el stock del sistema
```

**Escenario 2: Conteo por ubicacion**
```gherkin
DADO que cuento zona A
CUANDO capturo conteo:
  | Ubicacion | Refaccion | Conteo |
  | A-01-01 | Filtro ISX | 8 |
  | A-01-02 | Filtro ISL | 5 |
ENTONCES se registra el conteo fisico
```

**Escenario 3: Conteo con escaner**
```gherkin
DADO que uso escaner de codigo de barras
CUANDO escaneo refaccion
ENTONCES incrementa contador
Y muestra total acumulado
```

**Escenario 4: Comparar conteo vs sistema**
```gherkin
DADO que complete el conteo
CUANDO genero reporte de diferencias
ENTONCES muestra:
  | Refaccion | Sistema | Fisico | Diferencia | Valor |
  | Filtro ISX | 10 | 8 | -2 | -$300 |
  | Inyector | 4 | 5 | +1 | +$1,500 |
```

**Escenario 5: Generar ajustes**
```gherkin
DADO que revise las diferencias
CUANDO apruebo ajustes
ENTONCES se generan ajustes automaticos:
  | Tipo | Referencia |
  | Ajuste | INV-2025-001 |
Y se actualiza el stock
```

**Escenario 6: Inventario parcial**
```gherkin
DADO que solo cuento una categoria
CUANDO selecciono "Inyectores"
ENTONCES solo genera lista de esa categoria
Y no afecta otras refacciones
```

---

## Tipos de Inventario

| Tipo | Descripcion |
|------|-------------|
| Completo | Todas las refacciones |
| Por zona | Solo ubicaciones seleccionadas |
| Por categoria | Solo categoria especifica |
| Ciclico | Rotativo por valor/movimiento |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-094: Crear tabla `physical_inventory`
- [ ] DB-095: Crear tabla `inventory_counts`

**Backend:**
- [ ] BE-187: Crear sesion de inventario
- [ ] BE-188: Registrar conteos
- [ ] BE-189: Comparar vs sistema
- [ ] BE-190: Generar ajustes masivos

**Frontend:**
- [ ] FE-183: Crear PhysicalInventoryPage
- [ ] FE-184: Crear CountingForm
- [ ] FE-185: Crear DifferencesReport
- [ ] FE-186: Integracion con escaner

---

## Definition of Done (DoD)

- [ ] Crear sesion de inventario
- [ ] Conteo por ubicacion
- [ ] Soporte para escaner
- [ ] Reporte de diferencias
- [ ] Generar ajustes automaticos
- [ ] Inventario parcial
- [ ] Tests pasando

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-06
