2016-11-09 4 views
0

Что нужно сделать, чтобы отметить 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. 

ответ

0

Попробуйте установить shipMethod к RecordRef для пункта доставки Вы будете использовать. Если SO было введено с помощью пункта доставки FedEx, и теперь вы хотите использовать ИБП, тогда установите shipMethod и используйте структуру списка пакетов для конкретного оператора.

+0

Вы имеете в виду использование полного 'RecordRef' из' getSelectValue() '? Я уже пробовал установить 'shipMethod' в новый' RecordRef' только с 'internalId', который я получил от' getSelectValue() ':' executementUpdate.shipMethod = new RecordRef() {/ * Получает internalId из сохраненного словаря */internalId = shipMethods.GetNetsuite (curShipment.selected_rate) .netsuiteId}; ' –

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

  • Нет связанных вопросов^_^