# Sprint 1.5a · Wizard de Venta NI

> Especificación de los **7 pasos** del wizard de Necesidad Inmediata.

## Filosofía

- **Wizard puro:** una pantalla por paso, navegación back/next
- **Sin borradores:** completar de una sentada (decisión Ricci)
- **Validación por paso:** no se avanza si hay errores
- **Estado en sesión PHP:** `$_SESSION['contrato_ni_wizard']`
- **Mobile/Tablet primero:** todos los pasos funcionan en tablet 1024×768

## Layout general

Header con barra de progreso + título + subtítulo. Footer con back/next. Glass cards para el contenido.

```
┌──────────────────────────────────────────────────┐
│ TOPBAR: Innovium · Funeraria Demo                │
├──────────────────────────────────────────────────┤
│ NUEVA VENTA · NECESIDAD INMEDIATA                 │
│ Paso 3 de 7 · Datos del Fallecido                │
│                                                   │
│ ┌─────────────────────────────────────────────┐  │
│ │ ━━━━━━━━━━━━━━░░░░░░░░░░░░░░░░ 3/7          │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ ┌─────────────────────────────────────────────┐  │
│ │ CONTENIDO DEL PASO                           │  │
│ │ (form, selectores, etc.)                     │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ [< Atrás]                       [Siguiente >]    │
└──────────────────────────────────────────────────┘
```

---

## Paso 1 · Datos del Contratante (Cliente)

### Sub-paso 1a · Búsqueda por RUT

```
┌──────────────────────────────────────────────────┐
│ Paso 1 · Datos del Contratante                    │
│ Buscá por RUT existente o creá uno nuevo.        │
│                                                   │
│ ┌─────────────────────────────────────────────┐  │
│ │ 🔍 [RUT del contratante] (12.345.678-9)      │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ Resultados:                                       │
│ ┌─────────────────────────────────────────────┐  │
│ │ Juan Carlos Carrasco Jhonson                 │  │
│ │ RUT 10.231.996-6 · +56 9 4239 8427           │  │
│ │                            [Seleccionar]     │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ ¿No lo encontraste?                               │
│ [+ Crear cliente nuevo]                           │
└──────────────────────────────────────────────────┘
```

**Comportamiento:**
- Búsqueda por RUT con debounce 300ms
- Auto-formato RUT mientras tipea (12345678 → 1.234.567-8)
- Validación dígito verificador en tiempo real
- Si selecciona uno existente → carga datos en wizard, avanza
- Click "+ Crear cliente nuevo" → expande form con campos vacíos

### Sub-paso 1b · Form de cliente

```
┌──────────────────────────────────────────────────┐
│ Datos del Contratante                             │
│                                                   │
│ RUT *                                             │
│ [10.231.996-6_____]  ← validación inline         │
│                                                   │
│ NOMBRES *                                         │
│ [Juan Claudio Amador______________]               │
│                                                   │
│ APELLIDO PATERNO *      APELLIDO MATERNO          │
│ [Carrasco_______]       [Jhonson_____]            │
│                                                   │
│ EMAIL                                             │
│ [jccarrasco71@gmail.com______________]            │
│                                                   │
│ TELÉFONO 1 *            TELÉFONO 2                │
│ [+56 9 4239 8427]       [+56________]             │
│                                                   │
│ DIRECCIÓN *                                       │
│ [Zapallar 2341________________________]           │
│                                                   │
│ REGIÓN *                COMUNA *                  │
│ [Metropolitana ▾]       [Conchalí ▾]              │
│                                                   │
│ PARENTESCO CON FALLECIDO *                        │
│ [Hijo(a) ▾]                                       │
│                                                   │
│ FECHA NACIMIENTO       NOTAS                      │
│ [01/01/1971]           [______________]           │
└──────────────────────────────────────────────────┘
```

**Validaciones:**
- RUT chileno con dígito verificador
- Email válido (si se ingresa)
- Teléfono 1 chileno (+56 9 NNNN NNNN)
- Región es required (afecta el dropdown de comunas)
- Comuna depende de Región (cascade dropdown)
- Parentesco required

---

## Paso 2 · Datos del Fallecido

