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,
			DATOS.debe AS pagos,
			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




UNION ALL
			SELECT 
				ISNULL(cyvEncabezado.seleccion, 0) AS seleccion,
			        DATOS.ctacte AS rut, 
                    DATOS.nomcte, 
                    DATOS.num_docto AS numero, 
                    DATOS.vencimiento AS fechaven,
				    DATOS.debe AS pagos,
					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 ))

UNION ALL
			 SELECT 
				ISNULL(cyvEncabezado.seleccion, 0) AS seleccion,
			        DATOS.ctacte AS rut, 
                    DATOS.nomcte, 
                    DATOS.num_docto AS numero, 
                    DATOS.vencimiento AS fechaven,
				    DATOS.debe AS pagos,
					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)


 --select * from #DATOS1
					 --numero de docto, tipo docto, vencimiento, días mora, monto del documento, pagos, saldo a pagar.
  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,
					SUM(#DATOS1.saldo) AS saldo,
					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,
				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;