NetSuite: отмена заказа в SuiteScript

В NetSuite есть удобная кнопка для отмены salesorder. Мы пытаемся воспроизвести поведение этого щелчка в RESTlet. Мы пробовали следующее:

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

Но мы получили ошибку о том, что нам нужно ввести значение в поле Status. Мы также пробовали следующее:

nlapiVoidTransaction('salesorder', 802);

Но это дало нам ошибку недопустимого типа записи. Любые мысли или помощь будут оценены.


person 2ps    schedule 28.03.2016    source источник


Ответы (6)


У меня есть открытый запрос на улучшение этого (# 275848). Согласно поддержке NetSuite, нет возможности отменить заказ на продажу с помощью SuiteScript или Workflow.

person Mike Robbins    schedule 28.03.2016

Как насчет:

nlapiRequestURL('/app/accounting/transactions/salesordermanager.nl?type=cancel&id=' + nlapiGetRecordId());
person michoel    schedule 29.03.2016
comment
Хорошо, но небезопасно, если netsuite изменит URL отмены, скрипт не будет работать - person B. Assem; 12.10.2017

Вы должны использовать следующий код и код статуса заказа для установки через SuiteScript -

nlapiSubmitField('salesorder',soID,'orderstatus','C',false);
person NetSuite Expert    schedule 28.03.2016
comment
К вашему сведению, это не сработало. Это дало ту же ошибку: - person 2ps; 19.04.2016

Подумать только, вместо того, чтобы отменить заказ на продажу, не могли бы вы просто установить в поле closed значение «T».

person Steve Reeder    schedule 28.05.2016

Заказ на продажу можно закрыть, закрыв каждую строку позиции с помощью SuiteScript 2.0 следующим образом:

orderRecord.setCurrentSublistValue({
                            sublistId: 'item',
                            fieldId: 'isclosed',
                            value: true
                        });
person ukchaudhary    schedule 12.03.2019

Как сказал Netsuite Expert, вы можете отменить транзакцию заказа на продажу, закрыв каждую позицию в заказе на продажу.

for(var i = 1; i <= nlapiGetLineItemCount('item'); i++){
    nlapiSetLineItemValue('item', 'isclosed', i, 'T');
}

Это пример сценария пользовательского события.

person Rajive Gandhi    schedule 25.08.2017
comment
Он закроет ордер на продажу, а не отменит его - person B. Assem; 12.10.2017
comment
Отмененный заказ на продажу отличается от закрытого заказа на продажу - person eliseobeltran; 27.12.2017