2016-11-09 5 views
0

Was muss ich tun, um eine ItemFulfillment im Lieferumfang enthalten, einschließlich Paket Informationen und möglicherweise eine andere Versandart/Träger mit SuiteTalk? Wir verwenden WMS Lite RF Mobile Screen, um zunächst die ItemFulfillment, dann eine benutzerdefinierte App, um es zu versenden.Probleme beim Versand einer ItemFulfillment mit SuiteTalk

Ich versuchte zunächst mit einem ItemFulfillmentPackageList, um das Paket anzugeben, aber es schien zu ignorieren, was ich angegeben und ein Standardpaket hinzufügen (0,05 lb, keine Beschreibung oder Tracking).

Ich versuchte dann ItemFulfillmentPackageUspsList, etc. und richtige Paketinformation erschien, wenn es den Träger traf, der vorher im Auftrags- und Erfüllungsprotokoll angegeben wurde. Wenn es nicht übereinstimmt, erhalte ich eine Fehlermeldung "[Code = JS_EXCEPTION] Fehler: Das Umschalten der Versandmethode auf einen anderen Frachtführer ist ein nicht unterstützter Vorgang, da das Artikelerfüllungsformular für diesen Frachtführer erneut geladen werden muss." Wir müssen die Möglichkeit haben, Carrier zu wechseln, da wir für einige Bestellungen einen kostenlosen Versand anbieten, der "den günstigsten Preis für das Paket aus den von den drei wichtigsten Carriern angebotenen Preisen auswählt".

//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. 

Antwort

0

Versuchen shipMethod zum RecordRef für den Versand Artikel Einstellung, die Sie verwenden werden. Wenn das SO mit einem FedEx-Versandartikel eingegeben wurde und Sie jetzt UPS verwenden möchten, setzen Sie shipMethod entsprechend und verwenden Sie die trägerspezifische Paketlistenstruktur.

+0

Meinst du die volle 'RecordRef' von' getSelectValue() '? Ich habe bereits versucht, 'shipMethod' auf ein neues' RecordRef' zu setzen, mit der 'internalId' aus' getSelectValue() ':' fulfillmentUpdate.shipMethod = new RecordRef() {/ * Erhalte die interneId aus einem gespeicherten Wörterbuch */internalId = shipMethods.GetNetsuite (curShipment.selected_rate) .netsuiteId}; ' –

Verwandte Themen