consolibyte sdk添加项目

时间:2016-11-15 10:43:50

标签: php xml quickbooks

我正在尝试使用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输出的代码。

1 个答案:

答案 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语法文档: