#!/usr/bin/env bash
set -e
cd /home/iotcuboc/pyme || exit 1

echo "=============================================="
echo " ElaboraPro Compras V4.11.4 - Visual"
echo "=============================================="

TS=$(date +%Y%m%d_%H%M%S)
B="backups/elaborapro_compras_v4_11_4_$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"

TMP_C=$(mktemp)
TMP_D=$(mktemp)
trap 'rm -f "$TMP_C" "$TMP_D"' EXIT
cp -p public/compras_v3.php "$TMP_C"
cp -p public/compra_editar_v3.php "$TMP_D"

TMP_C="$TMP_C" TMP_D="$TMP_D" php <<'PHP'
<?php
$fc=getenv('TMP_C'); $fd=getenv('TMP_D');
$c=file_get_contents($fc); $d=file_get_contents($fd);

if ($c===false || $d===false) {
    fwrite(STDERR,"ERROR: no fue posible leer temporales.\n"); exit(1);
}
if (strpos($c,'ELABORAPRO_COMPRAS_V4_11_4')!==false) {
    fwrite(STDERR,"ERROR: V4.11.4 ya aplicado.\n"); exit(1);
}
if (strpos($c,'ep-purchase-detail')===false ||
    strpos($c,'ep-purchase-confirm')===false ||
    strpos($c,'ep-purchase-search')===false) {
    fwrite(STDERR,"ERROR: no se detecta la base visual V4.11.3 esperada.\n"); exit(1);
}
if (strpos($d,'ep-purchase-correct')===false) {
    fwrite(STDERR,"ERROR: no se detecta Corregir costos V4.11.3.\n"); exit(1);
}

/*
 * No cambiamos HTML ni PHP funcional.
 * Añadimos una última capa CSS, antes del footer, con mayor especificidad
 * y !important para ganar sobre reglas globales del tema.
 */
$cssCompras = <<<'CSS'

<style>
/* ELABORAPRO_COMPRAS_V4_11_4 */

/* Detalle: verde pastel */
body.op3-body .op3-main a.btn.ep-purchase-detail.ep-purchase-action,
body.op3-body .op3-main .ep-purchase-detail.ep-purchase-action,
.op3-main a.btn.ep-purchase-detail.ep-purchase-action{
    background:#BFE3C9 !important;
    background-color:#BFE3C9 !important;
    border:1px solid #A8D5B5 !important;
    color:#205C36 !important;
    box-shadow:none !important;
}
body.op3-body .op3-main a.btn.ep-purchase-detail.ep-purchase-action:hover,
.op3-main a.btn.ep-purchase-detail.ep-purchase-action:hover{
    background:#AEDAB9 !important;
    background-color:#AEDAB9 !important;
    border-color:#9BCDAA !important;
    color:#205C36 !important;
}

/* Confirmar: azul pastel */
body.op3-body .op3-main a.btn.ep-purchase-confirm.ep-purchase-action,
body.op3-body .op3-main .ep-purchase-confirm.ep-purchase-action,
.op3-main a.btn.ep-purchase-confirm.ep-purchase-action{
    background:#C9DCFA !important;
    background-color:#C9DCFA !important;
    border:1px solid #AFCBF8 !important;
    color:#174F9E !important;
    box-shadow:none !important;
}
body.op3-body .op3-main a.btn.ep-purchase-confirm.ep-purchase-action:hover,
.op3-main a.btn.ep-purchase-confirm.ep-purchase-action:hover{
    background:#BBD3F8 !important;
    background-color:#BBD3F8 !important;
    border-color:#9EBFF3 !important;
    color:#123F80 !important;
}

/* Buscar: barra + botón en la misma línea */
body.op3-body .op3-main form.ep-purchase-search,
.op3-main form.ep-purchase-search{
    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    gap:10px !important;
    flex-wrap:nowrap !important;
    width:100% !important;
}
body.op3-body .op3-main form.ep-purchase-search input[name="q"],
.op3-main form.ep-purchase-search input[name="q"]{
    flex:1 1 auto !important;
    width:auto !important;
    min-width:0 !important;
    margin:0 !important;
}
body.op3-body .op3-main form.ep-purchase-search button,
.op3-main form.ep-purchase-search button{
    flex:0 0 auto !important;
    width:auto !important;
    margin:0 !important;
}

