永远循环转换项目收据

Transform item receipt looping forever

我不知道为什么,但是日志一直在循环,然后我收到执行时间错误

这是代码。


function checkForQuantity(irList, irRec, poId) {
    try {
        var sublistId = 'item'

        var count = irRec.getLineCount('item')

        log.debug('irList', irList);
        log.debug('count', count); Here count = 5

        for (var i = 0; i < count; i++) {

            log.debug('i', i) Here i get only logs of i = 1 and i = 2 

            var irData = irList[i]; 


            log.debug('checkForQuantity | irData ' + i, irData);

            irRec.setSublistValue(sublistId, 'quantity', i, '')


            var itemId = getItemId(irData.item)

            var quantity = irData.quantity


            for (var i = 0; i < count && quantity; i++) {
                var item = irRec.getSublistValue(sublistId, 'item', i)

                if (item == itemId) {

                    var qtyRem = irRec.getSublistValue(sublistId,
                        'quantityremaining', i)


                    var diff = qtyRem - quantity


                    if (diff >= 0) {
                        irRec.setSublistValue(sublistId, 'quantity', i, quantity)
                        break;

                    } else {
                        quantity -= qtyRem
                        irRec.setSublistValue(sublistId, 'quantity', i, qtyRem)
                    }
                }
            }
        }

    } catch (e) {
        log.error('checkForQuantity (for poId: ' + poId + ')', e)
    }

在 debug.log('i', i) 我只得到 i = 1, i = 2 count 是 5,但我仍然无法在 3 和 4 上循环。这是为什么?

在Brian所说的这个版本中,我们将第二个循环控制变量更改为j

function checkForQuantity(irList, irRec, poId) {
    try {
        var sublistId = 'item'

        var count = irRec.getLineCount('item')

        log.debug('irList', irList);
        log.debug('count', count); Here count = 5

        for (var i = 0; i < count; i++) {

            log.debug('i', i) Here i get only logs of i = 1 and i = 2 

            var irData = irList[i]; 


            log.debug('checkForQuantity | irData ' + i, irData);

            irRec.setSublistValue(sublistId, 'quantity', i, '')


            var itemId = getItemId(irData.item)

            var quantity = irData.quantity


            for (var j = 0; j < count && quantity; j++) {
                var item = irRec.getSublistValue(sublistId, 'item', j)

                if (item == itemId) {

                    var qtyRem = irRec.getSublistValue(sublistId,
                        'quantityremaining', j)


                    var diff = qtyRem - quantity


                    if (diff >= 0) {
                        irRec.setSublistValue(sublistId, 'quantity', j, quantity)
                        break;

                    } else {
                        quantity -= qtyRem
                        irRec.setSublistValue(sublistId, 'quantity', j, qtyRem)
                    }
                }
            }
        }

    } catch (e) {
        log.error('checkForQuantity (for poId: ' + poId + ')', e)
    }