コード例 #1
0
ファイル: ShipmentDAL.cs プロジェクト: alonzoalden/freight
        public ShipmentPackage CreateShipmentPackage(ShipmentPackageInsert shipmentpackage)
        {
            using (SqlConnection connection = new SqlConnection(DefaultConnection))
            {
                DynamicParameters p = new DynamicParameters();
                p.Add("shipmentid", shipmentpackage.ShipmentID);
                p.Add("businessid", shipmentpackage.BusinessID);
                p.Add("status", shipmentpackage.Status);
                p.Add("packagenumber", shipmentpackage.PackageNumber);
                p.Add("dimension", shipmentpackage.Dimension);
                p.Add("weight", shipmentpackage.Weight);
                p.Add("weightunit", shipmentpackage.WeightUnit);
                p.Add("shipmentpackagerateid", shipmentpackage.ShipmentPackageRateID);
                p.Add("shippingcarrierid", shipmentpackage.ShippingCarrierID);
                p.Add("shippingserviceid", shipmentpackage.ShippingServiceID);
                p.Add("shippingpackageid", shipmentpackage.ShippingPackageID);
                p.Add("shippingrate", shipmentpackage.ShippingRate);
                p.Add("trackingnumber", shipmentpackage.TrackingNumber);
                p.Add("uspspicnumber", shipmentpackage.USPSPICNumber);
                p.Add("shippinglablepath", shipmentpackage.ShippingLabelPath);
                p.Add("shipdate", shipmentpackage.ShipDate);
                p.Add("israted", shipmentpackage.IsRated);
                p.Add("islabeled", shipmentpackage.IsLabeled);
                p.Add("ismanual", shipmentpackage.IsManual);

                ShipmentPackage result = connection.Query <ShipmentPackage>("spCreateShipmentPackage", p, commandType: CommandType.StoredProcedure).Single();

                return(result);
            }
        }
コード例 #2
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="ShipmentPackage">Shipment package</param>
        /// <param name="Error">Error</param>
        /// <returns>Shipping options</returns>
        public ShippingOptionCollection GetShippingOptions(ShipmentPackage ShipmentPackage, ref string Error)
        {
            ShippingOptionCollection shippingOptions = new ShippingOptionCollection();

            if (ShipmentPackage == null)
            {
                throw new ArgumentNullException("ShipmentPackage");
            }
            if (ShipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }

            ShippingMethodCollection shippingMethods = ShippingMethodManager.GetAllShippingMethods();

            foreach (ShippingMethod shippingMethod in shippingMethods)
            {
                ShippingOption shippingOption = new ShippingOption();
                shippingOption.Name        = shippingMethod.Name;
                shippingOption.Description = shippingMethod.Description;
                shippingOption.Rate        = decimal.Zero;
                shippingOptions.Add(shippingOption);
            }

            return(shippingOptions);
        }
コード例 #3
0
        public virtual ShipmentPackageEntity FromModel(ShipmentPackage package, PrimaryKeyResolvingMap pkMap)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

            Id           = package.Id;
            CreatedDate  = package.CreatedDate;
            CreatedBy    = package.CreatedBy;
            ModifiedDate = package.ModifiedDate;
            ModifiedBy   = package.ModifiedBy;

            PackageType = package.PackageType;
            Weight      = package.Weight;
            Height      = package.Height;
            Width       = package.Width;
            MeasureUnit = package.MeasureUnit;
            WeightUnit  = package.WeightUnit;
            Length      = package.Length;

            pkMap.AddPair(package, this);

            if (!Items.IsNullOrEmpty())
            {
                Items = new ObservableCollection <ShipmentItemEntity>(package.Items.Select(x => AbstractTypeFactory <ShipmentItemEntity> .TryCreateInstance().FromModel(x, pkMap)));
                foreach (var shipmentItem in Items)
                {
                    shipmentItem.ShipmentPackageId = Id;
                }
            }

            return(this);
        }
