docs: instructivo de rollback de emergencia para fix de inventario

- emergency_rollback_inventory.sh: script interactivo de rollback
- README_INVENTORY_FIX.md: guia completa de aplicacion y rollback
This commit is contained in:
Consultoria AS
2026-06-25 12:06:58 -07:00
parent 194039650d
commit bd9f0e770e
2 changed files with 165 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
# 🆘 Instructivo: Fix de Inventario + Rollback de Emergencia
## Archivos relacionados
| Archivo | Proposito |
|---------|-----------|
| `fix_inventory_flow_complete.sql` | Aplica el fix completo de flujo de inventario |
| `rollback_inventory_flow_complete.sql` | Revierte el fix completo (restaura funciones originales) |
| `emergency_rollback_inventory.sh` | Script bash interactivo para ejecutar el rollback facilmente |
---
## ⚠️ Antes de aplicar el fix
1. **Hacer backup de la base de datos:**
```bash
pg_dump -U postgres -d hotel_hacienda > backup_antes_fix_inventario.sql
```
2. **Asegurarse de que nadie este usando el sistema** (idealmente en horario de bajo trafico).
---
## 🚀 Aplicar el fix
### Opcion 1: Con psql
```bash
cd /ruta/al/proyecto
psql -U postgres -d hotel_hacienda -f scripts_sql/fix_inventory_flow_complete.sql
```
### Opcion 2: Desde dentro de psql
```bash
psql -U postgres -d hotel_hacienda
```
```sql
\i scripts_sql/fix_inventory_flow_complete.sql
```
---
## ✅ Validar despues del fix
1. Crear un expense con productos
2. Aprobarlo
3. Ir a **Purchase Entries** y registrar la recepcion fisica
4. Verificar que el stock subio correctamente
5. Ir a **Payments** y pagar el expense
6. Verificar que el stock **NO** cambio
7. Rechazar el pago (cancelar el expense)
8. Verificar que el stock bajo correctamente
---
## 🆘 Revertir el cambio (Rollback)
### Opcion 1: Script interactivo de emergencia (recomendado)
```bash
cd /ruta/al/proyecto
./scripts_sql/emergency_rollback_inventory.sh
```
El script pedira confirmacion escribiendo `SI`.
### Opcion 2: Con psql manualmente
```bash
cd /ruta/al/proyecto
psql -U postgres -d hotel_hacienda -f scripts_sql/rollback_inventory_flow_complete.sql
```
### Opcion 3: Desde dentro de psql
```bash
psql -U postgres -d hotel_hacienda
```
```sql
\i scripts_sql/rollback_inventory_flow_complete.sql
```
---
## 📋 Que hace el rollback exactamente
Restaura estas funciones a su estado anterior al fix:
| Funcion | Comportamiento despues del rollback |
|---------|-------------------------------------|
| `setpaymentstatusv2(status = 1)` | Vuelve a sumar stock al pagar |
| `setpaymentstatusv2(status = 3)` | No revierte stock al rechazar |
| `newexpensev2` | Vuelve a crear movimientos de stock al crear expense |
| `updateexpensev4` | Vuelve a crear/actualizar movimientos al editar expense |
| `purchaseentry` | Version original sin actualizar `purchase_detail.id_stock_mov` |
---
## ⚠️ Nota importante
El rollback **NO elimina** el tipo de movimiento `Cancellation` que se creo en `movement_type`, ni borra los movimientos de stock generados con ese tipo. Si ya se usaron esos movimientos, quedaran en la base de datos. Esto no afecta el funcionamiento del sistema anterior.

View File

@@ -0,0 +1,69 @@
#!/bin/bash
# ============================================================
# EMERGENCY ROLLBACK: Flujo de inventario
# ============================================================
# Uso: ./emergency_rollback_inventory.sh
#
# Este script revierte los cambios aplicados por:
# fix_inventory_flow_complete.sql
#
# Restaura las funciones originales:
# - setpaymentstatusv2
# - newexpensev2
# - updateexpensev4
# - purchaseentry
# ============================================================
set -e
# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuracion (modificar segun tu entorno)
DB_NAME="hotel_hacienda"
DB_USER="postgres"
ROLLBACK_FILE="$(dirname "$0")/rollback_inventory_flow_complete.sql"
echo -e "${YELLOW}============================================================${NC}"
echo -e "${YELLOW} EMERGENCY ROLLBACK - Flujo de Inventario${NC}"
echo -e "${YELLOW}============================================================${NC}"
echo ""
echo "Base de datos: $DB_NAME"
echo "Usuario: $DB_USER"
echo "Archivo: $ROLLBACK_FILE"
echo ""
if [ ! -f "$ROLLBACK_FILE" ]; then
echo -e "${RED}ERROR: No se encontro el archivo de rollback:${NC}"
echo "$ROLLBACK_FILE"
exit 1
fi
echo -e "${RED}ADVERTENCIA:${NC} Este rollback restaura el comportamiento anterior."
echo "Esto significa que al pagar un expense, el stock volvera a sumarse."
echo ""
read -p "¿Estas seguro de que quieres continuar? (escribe SI para confirmar): " CONFIRM
if [ "$CONFIRM" != "SI" ]; then
echo "Rollback cancelado."
exit 0
fi
echo ""
echo "Ejecutando rollback..."
if psql -U "$DB_USER" -d "$DB_NAME" -f "$ROLLBACK_FILE"; then
echo ""
echo -e "${GREEN}============================================================${NC}"
echo -e "${GREEN} Rollback ejecutado correctamente.${NC}"
echo -e "${GREEN}============================================================${NC}"
else
echo ""
echo -e "${RED}============================================================${NC}"
echo -e "${RED} ERROR al ejecutar el rollback.${NC}"
echo -e "${RED}============================================================${NC}"
exit 1
fi