# 🆘 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.