# US-MMD004-009: Gestionar Ubicaciones de Almacen

## Metadata

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

---

## Historia de Usuario

**Como** almacenista,
**quiero** definir ubicaciones de almacen,
**para** localizar rapidamente las refacciones.

## Descripcion Detallada

El sistema de ubicaciones permite organizar fisicamente el almacen con un esquema jerarquico (zona, pasillo, anaquel, nivel) para localizar rapidamente cualquier refaccion.

---

## Criterios de Aceptacion

**Escenario 1: Crear estructura de ubicaciones**
```gherkin
DADO que configuro el almacen
CUANDO defino estructura:
  | Zona | Descripcion |
  | A | Filtros y lubricantes |
  | B | Inyectores y bombas |
  | C | Partes electricas |
ENTONCES se crea el arbol de ubicaciones
```

**Escenario 2: Ubicacion completa**
```gherkin
DADO que creo ubicacion
CUANDO defino "A-01-03"
ENTONCES significa:
  | Parte | Valor | Descripcion |
  | Zona | A | Filtros |
  | Pasillo | 01 | Pasillo 1 |
  | Nivel | 03 | Tercer nivel |
```

**Escenario 3: Asignar refaccion a ubicacion**
```gherkin
DADO que tengo refaccion sin ubicar
CUANDO asigno ubicacion "B-02-01"
ENTONCES la refaccion queda ubicada
Y aparece en busqueda por ubicacion
```

**Escenario 4: Mapa visual de almacen**
```gherkin
DADO que accedo al mapa de almacen
CUANDO veo zona A
ENTONCES muestra layout visual:
  - Pasillos con ocupacion
  - Niveles con codigo de color
  - Click para ver contenido
```

**Escenario 5: Ubicacion multiple**
```gherkin
DADO que una refaccion esta en varias ubicaciones
CUANDO consulto
ENTONCES veo todas:
  | Ubicacion | Cantidad |
  | A-01-03 | 10 |
  | A-02-01 | 5 |
  | Total | 15 |
```

---

## Esquema de Ubicacion

```
[Zona]-[Pasillo]-[Nivel]

Ejemplo: A-01-03
- A: Zona (1 letra)
- 01: Pasillo (2 digitos)
- 03: Nivel (2 digitos)
```

---

## Tareas Tecnicas

**Database:**
- [ ] DB-092: Crear tabla `warehouse_locations`
- [ ] DB-093: Crear tabla `part_locations` (many-to-many)

**Backend:**
- [ ] BE-184: CRUD ubicaciones
- [ ] BE-185: Asignar refacciones a ubicaciones
- [ ] BE-186: Buscar por ubicacion

**Frontend:**
- [ ] FE-180: Crear LocationsManager
- [ ] FE-181: Crear WarehouseMap visual
- [ ] FE-182: Crear LocationPicker

---

## Definition of Done (DoD)

- [ ] CRUD de ubicaciones
- [ ] Estructura jerarquica
- [ ] Asignar refacciones
- [ ] Vista de mapa (basico)
- [ ] Multi-ubicacion
- [ ] Tests pasando

---

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