#!/usr/bin/env bash
set -u

PAQUETE_DIR="$(cd "$(dirname "$0")" && pwd)"
PROYECTO_DIR="${1:-/home/iotcuboc/pyme}"
MARCA="$(date +%Y%m%d_%H%M%S)"
RESPALDO_DIR="${PROYECTO_DIR}/respaldos/stock_multipresentacion_v4_4_${MARCA}"
ARCHIVO="app/includes/stock_functions.php"

fallar(){ echo "ERROR: $1" >&2; exit 1; }
[ -d "$PROYECTO_DIR" ] || fallar "No existe el proyecto: $PROYECTO_DIR"
[ -f "$PROYECTO_DIR/$ARCHIVO" ] || fallar "No existe $ARCHIVO"
[ -f "$PAQUETE_DIR/paso/aplicar_parche_stock.php" ] || fallar "Falta el aplicador"
command -v php >/dev/null 2>&1 || fallar "PHP CLI no está disponible"
php -l "$PAQUETE_DIR/paso/aplicar_parche_stock.php" >/dev/null || fallar "Aplicador PHP inválido"

grep -q "function descontar_item_recursivo" "$PROYECTO_DIR/$ARCHIVO" || fallar "No se encontró descontar_item_recursivo"
grep -q "function convertir_unidad" "$PROYECTO_DIR/$ARCHIVO" || fallar "No se encontró convertir_unidad"

mkdir -p "$RESPALDO_DIR/app/includes" || fallar "No se pudo crear el respaldo"
cp -p "$PROYECTO_DIR/$ARCHIVO" "$RESPALDO_DIR/$ARCHIVO" || fallar "No se pudo respaldar $ARCHIVO"

php "$PAQUETE_DIR/paso/aplicar_parche_stock.php" "$PROYECTO_DIR" || {
  cp -p "$RESPALDO_DIR/$ARCHIVO" "$PROYECTO_DIR/$ARCHIVO"
  fallar "No se pudo aplicar; se restauró el archivo anterior"
}

php -l "$PROYECTO_DIR/$ARCHIVO" >/dev/null || {
  cp -p "$RESPALDO_DIR/$ARCHIVO" "$PROYECTO_DIR/$ARCHIVO"
  fallar "Falló la validación final; se restauró el archivo anterior"
}

echo "Descuento de stock multipresentación instalado correctamente."
echo "Respaldo: $RESPALDO_DIR"
echo "Para revertir: bash '$PAQUETE_DIR/RESTAURAR.sh' '$RESPALDO_DIR' '$PROYECTO_DIR'"
