QuickBooks API - 查询SalesItemLineDetail

时间:2016-09-21 06:50:27

标签: php api quickbooks

我正在使用PHP API在QB中创建一个Invoice。 DetailType是必需的,因此我在https://github.com/consolibyte/quickbooks-php/blob/master/docs/partner_platform/example_app_ipp_v3/example_invoice_add.php#L21的示例中添加了$Line->setDetailType('SalesItemLineDetail');

然后设置

$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
$SalesItemLineDetail->setItemRef('8');
$SalesItemLineDetail->setUnitPrice(20 * 0.516129);
$SalesItemLineDetail->setQty(1.00000);

请注意,setItemRef已硬编码为8.

现在我想按名称搜索SalesItemLineDetail并获取参考号。

只是为了看看我是否可以完成所有尝试,

$pref->query($Context, $realm, "SELECT * FROM SalesItemLineDetail");

通常我们会使用服务query。在我的情况下是$pref

我试过,InvoiceServiceSalesOrderServicePreferencesServiceItemService,但我没有得到任何结果。

请帮助我在Product / Service名称中找到Invoice并获取其参考号。

提前致谢

2 个答案:

答案 0 :(得分:0)

您无法按SalesLineItemDetail进行搜索。 Intuit不支持它。

如果您要在现有发票中找到ItemRef,可以先查询发票:

$list = $InvoiceService->query($Context, $realm, "SELECT *, Line.* FROM Invoice WHERE Id = '5' ");

然后遍历订单项以获取数据:

for ($i = 0; $i < $num_lines; $i++)
{
    $Line = $Invoice->getLine($i);

    if ($Line->getDetailType() == 'SalesItemLineDetail')
    {
        $Detail = $Line->getSalesItemLineDetail();
        $item_id = $Detail->getItemRef();

    }
}

答案 1 :(得分:0)

我明白了!

我们需要的是ItemService。这就是我做到的。

$ItemService = new \QuickBooks_IPP_Service_Item();
$response = $ItemService->query($Context, $realm, "SELECT * FROM Item where Name = 'Services'");

来自$response我获得了ID。所以我不需要硬编码任何ID。

希望这可以帮助任何有这个问题的人。