如何加载项目与SuiteScript采购订单



朋友正在使用NetSuite和SuiteScript。我可以保存一个运行脚本的采购订单,也可以对创建的采购订单收费,但是当我将数据项值作为空值返回时,我需要获得项目的id。

结果给我NetSuite日志是:

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

这发生在所有的采购订单,如果你有一个附加的项目。

函数加载javascript使用采购订单如下:

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将事务记录(采购订单是一种事务类型)划分为Body和Line Item字段。当您执行包含mainline = 'T'的事务搜索时,您告诉NetSuite只检索Body字段数据。然而,item字段是一个Line Item字段,因此NetSuite不会为它返回任何数据。这就是为什么idItemnull

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

  • mainline = 'T'将只返回主体字段数据,因此它将返回每个事务恰好一个搜索结果
  • mainline = 'F'将只返回行项目数据,因此它将返回一个搜索结果,每个行项目匹配交易
  • 未指定的mainline将返回body字段和行数据,因此它将为每个事务本身返回一个结果,并为每个事务的每行返回一个结果。

这里有一个具体的例子。假设系统中只有一个Purchase Order与所有其他搜索过滤器(除了mainline)匹配,并且该Purchase Order上有三个项目。以下是基于mainline过滤器的搜索结果的变化方式:

  • 如果mainline = 'T',那么你将得到一个确切的采购订单结果,你只会得到数据的搜索列是主体字段。
  • 如果mainline = 'F',那么你将得到正好三个结果,每个行项一个,所有的搜索列将包含数据,无论它们是Body还是line字段
  • 如果没有指定mainline,那么你将得到恰好四个结果,其中一个将只包含Body字段的数据,而其他三个将包含Line和Body数据
我不知道你打算怎么处理这些搜索结果,所以很难告诉你应该如何改变搜索。

相关内容

  • 没有找到相关文章

最新更新