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

CREATE  PROCEDURE [dbo].[CPJ_Clientes_Deuda] @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,
			@pId_Cliente            INT,
			@pIncluirRelaciones     TINYINT,
			@pIncluirDetalle		TINYINT

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(INT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Usuario')),0)
SET @pId_Cliente		       	= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Id_Cliente')),0) 
SET @pIncluirRelaciones		  	= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'IncluirRelaciones')),0)
SET @pIncluirDetalle		  	= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'IncluirDetalle')),0)
 
-- 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

    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)

  /* *************************   Creo la tabla **********************/
  SELECT c.Id_Cliente   
		  ,ISNULL(C.ID_CLIENTE_REF,0) AS Id_Cliente_Ref
		  ,ISNULL(F.ID_COBRADOR,'''') as Id_Cobrador
		  ,CC.Fecha_Vence as Fecha_Venc
		  ,CC.Descripcion
		  ,F.Comprobante_Nro
		  ,CC.Nro_Cuota
		  ,F.Fecha
		  ,VM.Signo
		  ,f.Cotizacion
		  ,CC.Importe
		  ,CC.Saldo
		  ,F.Imp_Total
		  ,Isnull(F.Suc_Destina,0) as Sucursal
		  ,CC.Id_Trans
		  ,F.Id_Centro_Costo
		  ,C.Razon_Social
		  ,C.Id_Provincia
		  ,C.Id_Localidad
		  ,C.Direccion
		  ,C.Id_cliente_Externo
		  ,C.Id_Tipo_Cli
		  ,TC.Descripcion as Descripcion_Tipo
		  ,C.Ult_Cuota_Paga
		  ,C.Telefono
		  ,ISNULL(C.Id_Transporte,0) AS Transporte 
		  INTO #Respuesta
		  FROM Clientes_Ctacte CC, cbtes f, Cbtes_Tipos TF, Clientes C, Valores_Monedas VM, Clientes_Tipos TC, #UN U, #ACTIVO A 
		  WHERE C.ID_CLIENTE = 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(C.Id_Tipo_Cli,0) = Isnull(TC.Id_Tipo_Cli,0)
				AND TF.Letra <> 'L'
				AND CC.SALDO <> 0 
				AND c.ID_CLIENTE = CC.Id_Cliente
				AND TF.ID_UNID_NEGOCIO = U.ID_UNID_NEGOCIO
				AND C.ACTIVO = A.ACTIVO 
				AND 1=0



  SET @SqlSelect = ' SELECT c.Id_Cliente   
		  ,ISNULL(C.ID_CLIENTE_REF,0) AS Id_Cliente_Ref
		  ,ISNULL(F.ID_COBRADOR,'''') as Id_Cobrador
		  ,CC.Fecha_Vence as Fecha_Venc
		  ,CC.Descripcion
		  ,F.Comprobante_Nro
		  ,CC.Nro_Cuota
		  ,F.Fecha
		  ,VM.Signo
		  ,f.Cotizacion
		  ,CC.Importe
		  ,CC.Saldo
		  ,F.Imp_Total
		  ,Isnull(F.Suc_Destina,0) as Sucursal
		  ,CC.Id_Trans
		  ,F.Id_Centro_Costo
		  ,C.Razon_Social
		  ,C.Id_Provincia
		  ,C.Id_Localidad
		  ,C.Direccion
		  ,C.Id_cliente_Externo
		  ,C.Id_Tipo_Cli
		  ,TC.Descripcion as Descripcion_Tipo
		  ,C.Ult_Cuota_Paga
		  ,C.Telefono
		  ,ISNULL(C.Id_Transporte,0) AS Transporte 
		  '

  SET @SqlInto = ' '

  SET @SqlWhere = ' WHERE C.ID_CLIENTE = ' + cast(@pId_Cliente as varchar(10)) +'
				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(C.Id_Tipo_Cli,0) = Isnull(TC.Id_Tipo_Cli,0)
				AND TF.Letra <> ''L''
				AND CC.SALDO <> 0 
				AND c.ID_CLIENTE = CC.Id_Cliente
				AND TF.ID_UNID_NEGOCIO = U.ID_UNID_NEGOCIO
				AND C.ACTIVO = A.ACTIVO '

   SET @SqlFrom = ' FROM Clientes_Ctacte CC, cbtes f, Cbtes_Tipos TF, Clientes C, Valores_Monedas VM, Clientes_Tipos TC, #UN U, #ACTIVO A '





 --  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 + ' ORDER BY CC.FECHA_VENCE'
	  
	  --print @Sql
    INSERT INTO #Respuesta
	  EXEC(@sql)

    IF @pIncluirDetalle = 1
	BEGIN
		ALTER TABLE #Respuesta ADD Detalle VARCHAR(MAX)
		UPDATE #Respuesta
			SET Detalle = STUFF((SELECT ', '+ LTRIM(RTRIM(I.Descripcion_producto)) FROM Cbtes_items I WHERE I.Id_Trans = R.Id_Trans ORDER BY I.Descripcion_producto FOR XML PATH('')),1,1,'') 
			FROM #Respuesta R, Cbtes C,Cbtes_Tipos T
			WHERE R.Id_Trans = C.Id_Trans
			AND C.Id_Tipo_Cbte = T.Id_Tipo_Cbte
			AND T.Compromete_Factura IN (1,-1)
		SELECT * FROM #Respuesta

	END
	ELSE
		SELECT * FROM #Respuesta

	DROP TABLE #UN
	DROP TABLE #ACTIVO
	DROP TABLE #Respuesta

 
  


/*

EXEC CPJ_Clientes_Deuda '{"FechaDesde":"20010101","FechaHasta":"20230101","Id_Unid_Negocio":"",
		"Filtrar_con_saldo":"0","Clientes_activos":"0","Id_Cliente":"368",
		"IncluirDetalle":"1"}'


*/

