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

CREATE PROCEDURE [dbo].[CPJ_Clientes_Deuda_Resumen] @pJsonRecibido VARCHAR(8000)
AS 
SET NOCOUNT ON
/*Parametros*/

DECLARE 	@pFechaDesde			DATETIME,
			@pFechaHasta			DATETIME,
			@pId_Unid_Negocio       VARCHAR(10),
			@pFiltrar_con_saldo     TINYINT,
			@pClientes_activos      TINYINT,
			@pFiltroFecha           TINYINT,
			@pEquate                SMALLINT,
			@pUsuario               INT

SET @pId_Unid_Negocio			= ISNULL(CONVERT(VARCHAR(10), dbo.CF_JSON_VALUE(@pJsonRecibido,'Id_Unid_Negocio')),'')
SET @pFechaDesde				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJsonRecibido,'FechaDesde')),GETDATE())
SET @pFechaHasta				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJsonRecibido,'FechaHasta')),GETDATE())
SET @pFiltrar_con_saldo			= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Filtrar_con_saldo')),0)
SET @pClientes_activos			= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Clientes_activos')),0)
SET @pFiltroFecha		    	= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'FiltroFecha')),0)
SET @pEquate		        	= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Equate')),0)
SET @pUsuario		        	= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Usuario')),0)

 

  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

  SET @pEquate = 400


  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

    SELECT ID_UNID_NEGOCIO INTO #UN FROM Empresas_Unid_Negocios

    IF CAST(@pId_Unid_Negocio as int) <> 0
       DELETE #UN WHERE ID_UNID_NEGOCIO <> @pId_Unid_Negocio 


	CREATE TABLE #ACTIVO (ACTIVO TINYINT)
    INSERT INTO #ACTIVO (ACTIVO) VALUES (1)

	IF @pClientes_activos <> 1
	  INSERT INTO #ACTIVO (ACTIVO) VALUES (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 CC.ID_CLIENTE = C.ID_CLIENTE
				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 
				AND TF.ID_UNID_NEGOCIO = U.ID_UNID_NEGOCIO
				AND C.ACTIVO = A.ACTIVO '

  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 , #UN U, #ACTIVO A'

        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, #UN U, #ACTIVO A '

      END

  IF @pFiltroFecha = 0
     BEGIN
         SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND F.Fecha < ''' + CONVERT(VARCHAR(8),@pFechaHasta+1,112) +'''' 
     END
   ELSE
     BEGIN
         SET @SqlWhere = RTRIM(LTRIM(@SqlWhere)) + ' AND CC.Fecha_VENCE < ''' + CONVERT(VARCHAR(8),@pFechaHasta+1,112) +'''' 
     END   

--   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 
	  IF @pFiltrar_con_saldo = 0
	        SET @Sql = @Sql + ' GROUP BY  c.id_cliente,C.RAZON_SOCIAL order by C.Razon_Social' 
		ELSE 
	    	SET @Sql = @Sql + ' GROUP BY  c.id_cliente,C.RAZON_SOCIAL  HAVING  ABS(SUM(CC.Saldo  * f.Cotizacion)) > 1 order by C.Razon_Social' 

  	  print @Sql

	  EXEC(@sql)

  	DROP TABLE #UN
	DROP TABLE #ACTIVO
  

 




