Что нужно сделать, чтобы отметить ItemFulfillment
в комплекте, включая информацию о пакете и, возможно, другой способ доставки/перевозчик с помощью SuiteTalk? Мы используем WMS Lite RF Mobile Screen для первоначального создания ItemFulfillment
, а затем настраиваемого приложения для его отправки.Неисправность доставки товара с использованием SuiteTalk
Первоначально я попробовал использовать ItemFulfillmentPackageList
для указания пакета, но он, казалось, игнорировал то, что я указал, и добавил пакет по умолчанию (0.05 фунта, без описания или отслеживания).
Затем я попробовал ItemFulfillmentPackageUspsList
и т. Д., И правильная информация о пакете появилась, если она соответствует перевозчику, ранее указанному в записи о заказе и выполнении. Если это не соответствует, я получаю сообщение об ошибке «[Code = JS_EXCEPTION] Ошибка: переключение метода доставки на другой носитель является неподдерживаемой операцией, поскольку для этого требуется перезагрузка формы выполнения элемента для этого оператора». Нам нужна возможность переключаться между операторами, потому что мы предлагаем бесплатную доставку для некоторых заказов, которая в конечном итоге «выбирает самый дешевый тариф для пакета из ставок, предлагаемых основными 3 перевозчиками».
//curShipment is an EasyPost shipment after purchasing postage.
//it contains relevant information about the package
ItemFulfillment fulfillmentUpdate = new ItemFulfillment();
fulfillmentUpdate.internalId = curFulfillment.internalId;
fulfillmentUpdate.shipStatus = ItemFulfillmentShipStatus._shipped;
fulfillmentUpdate.shipStatusSpecified = true;
fulfillmentUpdate.shipMethod = new RecordRef()
{
// Get the internalId from a saved dictionary
internalId = shipMethods.GetNetsuite(curShipment.selected_rate).netsuiteId
};
switch (curShipment.selected_rate.carrier)
{
case "USPS":
ItemFulfillmentPackageUsps pkgUsps = new ItemFulfillmentPackageUsps();
pkgUsps.packageWeightUsps = curShipment.parcel.weight/16; // Easypost uses Oz, Netsuite uses Lb
pkgUsps.packageWeightUspsSpecified = true;
if (string.IsNullOrWhiteSpace(curShipment.parcel.predefined_package))
{
pkgUsps.packageLengthUsps = (long)curShipment.parcel.length;
pkgUsps.packageLengthUspsSpecified = true;
pkgUsps.packageWidthUsps = (long)curShipment.parcel.width;
pkgUsps.packageWidthUspsSpecified = true;
pkgUsps.packageHeightUsps = (long)curShipment.parcel.height;
}
pkgUsps.packageTrackingNumberUsps = curShipment.tracking_code;
ItemFulfillmentPackageUspsList pkgListUsps = new ItemFulfillmentPackageUspsList();
pkgListUsps.packageUsps = new ItemFulfillmentPackageUsps[] { pkgUsps };
fulfillmentUpdate.packageUspsList = pkgListUsps;
break;
// Cases for the other carriers, almost identical to USPS above
}
SetNetsuitePrefs(); // Sets preferences and authenticates, similar to the ERP example code
WriteResponse response = await System.Threading.Tasks.Task<SearchResult>.Run(() => { return nsService.update(fulfillmentUpdate); });
// Results in error:
// [Code=JS_EXCEPTION] Error: Switching the shipping method to another carrier is an unsupported operation, because it requires reloading the item fulfillment form for that carrier.
Вы имеете в виду использование полного 'RecordRef' из' getSelectValue() '? Я уже пробовал установить 'shipMethod' в новый' RecordRef' только с 'internalId', который я получил от' getSelectValue() ':' executementUpdate.shipMethod = new RecordRef() {/ * Получает internalId из сохраненного словаря */internalId = shipMethods.GetNetsuite (curShipment.selected_rate) .netsuiteId}; ' –