2.7 KiB
2.7 KiB
US-MGN-006-001-002: Enviar RFQ a Proveedor
RF Asociado: RF-MGN-006-001 Módulo: MGN-006 - Compras Básico Epic: Solicitudes de Cotización Prioridad: P0 Story Points: 2 Sprint: Sprint 12 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como usuario de compras, Quiero enviar RFQ por email a proveedores, Para solicitar formalmente sus cotizaciones.
Descripción Detallada
Enviar RFQ:
- Cambia estado draft → sent
- Genera PDF con detalles de la solicitud
- Envía email al proveedor con PDF adjunto
- Registra fecha de envío
Criterios de Aceptación
Escenario 1: Enviar RFQ exitosamente (Camino Feliz)
Dado que RFQ está en draft con partner que tiene email válido, Cuando envío la RFQ, Entonces sistema cambia state=sent, envía email con PDF, registra sent_date.
Escenario 2: Error al enviar sin email de proveedor
Dado que proveedor no tiene email configurado, Cuando intento enviar RFQ, Entonces sistema retorna error 400 "El proveedor no tiene email configurado".
Escenario 3: Error al enviar RFQ ya enviada
Dado que RFQ está en state=sent, Cuando intento enviar nuevamente, Entonces sistema retorna error 400 "RFQ ya fue enviada".
Reglas de Negocio
- RN-1: Solo RFQ draft pueden enviarse.
- RN-2: Proveedor debe tener email válido.
- RN-3: Al enviar se genera PDF automáticamente.
- RN-4: Se registra fecha y hora de envío.
Tareas Técnicas
Backend
- Endpoint: POST /api/v1/purchase/rfqs/:id/send
- Service: RFQService.send(rfqId)
- Service: EmailService.sendRFQ(rfq, pdf)
- Service: PDFService.generateRFQPDF(rfq)
- Validar estado draft
- Validar email proveedor
- Unit tests
- Integration tests
- Swagger docs
Frontend
- Botón Enviar con confirmación
- Modal preview de email
- API client: rfqApi.send(id)
- Component tests
- E2E test
Database
- Campo: purchase.rfqs.sent_date
- Campo: purchase.rfqs.sent_by_user_id
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
- Email enviado correctamente
- PDF generado correctamente
- QA validado
- PO aprobado