C1 데이터 커넥터를 통해 Salesforce 데이터를 QuickBooks으로 가져오기 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

C1 데이터 커넥터를 통해 Salesforce 데이터를 QuickBooks으로 가져오기

페이지 정보

작성자 GrapeCity 작성일 21-05-28 11:54 조회 2,556회 댓글 0건

본문

사용자가 Salesforce에서 QuickBooks Online으로 데이터를 가져오려는 경우가 많습니다. 이 블로그에서는 Salesforce에서 연락처를 가져와 ComponentOne Salesforce ADO.NET 데이터 커넥터QuickBooks Online ADO.NET 데이터 커넥터를 사용하여 QuickBooks Online으로 가져오는 방법을 살펴봅니다.


ComponentOne Studio 사용해 보기

ComponentOne Studio Enterprise 최신 버전 다운로드

지금 다운로드하십시오!


Salesforce에서 연락처를 가져온 다음 QuickBooks Online에 고객으로 가져오려면 다음 단계를 수행해야 합니다.


  • 데이터 크기 및 서비스 요청 제한 파악

  • Salesforce에 대한 인증

  • Salesforce 데이터의 스키마

  • Salesforce에서 데이터 가져오기

  • Salesforce 데이터를 QuickBooks Online 데이터에 매핑

  • QuickBooks Online에 대한 인증

  • QuickBooks Online에 데이터 삽입


이제 각 단계를 자세히 살펴보겠습니다.


데이터 크기 및 서비스 요청 제한

Salesforce 및 QuickBooks 시스템은 온라인으로 제공되므로 결과 크기와 부하 균형 호출 수에 특정 제한이 있습니다. 이 Salesforce 문서QuickBooks Online 문서에서는 버전에 따른 제한과 제한 초과 시 오류에 대해 자세히 설명합니다.


Salesforce에 대한 인증

Salesforce는 REST API에 연결하려는 외부 응용 프로그램에 대한 OAuth 인증을 지원합니다. 이 문서에서는 응용 프로그램이 OAuth를 지원하도록 설정하는 방법을 설명합니다.


Salesforce에 연결하려면 다음 정보가 필요합니다.


  • 토큰 끝점

  • API URL

  • 클라이언트 ID

  • 클라이언트 암호

  • Salesforce 사용자 이름 및 암호

  • 보안 토큰


Salesforce 데이터의 스키마


데이터를 가져올 엔터티의 스키마는 여기 Salesforce에 있습니다. 또는 Salesforce용 ComponentOne ADO.NET 데이터 커넥터의 연결 개체에서 스키마 정보를 가져올 수 있습니다.


이 블로그에서는 설명을 위해 연락처 데이터가 필요합니다. 다음 필드가 필요합니다.

  • Title

  • Salutation

  • FirstName

  • LastName

  • Id(AccountName 및 AccountNumber를 가져오기 위한 pk)

  • Email

  • Phone

  • MobilePhone

  • Fax

  • MailingStreet

  • MailingCity

  • MailingState

  • MailingPostalCode

  • MailingCountry

  • MailingLatitude

  • MailingLongitude


다음은 Salesforce에 따라 위 필드에 필요한 스키마입니다.

열 이름데이터 유형크기Null 가능생성 가능업데이트 가능
AccountIdSystem.String18TRUETRUETRUE
LastNameSystem.String80FALSETRUETRUE
FirstNameSystem.String40TRUETRUETRUE
SalutationSystem.String40TRUETRUETRUE
MailingStreetSystem.String255TRUETRUETRUE
MailingCitySystem.String40TRUETRUETRUE
MailingStateSystem.String80TRUETRUETRUE
MailingPostalCodeSystem.String20TRUETRUETRUE
MailingCountrySystem.String80TRUETRUETRUE
MailingLatitudeSystem.String0TRUETRUETRUE
MailingLongitudeSystem.String0TRUETRUETRUE
PhoneSystem.String40TRUETRUETRUE
FaxSystem.String40TRUETRUETRUE
MobilePhoneSystem.String40TRUETRUETRUE
EmailSystem.String80TRUETRUETRUE
TitleSystem.String128TRUETRUETRUE
설명System.String32000TRUETRUETRUE



Salesforce에서 데이터 가져오기