コード例 #4
0
        private ShipmentPackage[] GetPackagesFromGroupedData(KeyValuePair <string, IGrouping <string, ShipmentFileExportRow> > shipmentData, string acumaticaDefaultBoxId)
        {
            var packages = new List <ShipmentPackage>();

            foreach (var shipmentDataPackage in shipmentData.Value)
            {
                var shipmentPackage = new ShipmentPackage
                {
                    BoxID = new StringValue {
                        Value = acumaticaDefaultBoxId
                    },
                    RowNumber = new LongValue {
                        Value = shipmentDataPackage.RowNumber > 0 ? shipmentDataPackage.RowNumber : packages.Count + 1
                    },
                    Confirmed = new BooleanReturn {
                        Value = !shipmentDataPackage.VoidIndicator
                    },
                    TrackingNumber = new StringValue {
                        Value = !shipmentDataPackage.VoidIndicator ? shipmentDataPackage.PackageTrackingNumber : string.Empty
                    },
                    Weight = new DecimalValue {
                        Value = shipmentDataPackage.PackageWeight
                    }
                };

                packages.Add(shipmentPackage);
            }

            return(packages.ToArray());
        }
コード例 #5
0
        public virtual ShipmentPackage ToModel(ShipmentPackage package)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }

            package.Id           = Id;
            package.CreatedDate  = CreatedDate;
            package.CreatedBy    = CreatedBy;
            package.ModifiedDate = ModifiedDate;
            package.ModifiedBy   = ModifiedBy;

            package.PackageType = PackageType;
            package.Weight      = Weight;
            package.Height      = Height;
            package.Width       = Width;
            package.MeasureUnit = MeasureUnit;
            package.WeightUnit  = WeightUnit;
            package.Length      = Length;

            package.Items = Items.Select(x => x.ToModel(AbstractTypeFactory <ShipmentItem> .TryCreateInstance())).ToList();

            return(package);
        }
コード例 #6
0
 private void SetPayment(RateRequest request, ShipmentPackage ShipmentPackage)
 {
     request.RequestedShipment.ShippingChargesPayment                      = new Payment();      // Payment Information
     request.RequestedShipment.ShippingChargesPayment.PaymentType          = PaymentType.SENDER; // Payment options are RECIPIENT, SENDER, THIRD_PARTY
     request.RequestedShipment.ShippingChargesPayment.PaymentTypeSpecified = true;
     request.RequestedShipment.ShippingChargesPayment.Payor                = new Payor();
     request.RequestedShipment.ShippingChargesPayment.Payor.AccountNumber  = SettingManager.GetSettingValue("ShippingRateComputationMethod.FedEx.AccountNumber"); // Replace "XXX" with client's account number
 }
