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:
96
scripts_sql/README_INVENTORY_FIX.md
Normal file
96
scripts_sql/README_INVENTORY_FIX.md
Normal 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.
|
||||
69
scripts_sql/emergency_rollback_inventory.sh
Executable file
69
scripts_sql/emergency_rollback_inventory.sh
Executable 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
|
||||
Reference in New Issue
Block a user