NetSuite:取消SuiteScript中的订单

NetSuite:取消SuiteScript中的订单,netsuite,suitescript,Netsuite,Suitescript,在NetSuite中,有一个方便的按钮可以取消销售订单。我们正试图在RESTlet中复制单击的行为。我们尝试了以下方法: var order = nlapiLoadRecord('salesorder', 802); order.setFieldText('orderstatus', 'Cancelled'); nlapiSubmitRecord(order); nlapiVoidTransaction('salesorder', 802); 但是我们得到一个错误,说我们需要为字段Statu

在NetSuite中,有一个方便的按钮可以取消
销售订单
。我们正试图在RESTlet中复制单击的行为。我们尝试了以下方法:

var order = nlapiLoadRecord('salesorder', 802);
order.setFieldText('orderstatus', 'Cancelled');
nlapiSubmitRecord(order);
nlapiVoidTransaction('salesorder', 802);
但是我们得到一个错误,说我们需要为字段
Status
输入一个值。我们还尝试了以下方法:

var order = nlapiLoadRecord('salesorder', 802);
order.setFieldText('orderstatus', 'Cancelled');
nlapiSubmitRecord(order);
nlapiVoidTransaction('salesorder', 802);

但这给了我们一个无效的记录类型错误。如有任何想法或帮助,我们将不胜感激。

您应使用以下代码和订单状态代码通过SuiteScript进行设置-

nlapiSubmitField('salesorder',soID,'orderstatus','C',false);

我对此有一个公开的增强请求(#275848)。根据NetSuite支持,无法通过SuiteScript或工作流取消销售订单。

如何:

nlapiRequestURL('/app/accounting/transactions/salesordermanager.nl?type=cancel&id=' + nlapiGetRecordId());

只是想一想,您是否可以不取消销售订单,而直接将
closed
字段设置为“T”。

正如Netsuite专家所说,您可以通过 关闭销售订单中的每一行项目

for(var i = 1; i <= nlapiGetLineItemCount('item'); i++){
    nlapiSetLineItemValue('item', 'isclosed', i, 'T');
}
for(var i=1;i)可以通过使用SuiteScript 2.0关闭每一行项目来关闭销售订单,如下所示:

仅供参考,这不起作用。它给出了相同的错误:良好但不安全,如果netsuite更改取消URL,脚本将不起作用。它将关闭销售订单,而不是取消。取消的销售订单与关闭的销售订单不同