@media (max-width:640px){
    body.op3-body .op3-main form.ep-purchase-search,
    .op3-main form.ep-purchase-search{
        gap:8px !important;
    }
}
</style>

CSS;

$cssDetalle = <<<'CSS'

<style>
/* ELABORAPRO_COMPRAS_V4_11_4 */

/* Corregir costos: azul pastel */
body.op3-body .op3-main a.btn.ep-purchase-correct,
body.op3-body .op3-main .ep-purchase-correct,
.op3-main a.btn.ep-purchase-correct{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    background:#C9DCFA !important;
    background-color:#C9DCFA !important;
    border:1px solid #AFCBF8 !important;
    color:#174F9E !important;
    box-shadow:none !important;
}
body.op3-body .op3-main a.btn.ep-purchase-correct:hover,
.op3-main a.btn.ep-purchase-correct:hover{
    background:#BBD3F8 !important;
    background-color:#BBD3F8 !important;
    border-color:#9EBFF3 !important;
    color:#123F80 !important;
}
</style>

CSS;

$footer='/<\?php\s+render_footer_v3\(\);\s*\?>/';
if (preg_match_all($footer,$c)!==1 || preg_match_all($footer,$d)!==1) {
    fwrite(STDERR,"ERROR: footer inesperado.\n"); exit(1);
}

$c=preg_replace($footer,$cssCompras.'<?php render_footer_v3(); ?>',$c,1);
$d=preg_replace($footer,$cssDetalle.'<?php render_footer_v3(); ?>',$d,1);

foreach ([
    'ELABORAPRO_COMPRAS_V4_11_4',
    '#BFE3C9',
    '#C9DCFA',
    'ep-purchase-detail',
    'ep-purchase-confirm',
    'ep-purchase-search',
    'upsert_stock_delta'
] as $needle) {
    if (strpos($c,$needle)===false) {
        fwrite(STDERR,"ERROR validación compras: $needle\n"); exit(1);
    }
}
foreach ([
    'ELABORAPRO_COMPRAS_V4_11_4',
    '#C9DCFA',
    'ep-purchase-correct'
] as $needle) {
    if (strpos($d,$needle)===false) {
        fwrite(STDERR,"ERROR validación detalle: $needle\n"); exit(1);
    }
}

if (file_put_contents($fc,$c)===false || file_put_contents($fd,$d)===false) {
    fwrite(STDERR,"ERROR escribiendo temporales.\n"); exit(1);
}
echo "OK: corrección visual preparada en temporales.\n";
PHP

echo
echo "===== LINT TEMPORAL ====="
php -l "$TMP_C"
php -l "$TMP_D"

echo
echo "===== VALIDACION VISUAL ====="
grep -n -E 'ELABORAPRO_COMPRAS_V4_11_4|#BFE3C9|#C9DCFA|ep-purchase-detail|ep-purchase-confirm|ep-purchase-search|ep-purchase-correct' "$TMP_C" "$TMP_D" | tail -n 80

echo
echo "===== INSTALANDO ====="
cp -p "$TMP_C" public/compras_v3.php
cp -p "$TMP_D" public/compra_editar_v3.php

echo
echo "===== LINT FINAL ====="
if ! php -l public/compras_v3.php || ! php -l public/compra_editar_v3.php; then
    echo "ERROR: restaurando respaldo..."
    cp -p "$B/compras_v3.php" public/compras_v3.php
    cp -p "$B/compra_editar_v3.php" public/compra_editar_v3.php
    exit 1
fi

echo
echo "===== LOGICA STOCK PRESENTE ====="
grep -n -B3 -A10 'upsert_stock_delta' public/compras_v3.php

echo
echo "=============================================="
echo " OK - V4.11.4 visual instalado"
echo " Respaldo: /home/iotcuboc/pyme/$B"
echo "=============================================="
