그리드 옵션은 sortable="false" 하여 정렬순서가 변경되지 않도록한다.
var _i = _filterIndexes.indexOf(item.rowIndex);
var _indexes1 = _filterIndexes.slice(i); // 차감시작 ~ 끝까지 index
var _indexes2 = _filterIndexes.slice(0, i); // 시작 ~ 차감시작전까지 index
var _indexes = _indexes1.concat(_indexes2);
// 현재수정 Item외 나머지 Item's Qty에 차감할 남은 수량
var _gapQty = _itemQtyNew.minus(_itemQtyOld);
provider.setItemAtBatch(_indexes, function(index, data)
{
var _item_gty = new BigNumber(CCPrecManager.format("qty", data.item_qty, data.unit_cd));
var _item_price = new BigNumber(0);
var _item_amt = new BigNumber(0);
var _price_unit = new BigNumber(String(data.price_unit));
// 현재수정 Item이라면
if (index == item.rowIndex)
{
_item_qty = _itemQtyNew;
}
// 현재수정 Item의 이원화 Item이라면
else
{
// 나머지 품목의 발주수량 차감 처리
if (!_item_qty.eq(0))
{
// 차감할 수량이 발주수량보다 크다면
if (_gapQty.gt(_item_qty))
{
_gapQty = _gapQty.minus(_item_qty);
_item_qty = new BigNumber(0);
}
else
{
_item_qty = _item_qty.minus(_gapQty);
_gapQty = new BigNumber(0);
}
}
}
_item_price = new BigNumber(CCPrecManager.format("amt", data.item_price, data.cur));
_item_amt = CCPrecManager.format("amt", _item_qty.mul(_item_price).div(_price_unit).toFixed(), data.cur);
return {item_qty:_item_qty, item_amt:_item_amt};
});
쿼리로 처리하는 방법 : [Oracle] 제시된 금액을 첫번째 레코드부터 순차적으로 차감하기 (daonelab.com)