我想在销售订单中对相同名称的商品进行分组,并在报表中合并价格金额。
例如。 销售订单
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]);
}
答案 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;
}