【问题标题】:Getting "Record has been changed" error when changing a Sales Orders status to Pending Fulfilment using Suitescript使用 Suitescript 将销售订单状态更改为待履行时出现“记录已更改”错误
【发布时间】:2019-10-18 07:37:48
【问题描述】:

我想通过添加新的服务项目来编辑销售订单,添加后我需要批准/将 SO 的状态更改为“待履行”。保存时,该项目被添加到销售订单中,但在状态更改行抛出错误为“记录已更改”。该脚本是在 Suitescript 1.0 中开发的

第 1 步:我加载销售订单并将服务项目添加到其中并保存记录。

第 2 步:再次加载销售订单并将销售订单状态设置为“待履行”并保存记录。它未保存并以“记录已更改”错误结束。

在第 2 步中,我没有更改销售订单状态,而是尝试更改其他一些字段,这次 SO 被保存。所以问题只在于 SO 的状态变化。

我尝试了“nlapiSubmitField”api,但也没有解决我的问题。

var soRec = nlapiLoadRecord('salesorder', SOId);
....
soRec.selectNewLineItem("item");
soRec.setCurrentLineItemValue("item","item",1093360);
soRec.setCurrentLineItemValue("item","custcol5",ringDesc);
soRec.setCurrentLineItemValue("item","povendor",46063);
soRec.commitLineItem("item");
var order_id = nlapiSubmitRecord(soRec, true, true);

var soObj = nlapiLoadRecord("salesorder", order_id);
soObj.setFieldValue("orderstatus", "B"); // B : Pending Fulfilment
var order_id = nlapiSubmitRecord(soObj, true, true);

SO 包含 dropship 项目,因此在保存 SO 时,应保存 SO 并创建相应的 PO。

【问题讨论】:

  • 为什么在设置orderstatus之前一定要保存?为什么要保存两次记录?另外,这是什么脚本类型?什么入口点?
  • 这是一个restlet脚本。如果我设置了“orderstatus”后才保存,那么SO的“Status”会变成“Pending Fulfilment”,但是不会为新添加的line item创建PO。
  • 你试过没有doSourcing和ignoreMandatoryFields默认为true吗?
  • 是的..这也没有解决问题

标签: netsuite suitescript


【解决方案1】:

实际上问题是,SO 需要太多时间来保存记录(在步骤 1 中)。在保存操作完成之前,记录会再次从下一步加载并再次尝试保存。所以我设置了一些 setTimeout 脚本来暂停该过程一段时间,并在第 2 步继续加载销售订单。

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多