Right, for what it's worth, here's what I've done to temporarily address the issue:
- Created new countries for each island; Guernsey, Jersey, Alderney, Herm and Sark
- Created a new Geo Zone called "Channel Islands"
- Added each of the islands/countries to the "Channel Islands" Geo Zone
This puts the Channel Islands into the system so that customers can at least register and enter addresses. But it left the issue of shipping methods unresolved, so I then:
- Enabled the "Weight Based Shipping" shipping extension for only the "Channel Islands" Geo Zone and copied the postage rates from Royal Mail First Class Recorded.
What this means is that customers can now register and checkout with addresses in Jersey, Guernsey etc and do not get charged tax because the Channel Islands are not within the UK, but they CAN select Royal Mail First Class Recorded as a shipping method due to the above shipping fix.
However, issues remain. When the user checks out, they do see Royal Mail First Class Recorded as an option for Channel Islands shipping (through the "Weight Based Shipping" extension modification), however they also see "International Signed For" (but not Airmail, for some reason?!) because the Royal Mail extension sees the Channel Islands countries as being outside the UK. More importantly, by modifying the "Weight Based Shipping" extension to cater for Channel Islands shipping, it is only possible to include one postage method per zone due to the restrictions of the extension - so customers in the Channel Islands can only select First Class Recorded and not the other Royal Mail UK shipping methods, e.g. First Class Standard, Special Delivery, etc.
I can see a solution but it's tricky. Keeping the newly created country/zone setup for the Channel Islands countries as detailed above, we would need to simply modify the royal_mail.php model file instead of editing the "Weight Based Shipping" extension. What we would need to do is:
1) Edit the "if" statement at the start of each UK postage method to say "if country=UK
OR zone=Channel Islands", instead of just "if country=UK" - this would result in all UK Royal Mail shipping methods becoming available for customers in the Channel Islands (I think).
2) Edit the international methods to somehow filter
out the Channel Islands zone / countries so that the international postage methods do not show when a customer from the Channel Islands checks out.
I'm pretty sure this would solve the problem - does anybody see any potential issues with it? More importantly, can anybody suggest better code for editing the royal_mail.php model file than my suggestion below? My suggestion is changing the "if" statements to include each of the Channel Islands countries, e.g:
if($address['iso_code_2']!='GB')
would change to
if(($address['iso_code_2']!='GB') && ($address['iso_code_2']!='GG') && ($address['iso_code_2']!='JE') && ($address['iso_code_2']!='AY') && ($address['iso_code_2']!='HM') && ($address['iso_code_2']!='SS'))
for international methods. Any better suggestions?