コード例 #7
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <param name="error">Error</param>
        /// <returns>Shipping options</returns>
        public ShippingOptionCollection GetShippingOptions(ShipmentPackage shipmentPackage, ref string error)
        {
            var shippingOptions = new ShippingOptionCollection();

            if (shipmentPackage == null)
            {
                throw new ArgumentNullException("shipmentPackage");
            }
            if (shipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }
            if (shipmentPackage.ShippingAddress == null)
            {
                error = "Shipping address is not set";
                return(shippingOptions);
            }
            if (shipmentPackage.ShippingAddress.Country == null)
            {
                error = "Shipping country is not set";
                return(shippingOptions);
            }

            string  url       = SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.URL");
            string  accessKey = SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.AccessKey");
            string  username  = SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.Username");
            string  password  = SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.Password");
            var     customerClassification   = (UPSCustomerClassification)Enum.Parse(typeof(UPSCustomerClassification), SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.CustomerClassification"));
            var     pickupType               = (UPSPickupType)Enum.Parse(typeof(UPSPickupType), SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.PickupType"));
            var     packagingType            = (UPSPackagingType)Enum.Parse(typeof(UPSPackagingType), SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.PackagingType"));
            decimal additionalHandlingCharge = SettingManager.GetSettingValueDecimalNative("ShippingRateComputationMethod.UPS.AdditionalHandlingCharge");

            if (shipmentPackage.CountryFrom == null)
            {
                int defaultShippedFromCountryID = SettingManager.GetSettingValueInteger("ShippingRateComputationMethod.UPS.DefaultShippedFromCountryID");
                shipmentPackage.CountryFrom = CountryManager.GetCountryById(defaultShippedFromCountryID);
            }
            if (String.IsNullOrEmpty(shipmentPackage.ZipPostalCodeFrom))
            {
                shipmentPackage.ZipPostalCodeFrom = SettingManager.GetSettingValue("ShippingRateComputationMethod.UPS.DefaultShippedFromZipPostalCode");
            }

            string requestString = CreateRequest(accessKey, username, password, shipmentPackage,
                                                 customerClassification, pickupType, packagingType);
            string responseXML = DoRequest(url, requestString);

            shippingOptions = ParseResponse(responseXML, ref error);
            foreach (var shippingOption in shippingOptions)
            {
                if (!shippingOption.Name.ToLower().StartsWith("ups"))
                {
                    shippingOption.Name = string.Format("UPS {0}", shippingOption.Name);
                }
                shippingOption.Rate += additionalHandlingCharge;
            }

            return(shippingOptions);
        }
コード例 #8
0
        public virtual ShipmentPackage ToModel(ShipmentPackage package)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            package.InjectFrom(this);
            package.Items = this.Items.Select(x => x.ToModel(AbstractTypeFactory <ShipmentItem> .TryCreateInstance())).ToList();
            return(package);
        }
コード例 #9
0
        private List <Item> CreateItems(ShipmentPackage ShipmentPackage)
        {
            var result = new List <Item>();

            var usedMeasureWeight = IoC.Resolve <IMeasureService>().GetMeasureWeightBySystemKeyword("kg");

            if (usedMeasureWeight == null)
            {
                throw new NopException("CanadaPost shipping service. Could not load \"kg\" measure weight");
            }

            var usedMeasureDimension = IoC.Resolve <IMeasureService>().GetMeasureDimensionBySystemKeyword("meters");

            if (usedMeasureDimension == null)
            {
                throw new NopException("CanadaPost shipping service. Could not load \"meter(s)\" measure dimension");
            }

            foreach (var sci in ShipmentPackage.Items)
            {
                var pv = sci.ProductVariant;

                var item = new Item();
                item.Quantity = sci.Quantity;
                //Canada Post uses kg(s)
                decimal unitWeight = sci.TotalWeight / sci.Quantity;
                item.Weight = IoC.Resolve <IMeasureService>().ConvertWeight(unitWeight, IoC.Resolve <IMeasureService>().BaseWeightIn, usedMeasureWeight);
                item.Weight = Math.Round(item.Weight, 2);
                if (item.Weight == decimal.Zero)
                {
                    item.Weight = 0.01M;
                }

                //Canada Post uses centimeters
                item.Length = Convert.ToInt32(Math.Ceiling(IoC.Resolve <IMeasureService>().ConvertDimension(pv.Length, IoC.Resolve <IMeasureService>().BaseDimensionIn, usedMeasureDimension) * 100));
                if (item.Length == decimal.Zero)
                {
                    item.Length = 1;
                }
                item.Width = Convert.ToInt32(Math.Ceiling(IoC.Resolve <IMeasureService>().ConvertDimension(pv.Width, IoC.Resolve <IMeasureService>().BaseDimensionIn, usedMeasureDimension) * 100));
                if (item.Width == decimal.Zero)
                {
                    item.Width = 1;
                }
                item.Height = Convert.ToInt32(Math.Ceiling(IoC.Resolve <IMeasureService>().ConvertDimension(pv.Height, IoC.Resolve <IMeasureService>().BaseDimensionIn, usedMeasureDimension) * 100));
                if (item.Height == decimal.Zero)
                {
                    item.Height = 1;
                }
                result.Add(item);
            }

            return(result);
        }
コード例 #10
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <param name="error">Error</param>
        /// <returns>Shipping options</returns>
        public List <ShippingOption> GetShippingOptions(ShipmentPackage shipmentPackage, ref string error)
        {
            var shippingOptions = new List <ShippingOption>();

            if (shipmentPackage == null)
            {
                throw new ArgumentNullException("shipmentPackage");
            }
            if (shipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }
            if (shipmentPackage.ShippingAddress == null)
            {
                error = "Shipping address is not set";
                return(shippingOptions);
            }
            if (shipmentPackage.ShippingAddress.Country == null)
            {
                error = "Shipping country is not set";
                return(shippingOptions);
            }

            decimal subTotal = decimal.Zero;

            foreach (var shoppingCartItem in shipmentPackage.Items)
            {
                if (shoppingCartItem.IsFreeShipping)
                {
                    continue;
                }
                subTotal += PriceHelper.GetSubTotal(shoppingCartItem, shipmentPackage.Customer, true);
            }

            decimal weight = IoC.Resolve <IShippingService>().GetShoppingCartTotalWeight(shipmentPackage.Items, shipmentPackage.Customer);

            var shippingMethods = IoC.Resolve <IShippingService>().GetAllShippingMethods(shipmentPackage.ShippingAddress.CountryId);

            foreach (var shippingMethod in shippingMethods)
            {
                decimal?rate = GetRate(subTotal, weight, shippingMethod.ShippingMethodId);
                if (rate.HasValue)
                {
                    var shippingOption = new ShippingOption();
                    shippingOption.Name        = shippingMethod.Name;
                    shippingOption.Description = shippingMethod.Description;
                    shippingOption.Rate        = rate.Value;
                    shippingOptions.Add(shippingOption);
                }
            }

            return(shippingOptions);
        }
コード例 #11
0
        bool IsDomestic(ShipmentPackage shipmentPackage)
        {
            bool result = true;

            if (shipmentPackage != null &&
                shipmentPackage.ShippingAddress != null &&
                shipmentPackage.ShippingAddress.Country != null && shipmentPackage.CountryFrom != null)
            {
                result = shipmentPackage.ShippingAddress.Country.ThreeLetterIsoCode == "USA" && shipmentPackage.CountryFrom.ThreeLetterIsoCode == "USA";
            }
            return(result);
        }
コード例 #12
0
        public static ShipmentPackage ToWebModel(this VirtoCommerceOrderModuleWebModelShipmentPackage shipmentPackage, IEnumerable <Currency> currencies, Language language)
        {
            var webModel = new ShipmentPackage();

            webModel.InjectFrom(shipmentPackage);

            if (shipmentPackage.Items != null)
            {
                webModel.Items = shipmentPackage.Items.Select(i => i.ToWebModel(currencies, language)).ToList();
            }

            return(webModel);
        }
コード例 #13
0
        public static ShipmentPackage ToWebModel(this VirtoCommerceOrderModuleWebModelShipmentPackage shipmentPackage)
        {
            var webModel = new ShipmentPackage();

            webModel.InjectFrom(shipmentPackage);

            if (shipmentPackage.Items != null)
            {
                webModel.Items = shipmentPackage.Items.Select(i => i.ToWebModel()).ToList();
            }

            return(webModel);
        }
コード例 #14
0
        /// <summary>
        /// Is a request domestic
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <returns>Rsult</returns>
        protected bool IsDomesticRequest(ShipmentPackage shipmentPackage)
        {
            //Origin Country must be USA, Collect USA from list of countries
            bool result = true;

            if (shipmentPackage != null &&
                shipmentPackage.ShippingAddress != null &&
                shipmentPackage.ShippingAddress.Country != null)
            {
                result = shipmentPackage.ShippingAddress.Country.ThreeLetterIsoCode == "USA";
            }
            return(result);
        }
コード例 #15
0
        public virtual ShipmentPackage ToShipmentPackage(orderDto.ShipmentPackage shipmentPackageDto, IEnumerable <Currency> currencies, Language language)
        {
            var webModel = new ShipmentPackage();

            webModel.InjectFrom <NullableAndEnumValueInjecter>(shipmentPackageDto);

            if (shipmentPackageDto.Items != null)
            {
                webModel.Items = shipmentPackageDto.Items.Select(i => ToShipmentItem(i, currencies, language)).ToList();
            }

            return(webModel);
        }
コード例 #16
0
 private void SetShipmentDetails(RateRequest request, ShipmentPackage ShipmentPackage, decimal orderSubTotal)
 {
     request.RequestedShipment                            = new RequestedShipment();
     request.RequestedShipment.DropoffType                = DropoffType.REGULAR_PICKUP; //Drop off types are BUSINESS_SERVICE_CENTER, DROP_BOX, REGULAR_PICKUP, REQUEST_COURIER, STATION
     request.RequestedShipment.TotalInsuredValue          = new Money();
     request.RequestedShipment.TotalInsuredValue.Amount   = orderSubTotal;
     request.RequestedShipment.TotalInsuredValue.Currency = CurrencyManager.PrimaryStoreCurrency.CurrencyCode.ToString();
     request.RequestedShipment.ShipTimestamp              = DateTime.Now; // Shipping date and time
     request.RequestedShipment.ShipTimestampSpecified     = true;
     request.RequestedShipment.RateRequestTypes           = new RateRequestType[2];
     request.RequestedShipment.RateRequestTypes[0]        = RateRequestType.ACCOUNT;
     request.RequestedShipment.RateRequestTypes[1]        = RateRequestType.LIST;
     request.RequestedShipment.PackageDetail              = RequestedPackageDetailType.INDIVIDUAL_PACKAGES;
     request.RequestedShipment.PackageDetailSpecified     = true;
 }
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="ShipmentPackage">Shipment package</param>
        /// <param name="Error">Error</param>
        /// <returns>Shipping options</returns>
        public ShippingOptionCollection GetShippingOptions(ShipmentPackage ShipmentPackage, ref string Error)
        {
            ShippingOptionCollection shippingOptions = new ShippingOptionCollection();

            if (ShipmentPackage == null)
            {
                throw new ArgumentNullException("ShipmentPackage");
            }
            if (ShipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }
            if (ShipmentPackage.ShippingAddress == null)
            {
                Error = "Shipping address is not set";
                return(shippingOptions);
            }
            if (ShipmentPackage.ShippingAddress.Country == null)
            {
                Error = "Shipping country is not set";
                return(shippingOptions);
            }

            decimal subTotal = decimal.Zero;

            foreach (ShoppingCartItem shoppingCartItem in ShipmentPackage.Items)
            {
                if (shoppingCartItem.IsFreeShipping)
                {
                    continue;
                }
                subTotal += PriceHelper.GetSubTotal(shoppingCartItem, ShipmentPackage.Customer, true);
            }
            decimal weight = ShippingManager.GetShoppingCartTotalWeigth(ShipmentPackage.Items);

            ShippingMethodCollection shippingMethods = ShippingMethodManager.GetAllShippingMethods();

            foreach (ShippingMethod shippingMethod in shippingMethods)
            {
                ShippingOption shippingOption = new ShippingOption();
                shippingOption.Name        = shippingMethod.Name;
                shippingOption.Description = shippingMethod.Description;
                shippingOption.Rate        = GetRate(subTotal, weight, shippingMethod.ShippingMethodID, ShipmentPackage.ShippingAddress.Country.CountryID);
                shippingOptions.Add(shippingOption);
            }

            return(shippingOptions);
        }
コード例 #18
0
        public virtual ShipmentPackageEntity FromModel(ShipmentPackage package, PrimaryKeyResolvingMap pkMap)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            pkMap.AddPair(package, this);
            this.InjectFrom(package);

            if (!this.Items.IsNullOrEmpty())
            {
                this.Items = new ObservableCollection <ShipmentItemEntity>(package.Items.Select(x => AbstractTypeFactory <ShipmentItemEntity> .TryCreateInstance().FromModel(x, pkMap)));
            }
            return(this);
        }
コード例 #19
0
        public static ShipmentPackage ToCoreModel(this ShipmentPackageEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }

            var retVal = new ShipmentPackage();

            retVal.InjectFrom(entity);

            if (entity.Items != null)
            {
                retVal.Items = entity.Items.Select(x => x.ToCoreModel()).ToList();
            }
            return(retVal);
        }
