<?php
/**
 * ASISMA CRM - Migración: pasarela de pagos Flow
 * - Agrega 'pagada' al ENUM de cotizaciones.estado
 * - Columnas flow_orden y pagada_at
 * - Claves FLOW_* en config_sistema (vacías = integración desactivada)
 * SOLO CLI: php migracion_flow.php
 */
if (php_sapi_name() !== 'cli') die("Solo CLI\n");

$env = include dirname(__DIR__) . '/.env.php';
$m = new mysqli('127.0.0.1', $env['DB_USER'], $env['DB_PASS'], isset($env['DB_NAME']) ? $env['DB_NAME'] : 'asisma_crm');
if ($m->connect_errno) die("Conexion: " . $m->connect_error . "\n");
$m->set_charset('utf8mb4');

$r = $m->query("SHOW COLUMNS FROM cotizaciones LIKE 'estado'");
$col = $r->fetch_assoc();
if (strpos($col['Type'], 'pagada') === false) {
    $ok = $m->query("ALTER TABLE cotizaciones MODIFY estado ENUM('borrador','enviada','vista','aceptada','pagada','vencida','rechazada') NOT NULL DEFAULT 'borrador'");
    echo $ok ? "estado: 'pagada' agregada al ENUM\n" : ("ERROR enum: " . $m->error . "\n");
} else {
    echo "estado: ya tiene 'pagada'\n";
}

$r = $m->query("SHOW COLUMNS FROM cotizaciones LIKE 'flow_orden'");
if (!$r->fetch_assoc()) {
    $ok = $m->query("ALTER TABLE cotizaciones ADD COLUMN flow_orden VARCHAR(60) NULL DEFAULT NULL AFTER vista_at, ADD COLUMN pagada_at DATETIME NULL DEFAULT NULL AFTER flow_orden");
    echo $ok ? "columnas flow_orden y pagada_at agregadas\n" : ("ERROR columnas: " . $m->error . "\n");
} else {
    echo "columnas flow ya existen\n";
}

foreach (array('FLOW_API_KEY', 'FLOW_SECRET_KEY', 'FLOW_API_URL') as $clave) {
    $r = $m->query("SELECT id FROM config_sistema WHERE clave = '" . $m->real_escape_string($clave) . "'");
    if (!$r->fetch_assoc()) {
        $valor = ($clave === 'FLOW_API_URL') ? 'https://sandbox.flow.cl/api' : '';
        $m->query("INSERT INTO config_sistema (clave, valor) VALUES ('" . $m->real_escape_string($clave) . "', '" . $m->real_escape_string($valor) . "')");
        echo "config_sistema: $clave creada\n";
    } else {
        echo "config_sistema: $clave ya existe\n";
    }
}
echo "Listo.\n";
