erp-mecanicas-diesel/docs/02-definicion-modulos/MMD-004-inventario/historias-usuario/US-MMD004-003-solicitar-refaccion.md

159 lines
4.0 KiB
Markdown

# US-MMD004-003: Solicitar Refaccion desde Orden
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | US-MMD004-003 |
| **Epica** | EPIC-MMD-004 - Inventario |
| **Modulo** | inventario |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 3 |
| **Estado** | Backlog |
---
## Historia de Usuario
**Como** mecanico,
**quiero** solicitar refacciones al almacen desde la orden de servicio,
**para** obtener las piezas necesarias para la reparacion.
## Descripcion Detallada
Desde la orden de servicio, el mecanico puede buscar y solicitar refacciones. El almacenista recibe la solicitud, verifica stock, y despacha las piezas. El sistema actualiza el inventario automaticamente.
---
## Criterios de Aceptacion
**Escenario 1: Solicitar refaccion con stock**
```gherkin
DADO que necesito un filtro de diesel
CUANDO busco "filtro diesel" y selecciono "Filtro Diesel FD-001"
Y solicito cantidad: 2
ENTONCES se crea solicitud para almacen
Y el almacenista recibe notificacion
Y estado de solicitud es "PENDIENTE"
```
**Escenario 2: Ver stock disponible**
```gherkin
DADO que busco una refaccion
CUANDO veo los resultados
ENTONCES veo el stock disponible de cada una:
| Refaccion | Stock | Ubicacion |
| Filtro FD-001 | 5 | B-02-01 |
| Filtro FD-002 | 0 | - |
Y las sin stock aparecen deshabilitadas
```
**Escenario 3: Solicitud sin stock suficiente**
```gherkin
DADO que solicito 3 unidades de una refaccion con stock 2
CUANDO confirmo la solicitud
ENTONCES el sistema advierte "Solo hay 2 en stock"
Y puedo ajustar cantidad o confirmar parcial
```
**Escenario 4: Almacenista despacha**
```gherkin
DADO que hay una solicitud pendiente
CUANDO el almacenista la despacha
ENTONCES el stock se descuenta automaticamente
Y la refaccion se agrega a la orden de servicio
Y estado cambia a "DESPACHADO"
```
**Escenario 5: Devolver refaccion no usada**
```gherkin
DADO que no use una refaccion solicitada
CUANDO la devuelvo al almacen
ENTONCES el stock se incrementa
Y se registra el movimiento de devolucion
```
---
## Flujo de Solicitud
```
MECANICO ALMACENISTA
│ │
│──── Solicita refaccion ────▶│
│ │
│◀─── Notificacion ──────────│
│ │
│ │ Verifica stock
│ │ Prepara piezas
│ │
│◀─── Despacha ──────────────│
│ │
│ Recibe piezas │ Stock actualizado
│ Usa en reparacion │
│ │
```
---
## Estados de Solicitud
| Estado | Descripcion |
|--------|-------------|
| PENDIENTE | Esperando atencion de almacen |
| EN_PREPARACION | Almacenista preparando |
| DESPACHADO | Entregado al mecanico |
| PARCIAL | Entrega parcial (falta stock) |
| CANCELADO | Solicitud cancelada |
| DEVUELTO | Refaccion devuelta |
---
## Tareas Tecnicas
**Database:**
- [ ] DB-045: Crear tabla `part_requests`
- [ ] DB-046: Estados de solicitud
- [ ] DB-047: Trigger para actualizar stock
**Backend:**
- [ ] BE-085: Crear PartRequestEntity
- [ ] BE-086: Endpoint POST /api/orders/:id/part-request
- [ ] BE-087: Endpoint PATCH /api/part-requests/:id/dispatch
- [ ] BE-088: Notificacion a almacenista
- [ ] BE-089: Actualizar stock automaticamente
**Frontend:**
- [ ] FE-084: Crear PartRequestForm en orden
- [ ] FE-085: Crear PartRequestsList (almacen)
- [ ] FE-086: Crear DispatchDialog
- [ ] FE-087: Indicador de stock en busqueda
---
## Dependencias
**Depende de:**
- [ ] US-MMD004-001: Refacciones registradas
- [ ] US-MMD002-001: Orden de servicio
**Bloquea:**
- [ ] US-MMD002-005: Registrar trabajos (refacciones)
---
## Definition of Done (DoD)
- [ ] Solicitar desde orden
- [ ] Ver stock disponible
- [ ] Notificacion a almacen
- [ ] Despachar y descontar stock
- [ ] Devolucion
- [ ] Tests pasando
---
**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-06