Итак, у нас есть ситуация, когда заказ получает исполнение, и внешняя компания фактически выполняет его выполнение и доставку. Данные экспортируются в них, а для выполненных заказов эта информация импортируется обратно. Иногда, тем не менее, используется другой носитель, чем тот, которого ожидают люди, создающие начальные заказы, поэтому носитель должен быть изменен. Тем не менее, при использовании SuiteScript, NetSuite может быть немного неумолимым, если вам нужно изменить методы доставки / доставки. В зависимости от того, что нужно изменить, вы можете получить следующую ошибку:
Ошибка: переключение способа доставки на другого оператора
неподдерживаемая операция, потому что она требует перезагрузки элемента
форма выполнения для этого перевозчика.
Исходя из моего опыта, это означает, что необходимо удалить выполнение, изменить параметры доставки в заказе (что может испортить существующие расчеты стоимости), а затем создать новое выполнение. Этот маршрут нежелателен, поскольку он разрывает цепочку данных со сторонним хранилищем. Этот метод также необходим, так как сторонняя система не допускает задержек, и попытка управлять отправкой данных о том, что может быть выполнено из заказа до создания исполнения, оказалась кошмаром.
Например, эта проблема возникает из-за того, что принимающий заказ предполагает, что перевозчиком будет UPS, а методом будет UPS Freight. Реальность может заключаться в том, что перевозчиком будет, может быть, YRC или Old Dominion, что требует другой структуры записи. Но также нельзя предполагать, что это не будет UPS Freight, так как он также используется сторонним складом. Они делают разные варианты выбора перевозчика, основываясь на самой низкой стоимости до места назначения. Я думаю, что все это сводится к тому, как NetSuite управляет чем-то вроде трех или четырех разных списков пакетов на основе метода перевозчик / корабль. Когда вы вносите изменения через пользовательский интерфейс, он перезагружает выполнение с необходимыми изменениями, и вы можете перейти оттуда.
Для тех, кому нужен пример кода, в данный момент это лучший пример, который я могу предоставить, который потерпит неудачу, если NetSuite определит, что изменение требует другого подсписка пакетов:
var recId = 1234;
var shipMethod = 5678;
var ifRec = nlapiLoadRecord("itemfulfillment", recId, { recordmode : "dynamic" });
ifRec.setFieldValue("shipcarrier", "nonups");
ifRec.setFieldValue("shipmethod", shipMethod);
nlapiSubmitRecord(ifRec);
Я предположил, что, возможно, это можно сделать с помощью значения инициализации при загрузке выполнения, но, похоже, ничего из того, что я пробовал, не допускается в качестве значения инициализации значения. Мои попытки включали следующие параметры:
- carrierform
- shipcarrier
- shipmethod
- нси (отображается в URL при смене перевозчика / метода судна в пользовательском интерфейсе)