用javascript(netsuite)分组项目

时间:2012-11-01 02:23:58

标签: javascript arrays grouping netsuite

我想在销售订单中对相同名称的商品进行分组,并在报表中合并价格金额。

例如。 销售订单

Item A 100usd 
Item A 100usd 
Item A 100usd 
Item A 100usd

在报告中,我想总结所有项目的总价格,并将项目A显示为一行: 项目A 400usd

我知道我应该使用for循环和数组来执行此操作,但它似乎无法正常工作。

//scan through all lines
for(i=1;...){
item[i]=getitemforline(i);

itemprice[i]=getitempriceforline(i);

}
//check current line one by one for any duplicates, and sum up itemprice if there is
for(k=1;...){
      for(i=1;i<k;i++){ 
      currentitem[k] = getitemforcurrentline(k);
      currentitemprice[k] = getitempriceforcurrentline(k);
       if(currentitem[k] == item[i]){
       itemprice[i] = itemprice[i] + currentitemprice[k];
       }
      }
 print(itemw[i]+itemprice[i]);
}

2 个答案:

答案 0 :(得分:0)

您的for循环不正确。

  

for(i = 1; i&lt; k; i ++){

你需要(i = 1; i&lt; = k; i ++){

答案 1 :(得分:0)

Use below method for above use case:

var getLineItemAggregateResult = function(salesOrderId) {
    if(!salesOrderId) {
        return;
    }

    var salesOrder = nlapiLoadRecord('salesorder', salesOrderId); 
    var lineItemCount = salesOrder.getLineItemCount('item');

    /*-----------------------------------------------------------------------------------------------------------------------
    "lineItem_TotalValue" this is an object, it will contain lineitem as a key and total amount as a value
    e.g.: {item1 : 400,
          item2 : 500}
          As this will a JSON object so you can use this to display your final result.
    -------------------------------------------------------------------------------------------------------------------------*/
    var lineItem_TotalValue = {};
    for(var i = 1; i <= lineItemCount; i++) {
        if (!lineItem_TotalValue[salesOrder.getLineItemValue('item', 'item', i)]) {
            lineItem_TotalValue[salesOrder.getLineItemValue('item', 'item', i)] = parseInt(salesOrder.getLineItemValue('item', 'amount', i), 10);
        }
        else {
            lineItem_TotalValue[salesOrder.getLineItemValue('item', 'item', i)] += parseInt(salesOrder.getLineItemValue('item', 'amount', i), 10);
        }
    }

    return lineItem_TotalValue;
}