-- Migration: 20260315_new_flow_columns.sql
-- Adds support for new flow: version selection by user + plan selection after OTP
--
-- Changes:
--   1. cd_tipo_plan → nullable (plan is chosen later in flow, not at start)
--   2. tipo_vehiculo_masterone → raw vehicle type string from MasterOne DB
--   3. de_indice_dato_confirmado → DCS version code confirmed by user (cdMarca|cdModelo|cdVersion)
--   4. estado ENUM → adds 'version_confirmada' state

-- Step 1: Make cd_tipo_plan nullable (plan no longer required at transaction start)
ALTER TABLE transacciones
    MODIFY COLUMN cd_tipo_plan INT NULL COMMENT 'Plan DCS seleccionado - NULL hasta que el usuario confirme la versión del vehículo';

-- Step 2: Add new columns for new flow
ALTER TABLE transacciones
    ADD COLUMN IF NOT EXISTS tipo_vehiculo_masterone VARCHAR(100) NULL
        COMMENT 'Tipo de vehículo raw de MasterOne (AUTOMOVIL PRIVADO, JEEP, MOTOCICLETA, etc.)'
        AFTER cd_tipo_plan,
    ADD COLUMN IF NOT EXISTS de_indice_dato_confirmado VARCHAR(100) NULL
        COMMENT 'Código DCS de versión del vehículo confirmado por el usuario - formato cdMarca|cdModelo|cdVersion'
        AFTER tipo_vehiculo_masterone;

-- Step 3: Add 'version_confirmada' to estado ENUM
-- NOTE: Must include ALL existing values to avoid data loss
ALTER TABLE transacciones
    MODIFY COLUMN estado ENUM(
        'iniciada',
        'datos_validados',
        'otp_enviado',
        'otp_validado',
        'version_confirmada',
        'pago_pendiente',
        'pago_procesado',
        'poliza_emitida',
        'completada',
        'cancelada',
        'error',
        'vehiculo_no_soportado'
    ) DEFAULT 'iniciada'
    COMMENT 'Estado de la transacción en el flujo de venta';

-- Step 4: Add index for new columns (optional but improves query performance)
ALTER TABLE transacciones
    ADD INDEX IF NOT EXISTS idx_tipo_vehiculo_masterone (tipo_vehiculo_masterone),
    ADD INDEX IF NOT EXISTS idx_version_confirmada (de_indice_dato_confirmado(50));
