# EPICA: EPIC-VT-002 - Cotizaciones

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-VT-002 |
| **Nombre** | Cotizaciones |
| **Modulo** | cotizaciones |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 34 |
| **Sprint(s)** | Sprint 2-3 |

---

## Descripcion

Sistema de cotizaciones especializado para productos de vidrio. Permite calcular precios por dimensiones (alto x ancho x espesor), tipo de vidrio, acabados y procesamientos adicionales. Genera PDFs profesionales y permite conversión directa a órdenes de producción.

---

## Objetivo de Negocio

- Reducir tiempo de cotización de 30 min a 5 min
- Eliminar errores de cálculo manual de áreas
- Estandarizar precios por tipo de vidrio y espesor
- Mejorar presentación profesional con PDFs
- Agilizar conversión de cotización a producción

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-VT002-001 | Como vendedor, quiero crear cotización ingresando dimensiones de piezas para calcular automáticamente el área en m² | P0 | 5 | Backlog |
| US-VT002-002 | Como vendedor, quiero seleccionar tipo de vidrio y espesor de un catálogo para aplicar precio correcto | P0 | 3 | Backlog |
| US-VT002-003 | Como vendedor, quiero agregar acabados (sandblast, grabado, bisel) para calcular costo adicional | P0 | 5 | Backlog |
| US-VT002-004 | Como vendedor, quiero ver resumen de cotización con desglose de costos para revisar antes de enviar | P0 | 3 | Backlog |
| US-VT002-005 | Como vendedor, quiero generar PDF de cotización con logo y datos fiscales para enviar al cliente | P0 | 5 | Backlog |
| US-VT002-006 | Como vendedor, quiero enviar cotización por email al cliente para agilizar proceso | P1 | 3 | Backlog |
| US-VT002-007 | Como jefe de ventas, quiero convertir cotización aprobada a orden de producción para iniciar fabricación | P0 | 5 | Backlog |
| US-VT002-008 | Como admin, quiero configurar precios por tipo de vidrio y espesor para mantener lista actualizada | P0 | 3 | Backlog |
| US-VT002-009 | Como admin, quiero definir márgenes de utilidad por cliente para aplicar descuentos automáticos | P2 | 2 | Backlog |

**Total Story Points:** 34 SP

---

## Flujo de Cotización

```
┌─────────────┐
│   BORRADOR  │  ← Se inicia cotización
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  CALCULADA  │  ← Áreas y precios calculados
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   ENVIADA   │  ← Enviada a cliente
└──────┬──────┘
       │
       ├──────────────┐
       ▼              ▼
┌─────────────┐ ┌─────────────┐
│  APROBADA   │ │  RECHAZADA  │
└──────┬──────┘ └─────────────┘
       │
       ▼
┌─────────────┐
│ CONVERTIDA  │  ← Se genera orden de producción
└─────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Crear cotización con cliente y datos de contacto
- [ ] Agregar líneas con dimensiones (alto × ancho × espesor)
- [ ] Calcular automáticamente área en m² y precio
- [ ] Seleccionar tipo de vidrio de catálogo
- [ ] Agregar acabados con precio adicional
- [ ] Generar PDF profesional
- [ ] Enviar por email
- [ ] Convertir a orden de producción

**No Funcionales:**
- [ ] Cálculo de precio < 100ms
- [ ] Generación PDF < 3 segundos
- [ ] Soporte para cotizaciones de 50+ líneas

**Tecnicos:**
- [ ] Integración con catálogo de vidrios
- [ ] Integración con módulo de producción
- [ ] Templates PDF configurables

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-VT-001 Fundamentos | Backlog | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-VT-003 Produccion | Requiere cotizaciones aprobadas |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `quotes`
- [ ] Tablas: 5 (quotes, quote_lines, glass_types, finishes, prices)
- [ ] Funciones: 2 (calculate_area, calculate_total)
- [ ] Indices: Por cliente, fecha, estado

**Backend:**
- [ ] Modulo: `quotations`
- [ ] Entities: 4 (Quote, QuoteLine, GlassType, Finish)
- [ ] Endpoints: 12
- [ ] Tests: 25

**Frontend:**
- [ ] Paginas: 4 (QuotesList, QuoteCreate, QuoteDetail, QuotePDF)
- [ ] Componentes: 10 (QuoteForm, LineEditor, PriceCalculator, etc.)
- [ ] Stores: 1 (quotesStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/quotes | Crear cotización |
| GET | /api/quotes | Listar cotizaciones (paginado) |
| GET | /api/quotes/:id | Detalle de cotización |
| PATCH | /api/quotes/:id | Actualizar cotización |
| POST | /api/quotes/:id/lines | Agregar línea |
| DELETE | /api/quotes/:id/lines/:lineId | Eliminar línea |
| POST | /api/quotes/:id/calculate | Recalcular totales |
| POST | /api/quotes/:id/send | Enviar por email |
| POST | /api/quotes/:id/convert | Convertir a orden |
| GET | /api/quotes/:id/pdf | Generar PDF |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Cálculos complejos de acabados | Media | Alto | Catálogo bien definido |
| Precios desactualizados | Media | Medio | Validación al enviar |
| PDFs no profesionales | Baja | Medio | Templates revisados |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo de vidrios definido
- [ ] Template PDF aprobado

## Definition of Done (DoD)

- [ ] Flujo completo de cotización funcionando
- [ ] Generación de PDFs correcta
- [ ] Conversión a orden de producción
- [ ] Tests de integración pasando
- [ ] Documentación de API

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |

---

**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08
