Netsuite 获得;“记录已更改”;使用Suitescript将销售订单状态更改为待定履行时出错

Netsuite 获得;“记录已更改”;使用Suitescript将销售订单状态更改为待定履行时出错,netsuite,suitescript,Netsuite,Suitescript,我想通过添加新服务项目来编辑销售订单,添加后,我需要批准/更改销售订单的状态为“待定履行”。保存时,该项目将添加到销售订单中,但在状态更改行抛出错误“记录已更改”。该脚本是在Suitescript 1.0中开发的 步骤1:我加载销售订单并将服务项目添加到其中并保存记录 步骤2:再次加载销售订单,并将销售订单状态设置为“待定履行”,并保存记录。其未保存并以“记录已更改”错误结束 在步骤2中,我没有更改销售订单状态,而是尝试更改一些其他字段,这次保存了SO。因此,问题只在于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。

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

为什么在设置
orderstatus
之前必须保存它?为什么要保存记录两次?还有,这是什么脚本类型?什么入口点?这是一个restlet脚本。如果仅在设置“orderstatus”后保存,则SO的“状态”将更改为“待定履行”,但不会为新添加的行项目创建PO。您是否在没有DoSourceing和ignoreMandatoryFields默认为true的情况下尝试过此操作?是。。这也没有解决问题