Closed (fixed)
Project:
FedEx Shipping
Version:
6.x-2.x-dev
Component:
Code
Priority:
Normal
Category:
Feature request
Assigned:
Reporter:
Created:
13 Apr 2009 at 03:48 UTC
Updated:
17 Sep 2010 at 17:12 UTC
Jump to comment: Most recent file
Comments
Comment #1
tr commentedA couple of things going on. I assume you're talking about Ground services. FedEx has FedEx Ground, which delivers to both commercial and residential addresses, and FedEx Home Delivery, which delivers only to residential addresses. They're actually separate services. FedEx Ground will charge a surcharge if you ask them to deliver to a residential address.
I label FedEx Ground as "FedEx Ground -- Commercial Address" and FedEx Home Delivery as "FedEx Ground -- Residential Address". I should probably change the labels. If you are seeing the former WITH a residential surcharge, like you indicate, then it is a residential quote using FedEx Ground. If you do not get a quote for the latter, it's probably because that service is not available for your package - for example your package weight could be too high - there's a 70lb limit for FedEx Home Delivery. There's no way in code to check to see if the address is really "residential", so the actual address doesn't matter.
Comment #2
worldcoast commentedPerhaps it would be a better idea to simply label it as Fedex Ground then in the interest of the end user?
I can see someone being confused by it :)
To check if FedEx is determining it to be residential or commercial, one simply needs to check if the home delivery surcharge was returned in the quote :)
Comment #3
tr commentedI changed the labels in the dev release on 4/13.
Comment #4
jantoine commentedI am working with the 6.x-2.x version as TR specified that all new features will be implemented here and I think we can improve the way we determine commercial or residential deliveries? The current versions allows you to select "Commercial address" to only offer commercial options to customers or "Residential address (extra fees)" to only offer residential options to customers.
I have both distributor (commercial) and consumer (residential) customers that I sell to. With the current settings, I can use either residential rates charging my distributors the residential delivery fee or I can user commercial rates in which case FedEx will charge me the residential fee for all deliveries to residential addresses.
FedEx does not determine if an address is commercial or residential. When requesting rates, we have to specify if the address is commercial or residential and FedEx returns the appropriate shipping rates. This means that we can't use worldcoast's suggestion of determining commercial or residential based on a residential fee being present or not because the fee is only there if we tell FedEx to include it.
In the 0.4 version I released on the Ubercart contrib page, I answered this question by determining whether the delivery was commercial or residential based on the company field of the delivery address being filled in or not. I also added the "Leave company blank for residential deliveries." message under the company field to help prevent customers from adding a company for residential deliveries.
There may be a better way to determine whether to ship commercial vs residential, but I would at least like to open a discussion and offer a patch implementing the "delivery type based on delivery company field" solution.
I also thought we could offer both solutions, perhaps a drop down with the following options:
"Delivery type based on the delivery company field"
"Specify delivery type for all shipments"
Selecting the first would not change the settings form. Selecting the second option would then expand to reveal the commercial and residential radio buttons.
Just some thoughts for discussion, and a patch implementing what was previously available in the 0.4 version.
Cheers,
Antoine
Comment #5
worldcoast commentedAntoine,
I was under the impression that for a commercial shipment if the delivery goes to a residential zone the 2.50 fee is returned with the shipping quote. If it's not returned with the shipping quote and the driver isn't a dick it wont get charged.
Comment #6
jantoine commentedworldcoast
I don't believe FedEx does any address checking. When requesting a quote we specify either commercial or residential and FedEx returns the rates requested. In the past, when I have sent a shipment out as commercial but it was delivered to a residence, the driver makes a note and FedEx charges the residential fee to our account. This is has been my experience anyways. TR, please correct me if I am wrong.
Cheers,
Antoine
Comment #7
tr commentedYou are correct, the FedEx API doesn't do any address checking, so the rate that's returned from the server depends solely on what you tell them about the destination address, e.g. is it residential or commercial.
The rate you're actually charged depends on the actual conditions, which may be different from what you specified in the quote request. Delivery to a residential address will *always* (in my experience) be charged a surcharge if you send the package by FedEx Ground, which is a commercial service. FedEx Ground + surcharge is more expensive than FedEx Home Delivery, so if you *know* the address is a residence then it's cheapest to send it Home Delivery.
Comment #8
tr commentedAbout the patch ...
As you've noted, the module currently allows the admin to specify only whether all addresses are commercial or all addresses are residential - it doesn't support both simultaneously. The main purpose here was to let the *store* control how the packages would be rated, rather than let the *customer* specify. This is because, if the customer specifies wrongly, the customer will get cheaper shipping *and* the store will pay more to FedEx for the shipment. The way it is now, if the admin selects "residential" then all commercial customers will end up paying a little more for shipping, but residential customers will pay the right amount. If the admin selects "commercial", then all commercial customers will pay the right amount but residential customers will pay a little LESS for their shipping (with the store bearing the price difference). I wanted to leave this choice up to the store owner, since it impacts both shipping-related income and expenses.
I think the current code works fine for situations where the vast majority of a store's customers are either in the commercial or in the residential category. Where it breaks down is when the store has a substantial percentage of both types of customers. Such as in your case.
I hesitate to leave the determination of residential or commercial up to the customer, because that makes it so the shipping costs are partially out of the store's control. In particular, using the "company" field on the checkout page is prone to error because of home-based businesses, which have a company name but a residential address. (And may not want to divulge that their address is "residential" when doing business ...)
Your "both solutions" option is better, as it gives more choice to the store owner, but still not perfect.
One thing I've been thinking of is the broader issues of doing B2B in Ubercart. I currently handle these matters by assigning roles to my commercial customers, who then see different pricing, payment, tax and delivery options depending on their roles. Do you think integrating roles into the FedEx module would suit your needs? That is, allow the admin to specify which roles are considered commercial addresses, all others being residential (or vice versa), maybe even have weight/price markups dependent upon role.
Comment #9
jantoine commentedTR,
I really like the idea of using roles to determine commercial vs. residential shipments. All we need is to be able to assign a shipping type (residential or commercial) and a weight for which roles take precedence and I think this would do the trick. It sounds like you might already have code that does this? If not I can begin working on a patch if you don't have the time.
Cheers,
Antoine
Comment #10
tr commentedI took this in a different direction over the past few months. The most recent dev version of the FedEx module now has the option to use the FedEx Address Validation API to automatically determine whether FedEx considers an address to be Residential or Commercial. The admin still has the choice to select Residential or Commercial for all packages, but this choice is used only when Address Validation is disabled or fails. I think this should address all the concerns in this thread, specifically comment #4, and I think this is the ultimate solution to the Residential/Commercial dilemma.
Note that use of the Address Validation service requires you to call FedEx and have them enable this service for your account. This is true for the Test and Production servers independently - you do not automatically have permission to run Address Validation on either server, and trying to use this feature without permission will result in an "Authentication Failed" error.
Marking this thread as "needs review" because I would greatly appreciate someone other than me trying this out and leaving feedback here, before I turn this dev into version 6.x-3.0 of the FedEx module.
Comment #11
jantoine commentedTR,
Fantastic solution! I'll test this out when I get to the office tommorow!
Cheers,
Antoine
Comment #12
tr commented