--Hash:1894CB6A0D4E4125C6E3D9309BCF2E51

-- 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 = 964)
BEGIN
    PRINT N'Scripts_964.sql: la version 964 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 < 964
)
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
/*
 Plantilla de script anterior a la implementación							
--------------------------------------------------------------------------------------
 Este archivo contiene instrucciones de SQL que se ejecutarán antes del script de compilación	
 Use la sintaxis de SQLCMD para incluir un archivo en el script anterior a la implementación			
 Ejemplo:      :r .\miArchivo.sql								
 Use la sintaxis de SQLCMD para hacer referencia a una variable en el script anterior a la implementación		
 Ejemplo:      :setvar TableName miTabla							
               SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/
GO


----------------------------------------------------------------------------
--Actualizacion Normativa 2025
--//
UPDATE Nomina_Valores 
SET  EsActivo = 0  
WHERE IdValor IN (1043, 1044, 1045, 1046)
GO

IF NOT EXISTS(SELECT IdValor FROM Nomina_Valores WHERE IdValor = 1047)
INSERT INTO Nomina_Valores (IdValor, IdTipo, Valor, FechaIni, FechaFin, EsActivo)
VALUES (1047, 1, 1423500, '2025-01-01' , '2025-12-31', 1 )
GO

IF NOT EXISTS(SELECT IdValor FROM Nomina_Valores WHERE IdValor = 1048)
INSERT INTO Nomina_Valores (IdValor, IdTipo, Valor, FechaIni, FechaFin, EsActivo)
VALUES (1048, 2, 200000, '2025-01-01' , '2025-12-31', 1 )
GO

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

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

--Impuesto saludable 2025
--//
update Impuestos_SaludablesValores set EsActivo=0 where IdValor in(1,3,4,5)
update Impuestos_SaludablesValores set EsActivo=1 where IdValor in(9,10,11)
update Impuestos_SaludablesValores set RangoIni=0, RangoFin=6 where IdValor=9
update Impuestos_SaludablesValores set RangoIni=6, RangoFin=10 where IdValor=10
update Impuestos_SaludablesValores set RangoIni=10, RangoFin=999999 where IdValor=11
GO

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

GO
PRINT N'Update complete.';


GO

--Actualizar datos de la version
IF NOT EXISTS (SELECT 1 FROM dbo.ZiurVersiones WHERE NumVersion = 964)
BEGIN
    INSERT INTO dbo.ZiurVersiones (IdVersion, NumVersion, Descripcion)
    VALUES (374, 964, 'Valores actualizados para 2025');
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
