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

CREATE PROCEDURE [dbo].[CP_xCampos_Guardar]  @pTabla			VARCHAR(50), 
											@pId			VARCHAR(100), 
											@pId_Campo		INT,
											@pValor_String	VARCHAR(101),
											@pValor_Integer INT,
											@pValor_DT		DATETIME,
											@pValor_Decimal DECIMAL(20,4),
											@pValor_Memo	TEXT,
											@pValor_Link	TEXT = NULL			/*04/05/2021 Agregado*/

AS

DECLARE @Id_Contrato		INT
DECLARE @Id_Centro_Costo	CHAR(10)
DECLARE @Id_Cliente			INT
DECLARE @Id_Producto		VARCHAR(14)
DECLARE @Id_Trans			INT
DECLARE @Id_Cliente_Temp	INT
DECLARE @MensajeFinEjec		VARCHAR(100)

BEGIN TRY

IF (ISNULL(CONVERT(VARCHAR(8000), @pValor_Link), '') <> '')
BEGIN
	SET @pValor_Memo = @pValor_Link
END

IF RTRIM(LTRIM(UPPER(@pTabla))) = 'CONTRATO' 
BEGIN
	 SET @Id_Contrato = CAST(@pId AS INT)
	 IF NOT EXISTS(SELECT 1 FROM Contratos_xCampos WHERE Id_Contrato = @Id_Contrato AND Id_Campo = @pId_Campo )
	 BEGIN
		INSERT INTO Contratos_xCampos (Id_Contrato,Id_Campo,Valor_String,Valor_Integer,Valor_DT,Valor_Decimal,Valor_Memo) 
		       VALUES (@Id_Contrato,@pId_Campo, @pValor_String,@pValor_Integer,@pValor_DT ,@pValor_Decimal,@pValor_Memo)
     END
	 ELSE
	 BEGIN
		UPDATE Contratos_xCampos 
		       SET Valor_String = @pValor_String, Valor_Integer = @pValor_Integer, 
		                    Valor_DT = @pValor_DT , Valor_Decimal = @pValor_Decimal,Valor_Memo = @pValor_Memo
		       WHERE Id_Contrato = @Id_Contrato AND Id_Campo = @pId_Campo
	 END
END


IF RTRIM(LTRIM(UPPER(@pTabla))) = 'CENTROCOSTOS' 
BEGIN
	 SET @Id_Centro_Costo = CAST(@pId AS CHAR(10))
	 IF NOT EXISTS(SELECT 1 FROM Centro_Costos_XCampos WHERE Id_Centro_Costo = @Id_Centro_Costo AND Id_Campo = @pId_Campo )
	 BEGIN
		INSERT INTO Centro_Costos_XCampos (Id_Centro_Costo,Id_Campo,Valor_String,Valor_Integer,Valor_DT,Valor_Decimal,Valor_Memo) 
		       VALUES (@Id_Centro_Costo,@pId_Campo, @pValor_String,@pValor_Integer,@pValor_DT ,@pValor_Decimal,@pValor_Memo)
     END
	 ELSE
	 BEGIN
		UPDATE Centro_Costos_XCampos 
		       SET Valor_String = @pValor_String, Valor_Integer = @pValor_Integer, 
		                    Valor_DT = @pValor_DT , Valor_Decimal = @pValor_Decimal,Valor_Memo = @pValor_Memo
		      WHERE Id_Centro_Costo = @Id_Centro_Costo AND Id_Campo = @pId_Campo
	 END
END


IF RTRIM(LTRIM(UPPER(@pTabla))) = 'CLIENTE' 
BEGIN
	 SET @Id_Cliente = CAST(@pId AS INT)
	 IF NOT EXISTS(SELECT 1 FROM Clientes_xCampos WHERE Id_Cliente = @Id_Cliente AND Id_Campo = @pId_Campo )
	 BEGIN
		INSERT INTO Clientes_xCampos (Id_Cliente,Id_Campo,Valor_String,Valor_Integer,Valor_DT,Valor_Decimal,Valor_Memo)  
		       VALUES (@Id_Cliente,@pId_Campo, @pValor_String,@pValor_Integer,@pValor_DT ,@pValor_Decimal,@pValor_Memo)
     END
	 ELSE
	 BEGIN
		UPDATE Clientes_xCampos 
		       SET Valor_String = @pValor_String, Valor_Integer = @pValor_Integer, 
		                    Valor_DT = @pValor_DT , Valor_Decimal = @pValor_Decimal,Valor_Memo = @pValor_Memo
		       WHERE Id_Cliente = @Id_Cliente AND Id_Campo = @pId_Campo
	 END
