NetSuite 开发日记 —— 库存详细信息记录更改数量问题
生活随笔
收集整理的這篇文章主要介紹了
NetSuite 开发日记 —— 库存详细信息记录更改数量问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
詳細報錯:
"type":"error.SuiteScriptError","name":"USER_ERROR","message":"在更改數量之后,您仍需要重新配置庫存詳細信息記錄。"
"type":"error.SuiteScriptError","name":"USER_ERROR","message":"You still need to reconfigure the inventory detail record after changing the quantity."
原因:
SuiteAnswers ID 81448 的解答:
當系統啟用了庫存狀態功能,訪問子記錄時會發生已添加行的行為,對新創建的庫存詳細信息子記錄的子列表使用 selectNewLine 方法會返回錯誤“在更改數量之后,您仍需要重新配置庫存詳細信息記錄” 。如果遇到此問題,建議使用 selectline 方法。
解決方案
var rec = record.transform({
fromType: 'workorder',
fromId: wordOrderId,
toType: 'workordercompletion',
isDynamic: true,
defaultValues: {
isbackflush: 'T'
}
});
// 正文字段賦值
rec.setValue('trandate', new Date());
/** 其他正文字段賦值 **/
// 行字段賦值
var sublistId = 'component';
var lineCounts = rec.getLineCount(sublistId);
for (var i = 0; i < lineCounts; i++) {
rec.selectLine({
sublistId: sublistId,
line: i
});
rec.setCurrentSublistValue({
sublistId: sublistId,
fieldId: 'quantity',
value: lineData[i].qty,
});
var subRec = rec.getCurrentSublistSubrecord({
sublistId: sublistId,
fieldId: 'componentinventorydetail',
});
var detailData = lineData[i].details;
var detailSublistId = 'inventoryassignment';
for (var j = 0; j < detailData.length; j++) {
// 根據SuiteAnswers的解答,因為啟用了庫存狀態功能,此處需要使用selectLine方法,并非selectNewLine方法
// subRec.selectNewLine({sublistId: detailSublistId});
subRec.selectLine({sublistId: detailSublistId,line:j});
subRec.setCurrentSublistText({
sublistId: detailSublistId,
fieldId: 'issueinventorynumber',
text: detailData[j].invNum,
});
subRec.setCurrentSublistValue({
sublistId: detailSublistId,
fieldId: 'binnumber',
value: detailData[j].binNum,
});
subRec.setCurrentSublistValue({
sublistId: detailSublistId,
fieldId: 'inventorystatus',
value: detailData[j].status,
});
subRec.setCurrentSublistValue({
sublistId: detailSublistId,
fieldId: 'quantity',
value: detailData[j].quantity,
});
subRec.commitLine({
sublistId: detailSublistId
});
}
rec.commitLine({
sublistId: sublistId
});
}
rec.save();
另外,根據實際測試,使用標準模式創建完工單也可以避免該報錯。
var rec = record.transform({
fromType: 'workorder',
fromId: wordOrderId,
toType: 'workordercompletion',
isDynamic: false,
defaultValues: {
isbackflush: 'T'
}
});
// 正文字段賦值
rec.setValue('trandate', new Date());
/** 其他正文字段賦值 **/
// 行字段賦值
var sublistId = 'component';
var lineCounts = rec.getLineCount(sublistId);
for (var i = 0; i < lineCounts; i++) {
rec.setSublistValue({
sublistId: sublistId,
fieldId: 'quantity',
value: lineData[i].qty,
line: i
});
var subRec = rec.getSublistSubrecord({
sublistId: sublistId,
fieldId: 'componentinventorydetail',
line: i
});
var detailData = lineData[i].details;
var detailSublistId = 'inventoryassignment';
for (var j = 0; j < detailData.length; j++) {
// 標準模式下,給issueinventorynumber賦值時,建議使用setSublistValue方法,而非setSublistText方法
// 原因:當系統中存在不同物料但庫存編碼相同時,此處可能發生USER_ERROR的錯誤,此類錯誤較難排查
subRec.setSublistValue({
sublistId: detailSublistId,
fieldId: 'issueinventorynumber',
value: detailData[j].invNumId,
line: j
});
subRec.setSublistValue({
sublistId: detailSublistId,
fieldId: 'binnumber',
value: detailData[j].binNum,
line: j
});
subRec.setSublistValue({
sublistId: detailSublistId,
fieldId: 'inventorystatus',
value: detailData[j].status,
line: j
});
subRec.setSublistValue({
sublistId: detailSublistId,
fieldId: 'quantity',
value: detailData[j].quantity,
line: j
});
}
}
rec.save();
其他參考答案:
- Resolve Error: "You still need to reconfigure the inventory detail record after changing the quantity."
- Unable to set Inventory Detail on Item Fulfillment Record - Suitescript 2
- Netsuite reconfigure inventory detail error
總結
以上是生活随笔為你收集整理的NetSuite 开发日记 —— 库存详细信息记录更改数量问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAD怎么更改标注比例?CAD更改标注比
- 下一篇: 各种二端口滤波器网络仿真遇到的问题