```
┌──────────────────────────────────────────────────┐
│ Paso 2 · Datos del Fallecido                      │
│                                                   │
│ NOMBRES *                                         │
│ [Francisco del Rosario______________]             │
│                                                   │
│ APELLIDO PATERNO *      APELLIDO MATERNO          │
│ [Garrido________]       [_______________]         │
│                                                   │
│ RUT (opcional)                                    │
│ [3.647.988-4____]                                 │
│                                                   │
│ FECHA NACIMIENTO        FECHA DEFUNCIÓN *         │
│ [03/12/1936]            [02/05/2026]              │
│                                                   │
│ LUGAR DE DEFUNCIÓN                                │
│ [Hospital del Trabajador____________]             │
│                                                   │
│ COMUNA DE DEFUNCIÓN *                             │
│ [Las Condes ▾]                                    │
│                                                   │
│ ESTADO CIVIL *          NACIONALIDAD *            │
│ [Casado(a) ▾]           [CHILENA ▾]               │
│                                                   │
│ PROFESIÓN                                         │
│ [Empleado________]                                │
│                                                   │
│ CAUSA DE MUERTE (opcional, para uso interno)      │
│ [_______________________________]                 │
└──────────────────────────────────────────────────┘
```

**Validaciones:**
- Nombres y apellido paterno required
- Fecha defunción ≤ hoy
- Fecha nacimiento ≤ fecha defunción (si ambos llenados)
- Estado civil required
- Nacionalidad required (default: CHILENA)
- Comuna defunción required

---

## Paso 3 · Plan / Cofre

### Sub-paso 3a · Selección de plan

```
┌──────────────────────────────────────────────────┐
│ Paso 3 · Plan funerario                           │
│ Elegí el plan que vendiste o configurá manual.   │
│                                                   │
│ Filtros: [Todos ▾]  [Buscar...]                   │
│                                                   │
│ ┌─────────────────────────────────────────────┐  │
│ │ EN MEMORIA DE FRANCISCO BILBAO               │  │
│ │ Plan estándar · GNP-5.5 · Nivel: Tradicional │  │
│ │ Valor: $ 970.000                             │  │
│ │                            [Seleccionar]     │  │
│ └─────────────────────────────────────────────┘  │
│ ┌─────────────────────────────────────────────┐  │
│ │ SOBREMEDIDA                                  │  │
│ │ Plan especial · GNP-9                        │  │
│ │ Valor: $ 1.430.000                           │  │
│ │                            [Seleccionar]     │  │
│ └─────────────────────────────────────────────┘  │
│ ... más planes                                    │
│                                                   │
│ [Saltar y configurar manual]                      │
└──────────────────────────────────────────────────┘
```

### Sub-paso 3b · Configuración del cofre/urna

```
┌──────────────────────────────────────────────────┐
│ Cofre seleccionado                                │
│                                                   │
│ COFRE *                                           │
│ [SOBREMEDIDA TERCIADO LISO ▾]                     │
│                                                   │
│ COLOR                   CÓDIGO BARCODE            │
│ [Café]                  [1014]                    │
│                                                   │
│ MEDIDAS DEL COFRE                                 │
│ Alto (cm) *  Ancho (cm) *  Largo (cm) *          │
│ [48]         [61]          [193]                  │
│                                                   │
│ VALOR DEL COFRE *                                 │
│ [$ 1.200.000_______]                              │
└──────────────────────────────────────────────────┘
```

**Lógica:**
- Si seleccionó plan en 3a, los datos del cofre vienen pre-cargados de `detalle_plan` (legacy) → en Innovium vienen del producto seleccionado
- Si saltó plan, todo manual
- Las medidas son obligatorias para que el PDF se vea completo

---

## Paso 4 · Servicio Funerario

```
┌──────────────────────────────────────────────────┐
│ Paso 4 · Detalles del Servicio Funerario          │
│                                                   │
│ CAPILLA                 CARROZA                   │
│ [Cirios ▾]              [Blanca ▾]                │
│                                                   │
│ AUTO          VAN          CRUZ                   │
│ [- 0 +]       [- 0 +]      ☐ Sí                   │
│                                                   │
│ TARJETERO          LIBRO CONDOLENCIAS             │
│ ☐ Sí               ☑ Sí                           │
│                                                   │
│ TARJETA CONDOLENCIAS    ARREGLO FLORAL            │
│ ☑ Sí                    ☑ Sí                      │
│                                                   │
│ CERTIFICACIÓN MÉDICA   TRAMITACIÓN REG. CIVIL     │
│ ☐ Sí                   ☑ Sí                       │
│                                                   │
│ CAFETERÍA                                         │
│ ☑ Sí                                              │
│                                                   │
│ ──────────────────────────────────────────       │
│ OTROS SERVICIOS                                   │
│                                                   │
│ ┌─────────────────────────────────────────────┐  │
│ │ Servicio: [Traslado____________]             │  │
│ │ Monto:    [$ 180.000__________]              │  │
│ │                                       [×]    │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ [+ Agregar servicio extra]                        │
└──────────────────────────────────────────────────┘
```

