ALTER PROCEDURE [dbo].[sp_finLeerDocumentos2]
(
@CUENTA VARCHAR(10) = '0',					--Cuenta Banco
@fechaHasta DATE = '01-01-2050',		    --Fecha de control - Se usa para calcular los dias de mora. <---Esto se corrige y se usa ahora para filtrar por fecha de vencimiento
@RUTINI    INT = 0,							--Rut proveedor
@RUTFIN    INT = 999999999,
@VENCIMIENTO INT =0,						--0= TODOS | 1= PorVencer | 2 = Vencidos
@fechaDesde DATE= '01-01-1900',             -- Fecha Vencimiento desde
@uniNeg		INT = 0							--Unidad de negocio
)
AS
	DECLARE @CONCOMPRA INT= (SELECT TOP(1) ISNULL(comprasnocon, 0) from cobParametros)
	DECLARE @AHORA DATETIME= GETDATE();

 DECLARE @DATOS TABLE
     (TipoComprobante VARCHAR(50), 
      numero          BIGINT, 
      cuenta          VARCHAR(10), 
      linea           INT, 
      NombreCuenta    VARCHAR(70), 
      clasificacion   INT, 
      fecha           DATETIME, 
      debe            DECIMAL(18, 4), 
      haber           DECIMAL(18, 4), 
      glosa_linea     VARCHAR(150), 
      ctacte          INT, 
      digcte          VARCHAR(50), 
      nomcte          VARCHAR(200), 
      tipo_docto      INT, 
      num_docto       BIGINT, 
      vencimiento     DATETIME, 
      tipoAnalisis    INT, 
      analisis        INT, 
      descanalisis    VARCHAR(50), 
      tipo            INT, 
      uni_negocio     INT, 
      descripcion     VARCHAR(50), 
      sistema         CHAR(3), 
      saldo_docto     DECIMAL(38, 4), 
      alias_doc       VARCHAR(200), 
      tooltipdoc      VARCHAR(267),
	  fecha_emision	  DATETIME
     );
 
 INSERT INTO @DATOS
     EXEC sp_conAnalisisCtaCte 
          '01-01-1900 00:00:00', 
          @fechaHasta, 
          @RUTINI, 
          @RUTFIN, 
          @CUENTA, 
          @CUENTA, 
          'TRUE', 
          -1, 
          1, 
          2,
		  0,
		  Null,
		  Null;
 
 --SELECT * FROM @DATOS      ----------------------------------------------------->TEST

 --CUENTAS QUE EMPIEZAN POR 1 ---- ACTIVOS
 IF LTRIM(SUBSTRING(CONVERT(VARCHAR(10), @cuenta), 1, 1)) = '1'
         BEGIN
             SELECT
					ISNULL(cyvEncabezado.seleccion, 0) AS seleccion,
			        DATOS.ctacte AS rut, 
                    DATOS.nomcte, 
                    DATOS.num_docto AS numero, 
					CONVERT(VARCHAR,DATOS.tipo_docto) +'-'+ DATOS.alias_doc AS nomdoc, 
                    MAX(DATOS.vencimiento) AS fechaven,
				    DATEDIFF(DAY,MAX(DATOS.vencimiento), @AHORA) AS dias_mora,	
					SUM(DATOS.haber) AS monto_docto,
					SUM(DATOS.debe) AS pagos,
     				SUM(DATOS.saldo_docto) as saldo,
					SUM(DATOS.saldo_docto) as saldo_ori,
				    DATOS.tipo_docto AS tipo,					
					0 AS id_misbancos,
					0 AS nomina,
					0 AS id_cheque,
				    ISNULL(MAX(cyvEncabezado.fecha_ing),'01-01-1900')  AS fechaIng,
					MAX(DATOS.uni_negocio) AS unineg 	
			FROM @DATOS AS DATOS
			LEFT JOIN cyvEncabezado ON cyvEncabezado.tipo_documento= DATOS.tipo_docto 
									AND cyvEncabezado.num_documento= DATOS.num_docto
									AND cyvEncabezado.rut = DATOS.ctacte
									AND cyvEncabezado.tipo_ingreso = 1
            WHERE ((@VENCIMIENTO = 0 AND DATOS.vencimiento >= @fechaDesde)
			OR (@VENCIMIENTO = 1 AND DATOS.vencimiento BETWEEN @AHORA AND @fechaHasta)
			OR (@VENCIMIENTO = 2 AND DATOS.vencimiento BETWEEN @fechaDesde AND @AHORA))
			AND (DATOS.saldo_docto > 0 AND DATOS.DEBE > 0)
			GROUP BY 
			cyvEncabezado.Seleccion,
			cyvEncabezado.fecha_ing,
			DATOS.ctacte,
			DATOS.nomcte,
			DATOS.num_docto,
			DATOS.tipo_docto,
			DATOS.NombreCuenta,
			DATOS.alias_doc
     END;
 

 --CUENTAS QUE EMPIEZAN POR 2 ---- PASIVOS


 IF LTRIM(SUBSTRING(CONVERT(VARCHAR(10), @cuenta), 1, 1)) = '2'
	BEGIN
		SELECT 
				ISNULL(cyvEncabezado.seleccion, 0) AS seleccion,
				DATOS.ctacte AS rut, 
				DATOS.nomcte, 
				DATOS.num_docto AS numero,				 
				DATOS.vencimiento AS fechaven,
				SUM(DATOS.haber) AS pagos,
				SUM(DATOS.haber) AS monto_docto,
				DATOS.saldo_docto * -1 AS saldo,
				DATOS.saldo_docto * -1 AS saldo_ori,
				DATOS.tipo_docto AS tipo,
				--ATEDIFF(DAY, MAX(DATOS.vencimiento), @fechaHasta) AS dias_mora,
				CONVERT(VARCHAR(18),DATOS.tipo_docto) +'-'+ DATOS.alias_doc AS nomdoc, 	
				--0 AS id_misbancos,
				--0 AS nomina,
				--0 AS id_cheque,
				ISNULL(cyvEncabezado.fecha_ing,'01-01-1900 00:00:00')  AS fechaIng,
				DATOS.uni_negocio AS unineg  
		INTO #DATOS1
		FROM @DATOS AS DATOS
		LEFT JOIN cyvEncabezado ON cyvEncabezado.tipo_documento= DATOS.tipo_docto 
							AND cyvEncabezado.num_documento= DATOS.num_docto
							AND cyvEncabezado.rut = DATOS.ctacte
							AND cyvEncabezado.tipo_ingreso = 1
		WHERE	((@VENCIMIENTO = 0 AND DATOS.vencimiento >= @fechaDesde)
		OR (@VENCIMIENTO = 1 AND DATOS.vencimiento BETWEEN @AHORA AND @fechaHasta)
		OR (@VENCIMIENTO = 2 AND DATOS.vencimiento BETWEEN @fechaDesde AND @AHORA))
		AND DATOS.saldo_docto < 0 
		AND DATOS.HABER > 0
		GROUP BY seleccion, ctacte, nomcte, num_docto, vencimiento, debe, saldo_docto, tipo_docto, alias_doc, fecha_ing, uni_negocio

		UNION ALL

		SELECT 
				ISNULL(cyvEncabezado.seleccion, 0) AS seleccion,
				DATOS.ctacte AS rut, 
				DATOS.nomcte, 
				DATOS.num_docto AS numero, 
				DATOS.vencimiento AS fechaven,
				SUM(DATOS.haber) AS pagos,
				SUM(DATOS.haber) AS monto_docto,
				DATOS.saldo_docto * -1 AS saldo,
				DATOS.saldo_docto * -1 AS saldo_ori,
				DATOS.tipo_docto AS tipo,
				--ATEDIFF(DAY, MAX(DATOS.vencimiento), @fechaHasta) AS dias_mora,
				CONVERT(VARCHAR(18),DATOS.tipo_docto) +'|'+ DATOS.alias_doc AS nomdoc, 
				--0 AS id_misbancos,
				--0 AS nomina,
				--0 AS id_cheque,
				ISNULL(cyvEncabezado.fecha_ing,'01-01-1900 00:00:00')  AS fechaIng,
				DATOS.uni_negocio AS unineg 
		FROM @DATOS AS DATOS
		LEFT JOIN cyvEncabezado ON cyvEncabezado.tipo_documento= DATOS.tipo_docto 
							AND cyvEncabezado.num_documento= DATOS.num_docto
							AND cyvEncabezado.rut = DATOS.ctacte
							AND cyvEncabezado.tipo_ingreso = 1
		WHERE ((@VENCIMIENTO = 0 AND DATOS.vencimiento >= @fechaDesde)
		OR (@VENCIMIENTO = 1 AND DATOS.vencimiento BETWEEN @AHORA AND @fechaHasta)
		OR (@VENCIMIENTO = 2 AND DATOS.vencimiento BETWEEN @fechaDesde AND @AHORA))
		AND (DATOS.saldo_docto > 0 AND DATOS.HABER > 0 AND (DATOS.tipo_docto <> 61 AND NOT DATOS.debe > 0 ))
		GROUP BY seleccion, ctacte, nomcte, num_docto, vencimiento, saldo_docto, tipo_docto, alias_doc, fecha_ing, uni_negocio

		UNION ALL
		SELECT 
				ISNULL(cyvEncabezado.seleccion, 0) AS seleccion,
				DATOS.ctacte AS rut, 
				DATOS.nomcte, 
				DATOS.num_docto AS numero, 
				DATOS.vencimiento AS fechaven,
				SUM(DATOS.debe) AS pagos,
				SUM(DATOS.haber) AS monto_docto,
				DATOS.saldo_docto AS saldo,
				DATOS.saldo_docto * -1 AS saldo_ori,
				DATOS.tipo_docto * -1  AS tipo,
				--DATEDIFF(DAY, MAX(DATOS.vencimiento), @fechaHasta) AS dias_mora,
				CONVERT(VARCHAR(18),DATOS.tipo_docto) +'|'+ DATOS.alias_doc AS nomdoc, 
				--0 AS id_misbancos,
				--0 AS nomina,
				--0 AS id_cheque,
				ISNULL(cyvEncabezado.fecha_ing,'01-01-1900 00:00:00')  AS fechaIng,
				DATOS.uni_negocio AS unineg 
		FROM @DATOS AS DATOS
		LEFT JOIN cyvEncabezado ON cyvEncabezado.tipo_documento= DATOS.tipo_docto 
							AND cyvEncabezado.num_documento= DATOS.num_docto
							AND cyvEncabezado.rut = DATOS.ctacte
							AND cyvEncabezado.tipo_ingreso = 1
		WHERE ((@VENCIMIENTO = 0 AND DATOS.vencimiento >= @fechaDesde)
		OR (@VENCIMIENTO = 1 AND DATOS.vencimiento BETWEEN @AHORA AND @fechaHasta)
		OR (@VENCIMIENTO = 2 AND DATOS.vencimiento BETWEEN @fechaDesde AND @AHORA))
		AND (DATOS.tipo_docto = 61 AND DATOS.debe > 0)
		GROUP BY seleccion, ctacte, nomcte, num_docto, vencimiento, saldo_docto, tipo_docto, alias_doc, fecha_ing, uni_negocio

		SELECT
				#DATOS1.seleccion,
				#DATOS1.rut, 
				#DATOS1.nomcte,
				(remTrabajadores.apePaterno + ' ' + remTrabajadores.apeMaterno) as apellidos,
				#DATOS1.numero, 
				#DATOS1.nomdoc, 
				MAX(#DATOS1.fechaven) AS fechaven,
				DATEDIFF(DAY,MAX(#DATOS1.fechaven), @AHORA) AS dias_mora,				
				SUM(#DATOS1.monto_docto) AS monto_docto,
				SUM(#DATOS1.pagos) AS pagos,
				#DATOS1.saldo AS saldo,  --SUM(#DATOS1.saldo) AS saldo,
				#DATOS1.saldo_ori AS saldo_ori,  --SUM(#DATOS1.saldo_ori) AS saldo_ori,
				#DATOS1.tipo,	
				0 AS id_misbancos,
				0 AS nomina,
				0 AS id_cheque,
				MAX(#DATOS1.fechaIng) AS fechaIng,
				isnull(MAX(cyvEncabezado.unidad_negocio), 0) AS unineg,
				ConCtacte.cuentapago as CuentaBeneficiario,
				conBancos.rut as RutBancoBeneficiario,
				conCtacte.emacte as DireccionEmail,
				ISNULL(conCtacte.tipocuenta, '') as TipoCuenta,
				conCtacte.digcte,
				cyvEncabezado.fecha_ing AS fechaEmision,
				isnull(conUnidadNegocio.descripcion, 'SIN UNIDAD') as UniNegDesc,
				cyvEncabezado.url
		FROM #DATOS1 LEFT JOIN
		conCtacte ON #DATOS1.rut = conCtacte.rutcte LEFT JOIN
		conBancos ON conBancos.idBanco = conCtacte.bancopago left JOIN
		cyvEncabezado ON cyvEncabezado.tipo_documento = #DATOS1.tipo AND cyvEncabezado.rut = #DATOS1.rut AND cyvEncabezado.num_documento = #DATOS1.numero AND cyvEncabezado.tipo_ingreso=1 LEFT JOIN
		conUnidadNegocio ON cyvEncabezado.unidad_negocio = conUnidadNegocio.idUniNeg LEFT JOIN
		remTrabajadores ON #DATOS1.rut = remTrabajadores.rut AND remTrabajadores.periodo = year(getdate()) AND remTrabajadores.mes = month(getdate()) AND remTrabajadores.activo = 1
		WHERE ISNULL(#DATOS1.fechaven, '19000101') >= @fechaDesde --#DATOS1.fechaven >= @fechaDesde 
		AND (cyvEncabezado.unidad_negocio = @uniNeg or @uniNeg=0)
		GROUP BY 
			#DATOS1.seleccion,
			#DATOS1.rut,
			#DATOS1.nomcte,
			#DATOS1.numero,
			#DATOS1.tipo,
			#DATOS1.nomdoc,
			#DATOS1.saldo,
			#DATOS1.saldo_ori,
			ConCtacte.cuentapago,
			conBancos.rut,
			conCtacte.emacte,
			conCtacte.tipocuenta,
			conCtacte.digcte,
			cyvEncabezado.fecha_ing,
			cyvEncabezado.unidad_negocio,
			cyvEncabezado.url,
			conUnidadNegocio.descripcion,
			remTrabajadores.apePaterno,
			remTrabajadores.apeMaterno
		ORDER BY fechaven asc
				

 END;

	







--SELECT ctacte AS rut, 
--       nomcte, 
--       tipo_docto AS tipo, 
--       NombreCuenta AS nomdoc, 
--       num_docto AS numero, 
--       vencimiento AS fechaven, 
--       ABS(SUM(saldo_docto)) AS monto_docto
--FROM @DATOS
--GROUP BY ctacte, 
--         nomcte, 
--         tipo_docto, 
--         NombreCuenta, 
--         num_docto, 
--         vencimiento;