# 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