2016-09-21 40 views
0

我使用PHP API在QB中創建發票。需要DetailType,因此我添加$Line->setDetailType('SalesItemLineDetail');,如https://github.com/consolibyte/quickbooks-php/blob/master/docs/partner_platform/example_app_ipp_v3/example_invoice_add.php#L21的示例中所示。QuickBooks API - 查詢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

我試過InvoiceServicePreferencesService,ItemService但我沒有得到任何結果。

請幫我找到一個Product/ServiceInvoice的名稱,並得到其參考。

在此先感謝

+0

任何幫助?任何建議?任何想法? – masterFly

回答

0

我明白了!

我們需要的是ItemService。這是我做到的。

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

from $response我得到ID。所以我不需要硬編碼任何ID。

希望這可以幫助任何人有這個問題。

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(); 

    } 
} 
+0

有沒有辦法創建一個發票行而不指定'$ Line-> setDetailType('SalesItemLineDetail');'?請幫忙! – masterFly

+0

您必須指定一個'DetailType'(儘管它不一定必須是'SalesItemLineDetail')。您是否閱讀過文檔? –