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

CREATE PROCEDURE [dbo].[CPJ_Cli_Catcte_Control]  @pJsonRecibido VARCHAR(8000)	 

AS
SET NOCOUNT ON 
DECLARE 	@pId_Cliente			INT,
			@pReparar				CHAR(1),
			@pDebug					INT,
			@Cli_Ref_CtaCte_Agrup	INT,
			@Id_Cliente_Tit			INT,
			@Sql					VARCHAR(MAX)


SET @pId_Cliente				= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Id_Cliente')),0)
SET @pReparar					= ISNULL(CONVERT(CHAR(1), dbo.CF_JSON_VALUE(@pJsonRecibido,'Reparar')),'')
SET @pDebug						= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Debug')),0)

SET @Cli_Ref_CtaCte_Agrup = ISNULL(CONVERT(INT,dbo.CF_xParam('Cli_Ref_CtaCte_Agrup')),0)

CREATE TABLE  #Respuesta (Id_Error INT, Error_Msg VARCHAR(1000),Accion VARCHAR(5000))

IF @Cli_Ref_CtaCte_Agrup <> 0	
	SET @Id_Cliente_Tit = dbo.CF_Cli_Id_Cliente_Ref(@pId_Cliente)
ELSE
	SET @Id_Cliente_Tit = @pId_Cliente