END


IF RTRIM(LTRIM(UPPER(@pTabla))) = 'PRODUCTO' 
BEGIN
	 SET @Id_Producto = CAST(@pId AS VARCHAR(14))
	 IF NOT EXISTS(SELECT 1 FROM Productos_XCampos WHERE Id_Producto = @Id_Producto AND Id_Campo = @pId_Campo )
	 BEGIN
		INSERT INTO Productos_XCampos (Id_Producto,Id_Campo,Valor_String,Valor_Integer,Valor_DT,Valor_Decimal,Valor_Memo) 
		       VALUES (@Id_Producto,@pId_Campo, @pValor_String,@pValor_Integer,@pValor_DT ,@pValor_Decimal,@pValor_Memo)
     END
	 ELSE
	 BEGIN
		UPDATE Productos_XCampos 
		       SET Valor_String = @pValor_String, Valor_Integer = @pValor_Integer, 
		                    Valor_DT = @pValor_DT , Valor_Decimal = @pValor_Decimal,Valor_Memo = @pValor_Memo
		      WHERE Id_Producto = @Id_Producto AND Id_Campo = @pId_Campo 
	 END
END



IF RTRIM(LTRIM(UPPER(@pTabla))) = 'CBTE' 
BEGIN
	 SET @Id_Trans = CAST(@pId AS INT)
	 IF NOT EXISTS(SELECT 1 FROM Cbtes_xCampos WHERE Id_Trans = @Id_Trans AND Id_Campo = @pId_Campo )
	 BEGIN
		INSERT INTO Cbtes_xCampos (Id_Trans,Id_Campo,Valor_String,Valor_Integer,Valor_DT,Valor_Decimal,Valor_Memo) 
		       VALUES (@Id_Trans,@pId_Campo, @pValor_String,@pValor_Integer,@pValor_DT ,@pValor_Decimal,@pValor_Memo)
     END
	 ELSE
	 BEGIN
		UPDATE Cbtes_xCampos 
		       SET Valor_String = @pValor_String, Valor_Integer = @pValor_Integer, 
		                    Valor_DT = @pValor_DT , Valor_Decimal = @pValor_Decimal,Valor_Memo = @pValor_Memo
		       WHERE Id_Trans = @Id_Trans AND Id_Campo = @pId_Campo
	 END
END



IF RTRIM(LTRIM(UPPER(@pTabla))) = 'CLIENTETEMP' 
BEGIN
	 SET @Id_Cliente_Temp = CAST(@pId AS INT)
	 IF NOT EXISTS(SELECT 1 FROM Clientes_Temp_XCampos WHERE Id_Cliente_Temp = @Id_Cliente_Temp AND Id_Campo = @pId_Campo )
	 BEGIN
		INSERT INTO Clientes_Temp_XCampos (Id_Cliente_Temp,Id_Campo,Valor_String,Valor_Integer,Valor_DT,Valor_Decimal,Valor_Memo) 
		       VALUES (@Id_Cliente_Temp,@pId_Campo, @pValor_String,@pValor_Integer,@pValor_DT ,@pValor_Decimal,@pValor_Memo)
     END
	 ELSE
	 BEGIN
		UPDATE Clientes_Temp_XCampos 
		       SET Valor_String = @pValor_String, Valor_Integer = @pValor_Integer, 
		                    Valor_DT = @pValor_DT , Valor_Decimal = @pValor_Decimal,Valor_Memo = @pValor_Memo
		       WHERE Id_Cliente_Temp = @Id_Cliente_Temp AND Id_Campo = @pId_Campo
	 END
END

SELECT 0, 0, 0, 0, @MensajeFinEjec
END TRY

BEGIN CATCH  
    -- Ejecuta la rutina de recuperaci¾n de errores
    EXECUTE usp_GetErrorInfo;  
END CATCH



