Intuit QBO SDK v3 将 Customer PreferredDeliveryMethod 设置为 None 似乎无法正常工作

Intuit QBO SDK v3 Setting Customer PreferredDeliveryMethod to None does not seem to be working correctly

我使用 Intuit QBO SDK v3 DataService.FindById 获取客户实体,修改包括 PreferredDeliveryMethod 在内的一些属性,然后调用 DataService.Update。当我将 PreferredDeliveryMethod 设置为 'Print' 或 'Email' 时,客户被正确修改,如响应对象所示。当我将 PreferredDeliveryMethod 设置为 'None' 时,响应返回 'Print',而不管我应用修改之前是什么。如何将 PreferredDeliveryMethod 设置为 'None' 以获得正确的响应?

更新:此问题与 Sandbox 公司有关。当我与制作公司一起尝试时,更新工作正常。有一些怀疑涉及公司设置,但我还不知道是什么。

要求:

<?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" domain="QBO" sparse="false" xmlns="http://schema.intuit.com/finance/v3">
  <Id>3</Id>
  <SyncToken>2</SyncToken>
  <MetaData>
    <CreateTime>2014-09-19T19:51:22-04:00</CreateTime>
    <LastUpdatedTime>2015-02-10T09:53:30-05:00</LastUpdatedTime>
  </MetaData>
  <GivenName>Grace</GivenName>
  <FamilyName>Pariente</FamilyName>
  <FullyQualifiedName>Cool Cars</FullyQualifiedName>
  <CompanyName>Cool Cars</CompanyName>
  <DisplayName>Cool Cars</DisplayName>
  <PrintOnCheckName>Cool Cars</PrintOnCheckName>
  <Active>true</Active>
  <PrimaryPhone>
    <FreeFormNumber>(415) 555-9933</FreeFormNumber>
  </PrimaryPhone>
  <AlternatePhone />
  <Fax />
  <PrimaryEmailAddr>
    <Address>Cool_Cars@intuit.com</Address>
  </PrimaryEmailAddr>
  <DefaultTaxCodeRef />
  <Taxable>false</Taxable>
  <BillAddr>
    <Id>4</Id>
    <Line1>65 Ocean Dr.</Line1>
    <City>Half Moon Bay</City>
    <CountrySubDivisionCode>CA</CountrySubDivisionCode>
    <PostalCode>94213</PostalCode>
    <Lat>37.4300318</Lat>
    <Long>-122.4336537</Long>
  </BillAddr>
  <ShipAddr />
  <Job>false</Job>
  <BillWithParent>false</BillWithParent>
  <SalesTermRef />
  <Balance>0</Balance>
  <BalanceWithJobs>0</BalanceWithJobs>
  <PreferredDeliveryMethod>None</PreferredDeliveryMethod>
</Customer>

回复:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2015-02-10T06:53:55.320-08:00">
<Customer domain="QBO" sparse="false">
   <Id>3</Id>
   <SyncToken>3</SyncToken>
   <MetaData>
      <CreateTime>2014-09-19T16:51:22-07:00</CreateTime>
      <LastUpdatedTime>2015-02-10T06:53:55-08:00</LastUpdatedTime>
   </MetaData>
   <GivenName>Grace</GivenName>
   <FamilyName>Pariente</FamilyName>
   <FullyQualifiedName>Cool Cars</FullyQualifiedName>
   <CompanyName>Cool Cars</CompanyName>
   <DisplayName>Cool Cars</DisplayName>
   <PrintOnCheckName>Cool Cars</PrintOnCheckName>
   <Active>true</Active>
   <PrimaryPhone><FreeFormNumber>(415) 555-9933</FreeFormNumber></PrimaryPhone>
   <PrimaryEmailAddr><Address>Cool_Cars@intuit.com</Address></PrimaryEmailAddr>
   <Taxable>false</Taxable>
   <BillAddr>
      <Id>4</Id>
      <Line1>65 Ocean Dr.</Line1>
      <City>Half Moon Bay</City>
      <CountrySubDivisionCode>CA</CountrySubDivisionCode>
      <PostalCode>94213</PostalCode>
      <Lat>37.4300318</Lat>
      <Long>-122.4336537</Long>
 </BillAddr>
 <Job>false</Job>
 <BillWithParent>false</BillWithParent>
 <Balance>0</Balance>
 <BalanceWithJobs>0</BalanceWithJobs>
 <PreferredDeliveryMethod>Print</PreferredDeliveryMethod>
 </Customer>
</IntuitResponse>

你能捕捉并分享原始 request/response XML 吗?

我尝试了以下 java 代码,它运行良好。

        Customer customer = new Customer();
        customer.setId("1");
        Customer cust = this.service.findById(customer);
        System.out.println(cust.getPreferredDeliveryMethod());

        cust.setPreferredDeliveryMethod("None");

        this.service.update(cust);
        System.out.println("Updated - " + cust.getPreferredDeliveryMethod());

GetById

<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2015-02-10T02:10:51.595-08:00">
   <Customer domain="QBO" sparse="false">
      <Id>1</Id>
      <SyncToken>4</SyncToken>
      <MetaData>
         <CreateTime>2015-02-02T20:34:19-08:00</CreateTime>
         <LastUpdatedTime>2015-02-10T02:10:39-08:00</LastUpdatedTime>
      </MetaData>
      <GivenName>John</GivenName>
      <FamilyName>Doe</FamilyName>
      <FullyQualifiedName>John Doe</FullyQualifiedName>
...
      <Job>false</Job>
      <BillWithParent>false</BillWithParent>
      <Balance>242.25</Balance>
      <BalanceWithJobs>242.25</BalanceWithJobs>
      <PreferredDeliveryMethod>Print</PreferredDeliveryMethod>
   </Customer>
</IntuitResponse>

将 PrefDelMethod 更新为 'None'

<Customer domain="QBO" sparse="false" xmlns="http://schema.intuit.com/finance/v3">
    <Id>1</Id>
    <SyncToken>4</SyncToken>
    <MetaData>
        <CreateTime>2015-02-02T20:34:19-08:00</CreateTime>
        <LastUpdatedTime>2015-02-10T02:10:39-08:00</LastUpdatedTime>
    </MetaData>
    <GivenName>John</GivenName>
    <FamilyName>Doe</FamilyName>
    <FullyQualifiedName>John Doe</FullyQualifiedName>
...
    <BalanceWithJobs>242.25</BalanceWithJobs>
    <PreferredDeliveryMethod>None</PreferredDeliveryMethod>
</Customer>

更新回复

<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2015-02-10T02:10:53.800-08:00">
   <Customer domain="QBO" sparse="false">
      <Id>1</Id>
      <SyncToken>5</SyncToken>
      <MetaData>
         <CreateTime>2015-02-02T20:34:19-08:00</CreateTime>
         <LastUpdatedTime>2015-02-10T02:10:53-08:00</LastUpdatedTime>
      </MetaData>
      <GivenName>John</GivenName>
      <FamilyName>Doe</FamilyName>
      <FullyQualifiedName>John Doe</FullyQualifiedName>
...
      <BalanceWithJobs>242.25</BalanceWithJobs>
      <PreferredDeliveryMethod>None</PreferredDeliveryMethod>
   </Customer>
</IntuitResponse>

根据 Intuit 开发者社区,"Most probably it is a sandbox issue as it has data already setup which can sometimes cause data issues."

是的,我发现 Sandbox 存在其他数据问题。这是公认的答案。