如何使用QuickBooks IPP为客户设置销售条款?

时间:2014-02-07 22:50:48

标签: php quickbooks-online

我使用QuickBooks_IPP成功地将客户添加到QuickBooks,但我在设置客户的销售期限时遇到了困难。我查看了文档,但找不到设置SalesTerm的示例。

我已将这些行添加到示例代码中,但不会引发错误,也不会添加销售条款。

    $Term = new QuickBooks_IPP_Object_SalesTerm();
    $Term->setSalesTermRef(2); //15 days
    $Customer->setSalesTermRef($Term);

这是完整的客户添加代码:

    // Set the IPP version to v3 
    $IPP->version(QuickBooks_IPP_IDS::VERSION_3);

    $CustomerService = new QuickBooks_IPP_Service_Customer();

    $Customer = new QuickBooks_IPP_Object_Customer();
    $Customer->setTitle('Ms');
    $Customer->setGivenName('Shannon');
    $Customer->setMiddleName('B');
    $Customer->setFamilyName('Palmer');
    $Customer->setDisplayName('Shannon B Palmer ' . mt_rand(0, 1000));

    //set days due
    $Term = new QuickBooks_IPP_Object_SalesTerm();
    $Term->setSalesTermRef(2);
    $Customer->setSalesTermRef($Term);

    // Phone #
    $PrimaryPhone = new QuickBooks_IPP_Object_PrimaryPhone();
    $PrimaryPhone->setFreeFormNumber('860-532-0089');
    $Customer->setPrimaryPhone($PrimaryPhone);

    // Mobile #
    $Mobile = new QuickBooks_IPP_Object_Mobile();
    $Mobile->setFreeFormNumber('860-532-0089');
    $Customer->setMobile($Mobile);

    // Fax #
    $Fax = new QuickBooks_IPP_Object_Fax();
    $Fax->setFreeFormNumber('860-532-0089');
    $Customer->setFax($Fax);

    // Bill address
    $BillAddr = new QuickBooks_IPP_Object_BillAddr();
    $BillAddr->setLine1('72 E Blue Grass Road');
    $BillAddr->setLine2('Suite D');
    $BillAddr->setCity('Mt Pleasant');
    $BillAddr->setCountrySubDivisionCode('MI');
    $BillAddr->setPostalCode('48858');
    $Customer->setBillAddr($BillAddr);

    // Email
    $PrimaryEmailAddr = new QuickBooks_IPP_Object_PrimaryEmailAddr();
    $PrimaryEmailAddr->setAddress('support@consolibyte.com');
    $Customer->setPrimaryEmailAddr($PrimaryEmailAddr);

    if ($resp = $CustomerService->add($Context, $realm, $Customer))
    {
        print('Our new customer ID is: [' . $resp . ']');
    }
    else
    {
        print($CustomerService->lastError($Context));
    }

我可以在添加后查询客户,但它不会像我期望的那样返回SalesTerm。我是否需要SalesTerm服务而不是Object?

1 个答案:

答案 0 :(得分:1)

如果它实际上是XML请求中的完整嵌套节点,那么唯一一次将对象包装在像QuickBooks_IPP_Object_SalesTerm这样的对象中。

即。如果你在Intuit的文档中看到这个:

<Customer>
  ...
  <SalesTermRef>
    <Id>...</Id>
    ... other nested tags inside here ...
  </SalesTermRef>
  ...
</Customer>

然后你会走在正确的轨道上。

但根据Intuit的文档,这只是一个普通的非嵌套节点:

<SalesTermRef>4</SalesTermRef>

所以只需使用->setSalesTermRef($val)方法:

// Terms (e.g. Net 30, etc.)
$Customer->setSalesTermRef(4);

有时,查看此内容的最简单方法是检查XML输出。看看你发送的内容:

print($CustomerService->lastRequest());