# US-MGN-007-001-001: Crear Cotización de Venta

**RF Asociado:** [RF-MGN-007-001](../../02-modelado/requerimientos-funcionales/mgn-007/RF-MGN-007-001-cotizaciones-de-venta.md)
**Módulo:** MGN-007 - Ventas Básico
**Epic:** Cotizaciones
**Prioridad:** P0
**Story Points:** 3
**Sprint:** Sprint 16
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** vendedor, **Quiero** crear cotizaciones para clientes, **Para** presentar precios y condiciones antes de confirmar ventas.

## Descripción Detallada
Cotización (quotation) es el documento preliminar de venta con: cliente, productos, cantidades, precios, descuentos, impuestos, total, validez. Estados: draft, sent, sale (confirmada), cancelled.

## Criterios de Aceptación

### Escenario 1: Crear cotización en draft (Camino Feliz)
**Dado que** creo cotización: customer_id=1, lines=[{product:1, qty:5, price:200}], validity_date="2024-02-15",
**Cuando** guardo, **Entonces** sistema crea cotización draft con número QT/2024/0001, total calculado.

### Escenario 2: Calcular totales automáticamente
**Dado que** línea tiene qty=5, price=200, discount=10%, tax=19%,
**Cuando** guardo, **Entonces** sistema calcula subtotal=900, tax=171, total=1071.

### Escenario 3: Validar cliente es customer
**Dado que** partner_id=5 tiene is_customer=false,
**Cuando** intento crear, **Entonces** error 400 "Partner no es cliente".

## Reglas de Negocio
- **RN-1:** Cotizaciones en draft, editables.
- **RN-2:** Total = suma(líneas) - descuentos + impuestos.
- **RN-3:** Número secuencial: QT/{year}/{seq}.
- **RN-4:** Partner debe ser customer.

## Tareas Técnicas
### Backend
- [ ] POST /api/v1/sales/quotations
- [ ] QuotationService.create(dto)
- [ ] Calcular totales automáticamente
- [ ] Unit/Integration tests

### Frontend
- [ ] CreateQuotationForm.tsx
- [ ] Tabla líneas con cálculo automático
- [ ] E2E test

### Database
- [ ] sales.quotations, sales.quotation_lines
- [ ] RLS company_isolation

## Estimación Detallada
| Tarea | Horas | Backend | 1.5 | Frontend | 2 | Testing | 1 | **TOTAL** | **4.5h = 3 SP** |

## Definition of Done
- [ ] Código implementado según ET
- [ ] Tests >80%
- [ ] Code review aprobado
- [ ] QA/PO validado

## Referencias
- [RF-MGN-007-001](../../02-modelado/requerimientos-funcionales/mgn-007/RF-MGN-007-001-cotizaciones-de-venta.md)
- [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-007.yaml)