/**************** Tipo de cbte mal configurado.  **************************/

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 7999,''Tipo de Cbte. mal configurado, '' + T.Id_Tipo_Cbte  + '' (no puede ser recibo y factura) '','''' 
				 FROM  Cbtes_Tipos T
				 WHERE T.Compromete_Factura IN (1,-1) AND T.Compromete_Recibos IN (1,-1) '
				
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)











/****************Id_cliente difeente en ctat.cte.  **************************/
IF @pReparar = 'S'
BEGIN
	SET @Sql = 'UPDATE Clientes_CtaCte SET Id_Cliente = c.Id_Cliente
			FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
			 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
			 AND (T.Compromete_Factura IN (1,-1) OR T.Compromete_Recibos IN (1,-1) )
			 AND C.Id_Estado_Cbte IN (1,2,4)
			 AND C.Id_Cond_Pago <> 1
			 AND C.Id_Cliente <> K.Id_Cliente'
	IF @Cli_Ref_CtaCte_Agrup <> 0
		SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
							OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
							)'
	ELSE
		SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
    IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)
END

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 8999,''Signo erroneo en ctat.cte. en facturas, '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente)  ,''REPARACIÓN AUTOMÁTICA POSIBLE'' 
				 FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
				 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND (T.Compromete_Factura IN (1,-1) OR T.Compromete_Recibos IN (1,-1) )
				 AND C.Id_Estado_Cbte IN (1,2,4)
				 AND C.Id_Cond_Pago <> 1
				 AND C.Id_Cliente <> K.Id_Cliente'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)





	
/****************Signo erroneo en ctat.cte. en facturas **************************/
IF @pReparar = 'S'
BEGIN
	SET @Sql = 'UPDATE Clientes_CtaCte SET Importe = ABS(Importe)
			FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
			 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
			 AND T.Compromete_Factura = 1
			 AND c.Id_Cond_Pago <> 1
			 AND C.Id_Estado_Cbte IN (1,2,4)
			 AND K.Importe < 0'
	IF @Cli_Ref_CtaCte_Agrup <> 0
		SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
							OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
							)'
	ELSE
		SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
    IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)
END

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9000,''Signo erroneo en ctat.cte. en facturas, '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente)  ,''REPARACIÓN AUTOMÁTICA POSIBLE'' 
				 FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
				 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura = 1 
				 AND C.Id_Estado_Cbte IN (1,2,4)
				 AND C.Id_Cond_Pago <> 1
				 AND K.Importe < 0'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)



/****************Signo erroneo en ctat.cte. en NC o REC**************************/
IF @pReparar = 'S'
BEGIN
	SET @Sql = 'UPDATE Clientes_CtaCte SET Importe = ABS(Importe) * -1
			FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
			 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
			 AND (T.Compromete_Factura = -1 OR T.Compromete_Recibos = 1)
			 AND C.Id_Estado_Cbte IN (1,2,4)
			 AND C.Id_Cond_Pago <> 1
			 AND K.Importe > 0'
	IF @Cli_Ref_CtaCte_Agrup <> 0
		SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
							OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
							)'
	ELSE
		SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
    IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)
END

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9001,''Signo erroneo en ctat.cte. en NC o REC, '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente)  ,''REPARACIÓN AUTOMÁTICA POSIBLE'' 
				 FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
				 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND (T.Compromete_Factura = -1 OR T.Compromete_Recibos = 1)
				 AND C.Id_Estado_Cbte IN (1,2,4)
				 AND C.Id_Cond_Pago <> 1
				 AND K.Importe > 0'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


	


/*************** Aplicaciones fuera del grupo familiar erroenas de id_Cliente ctat.cte.  **************************/

IF @pReparar = 'S'
BEGIN
	CREATE TABLE #Trans (Id_Trans INT)


	SET @Sql = 'INSERT INTO #Trans
				SELECT DISTINCT(X.Id_Trans) 
					 FROM Cbtes C, Cbtes_Tipos T, Cbtes_Aplica A, Cbtes X
					 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
					 AND T.Compromete_Factura IN (1) 
					 AND C.Id_Estado_Cbte IN (1,2,4)
					 AND A.Id_Trans = C.Id_Trans
					 AND A.Id_Trans_D = X.Id_Trans
					 AND a.Id_trans_d <> 0
					 AND X.Id_Estado_Cbte IN (1,2,4) 
					 AND C.Id_Cond_Pago <> 1
					 ' 

	IF @Cli_Ref_CtaCte_Agrup <> 0
		SET @Sql = @Sql  +  '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
									OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
									)
								 AND  dbo.CF_Cli_Id_Cliente_Ref(C.Id_Cliente) <> dbo.CF_Cli_Id_Cliente_Ref(x.Id_Cliente) '
	ELSE
		SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) + '
								 AND C.Id_Cliente <> x.Id_Cliente'


	IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)


	SET @Sql = 'UPDATE Clientes_CtaCte SET Id_cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +'
					 WHERE Id_Trans IN (SELECT Id_Trans FROM #Trans)'
	IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)

	SET @Sql = 'UPDATE Cbtes SET Id_cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +'
					 WHERE Id_Trans IN (SELECT Id_Trans FROM #Trans)'
	IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)

	DROP TABLE #Trans

END


SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9007,''Aplicación no corresponde al grupo '' + X.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),X.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),X.Id_Cliente) ,''REPARACIÓN AUTOMÁTICA POSIBLE'' 
				 FROM Cbtes C, Cbtes_Tipos T, Cbtes_Aplica A, Cbtes X
					 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
					 AND T.Compromete_Factura IN (1) 
					 AND C.Id_Estado_Cbte IN (1,2,4)
					 AND A.Id_Trans = C.Id_Trans
					 AND A.Id_Trans_D = X.Id_Trans
					 AND a.Id_trans_d <> 0
					 AND X.Id_Estado_Cbte IN (1,2,4) 
					 AND C.Id_Cond_Pago <> 1
					 ' 

	IF @Cli_Ref_CtaCte_Agrup <> 0
		SET @Sql = @Sql  +  '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
									OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
									)
								 AND  dbo.CF_Cli_Id_Cliente_Ref(C.Id_Cliente) <> dbo.CF_Cli_Id_Cliente_Ref(x.Id_Cliente) '
	ELSE
		SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) + '
								 AND C.Id_Cliente <> x.Id_Cliente'


IF @pDebug = 1 PRINT @Sql
EXEC(@sql)

/*************** Saldo cbte. de factura difiere del importe aplicado  **************************/
IF @pReparar = 'S'
BEGIN
	SET @Sql = 'UPDATE Cbtes SET Saldo = C.Imp_Total - ISNULL((SELECT SUM(a.Importe) FROM Cbtes_Aplica a, Cbtes X
											WHERE a.Id_Trans = C.Id_Trans
											AND a.Id_trans_d = X.Id_Trans
											AND a.Id_trans_d <> 0
											AND X.Id_Estado_Cbte IN (1,2,4) 
											),0) 
								,Id_Estado_Cbte = CASE (C.Imp_Total - ISNULL((SELECT SUM(a.Importe) FROM Cbtes_Aplica a, Cbtes X
														WHERE a.Id_Trans = C.Id_Trans
														AND a.Id_trans_d = X.Id_Trans
														AND a.Id_trans_d <> 0
														AND X.Id_Estado_Cbte IN (1,2,4) 
														),0) )
											WHEN C.Imp_Total THEN 1
											WHEN 0 THEN 2
											ELSE 4
											END

					 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura IN (1)  
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Imp_Total -  ISNULL((SELECT SUM(a.Importe) FROM Cbtes_Aplica a, Cbtes X
									WHERE a.Id_Trans = C.Id_Trans
									AND a.Id_trans_d = X.Id_Trans
									AND a.Id_trans_d <> 0
								    AND X.Id_Estado_Cbte IN (1,2,4) 
									),0) <> C.SAldo'

IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
	IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)
END
SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9008,''Saldo cbte. de factura difiere del importe aplicado '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN AUTOMÁTICA POSIBLE''  
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura IN (1)  
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Imp_Total -  ISNULL((SELECT SUM(a.Importe) FROM Cbtes_Aplica a, Cbtes X
									WHERE a.Id_Trans = C.Id_Trans
									AND a.Id_trans_d = X.Id_Trans
									AND a.Id_trans_d <> 0
								    AND X.Id_Estado_Cbte IN (1,2,4) 
									),0) <> C.SAldo'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)




/*************** *Estado diferente en ctat.cte.  **************************/
IF @pReparar = 'S'
BEGIN
	SET @Sql = 'UPDATE Clientes_CtaCte SET Id_Estado_Cbte =  C.Id_Estado_Cbte
					 FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
					 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
					 AND (T.Compromete_Factura IN (1,-1) OR T.Compromete_Recibos IN (1,-1) )
					 AND C.Id_Estado_Cbte IN (1,2,4) 
					 AND C.Id_Cond_Pago <> 1
					 AND C.Id_Estado_Cbte <> K.Id_Estado_Cbte'
	IF @Cli_Ref_CtaCte_Agrup <> 0
		SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
							OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
							)'
	ELSE
		SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
	IF @pDebug = 1 PRINT @Sql
	EXEC(@sql)
END

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9002,''Estado diferente en ctacte., '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN AUTOMÁTICA POSIBLE'' 
				 FROM Clientes_CtaCte K, Cbtes C, Cbtes_Tipos T
				 WHERE K.Id_Trans = C.Id_Trans AND T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND (T.Compromete_Factura IN (1,-1) OR T.Compromete_Recibos IN (1,-1) )
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Id_Estado_Cbte <> K.Id_Estado_Cbte'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


/*************** Importe Aplicado diferente al total del cbte  **************************/

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9009,''Importe aplicado diferente del total del cbte. '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura IN (1)  
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Imp_Total - C.Saldo <> ISNULL((SELECT SUM(a.Importe) FROM Cbtes_Aplica a, Cbtes X
									WHERE a.Id_Trans = C.Id_Trans
									AND a.Id_trans_d = X.Id_Trans
									AND a.Id_trans_d <> 0
								    AND X.Id_Estado_Cbte IN (1,2,4) 
									),0)'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


/****************Condicion de pago 1 en ctat.cte.**************************/

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 8997,''Comprobantes de Contado en cuenta corriente, '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente)  ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura IN (1,-1)
				 AND C.Id_Estado_Cbte IN (1,2,4)
				 AND C.Id_Cond_Pago = 1
				 AND EXISTS (SELECT 1 FROM Clientes_CtaCte K WHERE K.Id_Trans = C.Id_Trans AND  K.Id_Estado_Cbte IN (1,2,4) )'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


/****************Cbtes Aplicados a Condicion de pago 1 **************************/

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 8998,''Comprobante aplicado a factura/nc de contado, '' + R.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),R.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),R.Id_Cliente)  ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes R, Cbtes_Tipos TR, Cbtes_Aplica A, Cbtes F, Cbtes_Tipos TF
				 WHERE A.Id_Trans_D = R.Id_Trans  AND TR.Id_Tipo_Cbte = R.Id_Tipo_Cbte AND (TR.Compromete_Factura IN (-1) OR TR.Compromete_Recibos IN (1,-1) )  AND R.Id_Estado_Cbte IN (1,2,4)
				 AND A.Id_Trans = F.Id_Trans AND TF.Id_Tipo_Cbte = F.Id_Tipo_Cbte AND TF.Compromete_Factura IN (1,-1) AND F.Id_Estado_Cbte IN (1,2,4)
				 AND F.Id_Cond_Pago = 1
				'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (R.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR R.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND R.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)

/*************** Importe total diferente en ctat.cte.  **************************/

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9003,''Importe diferente em cta.cte. '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura IN (1,-1) 
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Imp_Total * T.Compromete_Factura <> ISNULL((SELECT SUM(k.importe) FROM Clientes_CtaCte K WHERE K.Id_Trans = C.Id_Trans),0)'

IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9004,''Importe diferente em cta.cte. '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Recibos IN (1,-1) 
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Imp_Total * T.Compromete_Recibos * -1 <> ISNULL((SELECT SUM(k.importe) FROM Clientes_CtaCte K WHERE K.Id_Trans = C.Id_Trans),0)'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


/*************** Saldos diferente en ctat.cte.  **************************/

SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9005,''Importe diferente em cta.cte. '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Factura IN (1,-1) 
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Saldo * T.Compromete_Factura <> ISNULL((SELECT SUM(k.Saldo) FROM Clientes_CtaCte K WHERE K.Id_Trans = C.Id_Trans),0)'

IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)


SET @Sql = 'INSERT INTO #Respuesta
			SELECT 9006,''Importe diferente em cta.cte. '' + C.Id_Tipo_Cbte + '' Transacción: '' + CONVERT(VARCHAR(16),C.Id_Trans) + '' Cliente: '' + CONVERT(VARCHAR(16),C.Id_Cliente) ,''REPARACIÓN MANUAL DESAPLICANDO TODA LA CTA.CTE.'' 
				 FROM Cbtes C, Cbtes_Tipos T
				 WHERE T.Id_Tipo_Cbte = C.Id_Tipo_Cbte
				 AND T.Compromete_Recibos IN (1,-1) 
				 AND C.Id_Estado_Cbte IN (1,2,4) 
				 AND C.Id_Cond_Pago <> 1
				 AND C.Saldo * T.Compromete_Recibos * -1 <> ISNULL((SELECT SUM(k.Saldo) FROM Clientes_CtaCte K WHERE K.Id_Trans = C.Id_Trans),0)'
IF @Cli_Ref_CtaCte_Agrup <> 0
	SET @Sql = @Sql  + '	 AND (C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +' 
						OR C.Id_Cliente IN (SELECT Id_Cliente FROM Clientes WHERE Id_Cliente_Ref = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit) +') 
						)'
ELSE
	SET @Sql = @Sql  + '	 AND C.Id_Cliente = ' + CONVERT(VARCHAR(16),@Id_Cliente_Tit)
IF @pDebug = 1 PRINT @Sql
EXEC(@sql)












SELECT * FROM #Respuesta
DROP TABLE #Respuesta


/*


EXEC CPJ_Cli_Catcte_Control '{"id_Cliente":"3592","Debug":"1","Reparar":"S"}'

*/
