如何从系统注释中获取netsuite库存项目历史定价矩阵?

时间:2016-06-15 20:44:23

标签: netsuite suitescript

我正在尝试编写一个例程,该例程将查看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的实际值,但是价格表字段只返回View

点击“查看”时,如何获取项目系统备注的用户界面中显示的定价数据?

1 个答案:

答案 0 :(得分:0)

我不知道你的代码对我来说是正确的,它应该能够拉出多行(如果存在的话)。我只想给你两件事。

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]))
                    }