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

CREATE PROCEDURE dbo.CPJ_Cliente_Deuda_Notif @pJson VARCHAR(8000)
AS 
SET NOCOUNT ON 

/*Variables recibidas por parámetro a traves del JSON*/
DECLARE @pFlagUsarTrans			TINYINT
DECLARE @pModoDebug				TINYINT
DECLARE @pId_Cliente			INT


SET @pFlagUsarTrans				= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'FlagUsarTrans')), 0)
SET @pModoDebug					= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'ModoDebug')), 0)
SET @pId_Cliente				= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Cliente')), 0)
/*FIN Variables recibidas por parámetro a traves del JSON*/

/*Variable de Retorno del Stored*/
DECLARE @rtaErrorStored						INT
DECLARE @rtaMsjStored						VARCHAR(4000)
DECLARE @Result_Stored_Invocado				INT
DECLARE @JSON_Parametros_Stored_Invocado	VARCHAR(8000)
/*FIN Variable de Retorono del Stored*/

/*Declaracion Variables Locales*/
DECLARE @Id_Producto			VARCHAR(14)
DECLARE @Descripcion			VARCHAR(150)
DECLARE @Importe				DECIMAL(16,2)
DECLARE @Periodo				DATETIME
DECLARE @Porcentaje				DECIMAL(12,5)
DECLARE @Porc_Bonif				DECIMAL(12,5)
DECLARE @Coef_Imp_Pagado		DECIMAL(15,5)
DECLARE @Fecha_Factura			DATETIME
DECLARE @Id_Cond_Pago_Cbte		SMALLINT
DECLARE @Id_Cond_Pago_Cbte_Item	SMALLINT
DECLARE @Item					SMALLINT
DECLARE @Plazo					INT
DECLARE @Porc_Bonif_Rec			DECIMAL(12,5)
DECLARE @Fecha_Rec				DATETIME
DECLARE @Dif_Dias				INT
DECLARE @Flag_Encontro			TINYINT
DECLARE @Plazo_Desde			INT
DECLARE @Porc_Bonif_Cbtes_Cond_Pago_Item DECIMAL(12,5)
DECLARE @Plazo_Bonif			BIGINT
DECLARE @Id_Cond_Pago_Item		INT
DECLARE @Tipo					CHAR(1)
DECLARE @Plazo_Sin_Recargo		INT
DECLARE @Imp_Final				DECIMAL(15,5)
DECLARE @Flag_Mes				TINYINT

DECLARE @Id_trans_Deuda  		INT
DECLARE @Fecha_Referencia   	DATETIME
DECLARE @Imp_Deuda    			DECIMAL(16,2)
DECLARE @Tipo_Contacto      	SMALLINT
DECLARE @Id_Contacto            INT
DECLARE	@Motivo                 SMALLINT
DECLARE	@SubMotivo              SMALLINT
DECLARE	@Objeto                 SMALLINT

/*Fin de Declaraciones Variables Locales */


