2013-07-11 3 views
1

QuickBooks .NET REST API v2 라이브러리를 사용하여 고객을 만들려고합니다. 요청을 제출 DataService의 객체의 추가() 메서드를 호출, 나는 내가 이해하지 못하는 오류 메시지가 얻을 :고객을 삽입 할 때 오류가 발생했습니다.

"EntityManager must be access within a transaction" 

을 자바에 대한 몇 안타를 회전 오류 메시지를 인터넷 검색을하지만, 아무 것도 보이지 않아서 문제를 해결할 수 없으며 메시지에 대한 Intuit-Partner-Platform 문서에서 어떤 문서도 발견하지 못했습니다.

using Intuit.Ipp.Data.Qbd; 

      OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 
      ServiceContext context = new ServiceContext(oauthValidator, Constants.APP_TOKEN, realmID, IntuitServicesType.QBD); 
      DataServices dataServices = new DataServices(context); 


      var writeCust = new Customer() 
      { 
       Name = "Carlos Verdona", 
       TypeOf = partyType.Person, 
       Address = new PhysicalAddress[] 
       { 
        new PhysicalAddress() 
         { 
          Line1 = "217 Tarboro Highway", 
          Line2 = "Apt. D", 
          City = "Langleyville", 
          CountrySubDivisionCode = "NC", 
          PostalCode = "55712", 
          Tag = new string[]{"Billing"} 
         } 
       }, 
       Phone = new TelephoneNumber[] 
       { 
        new TelephoneNumber() 
        { 
         DeviceType = "Work", 
         FreeFormNumber = "111-345-3456" 
        }, 
        new TelephoneNumber() 
        { 
         DeviceType = "Mobile", 
         FreeFormNumber = "111-345-3457" 
        } 
       }, 
       WebSite = new WebSiteAddress[] 
       { 
        new WebSiteAddress() 
        { 
         URI = "http://www.HorseBrains.com" 
        } 
       }, 
       Email = new EmailAddress[] 
       { 
        new EmailAddress() 
        { 
         Address = "[email protected]" 
        } 
       }, 
       GivenName = "", 
       MiddleName = "", 
       FamilyName = "", 
       DBAName = "", 
       ShowAs = "Carlos Verdona", 
       //CustomField = new CustomField[] 
       //{ 
       // new BooleanTypeCustomField() 
       // { 
       //  DefinitionId = "Bill With Parent", 
       //  Value = true 
       // }, 
       // new StringTypeCustomField() 
       // { 
       //  DefinitionId = "Preferred Delivery Method", 
       //  Value = "PRINT" 
       // } 

       //}, 
       SalesTermId = new IdType() {idDomain = idDomainEnum.QBO, Value = "8" }, 

      }; 

      //Create Customer 
      Customer output = dataServices.Add(writeCust); 

조언 해 주셔서 감사합니다.

답변

0

'고객 생성'끝점을 직접 호출하여 고객 개체를 만들려면 Apiexploer 도구를 사용해보십시오. https://developer.intuit.com/apiexplorer?apiName=V2QBO

다음 docs API와 .Net devkit 링크도 참조 할 수 있습니다.

API 문서 도구 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/customer

동기 호출 문서 심판 - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0100_ipp_.net_devkit/0299_synchronous_calls/0001_data_service_apis

Asyn 통화 문서 심판 - 이러한

당신이 일반 세터 고객 엔티티를 사용하여 확인할 수 있습니다 도움이 될 것입니다 https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0100_ipp_.net_devkit/0300_asynchronous_calls/0001_data_service_apis

희망 .

+0

안녕 마나스을, 난 당신이 일반 세터 고객 엔티티를 사용하여 확인할 수 있습니다 "무슨 뜻인지 이해가 안 돼요 " – DBallantyne

+0

내 말은 .. 고객 c = new Customer(); c.setName ("") .. 나는이 접근법이 더 읽기 쉽다고 생각한다. (나는 생각한다) 그리고 객체를 만들기 전에 .. apiexplorer를 사용하여 객체를 테스트하는 것이 더 좋다. XML 특정 오류 또는 구문 오류를 감지하는 데 도움이됩니다. –

0

Intuit.Ipp.Data.Qbd를 사용하여 참조하는 것으로 나타났습니다. QBD에 대한 고객 오브젝트가 작성됩니다. 그런 다음 마지막 몇 줄에서 ID 도메인을 QBO로 전달합니다. SalesTermId = new IdType() {idDomain = idDomainEnum.QBO, 값 = "8"},

이 문제를 해결하십시오. 는 참조 용 샘플 코드를 부착 올바른 라이브러리 Intuit.Ipp.Data.Qbo

+0

주소에 대한 태그 값으로 문자열 유형을 전달하는 반면, PhysicalAddresslabelType 열거 형을 reuqires 하나 더 문제가 있습니다. –

0

을 사용 enter image description here

관련 문제