# US-MMD002-008: Cerrar Orden y Generar Pre-factura

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-MMD002-008 |
| **Epica** | EPIC-MMD-002 - Ordenes de Servicio |
| **Modulo** | ordenes-servicio |
| **Prioridad** | P0 |
| **Story Points** | 5 |
| **Sprint** | Sprint 5 |
| **Estado** | Backlog |

---

## Historia de Usuario

**Como** recepcionista,
**quiero** cerrar una orden completada y generar una pre-factura,
**para** cobrar al cliente y preparar la facturacion.

## Descripcion Detallada

Cuando el mecanico termina los trabajos, la recepcionista verifica la orden, registra el kilometraje de salida, genera la pre-factura con todos los conceptos, y procesa el pago. La orden pasa a estado LISTO.

---

## Criterios de Aceptacion

**Escenario 1: Validar orden lista para cerrar**
```gherkin
DADO que quiero cerrar una orden en EN_REPARACION
CUANDO accedo al cierre
ENTONCES el sistema valida:
  - Hay al menos un trabajo registrado
  - No hay solicitudes de refacciones pendientes
  - Mecanico marco como terminado
Y permite continuar si cumple validaciones
```

**Escenario 2: Registrar kilometraje de salida**
```gherkin
DADO que cierro la orden
CUANDO registro kilometraje de salida: 125,050 km
ENTONCES el sistema calcula km recorridos en taller: 50 km
Y actualiza el historial del vehiculo
```

**Escenario 3: Generar pre-factura**
```gherkin
DADO que cierro la orden
CUANDO genero la pre-factura
ENTONCES veo resumen:
  | Concepto | Monto |
  | Mano de obra (4.5 hrs) | $2,025 |
  | Servicios | $850 |
  | Refacciones | $3,200 |
  | Subtotal | $6,075 |
  | IVA 16% | $972 |
  | TOTAL | $7,047 |
```

**Escenario 4: Aplicar descuento**
```gherkin
DADO que el cliente es frecuente
CUANDO aplico descuento del 10%
ENTONCES el sistema recalcula:
  | Subtotal | $6,075 |
  | Descuento 10% | -$607.50 |
  | Nuevo subtotal | $5,467.50 |
  | IVA 16% | $874.80 |
  | TOTAL | $6,342.30 |
```

**Escenario 5: Registrar metodo de pago**
```gherkin
DADO que el cliente paga
CUANDO registro el pago:
  | Metodo | Efectivo |
  | Monto recibido | $7,000 |
  | Cambio | -$657.70 |
ENTONCES la orden pasa a LISTO
Y se genera comprobante de pago
```

**Escenario 6: Imprimir pre-factura**
```gherkin
DADO que genero la pre-factura
CUANDO imprimo
ENTONCES se genera PDF con todos los conceptos
Y se incluye firma de autorizacion del cliente
```

---

## Datos del Cierre

| Campo | Tipo | Requerido |
|-------|------|-----------|
| km_exit | number | Si |
| discount_percent | number | No |
| discount_amount | number | No |
| payment_method | enum | Si |
| payment_reference | string | No |
| notes | text | No |
| closed_by | FK | Auto |
| closed_at | datetime | Auto |

---

## Tareas Tecnicas

**Backend:**
- [ ] BE-059: Endpoint POST /api/orders/:id/close
- [ ] BE-060: Validaciones de cierre
- [ ] BE-061: Calcular totales con descuentos
- [ ] BE-062: Registrar pago
- [ ] BE-063: Generar PDF pre-factura

**Frontend:**
- [ ] FE-059: Crear OrderCloseWizard component
- [ ] FE-060: Crear PaymentForm component
- [ ] FE-061: Crear InvoicePreview component
- [ ] FE-062: Integracion con impresion

---

## Dependencias

**Depende de:**
- [ ] US-MMD002-005: Trabajos registrados

**Bloquea:**
- [ ] MME-007: Facturacion CFDI (timbrado)

---

## Definition of Done (DoD)

- [ ] Validaciones de cierre
- [ ] Calculo de totales con descuentos
- [ ] Registro de pago
- [ ] PDF de pre-factura
- [ ] Cambio de estado a LISTO
- [ ] Tests pasando

---

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