**Notas:**
- Capilla y Carroza son selects (vienen de catálogos)
- Auto y Van son contadores numéricos (default 0)
- Cruz, Tarjetero, Libro, Tarjeta, Arreglo, Cafetería, Tramitación, Certificación → toggles SI/NO
- Otros servicios extra → array dinámico (como adicionales del producto)

---

## Paso 5 · Complemento del Servicio

```
┌──────────────────────────────────────────────────┐
│ Paso 5 · Complemento al servicio                  │
│                                                   │
│ LUGAR DE VELACIÓN                                 │
│ [Casa del cliente / Velatorio Las Condes / __]   │
│ ✏️ También puede escribir manualmente             │
│                                                   │
│ LUGAR DE SEPULTACIÓN                              │
│ [Cementerio General de Santiago_____________]     │
│                                                   │
│ FECHA Y HORA DEL FUNERAL                          │
│ ☑ Por confirmar                                   │
│                                                   │
│ Si NO está marcado por confirmar:                 │
│ Fecha: [05/05/2026]    Hora: [14:00]              │
└──────────────────────────────────────────────────┘
```

**Notas:**
- Lugar velación: combo de velatorios + opción "Otro" para escribir manual
- Si "Por confirmar" está marcado, los campos fecha/hora quedan deshabilitados y se guardan NULL
- En el PDF se imprime "POR CONFIRMAR" si está marcado

---

## Paso 6 · Pagos · Aporte Previsional + Abono Cliente

```
┌──────────────────────────────────────────────────┐
│ Paso 6 · Resumen de pagos                         │
│                                                   │
│ ─────────────────────────────────────────       │
│ TOTAL SERVICIO:                  $ 1.380.000      │
│   (Cofre: $1.200.000 + Traslado: $180.000)       │
│                                                   │
│ DESCUENTO POR CONVENIO  (opcional)                │
│ ┌─────────────────────────────────────────────┐  │
│ │ Convenio: [Sin convenio ▾]                   │  │
│ │ % descuento: 0                               │  │
│ │ Monto descuento: $ 0                         │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ ─────────────────────────────────────────       │
│ APORTE PREVISIONAL                                │
│                                                   │
│ ┌─────────────────────────────────────────────┐  │
│ │ Entidad 1: [HABITAT ▾]                       │  │
│ │ Monto:     [$ 595.000______]                 │  │
│ │ ☐ Verificado el [____/____/____]             │  │
│ │                                       [×]    │  │
│ └─────────────────────────────────────────────┘  │
│                                                   │
│ [+ Agregar entidad 2]    [+ Agregar entidad 3]    │
│                                                   │
│ Subtotal aportes: $ 595.000                       │
│                                                   │
│ ─────────────────────────────────────────       │
│ ABONO DEL CLIENTE                                 │
│                                                   │
│ Monto que paga el cliente hoy:                    │
│ [$ 0____________]                                 │
│                                                   │
│ ─────────────────────────────────────────       │
│ RESUMEN FINAL                                     │
│                                                   │
│ Total servicio:           $ 1.380.000             │
│ Aporte previsional:      -$   595.000             │
│ Abono cliente:           -$         0             │
│ ─────────────────────────────────────────       │
│ PENDIENTE DE PAGO:        $   785.000             │
└──────────────────────────────────────────────────┘
```

**Comportamiento:**
- Total servicio se calcula auto: cofre + servicios extra
- Si se aplica convenio, se resta el % al total
- Hasta 3 entidades previsionales (suficiente para casos reales chilenos)
- Abono cliente: lo que paga cash (efectivo, transferencia, lo que sea — sin detalle por ahora)
- Pendiente = total - aportes - abono (puede ser negativo si pagó de más, eso es OK)

---

## Paso 7 · Firma + Confirmación

