【发布时间】: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