Netsuite webservices获取订单/发票请求,项目类型为空

时间:2016-05-19 06:38:33

标签: web-services netsuite

有没有人知道如何通过getRequest获取订单或发票上的商品类型?

当我通过订单或发票中的getRequest(webservices)获取商品列表时,商品中的类型字段为空。

所以我不能再使用新的getRequest来获取该项目,因为我不知道项目类型。 这会产生许多请求,因为我需要首先搜索项目ID以找到项目类型以获得实际项目。

EDITED

这是我的getRequest:

$service = new APDIBLE\NetSuite\NetSuiteService($netsuite_config);
$request = new APDIBLE\NetSuite\Classes\GetRequest();
$request->baseRef = new APDIBLE\NetSuite\Classes\RecordRef();
$request->baseRef->internalId = $internalid;
$request->baseRef->type = 'salesOrder';
$getResponse = $service->get($request);

这很好,我得到salesOrder没有错误。只有所有RecordRef字段(包括itemlist中的项目)都有一个空类型字段。我注意到这是我为任何事做的每一个getRequest,它们的字段总是空的。

如果有帮助,这是我的XML请求:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:core_2015_1.platform.webservices.netsuite.com" xmlns:ns2="urn:messages_2015_1.platform.webservices.netsuite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="ns">
<SOAP-ENV:Header>
    <ns3:applicationInfo xsi:type="ns2:ApplicationInfo">
        <ns2:applicationId>************************************</ns2:applicationId>
    </ns3:applicationInfo>
    <ns3:passport xsi:type="ns1:Passport">
        <ns1:email>**********</ns1:email>
        <ns1:password>***********</ns1:password>
        <ns1:account>***********</ns1:account>
        <ns1:role internalId="**********"/>
    </ns3:passport>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
    <ns2:get>
        <ns2:baseRef xsi:type="ns1:RecordRef" type="salesOrder" internalId="4153"/>
    </ns2:get>
</SOAP-ENV:Body>

,这是其中一个列表项的返回项值:

 <tranSales:item internalId="2451" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com">
                            <platformCore:name>test non-inventory item</platformCore:name>
                        </tranSales:item>

您可以看到项目ID和名称,但不返回任何类型。对于所有RecordRef字段都是一样的。

1 个答案:

答案 0 :(得分:0)

这是标准的NetSuite行为。

在几乎所有引用项目的情况下,都不会在记录引用旁边定义类型。无法在API中更改此行为。搜索项目类型是拉出类型的一种方法,因此您可以从NetSuite API中get进行项目。

您也可以尝试将get与最受欢迎的物品类型一起列出。这通常更快,因为对无效记录引用的NetSuite get调用执行起来非常快,通常比搜索快几个数量级。

这是一个示例实现:

https://github.com/NetSweet/netsuite/blob/659d4634e8ab2ae26d8a860ecb5fc47a803da7c7/lib/netsuite/utilities.rb#L164