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.
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}; ' –