공급자에서 작업하기 위한 첫 단계는 Salesforce에 대한 연결을 설정하는 것입니다.

 DataConnector 서비스 라이브러리는 ADO.NET DbConnection 클래스와 동일한 C1SalesforceConnection 클래스를 제공합니다. 이 클래스는 연결 개체를 만들고 연결 문자열을 클래스 생성자에 매개 변수로 전달하여 데이터 소스에 대한 연결을 설정하는 데 사용됩니다. 연결 문자열은 C1SalesforceConnectionStringBuilder 클래스를 사용하여 미리 정의하거나 생성할 수 있습니다.


연결 개체를 초기화한 후 Open() 메서드로 열어 연결을 시작합니다. 그런 다음, CreateCommand() 메서드로 명령 개체를 만듭니다. DbConnection 및 DbCommand 개체로 작업할 때처럼 command.CommandTextcommand.ExecuteReader()를 사용하여 결과 평가를 위해 DataReader 개체를 얻는 SQL 명령을 설정합니다.


이 경우에는 DataTable에 결과를 저장할 것이므로 DataReader가 가장 적합합니다. 전체 코드는 아래와 같습니다.

 static class SalesforceSettings
      {
          public const string OAuthTokenEndpoint = @"https://ap17.salesforce.com/services/oauth2/token";
          public const string Url = @"https://ap17.salesforce.com/services/data/v42.0";
          public const string ClientId = @"xxx";
          public const string ClientSecret = @"xxx";
          public const string Username = @"xxx";
          public const string Password = @"xxx";
          public const string SecurityToken = @"xxx";
      }
​
      static DataTable GetContactsFromSalesforce()
      {
          string sql = @"select c.FirstName, c.LastName, c.Salutation, c.Title, c.Email, c.Phone, c.MobilePhone, c.Fax,
                          c.MailingStreet, c.MailingCity, c.MailingState, c.MailingPostalCode, c.MailingCountry, c.MailingLatitude, c.MailingLongitude,
                          c.Description, a.Name as AccountName, a.AccountNumber From Contact c left join Account a on c.AccountId = a.Id";
​
          string salesforceConnection = string.Format("Username={0};Password={1};Security Token={2};OAuth Client Id={3}; OAuth Client Secret={4}; OAuth Token Endpoint={5}; Url={6}",
              SalesforceSettings.Username, SalesforceSettings.Password, SalesforceSettings.SecurityToken, SalesforceSettings.ClientId, SalesforceSettings.ClientSecret,
              SalesforceSettings.OAuthTokenEndpoint, SalesforceSettings.Url);
​
          using (var con = new C1SalesforceConnection(salesforceConnection))
          {
              con.Open();
              var command = con.CreateCommand();
              command.CommandText = sql;
​
              var contactsReader = command.ExecuteReader();
              var dataTable = new DataTable();
              dataTable.Load(contactsReader);
              return dataTable;
          }
      }



Salesforce 데이터를 QuickBooks Online 데이터에 매핑


다음 표를 사용하여 QuickBooks Online 고객과 Salesforce 연락처 간에 필드를 매핑합니다.



QBO 고객Salesforce 연락처
TitleTitle
SuffixSalutation
GivenNameFirstName
FamilyNameLastName
CompanyNameAccount.Id(AccountName에 연결)
PrimaryEmailAddr_AddressEmail
PrimaryPhone_FreeFormNumberPhone
Mobile_FreeFormNumberMobilePhone
Fax_FreeFormNumberFax
BillAddr_CityMailingCity
BillAddr_CountrySubDivisionCodeMailingState
BillAddr_PostalCodeMailingPostalCode
BillAddr_CountryMailingCountry
BillAddr_LatMailingLatitude
BillAddr_LongMailingLongitude
메모설명



QuickBooks Online에 대한 인증


공급자에서 작업하기 위한 첫 단계는 QuickBooks Online 데이터에 대한 연결을 설정하는 것입니다.


DataConnector 서비스 라이브러리는 ADO.NET DbConnection 클래스와 마찬가지로 C1QuickBooksOnlineConnection 클래스를 제공합니다.


이 클래스는 연결 개체를 만들고 연결 문자열을 클래스 생성자에 매개 변수로 전달하여 데이터 소스에 대한 연결을 설정하는 데 사용됩니다. 연결 문자열은 C1QuickBooksOnlineConnectionStringBuilder 클래스를 사용하여 미리 정의하거나 생성할 수 있습니다.


OAuthAccessToken, OAuthRefreshToken의 값은 브라우저를 사용하여 이 단계에 따라 생성해야 합니다.


