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

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 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



