NetSuite 开发日记 —— 库存详细信息记录更改数量问题

详细报错:

plaintext 复制代码
"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 方法。

解决方案

javascript 复制代码
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();

另外,根据实际测试,使用标准模式创建完工单也可以避免该报错。

javascript 复制代码
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();

其他参考答案:

相关推荐
橙色云-智橙协同研发6 天前
【PLM实施专家宝典】离散制造企业需求管理与全生命周期追溯体系构建方案:打造研发的“精准导航系统”
大数据·云原生·云计算·解决方案·数字化转型·plm·国产plm
HitpointNetSuite6 天前
生物医药企业ERP系统比较:为什么选择Oracle NetSuite?
数据库·oracle·netsuite·erp·hitpointcloud
赋能大师兄9 天前
5G业务解决方案与典型行业应用
5g·解决方案·行业应用
深圳安锐科技有限公司14 天前
大全!桥梁结构健康实时自动化监测预警——测量设备讲解+架构
解决方案·实时监测·自动化监测·桥梁监测
HitpointNetSuite16 天前
连锁餐饮行业ERP系统如何选择?
大数据·数据库·oracle·netsuite·erp
WPG大大通19 天前
ST新一代高精度BMS解决方案:L9965X系列
汽车·解决方案·芯片·bms·电池·研讨会
橙色云-智橙协同研发21 天前
【PLM实施专家宝典】离散制造企业MBD与无纸化制造实施方案:从“图纸驱动”到“数据驱动”的革命
云原生·解决方案·数字化转型·plm·国产plm·专家经验·无纸化
橙色云-智橙协同研发22 天前
【PLM实施专家宝典】离散制造企业ECO管理优化方案:构建自动化、零错误的变更引擎
大数据·云原生·解决方案·数字化转型·plm·eco·云plm
橙色云-智橙协同研发1 个月前
PLM实施专家宝典:离散制造企业跨域协同与数字化审核方案
云原生·解决方案·数字化转型·plm·国产plm·工程方案·专家总结
HitpointNetSuite1 个月前
科技行业ERP系统选择指南:Oracle NetSuite的全面解析
大数据·科技·netsuite·企业·erp