0

我想将销售订单中的同名商品分组,并将价格金额合并到报表中。

例如。销售订单

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

2 回答 2

0

您的 for 循环不正确。

for(i=1;i<k;i++){

你需要 for(i=1;i<=k;i++){

于 2012-11-29T22:51:05.027 回答
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;
}
于 2013-07-13T14:42:54.663 回答