#!/usr/bin/env bash
set -e
cd /home/iotcuboc/pyme || exit 1
echo "=== ElaboraPro Compras V4.11.1 ==="
TS=$(date +%Y%m%d_%H%M%S)
B="backups/elaborapro_compras_v4_11_1_$TS"
mkdir -p "$B"
cp -p public/compras_v3.php "$B/"
cp -p public/compra_editar_v3.php "$B/"
echo "Backup: /home/iotcuboc/pyme/$B"

php <<'PHP'
<?php
$fc='public/compras_v3.php'; $fd='public/compra_editar_v3.php';
$c=file_get_contents($fc); $d=file_get_contents($fd);
if(strpos($c,'ELABORAPRO_COMPRAS_V4_11_1')!==false) die("ERROR: parche ya aplicado\n");

function once(&$s,$old,$new,$label){
  if(substr_count($s,$old)!==1){fwrite(STDERR,"ERROR patrón $label\n"); exit(1);}
  $s=str_replace($old,$new,$s);
}

once($c,
"\$eid = (int)empresa_id();\n\$msg = '';\n\$err = '';",
"\$eid = (int)empresa_id();\n\$msg = '';\n\$err = '';\n\n/* ELABORAPRO_COMPRAS_V4_11_1 */\n\$proveedoresCompra = [];\n\$stProveedores = \$pdo->prepare(\"SELECT id,nombre,rut FROM proveedores WHERE empresa_id=? AND COALESCE(activo,1)=1 ORDER BY nombre\");\n\$stProveedores->execute([\$eid]);\n\$proveedoresCompra = \$stProveedores->fetchAll(PDO::FETCH_ASSOC);",
"cabecera");

once($c,
"        \$fecha = \$_POST['fecha'] ?: date('Y-m-d');\n\n        \$stmt = \$pdo->prepare(\"",
"        \$fecha = \$_POST['fecha'] ?: date('Y-m-d');\n\n        \$proveedorId = (int)(\$_POST['proveedor_id'] ?? 0);\n        if (\$proveedorId <= 0) throw new Exception('Debe seleccionar un proveedor.');\n        \$stProveedor = \$pdo->prepare(\"SELECT nombre FROM proveedores WHERE empresa_id=? AND id=? AND COALESCE(activo,1)=1 LIMIT 1\");\n        \$stProveedor->execute([\$eid,\$proveedorId]);\n        \$proveedorNombre = \$stProveedor->fetchColumn();\n        if (\$proveedorNombre === false) throw new Exception('El proveedor seleccionado no existe o está inactivo.');\n\n        \$stmt = \$pdo->prepare(\"",
"validación proveedor");

once($c,
"            \$eid,\n            trim(\$_POST['proveedor'] ?? ''),\n            \$numero,",
"            \$eid,\n            \$proveedorNombre,\n            \$numero,",
"guardar proveedor");

$old=<<<'X'
            <p>
                <label>Proveedor</label>
                <input name="proveedor">
            </p>
X;
$new=<<<'X'
            <p>
                <label>Proveedor</label>
                <select name="proveedor_id" required>
                    <option value="">-- Seleccione proveedor --</option>
                    <?php foreach ($proveedoresCompra as $p): ?>
                        <option value="<?= (int)$p['id'] ?>" <?= ((int)($_POST['proveedor_id'] ?? 0)===(int)$p['id'])?'selected':'' ?>>
                            <?= h($p['nombre']) ?><?= !empty($p['rut']) ? ' | '.h($p['rut']) : '' ?>
                        </option>
                    <?php endforeach; ?>
                </select>
                <?php if (!$proveedoresCompra): ?>
                    <small class="muted">No hay proveedores activos. Cree o active un proveedor antes de registrar una compra.</small>
                <?php endif; ?>
            </p>
X;
once($c,$old,$new,"selector proveedor");

once($c,'<button class="btn">Crear compra</button>',
'<button class="btn ep-purchase-primary" <?= !$proveedoresCompra ? \'disabled\' : \'\' ?>>Crear compra</button>',
"crear compra");

once($c,'<a class="badge" href="<?= BASE_URL ?>/compra_editar_v3.php?id=<?= (int)$r[\'id\'] ?>">',
'<a class="btn secondary ep-purchase-action" href="<?= BASE_URL ?>/compra_editar_v3.php?id=<?= (int)$r[\'id\'] ?>">',
"detalle");

once($c,'class="badge good"','class="btn ep-purchase-primary ep-purchase-action"',"confirmar");

$old=<<<'X'
            <button class="btn">
                Agregar línea
            </button>
X;
$new=<<<'X'
            <button class="btn ep-purchase-primary">
                Agregar línea
            </button>
X;
once($d,$old,$new,"agregar línea");

$old=<<<'X'
                            <a
                                class="badge bad"
                                onclick="return confirm('¿Quitar esta línea?')"
                                href="<?= BASE_URL ?>/compra_editar_v3.php?id=<?= (int)$id ?>&del=<?= (int)$r['id'] ?>"
                            >
                                Quitar
                            </a>
X;
$new=<<<'X'
                            <a
                                class="btn action-danger ep-purchase-action"
                                onclick="return confirm('¿Eliminar esta línea?')"
                                href="<?= BASE_URL ?>/compra_editar_v3.php?id=<?= (int)$id ?>&del=<?= (int)$r['id'] ?>"
                            >
                                Eliminar
                            </a>
X;
once($d,$old,$new,"eliminar línea");

$css=<<<'X'

<style>
/* ElaboraPro Compras V4.11.1 */
.op3-main .ep-purchase-primary{background:var(--ep-blue,#1769F5);border-color:var(--ep-blue,#1769F5);color:#fff}
.op3-main .ep-purchase-primary:hover{background:var(--ep-action-hover,#0D57D7);border-color:var(--ep-action-hover,#0D57D7);color:#fff}
.op3-main .ep-purchase-primary:disabled{opacity:.48;cursor:not-allowed}
.op3-main .ep-purchase-action{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 12px;border-radius:8px;line-height:1.15;text-decoration:none;white-space:nowrap}
.op3-main .action-danger.ep-purchase-action{background:var(--ep-danger-bg,#F3C2BE);border-color:var(--ep-danger-border,#EAB0AB);color:var(--ep-danger-text,#8B302C)}
</style>

X;
$footer='<?php render_footer_v3(); ?>';
once($c,$footer,$css.$footer,"footer compras");
once($d,$footer,$css.$footer,"footer detalle");

file_put_contents($fc,$c)===false && exit(1);
file_put_contents($fd,$d)===false && exit(1);
echo "OK: V4.11.1 aplicado\n";
PHP

echo
echo "=== PHP LINT ==="
php -l public/compras_v3.php || { cp -p "$B/compras_v3.php" public/; cp -p "$B/compra_editar_v3.php" public/; exit 1; }
php -l public/compra_editar_v3.php || { cp -p "$B/compras_v3.php" public/; cp -p "$B/compra_editar_v3.php" public/; exit 1; }

echo
echo "=== VALIDACION ==="
grep -n -E 'ELABORAPRO_COMPRAS_V4_11_1|proveedor_id|proveedorNombre|ep-purchase-primary|ep-purchase-action|Eliminar' public/compras_v3.php public/compra_editar_v3.php | head -100
echo
echo "=== STOCK SIN CAMBIOS ==="
grep -n -B5 -A14 'upsert_stock_delta' public/compras_v3.php
echo
echo "=== HTTP ==="
curl -s -o /dev/null -w "compras -> HTTP %{http_code}\n" https://app.elaborapro.com/compras_v3.php
echo
echo "=== V4.11.1 FINALIZADO ==="
