コード例 #1
0
        public void Parse(string xmlData)
        {
            try
            {
                if (xmlData.Trim().Length > 0)
                {
                    XmlDocument xdoc = new XmlDocument();
                    xdoc.LoadXml(xmlData);

                    this.Errors.Clear();
                    XmlNodeList errorNodes;
                    errorNodes = xdoc.SelectNodes("/IntlRateV2Response/Error");
                    if (errorNodes != null)
                    {
                        foreach (XmlNode en in errorNodes)
                        {
                            USPSError e = new USPSError(en);
                            this.Errors.Add(e);
                        }
                    }

                    Packages.Clear();
                    XmlNodeList packageNodes;
                    packageNodes = xdoc.SelectNodes("/IntlRateV2Response/Package");
                    if (packageNodes != null)
                    {
                        foreach (XmlNode pn in packageNodes)
                        {
                            InternationalPackage p = new InternationalPackage(pn);
                            Packages.Add(p);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                USPSError e = new USPSError();
                e.Source = ex.StackTrace;
                e.Description = "BV Software Parsing Error: " + ex.Message;
                this.Errors.Add(e);
            }

        }
コード例 #2
0
        public void Parse(string xmlData)
        {
            try
            {
                if (xmlData.Trim().Length > 0)
                {
                    XmlDocument xdoc = new XmlDocument();
                    xdoc.LoadXml(xmlData);

                    this.Errors.Clear();
                    XmlNodeList errorNodes;
                    errorNodes = xdoc.SelectNodes("/IntlRateV2Response/Error");
                    if (errorNodes != null)
                    {
                        foreach (XmlNode en in errorNodes)
                        {
                            USPSError e = new USPSError(en);
                            this.Errors.Add(e);
                        }
                    }

                    Packages.Clear();
                    XmlNodeList packageNodes;
                    packageNodes = xdoc.SelectNodes("/IntlRateV2Response/Package");
                    if (packageNodes != null)
                    {
                        foreach (XmlNode pn in packageNodes)
                        {
                            InternationalPackage p = new InternationalPackage(pn);
                            Packages.Add(p);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                USPSError e = new USPSError();
                e.Source      = ex.StackTrace;
                e.Description = "BV Software Parsing Error: " + ex.Message;
                this.Errors.Add(e);
            }
        }
コード例 #3
0
        private List<InternationalPackage> OptimizePackages(IShipment shipment)
        {
            List<InternationalPackage> result = new List<InternationalPackage>();

            // Determine what service to use when processing            
            string destinationCountry = shipment.DestinationAddress.CountryData.Name;
            
            // Get max weight for this service
            decimal _maxWeight = InternationalService.GetInternationalWeightLimit(destinationCountry);

            // Create many boxes if we exceed max weight
            PackageOptimizer optimizer = new PackageOptimizer(_maxWeight);                                    
            List<IShippable> weightOptimizedPackages = optimizer.OptimizePackagesToMaxWeight(shipment);

            int counter = 0;
            foreach (IShippable s in weightOptimizedPackages)
            {
                InternationalPackage pak = new InternationalPackage();
                pak.Id = counter.ToString();
                pak.DestinationCountry = shipment.DestinationAddress.CountryData.Name;
                pak.ZipOrigination = MerchantTribe.Web.Text.TrimToLength(shipment.SourceAddress.PostalCode, 5);

                pak.Container = InternationalContainerType.Rectangular;
                pak.CommercialRates = false;

                pak.Ounces = MerchantTribe.Web.Conversions.DecimalPoundsToOunces(s.BoxWeight);
                pak.Pounds = (int)Math.Floor(s.BoxWeight);
                pak.Length = 6;
                pak.Height = 3;
                pak.Width = 1;
                                
                counter++;
                result.Add(pak);
            }
            
            return result;
        }