0
我有一個子列表的記錄,並且該子列表的每個項目都是具有另一個子列表的記錄。我想要的是,每個itemA獲得每個itemA子列表的所有子列表。像這樣優化netsuite腳本
Bill of lading1
->FulfillmentA
->Item123
->Item124
->Item125
->FulfillmentB
->Item224
->Item226
->Item227
我希望能夠創造這樣的表爲具有2個應驗提單1提單
Fulfillment | Item | Description | Qty
例如每比爾而且每個應驗的有3個項目
BILL OF LADING #4
Fulfillment | Item | Description | Qty
-------------------------------------------
A | 123 | xxxx | 2
| 124 | xxxx | 1
| 125 | xxxx | 7
--------------------------------------------
B | 224 | xxxx | 1
| 226 | xxxx | 1
| 227 | xxxx | 1
我能做到這一點,問題是當一些fullfilment有一個像60-70應驗,然後我得到一個腳本執行使用限制超出錯誤。
我的代碼的基本想法是創建這樣一個對象:
* {
* 70: {
* itemNumber : {
* description: xxxx,
* quantity: XX
* },
* itemNumber2 : {
* description: xxxx,
* quantity: XX
* },
* 71: { ...},
* ....
* }
然後用循環創建表。
我認爲這個問題是這一行:
fulfillmentArray.push(nlapiLoadRecord('itemFulfillment', fullfillmentInternalIDArray[z]));
因爲當我刪除它在具有100個fullfilments它的工作原理
這裏,BOL是我的代碼:
var lines = record.getLineItemCount('recmachcustrecord_id_billoflading');
//Grab the fulfillment internal id
for(var i = 1; i <= lines; i++){
fullfillmentInternalIDArray.push(record.getLineItemValue('recmachcustrecord_id_billoflading', 'custrecord_fulfillment', i));
}
//Get the fulfillment number
for(var x = 1; x <= lines; x++){
fulfillmentNumberArray.push(record.getLineItemText('recmachcustrecord_id_billoflading', 'custrecord_fulfillment', x).replace(/Fulfillment|#|Item/g,""));
}
//Get the fulfillments and push them into an array
//And create an empty object with the fulfillment number
for(var z = 0; z < fullfillmentInternalIDArray.length; z++){
fulfillmentArray.push(nlapiLoadRecord('itemFulfillment', fullfillmentInternalIDArray[z]));
billOfLadingFulfillmentsObject[ fulfillmentNumberArray[z] ] = {};
}
然後創建對象的其餘部分:
for(var j = 0; j < fulfillmentArray.length; j++){
itemCount = fulfillmentArray[j].getLineItemCount('item');
for(var y = 1; y <= itemCount; y++){
billOfLadingFulfillmentsObject[ fulfillmentNumberArray[j] ][ fulfillmentArray[j].getLineItemValue('item', 'itemname', y) ] = {};
}
for(var item in billOfLadingFulfillmentsObject){
for(var item2 in billOfLadingFulfillmentsObject[item]){
for(var y = 1; y <= itemCount; y++){
if(item2 === fulfillmentArray[j].getLineItemValue('item', 'itemname', y)){
billOfLadingFulfillmentsObject[ fulfillmentNumberArray[j] ][item2]['description'] = fulfillmentArray[j].getLineItemValue('item', 'itemdescription', y);
billOfLadingFulfillmentsObject[ fulfillmentNumberArray[j] ][item2]['quantity'] = fulfillmentArray[j].getLineItemValue('item', 'quantity', y);
}
}
}
}
}
我不知道如何進行優化,因此當有很多實現時,它不會引發腳本執行使用限制超出錯誤。