我正在尝试使用Keith Palmer / Consolibyte sdk在线添加项目。我的示例基于sdk中提供的示例,但似乎sdk版本中没有足够的信息,因此“添加项目”失败。通过intuit查看文档,我似乎需要添加几个额外的字段。但是当我添加它们时,它们只是被sdk忽略而没有添加到传递给quickbooks的xml中。
<?php
$ItemService = new QuickBooks_IPP_Service_Item();
$Item = new QuickBooks_IPP_Object_Item();
$Item->setName('My 1st Item');
$Item->setIncomeAccountRef('66');
$Item->setExpenseAccountRef('67');
$Item->setAssetAccountRef('65');
$Item->setType('Inventory');
$Item->setTrackQtyOnHand = ('true'); //MISSING FROM XML OUTPUT
$Item->setQtyOnHand = ('10'); //MISSING FROM XML OUTPUT
$Item->setInvStartDate = ('2015-01-01'); //MISSING FROM XML OUTPUT
if ($resp = $ItemService->add($Context, $realm, $Item))
{
print('Our new Item ID is: [' . $resp . ']');
}
else
{
print($ItemService->lastError($Context));
print("\n\n\n\n");
print('REQUEST: <code>' . htmlspecialchars($ItemService->lastRequest()) . '</code><br><br><br>');
print("\n\n\n\n");
print('RESPONSE: <code>' . htmlspecialchars($ItemService->lastResponse()) . '</code><br><br><br>');
}
print('<br><br><br><br>');
print("\n\n\n\n\n\n\n\n");
print('Request [' . $IPP->lastRequest() . ']');
print("\n\n\n\n");
print('Response [' . $IPP->lastResponse() . ']');
print("\n\n\n\n\n\n\n\n\n");
?>
</pre>
<?php
require_once dirname(__FILE__) . '/views/footer.tpl.php';
如果我手动将项目添加到XML并进入API Explorer,那么它会按预期工作,因此问题似乎是将所需的额外内容添加到xml中。
以下是我上面代码的xml输出:
<Item xmlns="http://schema.intuit.com/finance/v3">
<Name>My 3rd Item</Name>
<Type>Inventory</Type>
<IncomeAccountRef>66</IncomeAccountRef>
<ExpenseAccountRef>67</ExpenseAccountRef>
<AssetAccountRef>65</AssetAccountRef>
</Item>
这无法添加项目,因为xml输出中缺少下面的最后3个字段
$Item->setTrackQtyOnHand = ('true');
$Item->setQtyOnHand = ('10');
$Item->setInvStartDate = ('2015-01-01');
如果我将此代码直接输入API资源管理器,则该项目会按预期添加到quickbooks中。
<Item xmlns="http://schema.intuit.com/finance/v3">
<Name>My 2nd Item</Name>
<Type>Inventory</Type>
<IncomeAccountRef>66</IncomeAccountRef>
<ExpenseAccountRef>67</ExpenseAccountRef>
<AssetAccountRef>65</AssetAccountRef>
<TrackQtyOnHand>true</TrackQtyOnHand>
<QtyOnHand>10</QtyOnHand>
<InvStartDate>2015-01-01</InvStartDate>
</Item>
我查看了sdk文件夹,但我不确定在哪里可以找到构建xml输出的代码。
答案 0 :(得分:0)
这些都不是调用方法的有效PHP方法:
$Item->setTrackQtyOnHand = ('true'); //MISSING FROM XML OUTPUT
$Item->setQtyOnHand = ('10'); //MISSING FROM XML OUTPUT
$Item->setInvStartDate = ('2015-01-01'); //MISSING FROM XML OUTPUT
函数调用采用以下格式:
$Object->someMethod('value');
所以你的代码应该是这样的:
$Item->setTrackQtyOnHand ('true'); //MISSING FROM XML OUTPUT
$Item->setQtyOnHand('10'); //MISSING FROM XML OUTPUT
$Item->setInvStartDate('2015-01-01'); //MISSING FROM XML OUTPUT
请查看PHP语法文档: