我正在使用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
。
我试过,InvoiceService
,SalesOrderService
,PreferencesService
,ItemService
,但我没有得到任何结果。
请帮助我在Product / Service
名称中找到Invoice
并获取其参考号。
提前致谢
答案 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。
希望这可以帮助任何有这个问题的人。