Tuli vastaan vähän erikoisempi WooCommerce-keissi Ahvenanmaan toimitusten kanssa.
Ajatushan olisi äkkiseltään aika yksinkertainen: jos et halua toimittaa Ahvenanmaalle, poistat Ahvenanmaan WooCommercen sallituista myynti- tai toimitusmaista ja homma on sillä selvä. Ei välttämättä olekaan.
Törmäsin tähän itse Shipitin WooCommerce-lisäosan kanssa. Vaikka Ahvenanmaan poistaa sallituista maista, asiakas voi edelleen valita maaksi Suomen ja syöttää Ahvenanmaan postinumeron. Shipitin näkökulmasta kyseessä on silloin edelleen Suomi, mikä on tietysti sinällään ihan loogista – Ahvenanmaahan on osa Suomea.
Se ei kuitenkaan auta hirveästi siinä tilanteessa, jos verkkokauppias on nimenomaan päättänyt, ettei Ahvenanmaalle toimiteta.
Miksi Ahvenanmaa on tässä vähän oma tapauksensa?
Ahvenanmaa kuuluu Suomeen ja EU:n tullialueeseen, mutta se ei kuulu EU:n arvonlisävero- eikä valmisteveroalueeseen. Ahvenanmaan ja muun Suomen välillä on tämän vuoksi myös veroraja.
Lisäksi pakkausten tuottajavastuu on tuonut tähän viime aikoina vielä oman lisämausteensa.
Ahvenanmaalla on oma pakkausten tuottajavastuujärjestelmänsä, joka on erillinen Manner-Suomen järjestelmästä. Eli jos myyt ja toimitat tuotteita Ahvenanmaalle, asiaa ei välttämättä voi käsitellä ihan samalla tavalla kuin tavallista kotimaan myyntiä.
Jos Ahvenanmaalle ei joka tapauksessa ole tarkoitus toimittaa, kannattaa se siis estää myös teknisesti WooCommercen puolella.
Estetään toimitustavat Ahvenanmaan postinumeroilta
Ahvenanmaan postinumerot ovat välillä 22000–22999.
Tehdään siis pieni snippet, joka tarkistaa kassalla sekä maan että postinumeron.
- Jos maaksi on valittu Ahvenanmaa (
AX), toimitustapoja ei näytetä. - Jos maaksi on valittu Suomi ja postinumero on välillä 22000–22999, toimitustapoja ei myöskään näytetä.
Näin estetään myös se tilanne, jossa asiakas valitsee maaksi Suomen mutta käyttää Ahvenanmaan postinumeroa.
Tässä koodisnippet
Koodin voi lisätä esimerkiksi lapsiteeman functions.php-tiedostoon tai Code Snippets -lisäosan kautta.
/**
* @snippet Estä toimitukset Ahvenanmaalle WooCommercessa
* @author Niko Vittaniemi - WPopas.fi
* @testedwith WooCommerce 11.1.0
*/
function wpopas_block_aland_shipping_rates( $rates, $package ) {
$country = isset( $package['destination']['country'] )
? strtoupper( $package['destination']['country'] )
: '';
$postcode = isset( $package['destination']['postcode'] )
? preg_replace( '/\D/', '', $package['destination']['postcode'] )
: '';
$is_aland_country = 'AX' === $country;
$is_aland_postcode = 'FI' === $country
&& 5 === strlen( $postcode )
&& (int) $postcode >= 22000
&& (int) $postcode <= 22999;
if ( $is_aland_country || $is_aland_postcode ) {
return array();
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'wpopas_block_aland_shipping_rates', 100, 2 );
Snippet on testattu WooCommerce 11.1.0 -versiolla.
Mitä tämä käytännössä tekee?
Kun asiakkaan toimitusosoite osuu Ahvenanmaalle, WooCommerce ei palauta kassalle yhtään toimitustapaa.
Tämän hyvä puoli on se, ettei ratkaisu ole sidottu pelkästään Shipitiin. Sama esto koskee myös WooCommercen omia toimitustapoja ja muita lisäosia, jotka käyttävät WooCommercen normaalia toimitustapajärjestelmää.
Eli vaikka kauppaan lisättäisiin myöhemmin uusia toimitustapoja, ne eivät vahingossa ilmesty Ahvenanmaalle tarjolle.
