2016-09-06 3 views
0

Я использую NetSuite всего лишь короткое время и уже ненавижу его. Прошу прощения, если это глупый вопрос, но до сих пор я не смог найти ответ ни в документах Netsuite, ни в StackOverflow, ни в других веб-сайтах. Фактически, ответы, которые я нашел, привели к ошибке.Netsuite - Ошибка переноса инвентаря

Моя компания требует, чтобы сценарий передавал инвентаризацию на основе входного файла EDI. Чтение файла не проблема, даже разбор его работает. Однако фактическое включение данных является проблематичным. Я смог вставить обычные записи, но записи инвентаризации передают мне проблемы.

От переполнения стека я нашел и адаптировать код в следующее:

var xfer = nlapiCreateRecord("inventorytransfer"); 

xfer.setFieldValue("trandate", FormatDate("20160101")); 
xfer.setFieldValue("location", 9); 
xfer.setFieldValue("transferlocation", 9); 

nlapiSelectNewLineItem('invt'); 
nlapiSetLineItemValue("invt","invtid",1, 189); 
nlapiSetLineItemValue("invt","adjustqtyby", 1, "5"); 
nlapiCommitLineItem('invt'); 

var id = nlapiSubmitRecord(xfer); 

Функция FormatDate только обменивает дату из текстового файла в системную дату NetSuite можно понять.

Однако, когда я запускаю этот код, я получаю следующее сообщение об ошибке:

USER_ERROR: You must enter at least one line item for this transaction.

Я думал вставив позиция была причина использовать nlapiSelectNewLineItem, но я предполагаю, что нет. Кроме того, nlapiCreateNewLineItem не существует.

Значения, которые я вставляю, - это всего лишь тестовые данные, так как я тестирую это в отладчике. Расположение 9 существует, как и элемент 189. . Мой полный скрипт находит эти идентификаторы на основе строковых значений из текстовых файлов. Но так как это раздел, который не работает, я поставил его отдельно, чтобы проверить.

Может ли кто-нибудь помочь в этом?

ответ

2

Вы не указали тип скрипта, который используете, но похоже, что вы не устанавливаете поля в объекте записи, а устанавливаете значение для текущей записи. Ниже приведен рекомендуемый код.

Кроме того, нет подписок под названием invt, это должно быть inventory. Кроме того, нет поля как такового invtid, я думаю, что, скорее всего, вы хотите настроить элемент, поле Id должно быть item. Вы можете обратиться SuiteScript Record Browser, а также для помощи в правильном Ids

var xfer = nlapiCreateRecord("inventorytransfer"); 

xfer.setFieldValue("trandate", FormatDate("20160101")); 
xfer.setFieldValue("location", 9); 
xfer.setFieldValue("transferlocation", 9); 

xfer.selectNewLineItem('inventory'); 
xfer.setCurrentLineItemValue("inventory", "item", 189); 
xfer.setCurrentLineItemValue("inventory","adjustqtyby", "5"); 
xfer.commitLineItem('inventory'); 

var id = nlapiSubmitRecord(xfer); 

Если вы используете Bin/Lot пронумерованных пунктов, пожалуйста, см раздел справки «Примеры сценариев для Advanced Bin/Нумерованный Управление запасами»

+1

Looks например, вы также должны использовать 'xfer.setCurrentLineItemValue' без индекса, а не' xfer.setLineItemValue' – erictgrubaugh

+0

Спасибо @prasun за быстрый ответ. Этот скрипт написан непосредственно в отладчике. Но полный скрипт - это запланированный скрипт для обработки файлов каждую ночь. К сожалению, с этим новым кодом появляется такая же ошибка. –

+0

@erictgrubaugh та же ошибка с вашим предложением. Но спасибо. –

Смежные вопросы