BEGIN TRY

    
	IF @pFlagUsarTrans <> 0 
	BEGIN
		BEGIN TRAN
	END

	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Ingreso a Stored Procedure: CPJ_Cliente_Deuda_Notif'
		PRINT 'Parámetros:'
		PRINT 'Cliente: ' + CONVERT(VARCHAR(10), @pId_Cliente)  
	END
	
	/*===================================================================*/

	IF(@pId_Cliente = 0)
	BEGIN
		SET @rtaErrorStored = 70001 /*Transaccion no abierta*/
		
		SELECT	 @rtaErrorStored	AS ErrorNumber 
				,0					AS ErrorSeverity  
				,0					AS ErrorState 
				,0					AS ErrorProcedure  
				,0					AS ErrorLine		
				,''					AS ErrorMessage
			
		IF @pFlagUsarTrans <> 0 
		BEGIN
			ROLLBACK
		END
		
		RETURN 9999
	END
	
	/*===================================================================*/	
	SET @Plazo_Desde =  (SELECT ISNULL(Valor_Integer,0) FROM xParametros where SETDatos= 1 AND idParametro ='AviMora_Dias_Mora')
	
	SET @Fecha_Referencia =  (SELECT GETDATE() - @Plazo_Desde)

    SET @Imp_Deuda = (SELECT ISNULL(SUM(CC.SALDO),0) FROM CLIENTES_CTACTE CC, CBTES C, CLIENTES K  WHERE C.ID_TRANS = CC.ID_TRANS AND C.ID_ESTADO_CBTE <> 3 AND CC.SALDO <> 0
	                  AND CC.Fecha_Vence <= @Fecha_Referencia AND C.ID_CLIENTE = K.ID_CLIENTE AND (K.ID_CLIENTE =  @pId_Cliente OR K.Id_Cliente_Ref = @pId_Cliente))

    SET @Id_trans_Deuda = (SELECT TOP 1 CC.ID_TRANS FROM CLIENTES_CTACTE CC, CBTES C, CLIENTES K  WHERE C.ID_TRANS = CC.ID_TRANS AND C.ID_ESTADO_CBTE <> 3 AND CC.SALDO > 0 
	                       AND CC.Fecha_Vence <= @Fecha_Referencia AND C.ID_CLIENTE = K.ID_CLIENTE AND (K.ID_CLIENTE =  @pId_Cliente OR K.Id_Cliente_Ref = @pId_Cliente))

	/*===================================================================*/	
	IF(@pModoDebug = 1)
	BEGIN
		PRINT '@Fecha_Referencia ' + CONVERT(VARCHAR(12), @Fecha_Referencia)
		PRINT '@Imp_Deuda ' + CONVERT(VARCHAR(10), @Imp_Deuda)  
	END
	IF @Imp_Deuda <> 0 
	   BEGIN 
	     set @Descripcion = 'Deuda registrada de $'+ CONVERT(VARCHAR(10),@Imp_Deuda)

		 IF(@pModoDebug = 1)
			BEGIN
				PRINT '@Descripcion ' + @Descripcion
			END

	     INSERT INTO Cbtes_Procesos (Id_Trans,Fecha,Tipo,Estado,Fecha_Proc,Id_Usuario,Nota,Observaciones)
		 Values (@Id_trans_Deuda,getdate(),'M','P',null,0,'AVISO_MORA',@Descripcion)

		 
         SET @Tipo_Contacto  = (SELECT ISNULL(Valor_Integer,0) FROM xParametros where SETDatos= 1 AND idParametro ='AviMora_CRM_T_Cont')  
		 SET @Motivo  = (SELECT ISNULL(Valor_Integer,0) FROM xParametros where SETDatos= 1 AND idParametro ='AviMora_CRM_Motivo')  
		 SET @SubMotivo  = (SELECT ISNULL(Valor_Integer,0) FROM xParametros where SETDatos= 1 AND idParametro ='AviMora_CRM_SubMoti')  
		 SET @Objeto  = (SELECT ISNULL(Valor_Integer,0) FROM xParametros where SETDatos= 1 AND idParametro ='AviMora_CRM_Objeto') 

		 IF @Tipo_Contacto <> 0
		    BEGIN 

			SET @Id_Contacto = (SELECT MAX(ID_CONTACTO)+1 FROM CRM_Contactos)

			INSERT INTO CRM_Contactos
				    (Id_Contacto,
					Fecha,
					Id_Tipo_Contacto,
					Id_Motivo_Contacto,
					Modo,
					Id_Cliente,
					Id_Proveedor,
					Descripcion,
					Flag_Aviso_Auto,
					Id_Estado,
					Resolucion,
					Fecha_Reso,
					Fecha_Aviso,
					Id_SubMotivo_Contacto,
					Id_Objeto_Contacto,
					Id_Trans,
					Id_Vendedor,
					Id_Usuario,
					Id_Camp)
				VALUES
				    (@Id_Contacto,
					GETDATE(),
					@Tipo_Contacto,
					@Motivo,
					'S',
					@pId_Cliente,
					0,
                    @Descripcion,
					0,
					1,
					'',
					Getdate(),
					Getdate(),
					@SubMotivo,
					@Objeto,
					@Id_trans_Deuda,
					'',
					0,
					0)	

     --- agrego la deuda en [dbo].[CRM_Contactos_Cbtes]
		   IF(@pModoDebug = 1)
		        BEGIN
			    PRINT 'Agrego CRM_Contactos_Cbtes'
				END
	       DECLARE CUR_GENERAR CURSOR FOR

	       SELECT DISTINCT(CC.ID_TRANS),CC.DESCRIPCION FROM CLIENTES_CTACTE CC, CBTES C, CLIENTES K  WHERE C.ID_TRANS = CC.ID_TRANS AND C.ID_ESTADO_CBTE <> 3 AND CC.SALDO > 0
	                  AND CC.Fecha_Vence <= @Fecha_Referencia AND C.ID_CLIENTE = K.ID_CLIENTE AND (K.ID_CLIENTE =  @pId_Cliente OR K.Id_Cliente_Ref = @pId_Cliente) 

	       OPEN CUR_GENERAR
	       FETCH NEXT FROM CUR_GENERAR INTO  @Id_trans_Deuda,@Descripcion
	       WHILE @@FETCH_STATUS = 0
	         BEGIN
			     IF(@pModoDebug = 1)
			          BEGIN

			    	  PRINT 'Id_Trans:' + CONVERT(VARCHAR(10), @Id_trans_Deuda)   + '  Descripcion ' + @Descripcion
		         END
			     INSERT INTO CRM_Contactos_Cbtes (Id_Contacto,Id_Trans,Descripcion)  
				        VALUES (@Id_Contacto,@Id_trans_Deuda,@Descripcion)

 		    	 FETCH NEXT FROM CUR_GENERAR INTO   @Id_trans_Deuda,@Descripcion

	         END -- si genere crm_contactos_cbtes
	       CLOSE CUR_GENERAR
	       DEALLOCATE CUR_GENERAR 
		
		   IF(@pModoDebug = 1)
		    	BEGIN
				PRINT 'fin generacion cbtes_procesos ' 
				END
		 END  -- si genro crm
       END --si tiene deuda envio mail
	/*===================================================================*/	

	

	/*===================================================================*/	
	
	IF @pFlagUsarTrans <> 0 
 	BEGIN
		COMMIT
	END

	/*===================================================================*/	

	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Fin Stored Procedure: CPJ_Cliente_Deuda_Notif'
	END

END TRY  

BEGIN CATCH  
	EXECUTE usp_GetErrorInfo

	IF @pFlagUsarTrans <> 0 
	BEGIN
		ROLLBACK
	END

	RETURN 9999
END CATCH

RETURN 0

--------------------------------------------------------------------------- PARA PROBAR

-- EXEC CPJ_Cliente_Deuda_Notif '{"id_cliente":"39518","ModoDebug":"1","FlagUsarTrans":"0"}'
--  select * from cbtes_Procesos where id_proceso > 24929
--  select * from crm_contactos where id_contacto  > 733

