DROP PROCEDURE WFDK_HistoricoFolios_Wrapper
GO

CREATE PROCEDURE WFDK_HistoricoFolios_Wrapper
	@modo INT,
	@fec_ini DATE,
	@fec_fin DATE,
	@empresa VARCHAR(50),
	@Fil_cod_tcob BIT,
	@vFil_cod_tcob VARCHAR(3000),
	@Fil_refer_thab BIT,
	@vFil_refer_thab VARCHAR(3000),
	@Fil_id_oper BIT,
	@vFil_id_oper INT,
	@Fil_nro_factura BIT,
	@vFil_nro_factura INT,
	@vFil_nro_factura2 INT,
	@Fil_nro_recibo BIT,
	@vFil_nro_recibo INT,
	@vFil_nro_recibo2 INT,
	@Fil_notas BIT,
	@vFil_notas INT,
	@cierre BIT = 0,
	@id_zeje INT = 0,
	@zantes BIT = 0 
AS
BEGIN

	DECLARE @Fil VARCHAR(5000) = ''
	DECLARE @filtro VARCHAR(8000) = ''
	
	IF @modo = 4
	BEGIN
		DECLARE @fecha_hotelera DATE = (SELECT TOP 1 fecha_hotelera FROM HOTETABL)
		SET @fec_ini = @fecha_hotelera
		SET @fec_fin = @fecha_hotelera
	END
	
	SET @Fil = @Fil + 'LblGENStart: ' + CONVERT(VARCHAR(20), @fec_ini, 120)
	+ ', LblGENEnd: ' + CONVERT(VARCHAR(20), @fec_fin, 120)
	
	IF LEN(LTRIM(RTRIM(@Fil))) > 0
	BEGIN
		SET @Fil = @Fil + ', '
	END
	
	SET @Fil = @Fil + 'LblGENEmpresaContable: ' + @empresa
	
	-- Filtrado Adicional
	
	IF @Fil_cod_tcob = 1 AND LEN(LTRIM(RTRIM(@vFil_cod_tcob))) > 0
	BEGIN 
		IF LEN(LTRIM(RTRIM(@Fil))) > 0
		BEGIN
			SET @Fil = @Fil + ', '
		END
		
		SET @Fil = @Fil + 'LblGENTipoCobro: ' + @vFil_cod_tcob
	
	    IF LEN(LTRIM(RTRIM(@filtro))) > 0
		BEGIN
			SET @filtro = @filtro + ' AND '
		END
		ELSE
		BEGIN
			SET @filtro = @filtro + ' WHERE '
		END
		
		SET @filtro = @filtro + 'cod_tcob IN (''' + REPLACE(@vFil_cod_tcob, ',', ''',''') + ''') '
	END
	IF @Fil_refer_thab = 1 AND LEN(LTRIM(RTRIM(@vFil_refer_thab))) > 0
	BEGIN 
	    IF LEN(LTRIM(RTRIM(@Fil))) > 0
		BEGIN
			SET @Fil = @Fil + ', '
		END
		
		SET @Fil = @Fil + 'LblGENRoomType: ' + @vFil_refer_thab
	
	    IF LEN(LTRIM(RTRIM(@filtro))) > 0
		BEGIN
			SET @filtro = @filtro + ' AND '
		END
		ELSE
		BEGIN
			SET @filtro = @filtro + ' WHERE '
		END
		
		SET @filtro = @filtro + 'refer_thab IN (''' + REPLACE(@vFil_refer_thab, ',', ''',''') + ''') '
	END
	IF @Fil_id_oper = 1 
	BEGIN 
		IF LEN(LTRIM(RTRIM(@Fil))) > 0
		BEGIN
			SET @Fil = @Fil + ', '
		END
		
		SET @Fil = @Fil + 'LblGENUser: ' + ISNULL((SELECT nombre FROM IHSecurity..Operador WHERE id_oper = @vFil_id_oper), '')
		
		IF LEN(LTRIM(RTRIM(@filtro))) > 0
		BEGIN
			SET @filtro = @filtro + ' AND '
		END
		ELSE
		BEGIN
			SET @filtro = @filtro + ' WHERE '
		END
		
	    SET @filtro = @filtro + 'id_operador = ' + CAST(@vFil_id_oper AS VARCHAR)
	END
	IF @Fil_nro_factura = 1 
	BEGIN 
		IF LEN(LTRIM(RTRIM(@Fil))) > 0
		BEGIN
			SET @Fil = @Fil + ', '
		END
		
		SET @Fil = @Fil + 'LblGENFactura: ' + CAST(@vFil_nro_factura AS VARCHAR) + ' -> ' + CAST(@vFil_nro_factura2 AS VARCHAR)
		
		IF LEN(LTRIM(RTRIM(@filtro))) > 0
		BEGIN
			SET @filtro = @filtro + ' AND '
		END
		ELSE
		BEGIN
			SET @filtro = @filtro + ' WHERE '
		END
	
	    SET @filtro = @filtro + '(factura = 1 AND nro_factura >= ' + CAST(@vFil_nro_factura AS VARCHAR) 
			+ ' AND nro_factura <= ' + CAST(@vFil_nro_factura2 AS VARCHAR) + ')'
	END
	IF @Fil_nro_recibo = 1 
	BEGIN 
		IF LEN(LTRIM(RTRIM(@Fil))) > 0
		BEGIN
			SET @Fil = @Fil + ', '
		END
		
		SET @Fil = @Fil + 'LblGENRecibo: ' + CAST(@vFil_nro_recibo AS VARCHAR) + ' -> ' + CAST(@vFil_nro_recibo2 AS VARCHAR)
		
		IF LEN(LTRIM(RTRIM(@filtro))) > 0
		BEGIN
			SET @filtro = @filtro + ' AND '
		END
		ELSE
		BEGIN
			SET @filtro = @filtro + ' WHERE '
		END
	
	    SET @filtro = @filtro + '(factura = 0 AND nro_factura >= ' + CAST(@vFil_nro_recibo AS VARCHAR) 
			+ ' AND nro_factura <= ' + CAST(@vFil_nro_recibo2 AS VARCHAR) + ')'
	END
	IF @Fil_notas = 1 
	BEGIN 
		IF LEN(LTRIM(RTRIM(@Fil))) > 0
		BEGIN
			SET @Fil = @Fil + ', '
		END
		
		SET @Fil = @Fil + 'LblGENNotas: ' 
		
		IF LEN(LTRIM(RTRIM(@filtro))) > 0
		BEGIN
			SET @filtro = @filtro + ' AND '
		END
		ELSE
		BEGIN
			SET @filtro = @filtro + ' WHERE '
		END
	
		IF @vFil_notas = 0
		BEGIN
			SET @Fil = @Fil + 'LblGENTodo'
			SET @filtro = @filtro + 'SUBSTRING(id_origen, 1, 1) = ''N'''
		END
		IF @vFil_notas = 1
		BEGIN
			SET @Fil = @Fil + 'LblGENNotaDebito'
			SET @filtro = @filtro + 'SUBSTRING(id_origen, 1, 2) = ''ND'''
		END
		IF @vFil_notas = 2
		BEGIN
			SET @Fil = @Fil + 'LblGENNotaCredito'
			SET @filtro = @filtro + 'SUBSTRING(id_origen, 1, 2) = ''NC'''
		END
	END

	IF @modo <> 4
	BEGIN
		IF @modo = 7
		BEGIN
			EXECUTE Facturas_Cerradas_Detallado @fec_ini, @fec_fin, @filtro, @modo, @empresa
		END
		ELSE
		BEGIN
			EXECUTE Facturas_Cerradas @fec_ini, @fec_fin, @filtro, @modo, @empresa
		END
	END
	ELSE
	BEGIN
	    IF @cierre = 0
	    BEGIN
			EXECUTE Facturas_Notas_Cerradas @filtro, @empresa
		END
		ELSE
		BEGIN
			CREATE TABLE #TempCierLFCS
			(
				cuenta VARCHAR(200),
				nro_cheque INT,
				nro_documento VARCHAR(200),
				Empresa VARCHAR(50),
				id_origen VARCHAR(100),
				refer_thab VARCHAR(100),
				cliente VARCHAR(500),
				importe_moncob MONEY,
				mon_cob VARCHAR(100),
				importe_monfact MONEY,
				mon_fact VARCHAR(100),
				fecha_cierre DATETIME,
				id_operador INT,
				cod_tcob VARCHAR(100),
				lnota VARCHAR(50),
				descripcion VARCHAR(1000),
				factura INT,
				nro_factura INT,
				Hospedaje MONEY,
				ayb MONEY,
				otros MONEY,
				Depositos MONEY,
				impuestos MONEY,
				operador VARCHAR(100),
				terminal VARCHAR(100) 
			)
			IF @zantes = 0
			BEGIN
				IF NOT EXISTS (SELECT id_zeje FROM CIEDLFCS WHERE id_zeje = @id_zeje)
				BEGIN
					INSERT #TempCierLFCS
					EXECUTE Facturas_Notas_Cerradas @filtro, @empresa
					
					INSERT CIEDLFCS
					SELECT @id_zeje id_zeje, *
					FROM   #TempCierLFCS
				END
			END
			ELSE
			BEGIN
				IF NOT EXISTS (SELECT id_zeje FROM CIEALFCS WHERE id_zeje = @id_zeje)
				BEGIN
					INSERT #TempCierLFCS
					EXECUTE Facturas_Notas_Cerradas @filtro, @empresa
					
					INSERT CIEALFCS
					SELECT @id_zeje id_zeje, *
					FROM   #TempCierLFCS
				END
			END
		END
	END
	
	IF @cierre = 0
	BEGIN
		SELECT @Fil Filtro
	END
	ELSE
	BEGIN
		IF @zantes = 0
		BEGIN
			IF NOT EXISTS (SELECT id_zeje FROM CIERFLTR WHERE id_zeje = @id_zeje AND orden = 2600)
			BEGIN
				INSERT INTO CIERFLTR (id_zeje, orden, filtro) VALUES (@id_zeje, 2600, @Fil)
			END
		END
		ELSE
		BEGIN
			IF NOT EXISTS (SELECT id_zeje FROM CIERFLTR WHERE id_zeje = @id_zeje AND orden = 300)
			BEGIN
				INSERT INTO CIERFLTR (id_zeje, orden, filtro) VALUES (@id_zeje, 300, @Fil)
			END
		END
	END

	RETURN
	
END