<?php

declare(strict_types=1);

/**
 * Ejecuta el parche SQL para añadir retenciones de impuestos en pagos a proveedores.
 * Ejecutar: php bin/db-patch-purchase-payment-withholding.php
 */

require_once dirname(__DIR__) . '/config/bootstrap.php';

use ApiModel\Infrastructure\Persistence\Database;

$sqlFile = dirname(__DIR__) . '/docs/db_patch_purchase_payment_withholding.sql';

echo "=== APLICANDO PARCHE DE RETENCIONES DE IMPUESTOS EN PAGOS A PROVEEDORES ===\n";

if (! is_file($sqlFile)) {
    fwrite(STDERR, "No se encontró el archivo: {$sqlFile}\n");
    exit(1);
}

try {
    $pdo = Database::connect();
    $driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME);
    echo "Conectado a la base de datos ({$driver}).\n";

    $sql = file_get_contents($sqlFile);
    if ($sql === false) {
        throw new RuntimeException("No se pudo leer el archivo SQL");
    }

    if ($driver === 'sqlite') {
        echo "Adaptando patch para SQLite...\n";
        $sql = str_replace('auth.', '', $sql);
        $sql = str_replace('public.', '', $sql);
    }

    $pdo->exec($sql);
    echo "Parche de Retenciones en Pagos a Proveedores aplicado exitosamente.\n";
    echo "=== PROCESO COMPLETADO ===\n";
} catch (Throwable $e) {
    fwrite(STDERR, "ERROR: " . $e->getMessage() . "\n");
    exit(1);
}
