Files
SIG-CM2.0/database/migrations/V014_ROLLBACK.sql

142 lines
5.9 KiB
Transact-SQL

-- V014_ROLLBACK.sql
-- Reversa de V014__create_tablas_fiscales.sql.
--
-- ADVERTENCIA: ejecutar ELIMINA TipoDeIva, IngresosBrutos, sus historiales temporales,
-- el permiso 'administracion:fiscal:gestionar' y sus asignaciones.
--
-- Uso intended: ROLLBACK en entornos NO-productivos.
-- Prerequisito: no deben existir FKs vivas apuntando a estas tablas (FAC-001, etc.).
-- Si FAC-001 ya esta aplicado, este rollback fallara — usar backup.
--
-- Idempotente: seguro para re-ejecutar (guards en cada paso).
SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
SET NOCOUNT ON;
GO
-- ═══════════════════════════════════════════════════════════════════════
-- 1. Apagar SYSTEM_VERSIONING — TipoDeIva
-- ═══════════════════════════════════════════════════════════════════════
IF EXISTS (SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('dbo.TipoDeIva') AND temporal_type = 2)
BEGIN
ALTER TABLE dbo.TipoDeIva SET (SYSTEM_VERSIONING = OFF);
PRINT 'TipoDeIva: SYSTEM_VERSIONING OFF.';
END
GO
IF EXISTS (SELECT 1 FROM sys.periods WHERE object_id = OBJECT_ID('dbo.TipoDeIva'))
BEGIN
ALTER TABLE dbo.TipoDeIva DROP PERIOD FOR SYSTEM_TIME;
PRINT 'TipoDeIva: PERIOD FOR SYSTEM_TIME dropped.';
END
GO
IF COL_LENGTH('dbo.TipoDeIva', 'ValidFrom') IS NOT NULL
BEGIN
ALTER TABLE dbo.TipoDeIva DROP CONSTRAINT IF EXISTS DF_TipoDeIva_ValidFrom;
ALTER TABLE dbo.TipoDeIva DROP CONSTRAINT IF EXISTS DF_TipoDeIva_ValidTo;
ALTER TABLE dbo.TipoDeIva DROP COLUMN ValidFrom, ValidTo;
PRINT 'TipoDeIva: ValidFrom/ValidTo dropped.';
END
GO
-- ═══════════════════════════════════════════════════════════════════════
-- 2. Apagar SYSTEM_VERSIONING — IngresosBrutos
-- ═══════════════════════════════════════════════════════════════════════
IF EXISTS (SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('dbo.IngresosBrutos') AND temporal_type = 2)
BEGIN
ALTER TABLE dbo.IngresosBrutos SET (SYSTEM_VERSIONING = OFF);
PRINT 'IngresosBrutos: SYSTEM_VERSIONING OFF.';
END
GO
IF EXISTS (SELECT 1 FROM sys.periods WHERE object_id = OBJECT_ID('dbo.IngresosBrutos'))
BEGIN
ALTER TABLE dbo.IngresosBrutos DROP PERIOD FOR SYSTEM_TIME;
PRINT 'IngresosBrutos: PERIOD FOR SYSTEM_TIME dropped.';
END
GO
IF COL_LENGTH('dbo.IngresosBrutos', 'ValidFrom') IS NOT NULL
BEGIN
ALTER TABLE dbo.IngresosBrutos DROP CONSTRAINT IF EXISTS DF_IIBB_ValidFrom;
ALTER TABLE dbo.IngresosBrutos DROP CONSTRAINT IF EXISTS DF_IIBB_ValidTo;
ALTER TABLE dbo.IngresosBrutos DROP COLUMN ValidFrom, ValidTo;
PRINT 'IngresosBrutos: ValidFrom/ValidTo dropped.';
END
GO
-- ═══════════════════════════════════════════════════════════════════════
-- 3. Drop FK self antes de DROP TABLE (para evitar constraint violation)
-- ═══════════════════════════════════════════════════════════════════════
IF OBJECT_ID('FK_TipoDeIva_Predecesor', 'F') IS NOT NULL
BEGIN
ALTER TABLE dbo.TipoDeIva DROP CONSTRAINT FK_TipoDeIva_Predecesor;
PRINT 'FK_TipoDeIva_Predecesor dropped.';
END
GO
IF OBJECT_ID('FK_IIBB_Predecesor', 'F') IS NOT NULL
BEGIN
ALTER TABLE dbo.IngresosBrutos DROP CONSTRAINT FK_IIBB_Predecesor;
PRINT 'FK_IIBB_Predecesor dropped.';
END
GO
-- ═══════════════════════════════════════════════════════════════════════
-- 4. Drop history tables → main tables
-- ═══════════════════════════════════════════════════════════════════════
IF OBJECT_ID(N'dbo.TipoDeIva_History', N'U') IS NOT NULL
BEGIN
DROP TABLE dbo.TipoDeIva_History;
PRINT 'TipoDeIva_History dropped.';
END
GO
IF OBJECT_ID(N'dbo.IngresosBrutos_History', N'U') IS NOT NULL
BEGIN
DROP TABLE dbo.IngresosBrutos_History;
PRINT 'IngresosBrutos_History dropped.';
END
GO
IF OBJECT_ID(N'dbo.TipoDeIva', N'U') IS NOT NULL
BEGIN
DROP TABLE dbo.TipoDeIva;
PRINT 'Table dbo.TipoDeIva dropped.';
END
GO
IF OBJECT_ID(N'dbo.IngresosBrutos', N'U') IS NOT NULL
BEGIN
DROP TABLE dbo.IngresosBrutos;
PRINT 'Table dbo.IngresosBrutos dropped.';
END
GO
-- ═══════════════════════════════════════════════════════════════════════
-- 5. Remover permiso 'administracion:fiscal:gestionar' + RolPermiso
-- ═══════════════════════════════════════════════════════════════════════
DELETE rp
FROM dbo.RolPermiso rp
JOIN dbo.Permiso p ON p.Id = rp.PermisoId
WHERE p.Codigo = 'administracion:fiscal:gestionar';
GO
DELETE FROM dbo.Permiso
WHERE Codigo = 'administracion:fiscal:gestionar';
GO
PRINT '';
PRINT 'V014 rolled back.';
PRINT ' - dbo.TipoDeIva and dbo.TipoDeIva_History removed.';
PRINT ' - dbo.IngresosBrutos and dbo.IngresosBrutos_History removed.';
PRINT ' - Permiso administracion:fiscal:gestionar removed.';
GO