--Hash:24639E7F9E94BEE65587461E7FB0E880
SET XACT_ABORT ON
BEGIN TRANSACTION;

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 < 911
)
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)

/*
 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

GO
PRINT N'Altering Procedure [dbo].[GetCalcularDiasLiquidados]...';


GO
ALTER PROCEDURE GetCalcularDiasLiquidados

@FechaIni DATE,
@FechaFin DATE,
@IdContrato NVARCHAR(MAX),
@DiasNomina NUMERIC(28,6)

AS
BEGIN

DECLARE

@FechaIniPeriodo DATE,
@FechaFinPeriodo DATE

SET @FechaIniPeriodo = DATEADD(DAY, 1, EOMONTH(@FechaIni, -1))
SET @FechaFinPeriodo = EOMONTH(@FechaFin)

;WITH tmpDaysLiquidated(IdCliente, IdContrato, LiquidatedDays, Descripcion) --Dias que ya fueron liquidados
AS
(
	--Dias Retirado
	SELECT q1.IdCliente, q1.IdContrato, q1.DiasRetirado,
	(
		CASE WHEN q1.DiasRetirado = 0 THEN NULL 
		ELSE ('Dias Fin Contrato: ' + FORMAT(q1.DiasRetirado, '##,##')) END
	) AS Descripcion
	FROM
	(
		SELECT cont.IdCliente, cont.IdContrato, 
		CASE WHEN FechaRetiro < @FechaFin THEN (DATEDIFF(DAY, FechaRetiro, @FechaFin) + 1) ELSE 0 END AS DiasRetirado
		FROM Nomina_Contratos cont
		WHERE cont.IdContrato IN (SELECT number FROM iter$simple_intlist_to_tbl(@IdContrato))
		AND FechaRetiro >= @FechaIni AND FechaRetiro <= @FechaFin
	) AS q1

	UNION ALL

	--Dias Inicio Contrato
	SELECT q2.IdCliente, q2.IdContrato, q2.DiasInicio, 
	(
		CASE WHEN q2.DiasInicio = 0 THEN NULL
		ELSE ('Dias Inicio Contrato: ' + FORMAT(q2.DiasInicio, '##,##')) END
	) AS Descripcion
	FROM
	(
		SELECT cont.IdCliente, cont.IdContrato,
		CASE WHEN FechaIni > @FechaIni THEN (DATEDIFF(DAY, @FechaIni, FechaIni) + 1) ELSE 0 END AS DiasInicio
		FROM Nomina_Contratos cont
		WHERE cont.IdContrato IN (SELECT number FROM iter$simple_intlist_to_tbl(@IdContrato))
		AND FechaIni >= @FechaIni AND FechaIni <= @FechaFin
	) AS q2

	UNION ALL

	--Dias Novedades
	SELECT q3.IdCliente, q3.IdContrato, SUM(q3.Cantidad) AS Cantidad,
	(
		CASE WHEN SUM(q3.Cantidad) = 0 THEN NULL
		ELSE ('Novedades: ' + FORMAT(SUM(q3.Cantidad), '##,##')) END
	) AS Descripcion
	FROM
	(
		SELECT cont.IdCliente, cont.IdContrato, 
		(
			(DATEDIFF(DD, NoMo.FechaIniVac, NoMo.FechaFinVac) + 1) -
			CASE WHEN @FechaFin < NoMo.FechaIniVac OR @FechaIni > NoMo.FechaFinVac THEN (DATEDIFF(DD, NoMo.FechaIniVac, NoMo.FechaFinVac) + 1)
			ELSE
				( CASE WHEN @FechaIni > NoMo.FechaIniVac THEN DATEDIFF(DD, NoMo.FechaIniVac, @FechaIni) ELSE 0 END +
				CASE WHEN @FechaFin < NoMo.FechaFinVac THEN DATEDIFF(DD, @FechaFin, NoMo.FechaFinVac) ELSE 0 END )
			END
		) AS Cantidad
		FROM Nomina_Contratos cont
		INNER JOIN Nomina_Movimientos NoMo ON NoMo.IdContrato = cont.IdContrato
		INNER JOIN Nomina_Items NoIt ON NoIt.IdItem = NoMo.IdItem
		WHERE cont.IdContrato IN (SELECT number FROM iter$simple_intlist_to_tbl(@IdContrato)) 
		AND FechaFinVac >= @FechaIniPeriodo AND FechaFinVac <= @FechaFinPeriodo
		AND NoIt.FactorProv = 1
		AND NoIt.IdClasif = 1
	) AS q3
	GROUP BY q3.IdCliente, q3.IdContrato

	UNION ALL

	--Dias Laborados
	SELECT q4.IdCliente, q4.IdContrato, SUM(q4.Cantidad) AS Cantidad,
	(
		CASE WHEN SUM(q4.Cantidad) = 0 THEN NULL
		ELSE ('Dias Sueldo: ' + FORMAT(SUM(q4.Cantidad), '##,##')) END
	) AS Descripcion
	FROM 
	(	
		SELECT enc.IdEncab, cont.IdCliente, cont.IdContrato,  
		(
			Cantidad -
			CASE WHEN enc.FechaIni > @FechaFin OR enc.FechaFin < @FechaIni THEN Cantidad
			ELSE
				( CASE WHEN enc.FechaIni <= @FechaIni THEN (DATEDIFF(DD, enc.FechaIni, @FechaIni)) ELSE 0 END +
				CASE WHEN enc.FechaFin >= @FechaFin THEN (DATEDIFF(DD, @FechaFin, enc.FechaFin)) ELSE 0 END )
			END
		) AS Cantidad
		FROM Nomina_Contratos cont
		INNER JOIN Nomina_Movimientos NoMo ON NoMo.IdContrato = cont.IdContrato
		INNER JOIN Encabezados enc ON enc.IdEncab = NoMo.IdEncab
		WHERE cont.IdContrato IN (SELECT number FROM iter$simple_intlist_to_tbl(@IdContrato))
		AND enc.FechaIni >= @FechaIniPeriodo AND enc.FechaFin <= @FechaFinPeriodo
		AND NoMo.IdItem = 101
	) AS q4
	GROUP BY q4.IdCliente, q4.IdContrato
)

--Consulta Final
SELECT Cont.IdCliente, Cont.IdContrato,
(
	--En caso de que el empleado tenga un contrato fuera del rango de la Nomina
	CASE WHEN MAX(Cont.FechaIni) > @FechaFin OR MAX(Cont.FechaRetiro) < @FechaIni THEN 0 
	ELSE COALESCE((@DiasNomina - SUM(LiquidatedDays)), @DiasNomina) END
) AS LiquidatedDays,
(
	CASE WHEN MAX(Cont.FechaIni) > @FechaFin THEN 'El contrato no ha iniciado' 
	ELSE 
		CASE WHEN MAX(Cont.FechaRetiro) < @FechaIni THEN 'El contrato ha terminado' 
		ELSE
		STUFF(	
				(SELECT Descripcion + ',' 
				FROM tmpDaysLiquidated tmpDL
				WHERE tmpDL.IdContrato = Cont.IdContrato
				AND tmpDL.IdCliente = Cont.IdCliente
				FOR XML PATH (''))
		, 1, 0, '') 
		END
	END
)AS Descripcion
FROM Nomina_Contratos Cont
LEFT JOIN tmpDaysLiquidated tmp ON tmp.IdContrato = Cont.IdContrato
WHERE Cont.IdContrato IN (SELECT number FROM iter$simple_intlist_to_tbl(@IdContrato))
GROUP BY Cont.IdCliente, Cont.IdContrato

END
GO
PRINT N'Altering Procedure [dbo].[GetLiquidarNomina]...';


GO
ALTER PROCEDURE [dbo].[GetLiquidarNomina]

	@IdMoneda INT,
	@Fecha datetime,
	@FechaIni datetime,
	@FechaFin datetime,
	@IdEmpresa INT,
	@NumDocumento INT,
	@IdCliente1 INT,
	@EsAnulado BIT,
	@EsBloqueado BIT,
	@EsRevisado BIT,
	@EsImpreso BIT,
	@InfoUsuario NVARCHAR(100),
	@Cantidad NUMERIC(28,6),
	@IdEncab INT,
	@IdEmpleado NVARCHAR(max),
	@ValorBase NUMERIC(28,6),
	@AuxTransport NUMERIC(28,6),
	@DiasLiquidados NVARCHAR(MAX) = '',
	@EsFondoSolid BIT=0,
	@EsAuxTransportDed BIT=0,
	@EsHorasExtas BIT=0,
	@EsNew BIT=0,
	@Exito INT = 0 output,
	@IdEncabNuevo INT = 0 output
As

BEGIN

DECLARE 

@salarioMin NUMERIC(28,6),
@AuxTrans NUMERIC(28,6),
@EmpleadoHoras int=0,
@FechaCorte DATETIME,
@FechaIniT DATETIME,
@IdDocumento int=0,
@IdEmpleadoCurrent INT=0

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

	--Información Usuario
	exec CrearContextoUsuario @InfoUsuario
	
	-- Salario Mínimo y Auxilio de transporte
	SET @salarioMin=(SELECT Valor FROM dbo.Nomina_Valores WHERE IdTipo=1 AND EsActivo=1)
	SET @AuxTrans=(SELECT Valor FROM dbo.Nomina_Valores WHERE IdTipo=2 AND EsActivo=1)
	
	IF @IdEncab is null
		INSERT INTO Encabezados(IdEmpresa,IdDocumento,NumDocumento,Fecha,FechaIni,FechaFin,IdCliente1,IdMoneda,EsAnulado,EsBloqueado,EsRevisado,EsImpreso,IdTipo)
		VALUES (@IdEmpresa,20,@NumDocumento,@Fecha,@FechaIni,@FechaFin,@IdCliente1,@IdMoneda,@EsAnulado,@EsBloqueado,@EsRevisado,@EsImpreso,1)
		
	SET @IdEncabNuevo=IsNull(@IdEncab,IDENT_CURRENT('Encabezados'))
	
	--Fecha de corte para el calculo de Aux de Transporte
	SET @FechaCorte= DATEADD(dd,-(DATEPART(dd,@FechaIni)-1),@FechaIni)
	
	SET @FechaIniT = CAST(CONVERT(DATETIME, @FechaIni, 103) + ' 23:59:59' AS DATETIME)

	
	select @IdDocumento=IdDocumento
	from Encabezados
	where IdEncab=@IdEncabNuevo

	--Eliminar registros de sueldo
	IF @EsNew=1
		DELETE FROM Nomina_Movimientos
		WHERE IdEncab=IsNull(@IdEncabNuevo,0) and IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado)) 
		and (EsVisible=0 or IdItem in(
		select IdItem
		from dbo.Nomina_Items
		where IdClasif in(1)
		))
	
	--Eliminar registros de Aux de transporte
	DELETE FROM Nomina_Movimientos
	WHERE IdEncab=IsNull(@IdEncabNuevo,0) and IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado)) 
	and (EsVisible=0 or IdItem in(
	select IdItem
	from dbo.Nomina_Items
	where IdClasif = 3 -- in(3)
	))
	
IF @EsFondoSolid=1
	--Eliminar registros de fondo de solidaridad
	DELETE FROM Nomina_Movimientos
	WHERE IdEncab=IsNull(@IdEncabNuevo,0) and IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado)) 
	and IdItem=199

	
	--Recalcular Item de sueldo
	IF @EsNew=1

		IF @DiasLiquidados = ''

			INSERT INTO dbo.Nomina_Movimientos(IdEncab, IdCliente,IdContrato,IdItem, Cantidad, IdTiempo, ValorBase, ValorUnit,ValorUnitInferior,IdCentroCosto)
			select @IdEncabNuevo,q.IdCliente,q.IdCOntrato,min(q.IdItem),case when @IdDocumento=49 then @Cantidad else q.Cantidad end,1,q.ValorBase,q.ValorUnit,q.ValorDiv,q.IdCentroCosto
		
			from
			(	
					SELECT cont.IdCliente,IdContrato,item.IdItem,
					CASE WHEN FechaIni>@FechaIni AND FechaRetiro<@FechaFin THEN DATEDIFF(day,FechaIni,FechaRetiro)+1 ELSE
					CASE WHEN FechaIni>@FechaIni THEN DATEDIFF(day,FechaIni,@FechaFin)+1 ELSE
					CASE WHEN FechaRetiro<@FechaFin THEN DATEDIFF(day,@FechaIni,FechaRetiro)+1 ELSE @Cantidad END END END AS Cantidad,
					IsNull(@ValorBase,SueldoIni)ValorBase,IsNull(@ValorBase,SueldoIni)ValorUnit,30 ValorDiv,cliEmp.IdCentroCosto
					FROM  dbo.Nomina_Contratos cont inner join Nomina_Configuracion confi 
					on cont.IdPlantilla=confi.IdPlantilla inner join Nomina_Items item
					on confi.IdItem=item.IdItem inner join dbo.Clientes_Empleados as cliEmp
					on cliEmp.IdCliente=cont.IdCliente
					WHERE cont.EsActivo=1 and @FechaFin>=IsNull(FechaIni,@FechaFin) and @FechaIni<=IsNull(FechaRetiro,@FechaIni)and cont.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
					and item.IdClasif=1 and IsNull(cont.IdEmpresa,@IdEmpresa)=@IdEmpresa
			) AS q
			group by q.IdCliente,q.IdCOntrato,q.Cantidad,q.ValorBase,q.ValorUnit,q.ValorDiv,q.IdCentroCosto

		ELSE
		
			INSERT INTO dbo.Nomina_Movimientos(IdEncab, IdCliente,IdContrato,IdItem, Cantidad, 
						IdTiempo, ValorBase, ValorUnit,ValorUnitInferior,IdCentroCosto)
			SELECT @IdEncabNuevo,q.IdCliente,q.IdCOntrato,min(q.IdItem),case when @IdDocumento=49 then @Cantidad else q.Cantidad end,
					1,q.ValorBase,q.ValorUnit,q.ValorDiv,q.IdCentroCosto
		
			FROM
			(	
					--- NEW CASE --- 
					SELECT cont.IdCliente, cont.IdContrato, item.IdItem,
					DiasLiquidar.DiasLiquidar AS Cantidad,
					IsNull(@ValorBase,SueldoIni)ValorBase,IsNull(@ValorBase,SueldoIni)ValorUnit,30 ValorDiv,cliEmp.IdCentroCosto
					FROM (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID,
							number AS IdEmpleado 
							FROM iter$simple_intlist_to_tbl(@IdEmpleado)
						 ) AS IdEmpleado
					INNER JOIN (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID,
								(CAST((CAST(number AS NUMERIC(28,6)) / 1000000) AS NUMERIC(28,6))) AS DiasLiquidar
								FROM iter$simple_intlist_to_tbl(@DiasLiquidados)
								) AS DiasLiquidar ON DiasLiquidar.ID = IdEmpleado.ID
					INNER JOIN dbo.Nomina_Contratos cont ON cont.IdCliente = IdEmpleado.IdEmpleado
					INNER JOIN Nomina_Configuracion confi ON cont.IdPlantilla=confi.IdPlantilla 
					INNER JOIN Nomina_Items item ON confi.IdItem=item.IdItem 
					INNER JOIN dbo.Clientes_Empleados AS cliEmp ON cliEmp.IdCliente=cont.IdCliente
					WHERE cont.EsActivo=1 
					AND @FechaFin>=IsNull(FechaIni,@FechaFin) AND @FechaIni<=IsNull(FechaRetiro,@FechaIni)
					AND cont.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
					AND item.IdClasif=1
					AND IsNull(cont.IdEmpresa,@IdEmpresa)=@IdEmpresa
			) AS q
			GROUP BY q.IdCliente,q.IdCOntrato,q.Cantidad,q.ValorBase,q.ValorUnit,q.ValorDiv,q.IdCentroCosto
		
	IF @EsNew=0 and @ValorBase is not null
		UPDATE dbo.Nomina_Movimientos
		SET ValorBase=@ValorBase,
		ValorUnit=@ValorBase
		WHERE Nomina_Movimientos.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
		  and IdEncab=@IdEncabNuevo and Iditem in (100,101,102)

  IF @EsFondoSolid=1
--Recalcular Fondo de Solidaridad
	INSERT INTO dbo.Nomina_Movimientos(IdEncab, IdCliente, IdItem,IdContrato, Cantidad, IdTiempo,ValorUnit,ValorUnitInferior,IdCentroCosto)
	select @IdEncabNuevo,q1.IdCliente,199,q1.IdContrato,1,1,max(Valor1)-MAX(ValorUnit),1,q1.IdCentroCosto
	from
	(	
	select 
	q.IdCliente,q.IdContrato,
	(Valor*IsNull(config.DivParteSuperior,1)/IsNull(config.DivParteInferior,1))*IsNull(PorcTarifa,0)/100 as Valor1,
	case when mov.IdItem=199 then ValorUnit else 0 end ValorUnit,
	cliEmp.IdCentroCosto
	from
		(
	select IdCliente,IdContrato,
			sum((ValorUnit/ValorUnitInferior)*cantidad) as Valor
			from dbo.Nomina_Movimientos mov inner join dbo.Nomina_Items item on mov.IdItem=item.IdItem
			inner join dbo.Encabezados as enc on mov.IdEncab=enc.IdEncab
			where EsFondoSolid=1 and (IsNull (Mov.FactorMov, 1) = 1)
			and enc.FechaIni between @FechaCorte and @FechaIniT and EsAnulado=0
			group by IdCliente,IdContrato) as q inner join dbo.Nomina_Movimientos mov on q.IdCliente=mov.IdCliente and q.IdContrato=mov.IdContrato
			inner join dbo.Encabezados as enc on mov.IdEncab=enc.IdEncab
		inner join dbo.Nomina_Items item on mov.IdItem=item.IdItem inner join dbo.Clientes_Empleados as cliEmp
		on cliEmp.IdCliente=q.IdCliente
		inner join Nomina_Contratos con on q.IdContrato=con.IdContrato left join [dbo].[Nomina_Configuracion] config on con.IdPlantilla=config.IdPlantilla and config.IdItem=199
		 left join  dbo.Nomina_Rangos nomRan on ((Valor*IsNull(config.DivParteSuperior,1)/IsNull(config.DivParteInferior,1))/@salarioMin) between nomRan.RangoIni and nomRan.RangoFin and nomRan.IdTipo='4'
		where  enc.FechaIni between @FechaCorte and  @FechaIniT and EsAnulado=0
		and (Valor/@salarioMin)>4 and q.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
		and ((item.IdClasif=1 and mov.IdEncab=@IdEncabNuevo) or mov.IdItem=199)) q1
		group by q1.IdCliente,q1.IdContrato,q1.IdCentroCosto
	
		
	--Recalcular Horas Extras	
IF (select count(number) from iter$simple_intlist_to_tbl(@IdEmpleado)) = 1 AND @EsHorasExtas=1
	BEGIN
		set @EmpleadoHoras=(select min(number) from iter$simple_intlist_to_tbl(@IdEmpleado))
		EXEC	RecalcNominaHorasExtra
 				      @EmpleadoHoras,
 				      @IdEncabNuevo,
 				      null,
 				      @Exito
     END
     
 	
 	--Recalcular aux de Transporte (Por ley)			      			      	
	IF @AuxTransport=-1	
	BEGIN

	;with tempPlantillas(IdPlantilla,IdItem,FactorPlantilla)
	as
	(
		select IdPlantilla,IdItem,max((isnull(DivParteSuperior,1)/isnull(DivParteInferior,1)))as FactorPlantilla
			from Nomina_Configuracion
			where IdItem=110
			group by IdPlantilla,IdItem
	)

	INSERT INTO dbo.Nomina_Movimientos(IdEncab, IdCliente, IdItem,IdContrato,Cantidad, IdTiempo,ValorUnit,ValorUnitInferior,IdCentroCosto)
		select @IdEncabNuevo,q.IdCliente,110,q.IdContrato,sum(mov.Cantidad),1,@AuxTrans*ISNULL(FactorPlantilla,1),30,cliEmp.IdCentroCosto
		from
		(select IdCliente,IdContrato,
			case when count(distinct enc.IdEncab)=1 then sum (case when IdClasif=1 then (ValorBase * EsValorBase) else (ValorUnit/ValorUnitInferior)*cantidad end)
			else sum((ValorUnit/ValorUnitInferior)*cantidad)end as Valor,
			max(cantidad) as cantidad
			from dbo.Nomina_Movimientos mov inner join dbo.Nomina_Items item on mov.IdItem=item.IdItem
			inner join dbo.Encabezados as enc on mov.IdEncab=enc.IdEncab
			where EsAuxTransp=1 and (COALESCE (Mov.FactorMov, 1) = 1)
			and enc.FechaIni between @FechaCorte and @FechaIniT and EsAnulado=0
			group by IdCliente,IdContrato)as q inner join dbo.Nomina_Movimientos mov on q.IdCliente=mov.IdCliente and q.IdContrato=mov.IdContrato
		inner join dbo.Nomina_Items item on mov.IdItem=item.IdItem inner join dbo.Clientes_Empleados as cliEmp
		on cliEmp.IdCliente=q.IdCliente inner join Nomina_Contratos contrato
		on contrato.IdContrato=q.IdContrato inner join tempPlantillas plantilla on contrato.IdPlantilla=plantilla.IdPlantilla 
		where Valor<=(@salarioMin*2)	and q.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
		and item.IdClasif=1 and item.EsAuxTranspDias=1 and mov.IdEncab=@IdEncabNuevo
		group by q.IdCliente,q.IdContrato,cliEmp.IdCentroCosto,FactorPlantilla

     END


	    IF @EsAuxTransportDed=1	
		--Calcular descuento del Auxilio de Transporte
		BEGIN
		
		DELETE FROM Nomina_Movimientos
		WHERE IdEncab=IsNull(@IdEncabNuevo,0) and IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
		AND IdItem=217 
		
		INSERT INTO dbo.Nomina_Movimientos(IdEncab, IdCliente, IdItem, IdContrato, Cantidad, IdTiempo,ValorUnit,ValorUnitInferior,IdCentroCosto)
		select @IdEncabNuevo,q.IdCliente,217,q.IdContrato,1,1,(@AuxTrans*mov.Cantidad/30),1,cliEmp.IdCentroCosto
		from
		(select IdCliente,IdContrato,
			sum((ValorUnit/ValorUnitInferior)*cantidad)as Valor,
			max(cantidad) as cantidad
			from dbo.Nomina_Movimientos mov inner join dbo.Nomina_Items item on mov.IdItem=item.IdItem
			inner join dbo.Encabezados as enc on mov.IdEncab=enc.IdEncab
			where EsAuxTransp=1 and (IsNull (Mov.FactorMov, 1) = 1)
			and enc.FechaIni between @FechaCorte and @FechaIniT and EsAnulado=0
			group by IdCliente,IdContrato)as q inner join dbo.Nomina_Movimientos mov on q.IdCliente=mov.IdCliente and q.IdContrato=mov.IdContrato
		inner join dbo.Nomina_Items item on mov.IdItem=item.IdItem inner join dbo.Clientes_Empleados as cliEmp
		on cliEmp.IdCliente=q.IdCliente inner join dbo.Encabezados as enc on mov.IdEncab=enc.IdEncab
		where Valor>(@salarioMin*2)	and q.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
		and item.IdItem=110 and enc.FechaIni between @FechaCorte and @FechaIniT and EsAnulado=0
		END
	  
	--Recalcular Aux de Transporte Personalizado
	IF @AuxTransport>0
	INSERT INTO dbo.Nomina_Movimientos(IdEncab, IdCliente, IdItem,IdContrato,Cantidad, IdTiempo,ValorUnit,ValorUnitInferior,IdCentroCosto)
	SELECT @IdEncabNuevo,IsNull(@IdEmpleado,cont.IdCliente),110,cont.IdContrato,@Cantidad,1,@AuxTransport,30,cliEmp.IdCentroCosto
	FROM  dbo.Nomina_Contratos cont inner join Nomina_Configuracion confi 
	on cont.IdPlantilla=confi.IdPlantilla inner join Nomina_Items item
	on confi.IdItem=item.IdItem inner join dbo.Clientes_Empleados as cliEmp
	on cliEmp.IdCliente=cont.IdCliente
	WHERE cont.EsActivo=1 and cont.IdCliente IN(select number from iter$simple_intlist_to_tbl(@IdEmpleado))
	and item.IdClasif=3 and IsNull(cont.IdEmpresa,@IdEmpresa)=@IdEmpresa
	      
   --Insert de los registros hijos(Visible=0)--
	EXEC  dbo.GetLiquidarNominaHijos @IdEncabNuevo,@IdEmpresa,@IdEmpleado,NULL
	
	--Procedimiento actualizar intereses sobre cesantias
	EXEC  dbo.GenerarInteresesCesantias @IdEncabNuevo,@IdEmpleado

		
IF @@error <> 0 GOTO ERR_HANDLER
    
SET @Exito = 1
RETURN
    
ERR_HANDLER:
SET @Exito = 0
	       
END
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)]					
	--------------------------------------------------------------------------------------
	*/
GO

GO
PRINT N'Update complete.';


GO


--Actualizar datos de la version
INSERT INTO ZiurVersiones (IdVersion, NumVersion, Descripcion)
VALUES (321,911,'Correcion desarrollo de Vacaciones')
GO

COMMIT
GO
