# US-MMD006-003: Aplicar Descuentos

## Metadata

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

---

## Historia de Usuario

**Como** administrador,
**quiero** aplicar descuentos a las cotizaciones,
**para** ofrecer precios especiales a clientes o por volumen.

## Descripcion Detallada

Los descuentos pueden aplicarse por linea, por categoria (mano de obra o refacciones), o al total. Deben respetarse limites segun permisos del usuario.

---

## Criterios de Aceptacion

**Escenario 1: Descuento global**
```gherkin
DADO que tengo cotizacion con total $10,000
CUANDO aplico descuento global 10%
ENTONCES muestra:
  | Subtotal | $10,000 |
  | Descuento | -$1,000 |
  | Total | $9,000 |
```

**Escenario 2: Descuento por categoria**
```gherkin
DADO que quiero descuento solo en mano de obra
CUANDO aplico 15% a servicios
ENTONCES solo afecta lineas de tipo servicio
Y refacciones mantienen precio
```

**Escenario 3: Limite de descuento**
```gherkin
DADO que mi perfil permite max 10%
CUANDO intento aplicar 15%
ENTONCES el sistema advierte:
  "Descuento excede limite (10%). Requiere autorizacion"
Y envia solicitud al supervisor
```

**Escenario 4: Descuento de flota**
```gherkin
DADO que el vehiculo pertenece a flota
CUANDO creo cotizacion
ENTONCES aplica automaticamente descuentos de flota:
  | Mano obra | 10% |
  | Refacciones | 5% |
```

**Escenario 5: Motivo de descuento**
```gherkin
DADO que aplico descuento > 5%
CUANDO confirmo
ENTONCES debo registrar motivo:
  | Motivo | Cliente frecuente |
Y se guarda para auditoria
```

---

## Reglas de Descuento

| Rol | Max descuento |
|-----|---------------|
| Recepcionista | 5% |
| Supervisor | 15% |
| Administrador | 30% |
| Gerente | Sin limite |

---

## Tareas Tecnicas

**Database:**
- [ ] DB-107: Campos descuento en quotes
- [ ] DB-108: Tabla `discount_requests`

**Backend:**
- [ ] BE-215: Aplicar descuentos
- [ ] BE-216: Validar limites por rol
- [ ] BE-217: Solicitud de autorizacion

**Frontend:**
- [ ] FE-211: Crear DiscountModal
- [ ] FE-212: Crear DiscountByCategory
- [ ] FE-213: Crear AuthorizationRequest

---

## Definition of Done (DoD)

- [ ] Descuento global
- [ ] Descuento por categoria
- [ ] Limite segun rol
- [ ] Descuento de flota automatico
- [ ] Motivo obligatorio
- [ ] Tests pasando

---

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