public virtual void Test() { if (Plugin.Current != null) { Save.Press(); ICarrierService plugin = CreateCarrierService(this, Plugin.Current); if (plugin != null) { CarrierResult <string> result = plugin.Test(); if (result.IsSuccess) { Plugin.Ask(Plugin.Current, Messages.ConnectionCarrierAskSuccessHeader, Messages.ConnectionCarrierAskSuccess, MessageButtons.OK, MessageIcon.Information); } else { StringBuilder errorMessages = new StringBuilder(); foreach (Message message in result.Messages) { errorMessages.AppendLine(message.Description); } if (errorMessages.Length > 0) { throw new PXException(PXMessages.LocalizeFormatNoPrefixNLA(Messages.TestFailed, errorMessages.ToString())); } } } } }
private void PrepareCertificationData(CarrierPlugin cp) { ICarrierService plugin = CreateCarrierService(this, cp); if (plugin != null) { UploadFileMaintenance upload = PXGraph.CreateInstance <UploadFileMaintenance>(); CarrierResult <IList <CarrierCertificationData> > result = plugin.GetCertificationData(); if (result != null) { StringBuilder sb = new StringBuilder(); foreach (Message message in result.Messages) { sb.AppendFormat("{0}:{1} ", message.Code, message.Description); } if (result.IsSuccess) { CarrierPlugin copy = (CarrierPlugin)Plugin.Cache.CreateCopy(cp); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { ZipArchive zip = new ZipArchive(ms, false); foreach (CarrierCertificationData d in result.Result) { using (System.IO.Stream zipStream = zip.OpenWrite(string.Format("{0}.{1}", d.Description, d.Format))) { zipStream.Write(d.File, 0, d.File.Length); } } FileInfo file = new FileInfo("CertificationData.zip", null, ms.ToArray()); upload.SaveFile(file, FileExistsAction.CreateVersion); PXNoteAttribute.SetFileNotes(Plugin.Cache, copy, file.UID.Value); } Plugin.Update(copy); this.Save.Press(); } else { throw new PXException(SO.Messages.CarrierServiceError, sb.ToString()); } } } }
private void CalculateFreightCost(bool supressErrors) { Carrier carrier = Carrier.PK.Find(Base, "UPSGROUND"); if (carrier != null && carrier.IsExternal == true) { var _doc = new SOOrder(); //_doc = SelectFrom<SOOrder>.Where<SOOrder.orderNbr.IsEqual<P.AsString>.And<SOOrder.orderType.IsEqual<P.AsString>>>.View.Select(Base, "SUS2100212", "SO").RowCast<SOOrder>().FirstOrDefault(); _doc.CuryID = Base.Quote.Current.CuryID; _doc.ShipVia = "UPSGROUND"; _doc.CuryInfoID = Base.Quote.Current.CuryInfoID; _doc.DocDate = Base.Quote.Current.DocumentDate; _doc.IsPackageValid = false; _doc.IsManualPackage = false; CarrierPlugin plugin = CarrierPlugin.PK.Find(Base, carrier.CarrierPluginID); ICarrierService cs = CarrierPluginMaint.CreateCarrierService(Base, plugin); cs.Method = carrier.PluginMethod; var graph = PXGraph.CreateInstance <SOOrderEntry>(); _doc = graph.Document.Insert(_doc); graph.Shipping_Address.Cache.Current = new SOShippingAddress(); CarrierRatesExt(graph).RecalculatePackagesForOrder(graph.Document.Current); CarrierRequest cr = CarrierRatesExt(graph).BuildRateRequest(_doc); CarrierResult <RateQuote> result = cs.GetRateQuote(cr); if (result != null) { StringBuilder sb = new StringBuilder(); foreach (Message message in result.Messages) { sb.AppendFormat("{0}:{1} ", message.Code, message.Description); } if (result.IsSuccess) { throw new PXException(result.Result.Amount.ToString()); //decimal baseCost = ConvertAmtToBaseCury(result.Result.Currency, arsetup.Current.DefaultRateTypeID, Document.Current.OrderDate.Value, result.Result.Amount); //SetFreightCost(baseCost); } } } }
public virtual void UpdateRates() { if (Documents.Current != null) { CarrierRates.Cache.Clear(); ValidatePackages(); bool autoPackWarning = false; List <CarrierRequestInfo> requests = new List <CarrierRequestInfo>(); foreach (CarrierPlugin plugin in GetApplicableCarrierPlugins()) { ICarrierService cs = CarrierPluginMaint.CreateCarrierService(Base, plugin); if (cs != null) { CarrierRequest cRequest = BuildQuoteRequest(Documents.Current, plugin); if (cRequest.PackagesEx.Count == 0) { PXTrace.WriteWarning(Messages.AutoPackagingZeroPackWarning, plugin.CarrierPluginID); autoPackWarning = true; continue; } requests.Add(new CarrierRequestInfo { Plugin = plugin, Service = cs, Request = cRequest }); } } Parallel.ForEach(requests, info => info.Result = info.Service.GetRateList(info.Request)); int cx = 0; StringBuilder errorMessages = new StringBuilder(); foreach (CarrierRequestInfo info in requests) { CarrierResult <IList <RateQuote> > result = info.Result; if (result.IsSuccess) { foreach (RateQuote item in result.Result) { if (item.IsSuccess && item.Currency != Documents.Current.CuryID) { if (string.IsNullOrEmpty(arsetup.Current.DefaultRateTypeID)) { throw new PXException(Messages.RateTypeNotSpecified); } } PXSelectBase <Carrier> selectCarrier = new PXSelectReadonly <Carrier, Where <Carrier.carrierPluginID, Equal <Required <Carrier.carrierPluginID> >, And <Carrier.pluginMethod, Equal <Required <Carrier.pluginMethod> >, And <Carrier.isExternal, Equal <True> > > > >(Base); foreach (Carrier shipVia in selectCarrier.Select(info.Plugin.CarrierPluginID, item.Method.Code)) { var r = new SOCarrierRate { LineNbr = cx++, Method = shipVia.CarrierID, Description = item.Method.Description, Amount = ConvertAmt(item.Currency, Documents.Current.CuryID, arsetup.Current.DefaultRateTypeID, Documents.Current.DocumentDate.Value, item.Amount), DeliveryDate = item.DeliveryDate }; r.Selected = r.Method == Documents.Current.ShipVia; if (item.DaysInTransit > 0) { r.DaysInTransit = item.DaysInTransit; } r = CarrierRates.Insert(r); if (!item.IsSuccess) { CarrierRates.Cache.RaiseExceptionHandling(typeof(SOCarrierRate.method).Name, r, null, new PXSetPropertyException("{0}: {1}", PXErrorLevel.RowError, item.Messages[0].Code, item.Messages[0].Description)); } } } } else { foreach (Message message in result.Messages) { errorMessages.AppendFormat(PXMessages.LocalizeNoPrefix(Messages.ReturnedError), info.Plugin.CarrierPluginID, message.ToString()); } if (!string.IsNullOrEmpty(result.RequestData)) { PXTrace.WriteInformation(result.RequestData); } } } if (errorMessages.Length > 0) { throw new PXException(Messages.CarrierServiceError, errorMessages.ToString()); } if (autoPackWarning) { throw new PXException(Messages.AutoPackagingIssuesCheckTrace); } } }
protected virtual IEnumerable PrintFedexLabel(PXAdapter adapter) { var shiporder = Base.Document.Current; var carrier = Carrier.PK.Find(Base, shiporder.ShipVia); if (!UseCarrierService(shiporder, carrier)) { return(adapter.Get()); } if (shiporder.ShippedViaCarrier != true) { // Build Fedex Request object ICarrierService cs = CarrierMaint.CreateCarrierService(Base, shiporder.ShipVia); CarrierRequest cr = Base.CarrierRatesExt.BuildRequest(shiporder); var warehouseInfo = SelectFrom <INSite> .Where <INSite.siteID.IsEqual <P.AsInt> > .View .Select(Base, shiporder.SiteID).RowCast <INSite>().FirstOrDefault(); // Replace ShipTo Info to DCL warehouse Address warehouseAddress = PXSelect <Address, Where <Address.addressID, Equal <Required <Address.addressID> > > > .Select(Base, warehouseInfo?.AddressID); Contact warehouseContact = PXSelect <Contact, Where <Contact.contactID, Equal <Required <Contact.contactID> > > > .Select(Base, warehouseInfo?.ContactID); cr.Destination = warehouseAddress; cr.DestinationContact = warehouseContact; if (cr.Packages.Count > 0) { // Get Fedex web service data CarrierResult <ShipResult> result = cs.Ship(cr); if (result != null) { StringBuilder sb = new StringBuilder(); foreach (Message message in result.Messages) { sb.AppendFormat("{0}:{1} ", message.Code, message.Description); } if (result.IsSuccess) { using (PXTransactionScope ts = new PXTransactionScope()) { UploadFileMaintenance upload = PXGraph.CreateInstance <UploadFileMaintenance>(); foreach (PackageData pd in result.Result.Data) { if (pd.Image != null) { string fileName = string.Format("Label #{0}.{1}", pd.TrackingNumber, pd.Format); FileInfo file = new FileInfo(fileName, null, pd.Image); try { upload.SaveFile(file); } catch (PXNotSupportedFileTypeException exc) { throw new PXException(exc, Messages.NotSupportedFileTypeFromCarrier, pd.Format); } PXNoteAttribute.SetFileNotes(Base.Document.Cache, Base.Document.Current, file.UID.Value); } Base.Document.UpdateCurrent(); } Base.Save.Press(); ts.Complete(); } //show warnings: if (result.Messages.Count > 0) { Base.Document.Cache.RaiseExceptionHandling <SOShipment.curyFreightCost>(shiporder, shiporder.CuryFreightCost, new PXSetPropertyException(sb.ToString(), PXErrorLevel.Warning)); } } else { if (!string.IsNullOrEmpty(result.RequestData)) { PXTrace.WriteError(result.RequestData); } Base.Document.Cache.RaiseExceptionHandling <SOShipment.curyFreightCost>(shiporder, shiporder.CuryFreightCost, new PXSetPropertyException(Messages.CarrierServiceError, PXErrorLevel.Error, sb.ToString())); throw new PXException(Messages.CarrierServiceError, sb.ToString()); } } } } return(adapter.Get()); }