コード例 #20
0
        public static ShipmentPackageEntity ToDataModel(this ShipmentPackage package, CustomerOrderEntity orderEntity)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            var retVal = new ShipmentPackageEntity();

            retVal.InjectFrom(package);

            if (package.Items != null)
            {
                retVal.Items = new ObservableCollection <ShipmentItemEntity>(package.Items.Select(x => x.ToDataModel(orderEntity)));
            }

            return(retVal);
        }
コード例 #21
0
        private RateRequest CreateRateRequest(ShipmentPackage ShipmentPackage)
        {
            // Build the RateRequest
            var request = new RateRequest();

            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential          = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key      = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.FedEx.Key");      // Replace "XXX" with the Key
            request.WebAuthenticationDetail.UserCredential.Password = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.FedEx.Password"); // Replace "XXX" with the Password

            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.FedEx.AccountNumber"); // Replace "XXX" with client's account number
            request.ClientDetail.MeterNumber   = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.FedEx.MeterNumber");   // Replace "XXX" with client's meter number

            request.TransactionDetail = new TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = "***Rate Available Services v7 Request - nopCommerce***"; // This is a reference field for the customer.  Any value can be used and will be provided in the response.

            request.Version = new VersionId();                                                                          // WSDL version information, value is automatically set from wsdl

            request.ReturnTransitAndCommit          = true;
            request.ReturnTransitAndCommitSpecified = true;
            request.CarrierCodes = new CarrierCodeType[2];
            // Insert the Carriers you would like to see the rates for
            request.CarrierCodes[0] = CarrierCodeType.FDXE;
            request.CarrierCodes[1] = CarrierCodeType.FDXG;

            decimal  subtotalBase = decimal.Zero;
            decimal  orderSubTotalDiscountAmount  = decimal.Zero;
            Discount orderSubTotalAppliedDiscount = null;
            decimal  subTotalWithoutDiscountBase  = decimal.Zero;
            decimal  subTotalWithDiscountBase     = decimal.Zero;

            IoC.Resolve <IShoppingCartService>().GetShoppingCartSubTotal(ShipmentPackage.Items,
                                                                         ShipmentPackage.Customer, out orderSubTotalDiscountAmount, out orderSubTotalAppliedDiscount,
                                                                         out subTotalWithoutDiscountBase, out subTotalWithDiscountBase);
            subtotalBase = subTotalWithDiscountBase;
            SetShipmentDetails(request, ShipmentPackage, subtotalBase);
            SetOrigin(request);
            SetDestination(request, ShipmentPackage);
            SetPayment(request, ShipmentPackage);
            SetIndividualPackageLineItems(request, ShipmentPackage, subtotalBase);

            return(request);
        }
