consolibyte sdk 添加项目

consolibyte sdk add item

我正在尝试使用 Keith Palmer/Consolibyte sdk 将项目在线添加到 quickbooks。我的示例基于 sdk 中提供的示例,但似乎 sdk 版本中没有足够的信息,因此 'add item' 失败。查看来自 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 资源管理器,那么它会按预期工作,所以问题似乎是将所需的额外内容添加到 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 输出的代码。

None 是有效的 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 语法文档: