diff --git a/ShippingRates.Tests/Models/UPS/UpsRatingRequestBuilderTests.cs b/ShippingRates.Tests/Models/UPS/UpsRatingRequestBuilderTests.cs
index 1a30f95..ebfd1d1 100644
--- a/ShippingRates.Tests/Models/UPS/UpsRatingRequestBuilderTests.cs
+++ b/ShippingRates.Tests/Models/UPS/UpsRatingRequestBuilderTests.cs
@@ -57,7 +57,8 @@ public void UpsRatingRequestBuilder_CustomerClassificationDefaults()
var shipmentNL = new Shipment(fromNL, AddressTo, Packages);
var internationalRequest = regularRatesBuilder.Build(shipmentNL);
- Assert.That(internationalRequest?.RateRequest?.CustomerClassification, Is.Null);
+ Assert.That(regularRatesRequest?.RateRequest?.CustomerClassification, Is.Not.Null);
+ Assert.That(regularRatesRequest?.RateRequest?.CustomerClassification.Code, Is.EqualTo("00"));
}
diff --git a/ShippingRates/Models/UPS/UpsRatingRequestBuilder.cs b/ShippingRates/Models/UPS/UpsRatingRequestBuilder.cs
index 0851279..ff09952 100644
--- a/ShippingRates/Models/UPS/UpsRatingRequestBuilder.cs
+++ b/ShippingRates/Models/UPS/UpsRatingRequestBuilder.cs
@@ -48,7 +48,8 @@ public UpsRatingRequest Build(Shipment shipment)
ShipTo = new ShipAddress(new UpsAddress(shipment.DestinationAddress)),
NumOfPieces = shipment.Packages.Count,
Package = shipment.Packages.Select(p => new UpsPackage(p, unitsSystem)).ToArray()
- }
+ },
+ CustomerClassification = GetCustomerClassification()
}
};
if (!string.IsNullOrEmpty(_configuration.ServiceDescription))
@@ -80,22 +81,6 @@ public UpsRatingRequest Build(Shipment shipment)
NegotiatedRatesIndicator = "Y"
};
}
- if (shipFromUS) // Valid if ship from US
- {
- var customerClassification = _configuration.CustomerClassification;
-
- if (_configuration.UseRetailRates)
- customerClassification = UPSCustomerClassification.RetailRates;
- if (_configuration.UseDailyRates)
- customerClassification = UPSCustomerClassification.DailyRates;
-
- var code = ((int)customerClassification).ToString("D2");
-
- request.RateRequest.CustomerClassification = new CustomerClassification()
- {
- Code = code,
- };
- }
if (shipment.Options.ShippingDate != null)
{
request.RateRequest.Shipment.DeliveryTimeInformation = new DeliveryTimeInformation()
@@ -112,6 +97,23 @@ public UpsRatingRequest Build(Shipment shipment)
return request;
}
+ CustomerClassification GetCustomerClassification()
+ {
+ var customerClassification = _configuration.CustomerClassification;
+
+ if (_configuration.UseRetailRates)
+ customerClassification = UPSCustomerClassification.RetailRates;
+ if (_configuration.UseDailyRates)
+ customerClassification = UPSCustomerClassification.DailyRates;
+
+ var code = ((int)customerClassification).ToString("D2");
+
+ return new CustomerClassification()
+ {
+ Code = code,
+ };
+ }
+
static string GetServiceCode(string serviceDescription)
{
if (serviceDescription.Length == 2)
diff --git a/ShippingRates/ShippingProviders/UPSProviderConfiguration.cs b/ShippingRates/ShippingProviders/UPSProviderConfiguration.cs
index b5cae00..3fbeff9 100644
--- a/ShippingRates/ShippingProviders/UPSProviderConfiguration.cs
+++ b/ShippingRates/ShippingProviders/UPSProviderConfiguration.cs
@@ -27,11 +27,13 @@ public class UPSProviderConfiguration
///
public string ServiceDescription { get; set; }
///
- /// Use retails rates (for shipping from a UPS retail location)
+ /// Use retails rates (for shipping from a UPS retail location).
+ /// Overrides CustomerClassification.
///
public bool UseRetailRates { get; set; }
///
- /// Use daily rates (for customers who have a scheduled pickup and/or an account that provides you with daily rates)
+ /// Use daily rates (for customers who have a scheduled pickup and/or an account that provides you with daily rates).
+ /// Overrides CustomerClassification.
///
public bool UseDailyRates { get; set; }
///
@@ -47,7 +49,13 @@ public class UPSProviderConfiguration
public enum UPSCustomerClassification
{
ShipperNumberRates = 0,
+ ///
+ /// Daily rates, for customers who have a scheduled pickup and/or an account that provides you with daily rates
+ ///
DailyRates = 1,
+ ///
+ /// Retails rates, for shipping from a UPS retail location
+ ///
RetailRates = 4,
RegionalRates = 5,
GeneralListRates = 6,