```
┌──────────────────────────────────────────────────┐
│ Paso 7 · Firma del Contratante                    │
│                                                   │
│ El titular debe firmar:                           │
│ Juan Claudio Amador Carrasco Jhonson              │
│ RUT: 10.231.996-6                                 │
│                                                   │
│ ┌────────────────────────────────────────────┐   │
│ │                                              │   │
│ │       (canvas blanco para firmar)            │   │
│ │                                              │   │
│ └────────────────────────────────────────────┘   │
│                                                   │
│ [Limpiar]              [Confirmar firma]          │
│                                                   │
│ ─────────────────────────────────────────       │
│ RESUMEN DEL CONTRATO                              │
│                                                   │
│ Tipo:           Necesidad Inmediata               │
│ Contratante:    Juan Claudio Amador Carrasco J.   │
│ Fallecido:      Francisco del Rosario Garrido     │
│ Plan:           SOBREMEDIDA TERCIADO LISO         │
│ Valor total:    $ 1.380.000                       │
│ Aporte:         $   595.000 (HABITAT)             │
│ Abono:          $         0                       │
│ PENDIENTE:      $   785.000                       │
│                                                   │
│ Vendedor: Andrea Núñez Toro                       │
│ Sucursal: Casa Matriz                             │
│                                                   │
│ Al confirmar:                                     │
│   1. Se generará el número de contrato            │
│   2. Se creará el contrato en BD                  │
│   3. Se generará el PDF                           │
│   4. Se subirá la firma a R2                      │
│                                                   │
│ Esta acción NO se puede deshacer.                 │
│                                                   │
│ [< Atrás]              [✓ Confirmar contrato]    │
└──────────────────────────────────────────────────┘
```

**Al click "Confirmar contrato":**

1. **Transacción BD:**
   - Insert/update cliente
   - Insert fallecido
   - Insert contrato (con número generado de `contratos_secuencias`)
   - Bulk insert `contrato_aportes_previsionales`
   - Bulk insert `contrato_servicios_extra`
2. **Subida firma a R2** → `tenants/<slug>/firmas/CT-NNNN.png`
3. **Generación de PDF** → `tenants/<slug>/contratos/CT-NNNN.pdf`
4. **Audit log:** `contrato.creado` con datos clave
5. **Toast verde** "Contrato N° 1149 creado"
6. **Redirect** a `/admin/contratos/<id>`

Si **algo falla** → rollback completo, mensaje de error.

---

## Estado del wizard en sesión PHP

```php
$_SESSION['contrato_ni_wizard'] = [
    'paso_actual' => 4,
    
    'cliente' => [
        'modo' => 'nuevo', // 'existente' o 'nuevo'
        'id' => null,
        'rut' => '10.231.996-6',
        'nombres' => 'Juan Claudio Amador',
        'apellido_paterno' => 'Carrasco',
        // ...
    ],
    
    'fallecido' => [
        'nombres' => 'Francisco del Rosario',
        'apellido_paterno' => 'Garrido',
        'rut' => '3.647.988-4',
        'fecha_defuncion' => '2026-05-02',
        // ...
    ],
    
    'plan' => [
        'modo' => 'plan', // 'plan' o 'manual'
        'plan_id' => 14,  // SOBREMEDIDA
        'plan_nombre' => 'SOBREMEDIDA TERCIADO LISO',
        'cofre_codigo' => '1014',
        'cofre_color' => 'CAFÉ',
        'cofre_alto_cm' => 48,
        'cofre_ancho_cm' => 61,
        'cofre_largo_cm' => 193,
        'cofre_valor_clp' => 1200000,
    ],
    
    'servicio' => [
        'capilla_id' => 2, // Cirios
        'tipo_carroza_id' => 1, // Blanca
        'cantidad_auto' => 0,
        'cantidad_van' => 0,
        'cruz' => true,
        'tarjetero' => false,
        'libro_condolencias' => true,
        // ...
        'servicios_extra' => [
            ['nombre' => 'Traslado', 'monto_clp' => 180000]
        ]
    ],
    
    'complemento' => [
        'lugar_velacion' => null,
        'lugar_sepultacion' => null,
        'fecha_funeral' => null,
        'hora_funeral' => null,
        'fecha_funeral_por_confirmar' => true,
    ],
    
    'pagos' => [
        'convenio_id' => null,
        'convenio_descuento_pct' => 0,
        'aportes' => [
            [
                'entidad_previsional_id' => 1, // HABITAT
                'nombre_snapshot' => 'HABITAT',
                'monto_clp' => 595000,
                'fecha_verificada' => null,
            ]
        ],
        'abono_cliente_clp' => 0,
    ],
    
    'firma' => [
        'data_url' => 'data:image/png;base64,...',
        'confirmada' => true,
    ],
];
```

## Mobile/Tablet considerations

- Tablet 1024×768 (caso de uso real del vendedor en oficina del cliente o velatorio): cards grandes, inputs grandes, firma con dedo funcional
- Mobile <768px: cada paso ocupa todo el viewport, scroll vertical
- Barra de progreso compacta en mobile
