首页 > 其他分享 >NetSuite 开发日记 —— 库存详细信息记录更改数量问题

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

时间:2023-12-26 12:57:25浏览次数:24  
标签:更改 sublistId subRec NetSuite detailData detailSublistId var rec 详细信息

详细报错:

"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();

其他参考答案:

标签:更改,sublistId,subRec,NetSuite,detailData,detailSublistId,var,rec,详细信息
From: https://www.cnblogs.com/zhangchenyi/p/_ns_inventory_detail_error.html

相关文章

  • 更改Docker的存储位置
    停止Docker服务systemctlstopdocker或者systemctlstopdocker.socket编辑Docker配置文件vi/etc/docker/daemon.json添加内容{"data-root":"/data/docker/data"}保存并关闭配置文件,并服务程序配置文件生效systemctlrestartdocker.socketsystemctlstopdocker.socket......
  • 在linux中使用chmod更改文件权限
    在linux中使用chmod更改文件权限的方法一、chmod基本用法chmod是修改文件权限的命令。可以更改文件或目录的读、写、执行权限。其基本语法如下:chmod[options]modefileoptions:是可选的,可以是一些额外的参数,用来指定修改权限的方式,例如-R表示递归地修改目录及其子目录中......
  • 更改Oracle字符集
    1、selectuserenv('language')fromdual; --查询字符集 2、shutdownimmediate; 关闭数据库实例 3、STARTUPMOUNT; --挂载  4、(依次执行以下命令)ALTER SESSION SETsql_TRACE=TRUE;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE......
  • c# 更改快捷方式文件图标
    c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标c#更改快捷方式文件图标///<summary>///更改快捷方式文件图标///</summa......
  • NetSuite 开发日记:如何管理多环境自定义列表值
    在NetSuite中可以创建自定义列表,列表可用于为其他(自定义)记录上的下拉选项列表值。varrec=record.create({type:'customrecord_xx'});rec.setValue({fieldId:'custrecord_xx_fld',value:'1'});rec.save();我们设置自定义列表值,需要使用该值的内......
  • 九、@Watch装饰器:状态变量更改通知
    @Watch应用对状态变量的监听。如果开发者需要关注某个状态变量的值是否改变,可以使用@Watch为状态变量这种回调函数。@Watch用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。@Watch在ArkUI框架内部判断数值有无更新使用的是严格相等(===),遵循严格相等规范。当在严......
  • 购物车页面,根据选中的商品来动态更改总价格
    一、前端代码首先引入:import{ref,computed}from'vue'将checked数组更新为响应式引用,使用ref()函数:constchecked=ref([])使用v-model将checked数组绑定到van-checkbox组件上:<van-checkbox:name="item.cartID"checked-color="#ff5d4e"v-mod......
  • Linux history记录数更改
    如果为了安全我们只需要保留200条,怎么办呢?我们可以临时修改最大保留条数:HISTSIZE=200 这样就修改成了200条啦,但是重启服务器后,又还原了。如果想一直保留200条,我们需要在/etc/profile修改他的环境变量;可以使用vim编辑(推荐使用vim编辑),也可以使用sed直接修改。命令如下:[root@5201......
  • 磁盘占用率100%做过的更改
    https://zhuanlan.zhihu.com/p/353963603https://zhuanlan.zhihu.com/p/258751945https://zhuanlan.zhihu.com/p/417616802https://blog.csdn.net/qq_44720952/article/details/125039718https://zhuanlan.zhihu.com/p/107449941www.3gbizhi.comhttps://www.zhihu.com/q......
  • 【Docker】更改docker镜像的存储路径
    1.查看Docker存储路径dockerinfo|grep"DockerRootDir"2.关闭所有运行的容器···dockerps|awk'{print$1}'|xargsdockerstop···3.停止docker服务systemctlstopdocker4.新增的磁盘挂载点上新建目录,并将原有的docker容器和镜像全部拷贝过来,比如这里新增......