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

echo "=============================================="
echo " ElaboraPro Venta Detalle V4.14"
echo " Quitar -> Eliminar rojo"
echo "=============================================="

F="public/venta_editar_v3.php"
[ -f "$F" ] || { echo "ERROR: no existe $F"; exit 1; }

TS=$(date +%Y%m%d_%H%M%S)
B="backups/elaborapro_venta_detalle_v4_14_$TS"
mkdir -p "$B"
cp -p "$F" "$B/"
echo "Backup: /home/iotcuboc/pyme/$B"

TMP=$(mktemp)
trap 'rm -f "$TMP"' EXIT
cp -p "$F" "$TMP"

TMP="$TMP" php <<'PHP'
<?php
$f=getenv('TMP');
$s=file_get_contents($f);
if ($s===false) { fwrite(STDERR,"ERROR leyendo archivo.\n"); exit(1); }
if (strpos($s,'ELABORAPRO_VENTA_DETALLE_V4_14')!==false) {
    fwrite(STDERR,"ERROR: V4.14 ya aplicado.\n"); exit(1);
}

/* Debe existir exactamente un texto visible Quitar. */
$n=preg_match_all('~>\s*Quitar\s*<~iu',$s);
if ($n!==1) {
    fwrite(STDERR,"ERROR: se esperaba 1 botón Quitar; encontrados=$n\n");
    exit(1);
}

/* Cambia sólo el texto visible. */
$s=preg_replace('~>\s*Quitar\s*<~iu', '>Eliminar<', $s, 1);

/*
 * Añade una clase sólo al elemento interactivo que ahora contiene Eliminar.
 * Tolera <a> o <button>, atributos y saltos de línea.
 */
$pat='~<(a|button)\b([^>]*)>(\s*Eliminar\s*)</\1>~isu';
if (!preg_match($pat,$s,$m)) {
    fwrite(STDERR,"ERROR: no se pudo identificar el control Eliminar.\n");
    exit(1);
}
$tag=$m[0];
if (preg_match('~\bclass=(["\'])(.*?)\1~is',$tag)) {
    $new=preg_replace(
        '~\bclass=(["\'])(.*?)\1~is',
        'class=$1$2 ep-sale-delete$1',
        $tag, 1, $nc
    );
} else {
    $new=preg_replace('~^<(a|button)\b~i','<$1 class="ep-sale-delete"',$tag,1,$nc);
}
if ($nc!==1) {
    fwrite(STDERR,"ERROR: no se pudo asignar clase al botón Eliminar.\n");
    exit(1);
}
$s=preg_replace($pat, addcslashes($new,'\\$'), $s, 1, $nr);
if ($nr!==1) {
    fwrite(STDERR,"ERROR: no se pudo instalar el botón Eliminar.\n");
    exit(1);
}

$css=<<<'HTML'

<style>
/* ELABORAPRO_VENTA_DETALLE_V4_14 */
body.op3-body .op3-main .ep-sale-delete{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:34px !important;
    padding:6px 12px !important;
    border-radius:8px !important;
    background:#F3C2BE !important;
    border:1px solid #EAB0AB !important;
    color:#8B302C !important;
    text-decoration:none !important;
    white-space:nowrap !important;
    box-shadow:none !important;
    font-weight:600 !important;
}
body.op3-body .op3-main .ep-sale-delete:hover{
    background:#ECB3AE !important;
    border-color:#DFA39E !important;
    color:#7A2926 !important;
}
</style>

HTML;

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

foreach (['ELABORAPRO_VENTA_DETALLE_V4_14','ep-sale-delete','>Eliminar<'] as $x) {
    if (strpos($s,$x)===false) {
        fwrite(STDERR,"ERROR validación: $x\n"); exit(1);
    }
}
if (file_put_contents($f,$s)===false) {
    fwrite(STDERR,"ERROR escribiendo temporal.\n"); exit(1);
}
echo "OK: parche preparado en temporal.\n";
PHP

echo
echo "===== LINT TEMPORAL ====="
php -l "$TMP"

echo
echo "===== VALIDACION ====="
grep -n -B3 -A5 -E 'Eliminar|ep-sale-delete|ELABORAPRO_VENTA_DETALLE_V4_14' "$TMP" | tail -50

echo
echo "===== INSTALANDO ====="
cp -p "$TMP" "$F"

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

echo
echo "=============================================="
echo " OK - Venta Detalle V4.14 instalado"
echo " Quitar -> Eliminar"
echo " Eliminar = rojo pastel"
echo " Lógica de eliminación no modificada"
echo " Respaldo: /home/iotcuboc/pyme/$B"
echo "=============================================="
