private string GetPackagingTypeCode(OntracPackagingType packagingType) { switch (packagingType) { case OntracPackagingType.Letter: return("01"); case OntracPackagingType.CustomerSuppliedPackage: return("02"); case OntracPackagingType.Tube: return("03"); case OntracPackagingType.PAK: return("04"); case OntracPackagingType.ExpressBox: return("21"); case OntracPackagingType._10KgBox: return("25"); case OntracPackagingType._25KgBox: return("24"); default: throw new NopException("Unknown Ontrac packaging type code"); } }
private string CreateRequest(string accessKey, string username, string password, GetShippingOptionRequest getShippingOptionRequest, OntracCustomerClassification customerClassification, OntracPickupType pickupType, OntracPackagingType packagingType, bool saturdayDelivery) { var zipPostalCodeFrom = getShippingOptionRequest.ZipPostalCodeFrom; var zipPostalCodeTo = getShippingOptionRequest.ShippingAddress.ZipPostalCode; var countryCodeFrom = getShippingOptionRequest.CountryFrom.TwoLetterIsoCode; var countryCodeTo = getShippingOptionRequest.ShippingAddress.Country.TwoLetterIsoCode; var stateCodeFrom = getShippingOptionRequest.StateProvinceFrom?.Abbreviation; var stateCodeTo = getShippingOptionRequest.ShippingAddress.StateProvince?.Abbreviation; _orderTotalCalculationService.GetShoppingCartSubTotal(getShippingOptionRequest.Items.Select(x => x.ShoppingCartItem).ToList(), false, out decimal _, out List <DiscountForCaching> _, out decimal orderSubTotal, out decimal _); // Rate request setup - Total Dimensions of Shopping Cart Items determines number of packages var usedMeasureWeight = GetUsedMeasureWeight(); var usedMeasureDimension = GetUsedMeasureDimension(); _shippingService.GetDimensions(getShippingOptionRequest.Items, out decimal widthTmp, out decimal lengthTmp, out decimal heightTmp, true); var length = ConvertFromPrimaryMeasureDimension(lengthTmp, usedMeasureDimension); var height = ConvertFromPrimaryMeasureDimension(heightTmp, usedMeasureDimension); var width = ConvertFromPrimaryMeasureDimension(widthTmp, usedMeasureDimension); var weight = ConvertFromPrimaryMeasureWeight(_shippingService.GetTotalWeight(getShippingOptionRequest, ignoreFreeShippedItems: true), usedMeasureWeight); if (length < 1) { length = 1; } if (height < 1) { height = 1; } if (width < 1) { width = 1; } if (weight < 1) { weight = 1; } var totalPackagesDims = 1; var totalPackagesWeights = 1; if (IsPackageTooHeavy(weight)) { totalPackagesWeights = Convert.ToInt32(Math.Ceiling((decimal)weight / (decimal)MAXPACKAGEWEIGHT)); } if (IsPackageTooLarge(length, height, width)) { totalPackagesDims = Convert.ToInt32(Math.Ceiling((decimal)TotalPackageSize(length, height, width) / (decimal)108)); } var totalPackages = totalPackagesDims > totalPackagesWeights ? totalPackagesDims : totalPackagesWeights; if (totalPackages == 0) { totalPackages = 1; } //The maximum declared amount per package: 50000 USD. var InsureCost = _ontracSettings.InsurePackage ? Convert.ToInt32(orderSubTotal / totalPackages) : 0; //var Product = "S"; var res = "true"; var urlString = "?pw=" + password + "&packages=ID1;" + zipPostalCodeFrom + ";" + zipPostalCodeTo + ";" + res + ";0.00;false;" + InsureCost + ";" + weight + ";" + length + "X" + width + "X" + height + ";"; return(urlString); }