コード例 #22
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <param name="error">Error</param>
        /// <returns>Shipping options</returns>
        public ShippingOptionCollection GetShippingOptions(ShipmentPackage shipmentPackage, ref string error)
        {
            var shippingOptions = new ShippingOptionCollection();

            if (shipmentPackage == null)
            {
                throw new ArgumentNullException("shipmentPackage");
            }
            if (shipmentPackage.Items == null)
            {
                throw new NopException("Нет товаров для доставки. ");
            }
            if (shipmentPackage.ShippingAddress == null)
            {
                error = "Не указан адрес доставки. ";
                return(shippingOptions);
            }
            if (shipmentPackage.ShippingAddress.Country == null)
            {
                error = "Не указана страна доставки. ";
                return(shippingOptions);
            }

            var shippingMethods = ShippingMethodManager.GetAllShippingMethods(shipmentPackage.ShippingAddress.CountryId);

            foreach (var shippingMethod in shippingMethods)
            {
                var shippingOption = new ShippingOption();
                shippingOption.Name        = shippingMethod.Name;
                shippingOption.Description = shippingMethod.Description;
                if (shippingMethod.ShippingMethodId == 4)
                {
                    shippingOption.Rate = 0;
                }
                else
                {
                    shippingOption.Rate = GetRate();
                }
                shippingOptions.Add(shippingOption);
            }

            return(shippingOptions);
        }
