Как получить доступ к полям вложенного списка расположений предметов инвентаря в Suitescript

У меня включена функция нескольких местоположений и инвентарь с несколькими местоположениями. Мне нужен способ установить или получить значения, зависящие от местоположения, такие как «Местоположение в наличии», «Дата следующего отсчета местоположения», «Дата последнего подсчета местоположения», «Интервал подсчета инвентаризации местоположения».

Эти поля доступны через интерфейс сохраненного поиска, но на SuiteAnswers нет документации о том, как получить к ним доступ через API SuiteScript. В браузере SuiteScript Records нет записей для доступа к этому подсписку. Как я могу установить или получить значения с помощью API SuiteScript без использования поиска?

В частности, я хочу иметь возможность загрузить запись, установить дату следующего подсчета инвентаризации для определенного места, а затем отправить и закрыть и фактически увидеть изменения в Netsuite. В настоящее время единственный обходной путь, который я нашел, - это неудобное создание CSV-файла в suitescript и отправка его с помощью диспетчера заданий, но у этого есть свои ограничения.


person Eidolon108    schedule 21.01.2016    source источник


Ответы (2)


Имя подсписка недокументировано и официально не поддерживается, но вы все равно можете получить к нему доступ с идентификатором подсписка "location", IE

//load arbitrary item record
var itemRec = nlapiLoadRecord('inventoryitem', 655009)

//find the line with location internal ID 1
var line = itemRec.findLineItemValue('locations','location',1);
//get that line's location count interval
var countinterval = itemRec.getLineItemValue('locations', 'invtcountinterval', line);

//calculate the next count date as today + interval, set up the
//last count date as a string
var lastCountDate = nlapiDateToString(new Date());
var nextCountDate = new Date() + countInterval*MILLISECONDS_IN_DAY;
nextCountDate = nlapiDateToString(nextCountDate);

//set the values on the item
itemRec.setLineItemValue('locations','lastinvtcountdate', line, lastCountDate);
itemRec.setLineItemvalue('locations','nextinvtcountdate', line, nextCountDate);

nlapiSubmitRecord(itemRec);

Вы можете узнать имена полей для подсписка, используя что-то вроде «Проверить элемент» в хроме в интерфейсе подсписка. Например, щелкните правой кнопкой мыши заголовок «Дата следующего инвентаризационного подсчета» в подсписке местоположений любого элемента и выберите «Проверить элемент». Посмотрев на появившийся div.listheader, прямо над ним вы увидите что-то вроде

.elements ['locationssortfld']. value = 'nextinvtcountdate'

«Nextinvtcountdate» - это идентификатор поля, который вы подключаете к аргументу поля nlapiSetLineItemValue.

Надеюсь, это кому-то поможет. У меня было чертовски много времени, чтобы самому понять это в первый раз, хотя сейчас это кажется более очевидным.

person Eidolon108    schedule 21.01.2016
comment
Очень круто. Обычно я начинаю с параметра & xml = T, но местоположения для этого не отображаются. - person bknights; 22.01.2016

Вы также можете получить доступ к нужным полям из поиска, используя эти идентификаторы полей.

new nlobjSearchColumn("locationquantityavailable",null,null) 
new nlobjSearchColumn("locationquantityonhand",null,null) 
new nlobjSearchColumn("locationlastinvtcountdate",null,null, 
new nlobjSearchColumn("locationnextinvtcountdate",null,null) 
new nlobjSearchColumn("locationinvtcountinterval",null,null)
person Rob Grier    schedule 19.09.2017