# US-MGN-006-004-002: Validar Devolución a Proveedor

**RF Asociado:** [RF-MGN-006-004](../../02-modelado/requerimientos-funcionales/mgn-006/RF-MGN-006-004-recepciones-de-compras.md)
**Módulo:** MGN-006 - Compras Básico
**Epic:** Devoluciones a Proveedores
**Prioridad:** P1
**Story Points:** 2
**Sprint:** Sprint 15
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** usuario de almacén,
**Quiero** validar devoluciones a proveedores,
**Para** decrementar el stock y registrar la salida de mercancía.

---

## Descripción Detallada
Validar devolución:
1. Genera movimientos de stock (stock location → supplier location)
2. Decrementa stock_quants
3. Actualiza estado return picking → done
4. Genera nota de crédito si aplica

---

## Criterios de Aceptación

### Escenario 1: Validar devolución exitosamente (Camino Feliz)
**Dado que** return picking está en assigned,
**Cuando** valido,
**Entonces** sistema genera movimientos, decrementa stock, cambia state=done.

### Escenario 2: Generar nota de crédito automática
**Dado que** valido devolución con opción "crear crédito",
**Cuando** sistema procesa,
**Entonces** genera vendor refund (credit note) con valor de productos devueltos.

---

## Reglas de Negocio
- **RN-1:** Validar genera movimientos de stock (salida).
- **RN-2:** Stock se decrementa de ubicación de stock.
- **RN-3:** Opcionalmente genera nota de crédito.

---

## Tareas Técnicas

### Backend
- [ ] Endpoint: POST /api/v1/purchase/returns/:id/validate
- [ ] Service: PurchaseReturnService.validate(id, createCredit)
- [ ] Service: generateCreditNote(return)
- [ ] Generar movimientos stock
- [ ] Transaction atomicidad
- [ ] Unit tests
- [ ] Integration tests
- [ ] Swagger docs

### Frontend
- [ ] Botón Validar con confirmación
- [ ] Checkbox "Generar nota de crédito"
- [ ] API client: purchaseReturnApi.validate()
- [ ] Component tests
- [ ] E2E test

### Database
- [ ] Transaction isolation
- [ ] Lock en quants

---

## Estimación Detallada
| Tarea | Horas |
|-------|-------|
| Backend | 1.5 |
| Frontend | 1 |
| Testing | 0.5 |
| Code Review | 0.5 |
| **TOTAL** | **3.5 horas = 2 SP** |

---

## Definition of Done
- [ ] Código implementado según ET
- [ ] Tests pasando (>80%)
- [ ] Code review aprobado
- [ ] Stock actualizado
- [ ] Crédito generado si aplica
- [ ] QA validado
- [ ] PO aprobado

---

## Referencias
- [RF-MGN-006-004](../../02-modelado/requerimientos-funcionales/mgn-006/RF-MGN-006-004-recepciones-de-compras.md)
- [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-006.yaml)