コード例 #23
0
 private void SetDestination(RateRequest request, ShipmentPackage ShipmentPackage)
 {
     request.RequestedShipment.Recipient                     = new Party();
     request.RequestedShipment.Recipient.Address             = new Address();
     request.RequestedShipment.Recipient.Address.StreetLines = new string[1] {
         "Recipient Address Line 1"
     };
     request.RequestedShipment.Recipient.Address.City = ShipmentPackage.ShippingAddress.City;
     if (ShipmentPackage.ShippingAddress.StateProvince != null)
     {
         request.RequestedShipment.Recipient.Address.StateOrProvinceCode = ShipmentPackage.ShippingAddress.StateProvince.Abbreviation;
     }
     else
     {
         request.RequestedShipment.Recipient.Address.StateOrProvinceCode = string.Empty;
     }
     request.RequestedShipment.Recipient.Address.PostalCode  = ShipmentPackage.ShippingAddress.ZipPostalCode;
     request.RequestedShipment.Recipient.Address.CountryCode = ShipmentPackage.ShippingAddress.Country.TwoLetterISOCode;
 }
コード例 #24
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <param name="error">Error</param>
        /// <returns>Shipping options</returns>
        public List <ShippingOption> GetShippingOptions(ShipmentPackage shipmentPackage, ref string error)
        {
            var shippingOptions = new List <ShippingOption>();

            if (shipmentPackage == null)
            {
                throw new ArgumentNullException("shipmentPackage");
            }
            if (shipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }
            if (shipmentPackage.ShippingAddress == null)
            {
                error = "Shipping address is not set";
                return(shippingOptions);
            }

            string  url      = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.USPS.URL");
            string  username = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.USPS.Username");
            string  password = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.USPS.Password");
            decimal additionalHandlingCharge = IoC.Resolve <ISettingManager>().GetSettingValueDecimalNative("ShippingRateComputationMethod.USPS.AdditionalHandlingCharge");

            shipmentPackage.ZipPostalCodeFrom = IoC.Resolve <ISettingManager>().GetSettingValue("ShippingRateComputationMethod.USPS.DefaultShippedFromZipPostalCode");


            bool   isDomestic    = IsDomesticRequest(shipmentPackage);
            string requestString = CreateRequest(username, password, shipmentPackage);
            string responseXML   = DoRequest(url, requestString);

            shippingOptions = ParseResponse(responseXML, isDomestic, ref error);
            foreach (var shippingOption in shippingOptions)
            {
                if (!shippingOption.Name.ToLower().StartsWith("usps"))
                {
                    shippingOption.Name = string.Format("USPS {0}", shippingOption.Name);
                }
                shippingOption.Rate += additionalHandlingCharge;
            }

            return(shippingOptions);
        }
