永远循环转换项目收据
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)
}
我不知道为什么,但是日志一直在循环,然后我收到执行时间错误
这是代码。
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)
}