아래 샘플 코드 조각에서는 연결 문자열을 생성하고 연결 개체를 만드는 방법을 보여줍니다.

      static class QBOSettings
      {
          public static string OAuthAccessToken = @"xxx";
          public static string OAuthRefreshToken = @"xxx";
          public const string OAuthClientId = @"xxx";
          public const string OAuthClientSecret = @"xxx";
          public static string CompanyId = "xxx";
          public const string MinorVersion = "xxx";
​
          public static string ConnectionString => $"Company Id={CompanyId};Use SandBox=true;OAuth Client Secret={OAuthClientSecret};OAuth Client Id={OAuthClientId};" +
                          $"OAuth Access Token={OAuthAccessToken};OAuth Refresh Token={OAuthRefreshToken}; OAuth Token Endpoint=;Minor Version={MinorVersion}";
      }
​
          using (var conn = new C1QuickBooksOnlineConnection(QBOSettings.ConnectionString))
          {
              conn.OAuthTokenRefreshed += OnOAuthTokenRefreshed;
              conn.Open();
              ……
          }



QuickBooks Online에 데이터 삽입


GetContactsFromSalesforce 메서드에서 반환된 DataTable과 C1QuickBooksOnlineDataAdapter를 사용하여 데이터를 QuickBooks Online에 대량 삽입합니다.


C1QuickBooksOnlineDataAdapterDbDataAdapter를 상속하므로 DbDataAdapter의 일반 기능을 모두 제공합니다.

  C1QuickBooksOnlineDataAdapter dataAdapter = new C1QuickBooksOnlineDataAdapter();
              var insertCmd = "Insert Into Customers(Title, GivenName, FamilyName, CompanyName, PrimaryPhone_FreeFormNumber," +
                  "Mobile_FreeFormNumber, Fax_FreeFormNumber, BillAddr_City, BillAddr_CountrySubDivisionCode, BillAddr_PostalCode, BillAddr_Country, BillAddr_Lat," +
                  "BillAddr_Long, Notes) VALUES (@p1, @p2, @p3, @p4, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15)";
​
              dataAdapter.InsertCommand = new C1QuickBooksOnlineCommand(conn, insertCmd);
              dataAdapter.InsertCommand.Parameters.Add("@p1", DbType.String, "Salutation");
              dataAdapter.InsertCommand.Parameters.Add("@p2", DbType.String, "FirstName");
              dataAdapter.InsertCommand.Parameters.Add("@p3", DbType.String, "LastName");
              dataAdapter.InsertCommand.Parameters.Add("@p4", DbType.String, "AccountName");
              dataAdapter.InsertCommand.Parameters.Add("@p6", DbType.String, "Phone");
              dataAdapter.InsertCommand.Parameters.Add("@p7", DbType.String, "MobilePhone");
              dataAdapter.InsertCommand.Parameters.Add("@p8", DbType.String, "Fax");
              dataAdapter.InsertCommand.Parameters.Add("@p9", DbType.String, "MailingCity");
              dataAdapter.InsertCommand.Parameters.Add("@p10", DbType.String, "MailingState");
              dataAdapter.InsertCommand.Parameters.Add("@p11", DbType.String, "MailingPostalCode");
              dataAdapter.InsertCommand.Parameters.Add("@p12", DbType.String, "MailingCountry");
              dataAdapter.InsertCommand.Parameters.Add("@p13", DbType.String, "MailingLatitude");
              dataAdapter.InsertCommand.Parameters.Add("@p14", DbType.String, "MailingLongitude");
              dataAdapter.InsertCommand.Parameters.Add("@p15", DbType.String, "Description");
              dataAdapter.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
​
              //Need to change row state to added for bulk insert to work
              dataTable.TableName = "Customers";
              foreach (DataRow curRow in dataTable.Rows)
              {
                  curRow.SetAdded();
              }
​
              dataAdapter.UpdateBatchSize = 100;
              int rowAffected = dataAdapter.Update(dataTable);


모두 끝났습니다. ComponentOne Salesforce와 QuickBooks Online ADO.NET 데이터 커넥터를 사용하면 일반적인 데이터 플랫폼 간에 데이터를 쉽게 조작할 수 있습니다.


더 많은 데이터 커넥터 데모를 보려면 Desktop DataConnectors Explorer 또는 Web DataConnectors Explorer를 참조하십시오.

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

인기글

더보기
  • 인기 게시물이 없습니다.
그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2022 GrapeCity inc.