--Hash:9EA8B700286C420EDA73C0BF663F43D1

-- Bloqueo exclusivo por base de datos
--//
SET NOCOUNT ON;

DECLARE @__ZiurDbScriptLockResource NVARCHAR(200) = N'ZiurSoft:DbScriptLock:' + CAST(DB_ID() AS NVARCHAR(20));
DECLARE @__ZiurDbScriptLockResult INT;
EXEC @__ZiurDbScriptLockResult = sp_getapplock
    @Resource = @__ZiurDbScriptLockResource,
    @LockMode = N'Exclusive',
    @LockOwner = N'Session',
    @LockTimeout = 600000; -- 10 min

IF (@__ZiurDbScriptLockResult < 0)
BEGIN
    RAISERROR(N'No se pudo obtener el bloqueo exclusivo de actualizacion para esta base de datos.', 16, 1);
    SET NOEXEC ON;
END

/* Idempotencia a nivel de script: si la version ya existe, no ejecutar nada. */
IF EXISTS (SELECT 1 FROM dbo.ZiurVersiones WHERE NumVersion = 987)
BEGIN
    PRINT N'Scripts_987.sql: la version 987 ya esta aplicada. Se omite ejecucion.';
    EXEC sp_releaseapplock @Resource = @__ZiurDbScriptLockResource, @LockOwner = N'Session';
    SET NOEXEC ON;
END

SET XACT_ABORT ON

GO

SET DATEFORMAT mdy;

--Validar que no existan scripts que no se hayan ejecutado
--//
IF EXISTS
(
	SELECT a.NumVersion + 1 AS HuecoInicio
	FROM ZiurVersiones a
	LEFT JOIN ZiurVersiones b ON a.NumVersion + 1 = b.NumVersion
	WHERE a.NumVersion>830 AND b.NumVersion IS NULL
	AND a.NumVersion + 1 < 987
)
RAISERROR('Error : hay un script que no se ejecuto , debe ejecutarlo manualmente.', 20, -1) with log
--//

--Colocar contenido de script diferencial aqui (Ziur.Database.publish.sql)

GO

GO
	/*
	Plantilla de script posterior a la implementación							
	--------------------------------------------------------------------------------------
	 Este archivo contiene instrucciones de SQL que se anexarán al script de compilación.		
	 Use la sintaxis de SQLCMD para incluir un archivo en el script posterior a la implementación.			
	 Ejemplo:      :r .\miArchivo.sql								
	 Use la sintaxis de SQLCMD para hacer referencia a una variable en el script posterior a la implementación.		
	 Ejemplo:      :setvar TableName miTabla							
				   SELECT * FROM [$(TableName)]					
	--------------------------------------------------------------------------------------
	*/

	--Actualizar razon social Aseguradora de Vida Colseguros nit 860027404
	update Clientes set Nombre1 = 'Allianz Seguros de Vida S.A.' where Identificacion = '860027404'

	--Actualizar razon social Fondo de Solidaridad y Garantia - FOSYGA nit 901037916
	update Clientes set Nombre1 = 'Administradora de los Recursos del Sistema General de Seguridad Social en Salud1' where Identificacion = '901037916' and IdEstablec = 0
	update Clientes set Nombre1 = 'Administradora de los Recursos del Sistema General de Seguridad Social en Salud2' where Identificacion = '901037916' and IdEstablec = 1
	update Clientes set Nombre1 = 'Administradora de los Recursos del Sistema General de Seguridad Social en Salud3' where Identificacion = '901037916' and IdEstablec = 2


	----------------------------------------------------------------------------
	--Actualizacion Normativa 2026
	----------------------------------------------------------------------------

	--Nomina
	--//
	UPDATE Nomina_Valores 
	SET  EsActivo = 0  
	WHERE IdValor IN (1047, 1048, 1049, 1050)
GO

	IF NOT EXISTS(SELECT IdValor FROM Nomina_Valores WHERE IdValor = 1051)
		INSERT INTO Nomina_Valores (IdValor, IdTipo, Valor, FechaIni, FechaFin, EsActivo)
		VALUES (1051, 1, 1750905, '2026-01-01' , '2026-12-31', 1 )

	IF NOT EXISTS(SELECT IdValor FROM Nomina_Valores WHERE IdValor = 1052)
		INSERT INTO Nomina_Valores (IdValor, IdTipo, Valor, FechaIni, FechaFin, EsActivo)
		VALUES (1052, 2, 249095, '2026-01-01' , '2026-12-31', 1 )

	IF NOT EXISTS(SELECT IdValor FROM Nomina_Valores WHERE IdValor = 1053)
		INSERT INTO Nomina_Valores (IdValor, IdTipo, Valor, FechaIni, FechaFin, EsActivo)
		VALUES (1053, 5, 15, '2026-01-01' , '2026-12-31', 1 )

	IF NOT EXISTS(SELECT IdValor FROM Nomina_Valores WHERE IdValor = 1054)
		INSERT INTO Nomina_Valores (IdValor, IdTipo, Valor, FechaIni, FechaFin, EsActivo)
		VALUES (1054, 3, 52374, '2026-01-01' , '2026-12-31', 1 )
	--//

	--Impuestos Saludables
	--//
	UPDATE Impuestos_SaludablesValores SET EsActivo=0 WHERE IdValor in(9,10,11,12)
GO

	IF NOT EXISTS(SELECT * FROM Impuestos_SaludablesValores WHERE IdValor = 13)
		INSERT INTO Impuestos_SaludablesValores (IdValor, IdTipo, RangoIni, RangoFin, FechaIni, FechaFin, Valor, EsActivo)
		VALUES (13, 1, 0, 6, '2026-01-01', '2026-12-31', 0, 1)

	IF NOT EXISTS(SELECT * FROM Impuestos_SaludablesValores WHERE IdValor = 14)
		INSERT INTO Impuestos_SaludablesValores (IdValor, IdTipo, RangoIni, RangoFin, FechaIni, FechaFin, Valor, EsActivo)
		VALUES (14, 1, 6, 10, '2026-01-01', '2026-12-31', 40, 1)

	IF NOT EXISTS(SELECT * FROM Impuestos_SaludablesValores WHERE IdValor = 15)
		INSERT INTO Impuestos_SaludablesValores (IdValor, IdTipo, RangoIni, RangoFin, FechaIni, FechaFin, Valor, EsActivo)
		VALUES (15, 1, 10, 999999, '2026-01-01', '2026-12-31', 68, 1)

	IF NOT EXISTS(SELECT * FROM Impuestos_SaludablesValores WHERE IdValor = 16)
		INSERT INTO Impuestos_SaludablesValores (IdValor, IdTipo, RangoIni, RangoFin, FechaIni, FechaFin, Valor, EsActivo)
		VALUES (16, 0, 0, 0, '2026-01-01', '2026-12-31', 20, 1)
	--//
GO

GO
PRINT N'Update complete.';


GO


--Actualizar datos de la version

IF NOT EXISTS (SELECT 1 FROM dbo.ZiurVersiones WHERE NumVersion = 987)
BEGIN
    INSERT INTO dbo.ZiurVersiones (IdVersion, NumVersion, Descripcion)
    VALUES (397, 987, 'Actualizacion Normativa 2026');
END
GO


/* Liberar bloqueo exclusivo por base de datos */
DECLARE @__ZiurDbScriptLockResourceEnd NVARCHAR(200) = N'ZiurSoft:DbScriptLock:' + CAST(DB_ID() AS NVARCHAR(20));
EXEC sp_releaseapplock
    @Resource = @__ZiurDbScriptLockResourceEnd,
    @LockOwner = N'Session';
GO