コード例 #25
0
        public virtual ShipmentPackage ToShipmentPackage(orderDto.ShipmentPackage shipmentPackageDto, IEnumerable <Currency> currencies, Language language)
        {
            var result = new ShipmentPackage();

            result.BarCode = shipmentPackageDto.BarCode;
            result.Id      = shipmentPackageDto.Id;

            result.Height      = shipmentPackageDto.Height;
            result.Weight      = shipmentPackageDto.Weight;
            result.Length      = shipmentPackageDto.Length;
            result.Width       = shipmentPackageDto.Width;
            result.WeightUnit  = shipmentPackageDto.WeightUnit;
            result.MeasureUnit = shipmentPackageDto.MeasureUnit;

            if (shipmentPackageDto.Items != null)
            {
                result.Items = shipmentPackageDto.Items.Select(i => ToShipmentItem(i, currencies, language)).ToList();
            }

            return(result);
        }
コード例 #26
0
        /// <summary>
        /// Gets fixed shipping rate (if shipping rate computation method allows it and the rate can be calculated before checkout).
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <returns>Fixed shipping rate; or null if shipping rate could not be calculated before checkout</returns>
        public decimal?GetFixedRate(ShipmentPackage shipmentPackage)
        {
            if (shipmentPackage == null)
            {
                return(null);
            }
            if (shipmentPackage.Items == null)
            {
                return(null);
            }
            if (shipmentPackage.ShippingAddress == null)
            {
                return(null);
            }
            if (shipmentPackage.ShippingAddress.Country == null)
            {
                return(null);
            }


            var            shippingMethods = IoC.Resolve <IShippingService>().GetAllShippingMethods(shipmentPackage.ShippingAddress.CountryId);
            List <decimal> rates           = new List <decimal>();

            foreach (var shippingMethod in shippingMethods)
            {
                decimal rate = GetRate(shippingMethod.ShippingMethodId);
                if (!rates.Contains(rate))
                {
                    rates.Add(rate);
                }
            }

            //return default rate if all of them equal
            if (rates.Count == 1)
            {
                return(rates[0]);
            }

            return(null);
        }
コード例 #27
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="ShipmentPackage">Shipment option</param>
        /// <param name="Error">Error</param>
        /// <returns>Shipping options</returns>
        public ShippingOptionCollection GetShippingOptions(ShipmentPackage ShipmentPackage, ref string Error)
        {
            ShippingOptionCollection shippingOptions = new ShippingOptionCollection();

            if (ShipmentPackage == null)
            {
                throw new ArgumentNullException("ShipmentPackage");
            }
            if (ShipmentPackage.Items == null)
            {
                throw new NopSolutions.NopCommerce.Common.NopException("No shipment items");
            }
            if (ShipmentPackage.ShippingAddress == null)
            {
                Error = "Shipping address is not set";
                return(shippingOptions);
            }

            string  url      = SettingManager.GetSettingValue("ShippingRateComputationMethod.USPS.URL");
            string  username = SettingManager.GetSettingValue("ShippingRateComputationMethod.USPS.Username");
            string  password = SettingManager.GetSettingValue("ShippingRateComputationMethod.USPS.Password");
            decimal additionalHandlingCharge = SettingManager.GetSettingValueDecimalNative("ShippingRateComputationMethod.USPS.AdditionalHandlingCharge");

            ShipmentPackage.ZipPostalCodeFrom = SettingManager.GetSettingValue("ShippingRateComputationMethod.USPS.DefaultShippedFromZipPostalCode");
            string requestString = CreateRequest(username, password, ShipmentPackage);
            string responseXML   = DoRequest(url, requestString);

            shippingOptions = ParseResponse(responseXML, ref Error);
            foreach (ShippingOption shippingOption in shippingOptions)
            {
                shippingOption.Rate += additionalHandlingCharge;
            }

            if (String.IsNullOrEmpty(Error) && shippingOptions.Count == 0)
            {
                Error = "Shipping options could not be loaded";
            }
            return(shippingOptions);
        }
