gpt4 book ai didi

netsuite - 如何使用 SuiteScript 采购订单加载项目?

转载 作者:行者123 更新时间:2023-12-01 12:48:25 28 4
gpt4 key购买 nike

friend 们正在使用 NetSuite 和 SuiteScript。我可以保存运行脚本的采购订单,还可以对创建的采购订单收费,但是当我将返回数据项值作为空值时,我需要获取该项目的 ID。

结果给我 NetSuite 的日志是:

采购订单 ID:3706 供应商 ID:144 商品 ID:null 交易日期:06/08/2015 表格:标准采购订单货币:比索 CL

这会发生在所有采购订单上,如果您有附加的元素,显然会发生这种情况。

加载javascript以使用Purchase Order的函数如下:

function loadPurchaseOrder(){

nlapiLogExecution('DEBUG','loadPurchaseOrder', 'Entra a funcion loadPurchaseOrder');

//se aplican filtros para la busqueda del objeto
var filters= new Array();
filters[0] = new nlobjSearchFilter('purchaseorder',null,'isnotempty');
filters[1] = new nlobjSearchFilter('mainline', null, 'is', 'T');

//seleccion de los campos que se quieren extraer
var columns = new Array();
columns[0] = new nlobjSearchColumn('item');
columns[1] = new nlobjSearchColumn('entity');
columns[2] = new nlobjSearchColumn('trandate');
columns[3] = new nlobjSearchColumn('customform');
columns[4] = new nlobjSearchColumn('currency');
columns[5] = new nlobjSearchColumn('internalid');

var results = nlapiSearchRecord('purchaseorder',null,filters,columns);

var out = "";
if(results != null ){

for(var i=0; i< results.length; i++){

var purchaseOrder = results[i];
var idItem = purchaseOrder.getValue('item');
var idVendor = purchaseOrder.getValue('entity');
var trandate = purchaseOrder.getValue('trandate');
var form = purchaseOrder.getText('customform');
var currency = purchaseOrder.getText('currency');
var idPurchaseOrder = purchaseOrder.getText('internalid');

out = " ID Purchase Order: " + idPurchaseOrder + " ID Vendor: " + idVendor + " ID Item: " + idItem
+ " Trandate: " + trandate + " Form: " + form + " Currency: " + currency;

nlapiLogExecution('DEBUG','purchaseOrderCargada', out);

}
}

return out;

如果有人可以帮助我。问候!

PD:

我也试过:

var idItem = nlapiGetLineItemField ('item', 'item');

它不起作用 =/

最佳答案

答案可能比您预期的要长,但我们开始吧。

NetSuite 将交易记录(Purchase Order 是一种交易)分为 Body 和 Line Item 字段。当您执行包含 mainline = 'T' 的事务搜索时,您是在告诉 NetSuite 仅检索 Body 字段数据。但是,item 字段是一个 Line Item 字段,因此 NetSuite 不会为其返回任何数据。这就是 idItemnull 的原因。

了解 mainline 过滤器的行为对于事务搜索至关重要。基本上,它是这样的:

  • mainline = 'T' 只会返回正文字段数据,因此每次交易只会返回一个搜索结果
  • mainline = 'F' 将只返回订单项数据,因此它将为匹配交易的每个订单项返回一个搜索结果
  • mainline 未指定将返回正文字段和行数据,因此它将为每个交易本身返回一个结果,并为每个交易的每一行返回一个结果。

这是一个具体的例子。假设系统中只有一个采购订单匹配所有其他搜索过滤器(mainline 除外),并且该采购订单包含三个项目。这是搜索结果将如何根据 mainline 过滤器更改:

  • 如果mainline = 'T',那么您将只获得采购订单的一个结果,并且您只会获得作为正文字段的搜索列的数据。
  • 如果 mainline = 'F' 那么您将得到 三个 结果,每个行项目一个,并且您的所有搜索列都将包含数据,无论它们是正文或行字段
  • 如果未指定 mainline,那么您将得到 四个 个结果,其中一个将仅包含 Body 字段的数据,其他三个将同时包含 Line 和 body 数据

很难准确地建议您应该如何更改搜索,因为我不知道您打算如何处理这些搜索结果。

关于netsuite - 如何使用 SuiteScript 采购订单加载项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929239/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com