我使用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?
答案 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());