コード例 #28
0
        public static ShipmentPackage ToShipmentPackage(this orderDto.ShipmentPackage shipmentPackageDto, IEnumerable <Currency> currencies, Language language)
        {
            var result = new ShipmentPackage
            {
                BarCode = shipmentPackageDto.BarCode,
                Id      = shipmentPackageDto.Id,

                Height      = shipmentPackageDto.Height,
                Weight      = shipmentPackageDto.Weight,
                Length      = shipmentPackageDto.Length,
                Width       = shipmentPackageDto.Width,
                WeightUnit  = shipmentPackageDto.WeightUnit,
                MeasureUnit = shipmentPackageDto.MeasureUnit
            };

            if (shipmentPackageDto.Items != null)
            {
                result.Items = shipmentPackageDto.Items.Select(i => ToShipmentItem(i, currencies, language)).ToList();
            }

            return(result);
        }
コード例 #29
0
 private void SetDestination(RateRequest request, ShipmentPackage ShipmentPackage)
 {
     request.RequestedShipment.Recipient         = new Party();
     request.RequestedShipment.Recipient.Address = new Address();
     if (SettingManager.GetSettingValueBoolean("ShippingRateComputationMethod.FedEx.UseResidentialRates", false))
     {
         request.RequestedShipment.Recipient.Address.Residential          = true;
         request.RequestedShipment.Recipient.Address.ResidentialSpecified = true;
     }
     request.RequestedShipment.Recipient.Address.StreetLines = new string[1] {
         "Recipient Address Line 1"
     };
     request.RequestedShipment.Recipient.Address.City = ShipmentPackage.ShippingAddress.City;
     if (ShipmentPackage.ShippingAddress.StateProvince != null)
     {
         request.RequestedShipment.Recipient.Address.StateOrProvinceCode = ShipmentPackage.ShippingAddress.StateProvince.Abbreviation;
     }
     else
     {
         request.RequestedShipment.Recipient.Address.StateOrProvinceCode = string.Empty;
     }
     request.RequestedShipment.Recipient.Address.PostalCode  = ShipmentPackage.ShippingAddress.ZipPostalCode;
     request.RequestedShipment.Recipient.Address.CountryCode = ShipmentPackage.ShippingAddress.Country.TwoLetterIsoCode;
 }
コード例 #30
0
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="shipmentPackage">Shipment package</param>
        /// <param name="error">Error</param>
        /// <returns>Shipping options</returns>
        public List <ShippingOption> GetShippingOptions(ShipmentPackage shipmentPackage, ref string error)
        {
            var shippingOptions = new List <ShippingOption>();

            if (shipmentPackage == null)
            {
                throw new ArgumentNullException("shipmentPackage");
            }
            if (shipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }
            if (shipmentPackage.ShippingAddress == null)
            {
                error = "Shipping address is not set";
                return(shippingOptions);
            }
            if (shipmentPackage.ShippingAddress.Country == null)
            {
                error = "Shipping country is not set";
                return(shippingOptions);
            }

            var shippingMethods = ShippingMethodManager.GetAllShippingMethods(shipmentPackage.ShippingAddress.CountryId);

            foreach (var shippingMethod in shippingMethods)
            {
                var shippingOption = new ShippingOption();
                shippingOption.Name        = shippingMethod.Name;
                shippingOption.Description = shippingMethod.Description;
                shippingOption.Rate        = GetRate();
                shippingOptions.Add(shippingOption);
            }

            return(shippingOptions);
        }