IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo[CP_Clientes_Deuda_Resumen]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.[CP_Clientes_Deuda_Resumen]
END
GO

CREATE PROCEDURE [dbo].[CP_Clientes_Deuda_Resumen](
     @pUsuario    INT
   , @pEquate  SMALLINT
   , @pFechaDesde DATETIME
   , @pFechaHasta DATETIME
   , @pFiltroFecha SMALLINT
   , @pIncluirRelaciones SMALLINT
   , @pFiltrarCbtesSinTarjeta SMALLINT
   , @pUnidNegocio VARCHAR(1000)
   )
AS
 
  IF @pEquate = 0
     RETURN

  DECLARE @Id_Producto Varchar(14)
  ,@Id_Proveedor Int
  ,@Razon_Social VarChar(100)
  ,@Cuit Varchar(13)
  ,@Id_Iva Char(3)
  ,@Id_Alias_Cta_Cont Int
  ,@Id_Cta_Contable_H Int
  ,@Porc_Comision_Prov Decimal(7,2) 
  ,@Importe Decimal(12,2) 
  ,@IMPORTE_CREDITO Decimal(12,2) 
  ,@ID_TIPO_CBTE CHAR(4) 
  ,@FECHA DATETIME
  ,@Imp_prod_siva  Decimal(12,2) 
  ,@TRANS INT
  ,@Id_Cliente_Externo VARCHAR(14)
  ,@Id_Cta_Banco INT
  ,@Id_Cliente INT
  ,@EXISTE_TAG INT

  DECLARE @Sql		    VARCHAR(MAX)
  DECLARE @SqlSaldo	    VARCHAR(MAX)
  DECLARE @SqlSelect	VARCHAR(MAX)
  DECLARE @SqlInto	    VARCHAR(MAX)
  DECLARE @SqlFrom	    VARCHAR(MAX)
  DECLARE @SqlWhere  	VARCHAR(MAX)
  DECLARE @SqlGroup	    VARCHAR(MAX)

  SET @FECHA = (SELECT CAST(GETDATE() AS DATE))
  SET @EXISTE_TAG = 0
  SET @EXISTE_TAG = (SELECT COUNT(*) FROM TagFile_ TAG WHERE TAG.TBL = @pEquate AND TAG.USR = @pUsuario)

  SET @SqlSelect = ' SELECT c.Id_Cliente
		  ,C.Razon_Social
		  ,SUM(CC.Saldo*f.Cotizacion) AS Saldo'

  SET @SqlInto = ' '

  SET @SqlWhere = ' WHERE C.ACTIVO = 1
				AND CC.ID_Trans = F.Id_Trans 
				AND VM.Id_Moneda = F.Id_Moneda
				AND CC.id_estado_cbte in (1,4) 
				AND f.id_tipo_cbte = TF.id_tipo_cbte 
				AND (TF.Compromete_Factura in (1,-1) OR TF.Compromete_Recibos IN (1,-1))
				AND ISNULL(F.ID_CLIENTE,0) <> 0
				AND ISNULL(C.Id_Tipo_Cli,0) = Isnull(TC.Id_Tipo_Cli,0)
				AND TF.Letra <> ''L''
				AND CC.SALDO <> 0 '

  IF @EXISTE_TAG > 0
      BEGIN
        SET @SqlFrom = ' FROM Clientes_Ctacte CC, cbtes f, Cbtes_Tipos TF, Clientes C,TagFile_ TAG, Valores_Monedas VM , Clientes_Tipos TC '

        SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + '	AND (CC.Id_Cliente = TAG.VAL AND TAG.TBL = ' + Cast(@pEquate as varchar(10)) + ' AND TAG.USR = '+  Cast(@pUsuario as varchar(10)) +')'
      END
	ELSE
	  BEGIN
		SET @SqlFrom = ' FROM Clientes_Ctacte CC, cbtes f, Cbtes_Tipos TF, Clientes C, Valores_Monedas VM, Clientes_Tipos TC '

      END

  IF @pFiltroFecha = 0
     BEGIN
         SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + 'AND F.Fecha >= '''+ CONVERT(VARCHAR(8),@pFechaDesde,112) +'''   
			 	                                    AND F.Fecha < ''' + CONVERT(VARCHAR(8),@pFechaHasta+1,112) +'''' 
     END
   ELSE
     BEGIN
         SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + 'AND CC.Fecha_VENCE >= '''+ CONVERT(VARCHAR(8),@pFechaDesde,112) +'''   
			 	                                    AND CC.Fecha_VENCE < ''' + CONVERT(VARCHAR(8),@pFechaHasta+1,112) +'''' 
     END   
	 
   IF RTRIM(LTRIM(@pUnidNegocio)) <> '' 
	  SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND TF.Id_Unid_Negocio in '+ Cast(@pUnidNegocio as varchar(1000))

   IF @pIncluirRelaciones = 0
	  SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND CC.Id_Cliente = C.Id_Cliente '
	Else
	  SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND CC.Id_Cliente = C.Id_Cliente '

   IF @pFiltrarCbtesSinTarjeta = 1

	  SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND dbo.CF_Cbtes_Por_Debito(CC.ID_Trans,1) = 0 '

--	  SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND (CC.Id_Cliente = C.Id_Cliente  Or CC.Id_Cliente = C.Id_Cliente_Ref )'

	  SET @Sql = @SqlSelect + ' ' + @SqlInto +' '+ @SqlFrom + ' ' + @SqlWhere + 'GROUP BY  c.id_cliente,C.RAZON_SOCIAL order by C.Razon_Social' 
	  
	  print @Sql

	  EXEC(@sql)

  
  

-- exec dbo.CP_Clientes_Deuda_Resumen -1,400,'19631222','20211231',1,1,1,'(1)'

-- EXEC CP_Clientes_Deuda_Resumen -1,400,'19631223','20211231',1,1,1,''


-- select * from dbo.TagFile_

-- delete  dbo.TagFile_ where Tbl = 400 and Usr=-1




