# US-MMD006-002: Agregar Lineas a Cotizacion

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD006-002 |
| **Epica** | EPIC-MMD-006 - Cotizaciones y Presupuestos |
| **Modulo** | cotizaciones |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 6 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** recepcionista,
**quiero** agregar servicios y refacciones a la cotizacion,
**para** detallar el presupuesto completo para el cliente.

## Descripcion Detallada

Las cotizaciones contienen lineas de servicios (mano de obra) y refacciones (partes). Cada linea debe tener descripcion, cantidad, precio unitario y subtotal.

---

## Criterios de Aceptacion

**Escenario 1: Agregar servicio del catalogo**
```gherkin
DADO que edito cotizacion
CUANDO busco servicio "Calibracion inyectores"
ENTONCES agrega linea:
  | Descripcion | Cantidad | Precio | Subtotal |
  | Calibracion inyectores | 1 | $1,200 | $1,200 |
```

**Escenario 2: Agregar refaccion**
```gherkin
DADO que agrego refacciones
CUANDO selecciono del inventario:
  | Refaccion | Cantidad | Precio |
  | Filtro aceite ISX | 2 | $450 |
ENTONCES agrega linea con subtotal $900
```

**Escenario 3: Linea personalizada**
```gherkin
DADO que necesito algo no catalogado
CUANDO agrego linea manual:
  | Descripcion | Trabajo especial |
  | Cantidad | 1 |
  | Precio | $500 |
ENTONCES se agrega a la cotizacion
```

**Escenario 4: Modificar cantidad**
```gherkin
DADO que tengo linea con 1 unidad
CUANDO cambio cantidad a 4
ENTONCES recalcula subtotal
Y actualiza total de cotizacion
```

**Escenario 5: Eliminar linea**
```gherkin
DADO que tengo linea agregada
CUANDO elimino la linea
ENTONCES se quita de la cotizacion
Y se recalcula el total
```

**Escenario 6: Aplicar descuento por linea**
```gherkin
DADO que agrego linea
CUANDO aplico descuento 10%
ENTONCES muestra:
  | Precio | Descuento | Subtotal |
  | $1,200 | -$120 | $1,080 |
```

---

## Tareas Tecnicas

**Database:**
- [ ] DB-105: Crear tabla `quote_items`
- [ ] DB-106: Campos: type, description, qty, price, discount

**Backend:**
- [ ] BE-212: CRUD lineas de cotizacion
- [ ] BE-213: Calculo de totales
- [ ] BE-214: Busqueda en catalogos

**Frontend:**
- [ ] FE-207: Crear QuoteItemsEditor
- [ ] FE-208: Crear ServiceSearch
- [ ] FE-209: Crear PartSearch
- [ ] FE-210: Crear LineItemRow

---

## Definition of Done (DoD)

- [ ] Agregar servicio del catalogo
- [ ] Agregar refaccion
- [ ] Linea personalizada
- [ ] Modificar cantidad
- [ ] Eliminar linea
- [ ] Descuento por linea
- [ ] Tests pasando

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-06
