我如何从SystemNotes获得NetSuite库存项目历史定价矩阵



我正在尝试编写一个例程,该例程将通过NetSuite定价更改,寻找由于错误代码而丢失的数据。

我当前的套样代码

// Define filters
            var filters = [];
            filters.push(new nlobjSearchFilter( 'internalid', null, 'is', id));
            // Define search columns
            var columns = [
                new nlobjSearchColumn( 'itemid' ),
                new nlobjSearchColumn( 'class' ),
                new nlobjSearchColumn( 'name' ),
                new nlobjSearchColumn( 'displayname' ),
                new nlobjSearchColumn('date', 'systemNotes'),
                new nlobjSearchColumn('name', 'systemNotes'),
                new nlobjSearchColumn('type', 'systemNotes'),
                new nlobjSearchColumn('field', 'systemNotes'),
                new nlobjSearchColumn('context', 'systemNotes'),
                new nlobjSearchColumn('newvalue', 'systemNotes'),
                new nlobjSearchColumn('oldvalue', 'systemNotes')
            ];
            var searchResults = nlapiSearchRecord( 'inventoryitem', null, filters, columns );
            var searchResultJson = [];
            _.each(searchResults, function (searchResult){
                if(searchResult.getValue(columns[7]) === "pricelist")
                    searchResultJson.push({
                        itemid:  searchResult.getValue(columns[0]),
                        class: searchResult.getValue(columns[1]),
                        name: searchResult.getValue(columns[2]),
                        displayname: searchResult.getValue(columns[3]),
                        date: searchResult.getValue(columns[4]),
                        username: searchResult.getValue(columns[5]),
                        type: searchResult.getValue(columns[6]),
                        field: searchResult.getValue(columns[7]),
                        context: searchResult.getValue(columns[8]),
                        newvalue: searchResult.getValue(columns[9]),
                        oldvalue: searchResult.getValue(columns[10])
                    });
            });
            return searchResultJson;

这给了我一个JavaScript对象,例如

class:"136"
context:"UI"
date:"4/29/2016 2:51 am"
displayname:"<item name>"
field:"pricelist"
itemid:"<item id>"
name:"<item id>"
newvalue:"View"
oldvalue:"View"
type:"Change"
username:"<user id>"

我想获得旧值和新值的完整定价矩阵,但是我回来的只是字符串View。更改单个字段的确会返回NewValue和OldValue的实际值,但是Pricelist字段只是返回View

单击"视图"时,如何获取项目系统注释中显示的定价数据?

我不知道您的代码看起来对我来说正确,如果存在,它应该可以拉多行。我只会给你两件事。

1)使用UI在NetSuite中进行搜索,并确切确保您获得具有相同标准的多行。在您的代码中投入nlapiLogExecution,以获取filter值,然后获得searchResults的长度。

2)下面的语法是一个搜索,如果存在比您的代码更详细,则肯定会拉多行。

                    var searchResultSalesInfo = new Array();
                    var filterSalesInfo = new Array();
                    var columnSalesInfo = new Array();
                    filterSalesInfo [0] = new nlobjSearchFilter('entity', null , 'is', entityInternalId);
                    columnSalesInfo [0] = new nlobjSearchColumn('total');
                    columnSalesInfo [1] = new nlobjSearchColumn('custbody_bcg_contract_book');
                    columnSalesInfo [2] = new nlobjSearchColumn('trandate');
                    columnSalesInfo [3] = new nlobjSearchColumn('item');
                    columnSalesInfo [4] = new nlobjSearchColumn('displayname', 'item');
                    columnSalesInfo [5] = new nlobjSearchColumn('rate');
                    columnSalesInfo [6] = new nlobjSearchColumn('quantity');

                    var searchResultSalesInfo = nlapiSearchRecord('salesorder', null, filterSalesInfo, columnSalesInfo);
                    var amount = [];
                    var bookCode = [];
                    var tranDate = [];
                    var items = [];
                    var itemName =[];
                    var rate = [];
                    var quantity = [];

                   // push all info to arrays      
                    for (var x = 0; x < searchResultSalesInfo.length; x++){
                          var pattern2015 = new RegExp("2015");
                          if (pattern2015.test(searchResultSalesInfo[x].getText(columnSalesInfo[1])) == true){  
                                amount.push(searchResultSalesInfo[x].getValue(columnSalesInfo[0]));
                                bookCode.push(searchResultSalesInfo[x].getText(columnSalesInfo[1]));
                                tranDate.push(searchResultSalesInfo[x].getValue(columnSalesInfo[2]));
                                items.push(searchResultSalesInfo[x].getText(columnSalesInfo[3]));
                                itemName.push(searchResultSalesInfo[x].getValue(columnSalesInfo[4]));
                                rate.push(searchResultSalesInfo[x].getValue(columnSalesInfo[5]));
                                quantity.push(searchResultSalesInfo[x].getValue(columnSalesInfo[6]));
                          }
                          else
                          nlapiLogExecution('DEBUG','Pattern Not Matching', pattern2015.test(searchResultSalesInfo[x].getText(columnSalesInfo[1]))+ ' ' +searchResultSalesInfo[x].getText(columnSalesInfo[1]))
                    }

最新更新