如何在线使用快速书籍次要版本> = 4

时间:2016-06-09 07:53:58

标签: php sdk quickbooks quickbooks-online

我已使用此链接中的快速书籍sdk在线集成了Quick-Books:https://github.com/consolibyte/quickbooks-php

除了一个问题外,一切都很完美 问题是,当我从快速书籍中检索项目时,它会返回"非库存"项目为"服务"。
我已经阅读了不同的主题,声明我将不得不转到次要版本4来解决问题 但我无法找到一种方法来使我的当前SDK能够使用次要版本4或更高版本。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

对于那些有类似问题的人,我找到了一个解决方法,并为他人分享,如果他们愿意,可以从中受益:

打开文件quickbook_sdk\QuickBooks\IPP\Service.php
找到以下函数protected function _query($Context, $realmID, $query)

替换以下代码

$return = $IPP->IDS($Context, $realmID, null, QuickBooks_IPP_IDS::OPTYPE_QUERY, urlencode($query));

$query = urlencode($query);
$query .= "&minorversion=4";
$return = $IPP->IDS($Context, $realmID, null, QuickBooks_IPP_IDS::OPTYPE_QUERY, $query);

注意:我正在查询项目,因此这种解决方法可能仅在通过查询获取数据时才有用。

<强>更新 如果要使用项目类型NonInventory在线添加/更新项目到QuickBooks,则需要在quickbook_sdk/QuickBooks/IPP.php文件中修改以下代码。

查找名为function _IDS_v3的函数,并在该函数内找到以下条件

 if ($optype == QuickBooks_IPP_IDS::OPTYPE_ADD or $optype == QuickBooks_IPP_IDS::OPTYPE_MOD)    
    {
        $post = true;
        $url = $this->baseURL() . '/company/' . $realm . '/' . strtolower($resource);
        $xml = $xml_or_query;
    }

将其替换为

if ($optype == QuickBooks_IPP_IDS::OPTYPE_ADD or $optype == QuickBooks_IPP_IDS::OPTYPE_MOD) 
{
    $post = true;
    $url = $this->baseURL() . '/company/' . $realm . '/' . strtolower($resource);
    $xml = $xml_or_query;
    $url .= "?minorversion=4"; // this is the only addition
}

答案 1 :(得分:0)

对于那些使用Intuit官方php sdk的人,在根文件夹中你会找到文件sdk.config。修改<minorVersion>3</minorVersion>

答案 2 :(得分:0)

如果你去官方的PHP SDK: https://github.com/intuit/QuickBooks-V3-PHP-SDK

你会看到你可以使用: $ dataService-&GT; setMinorVersion(&#34; 4&#34); 在进行HTTP调用之前设置要使用的次要版本。