# Data Model — Cambios BD para port version2

## Principio

Los scripts viven en `bdscripts/` (no migraciones Laravel). El esquema principal Eneon proviene de dumps; ejecutar scripts de forma **idempotente** tras backup, con aprobación explícita del usuario.

---

## 1. Tabla existente: `T_Comercializadora`

### Columna de routing (probablemente ya existe)

| Columna | Tipo | Valores | Uso |
|---------|------|---------|-----|
| `Servicio_Integracion` | VARCHAR | `audax`, `adx`, NULL | Determina proveedor SIPS y tarifas |

**Acción:** verificar existencia y poblar comercializadoras ADX con `'adx'`. Sin esta columna, `SipsProviderRegistry` no resuelve proveedor.

---

## 2. Scripts nuevos en version2

### `bdscripts/T_Propuesta_Comercial_CUPs_ventana_adx.sql`

Añade a **`T_Propuesta_Comercial_CUPs`**:

| Columna | Tipo | Nullable | Descripción |
|---------|------|----------|-------------|
| `nombretarifa` | VARCHAR(100) | Sí | Nombre tarifa ADX (ej. `AUP-00002974`) |
| `productCode` | VARCHAR(50) | Sí | Código producto Salesforce (ej. `E_INDCL`) |
| `version` | VARCHAR(50) | Sí | Versión tarifa (ej. `V2623`) |

**Relación con campo existente:** complementa `Id_Tarifa_Automatica` (código ventana legacy Audax).

---

### `bdscripts/T_Propuesta_Comercial_CUPs_servicios_contrato.sql`

Añade a **`T_Propuesta_Comercial_CUPs`**:

| Columna | Tipo | Default | Label UI |
|---------|------|---------|----------|
| `cuotaFija` | TINYINT(1) | 0 | Cuota Fija (CF) |
| `proteccionPagos` | TINYINT(1) | 0 | Protección Pagos (PP) |
| `servicioBateriaVirtual` | TINYINT(1) | 0 | Servicio Batería Virtual (SBV) |
| `servicioBasico` | TINYINT(1) | 1 | Servicio Básico (SBas) |
| `servicioElectrodomestico` | TINYINT(1) | 0 | Servicio Electrodoméstico (SE) |
| `servicioPremium` | TINYINT(1) | 0 | Servicio Premium (SP) |
| `servicioUrgencias` | TINYINT(1) | 0 | Servicio Urgencias (SU) |

**Normalización backend:** `ContratoTraits::mapServiciosContrato()` convierte `'0'/'1'` string a boolean/int para BD.

---

## 3. Tablas SIPS existentes (sin cambio de esquema)

| Tabla | Proveedor | Operación |
|-------|-----------|-----------|
| `T_ConsumosSIPSAudax` | AUDAX luz | INSERT/DELETE en consulta |
| `T_ConsumosSIPSAudaxGas` | AUDAX gas | INSERT/DELETE en consulta |

**ADX:** no persiste; respuesta efímera en memoria/JSON.

---

## 4. Tablas representante legal (existentes)

| Tabla | Uso en port |
|-------|-------------|
| `T_Contacto` | Datos contacto (`CodConCli`, `NomConCli`, `NIFConCli`, `CarConCli`) |
| `T_ContactoDetalleCliente` | Validación pertenencia `(CodCli, CodConCli)`, flag `EsRepLeg` |

Sin DDL nuevo; solo nuevas consultas en traits.

---

## 5. Modelo Eloquent: `PropuestaComercialCups`

Campos a añadir en `$fillable` (y casts si aplica):

```php
// Ventana ADX
'nombretarifa', 'productCode', 'version',

// Servicios contrato
'cuotaFija', 'proteccionPagos', 'servicioBateriaVirtual',
'servicioBasico', 'servicioElectrodomestico', 'servicioPremium', 'servicioUrgencias',
```

**Casts sugeridos:**

```php
'cuotaFija' => 'boolean',
'proteccionPagos' => 'boolean',
// ... resto servicios boolean
```

---

## 6. Tablas develop_eneon que NO deben eliminarse

| Tabla / migración | Feature |
|-------------------|---------|
| `historial_cups_electrico` | Spec 007 — historial CUPS |
| `historial_cups_gas` | Spec 007 — historial CUPS |

El port version2 **no debe** ejecutar DROP ni omitir estas tablas.

---

## 7. Payload frontend → BD (fila CUPS)

Al seleccionar ventana ADX (`buildVentanaRowPatch`):

```typescript
{
  Id_Tarifa_Automatica: string,
  nombretarifa: string,
  productCode: string,
  version: string,
  fechaInicio?: string,  // si usuario confirma actualizar fechas
  fechaFin?: string,
}
```

Precios `PrecioE*` / `PrecioP*` del modal ADX: **solo visualización**, no persistidos en BD.

---

## 8. Checklist pre-deploy BD

- [ ] Backup de `T_Propuesta_Comercial_CUPs`
- [ ] Ejecutar `ventana_adx.sql` (verificar columnas no duplicadas)
- [ ] Ejecutar `servicios_contrato.sql`
- [ ] `DESCRIBE T_Propuesta_Comercial_CUPs` — 10 columnas nuevas presentes
- [ ] Poblar `Servicio_Integracion` en comercializadoras
- [ ] Confirmar tablas historial CUPS intactas post-port
