Het forum voor de webwinkel eigenaar en bezoeker van webwinkels.

 
Anonieme vraag
Berichten: 129
Lid geworden op: 03 november 2013

OpenCart postcode restricties instellen

01 december 2015

Vraagje voor de kenners van OpenCart:

De verzendkosten binnen Nederland zijn gratis.
De verzendkosten naar Belgie zijn 3,95 euro.

Bij mijn huidige checkout kan een Belgische klant als "landkeuze" Nederland laten staan terwijl zijn opgegeven adres correct is. Hij moet dus handmatig Belgie kiezen zodat de verzendkosten ook berekend worden. Regelmatig maak ik mee dat een Belgische klant 'Nederland' laat staan (per ongeluk of express) en dus geen verzendkosten betaald.

Is er een extensie of functie om ervoor te zorgen dat als een klant Nederland als verzendland kiest de postcode uit 4 cijfers + 2 letters MOET bestaan, en als hij Belgie als verzendland kiest de postcode uit 4 cijfers MOET bestaan? Als een belgische klant dan 'Nederland' laat staan krijgt hij een foutmelding ivm een incorrecte postcode.
 
Anonieme vraag
Berichten: 129
Lid geworden op: 03 november 2013

Re: OpenCart postcode restricties instellen

07 december 2015

Opgelost.
 
Gebruikersavatar
Ward
Berichten: 5343
Lid geworden op: 18 december 2010
Locatie: Eindhoven
Contacteer:

Re: OpenCart postcode restricties instellen

07 december 2015

Opgelost.
Altijd aardig als je de oplossing ook even deelt.
 
Anonieme vraag
Berichten: 129
Lid geworden op: 03 november 2013

Re: OpenCart postcode restricties instellen

09 december 2015

Klopt. Helaas bleek het in de praktijk toch voor conflicten te zorgen in combinatie met een niet standaard checkout welke al veel modificaties had gekregen ivm extra benodigde velden. De code op zich werkte prima.

Hieronder de code die gebruikt werd:
Zoek in de checkout controllers naar:
         if ($country_info && $country_info['postcode_required'] && (utf8_strlen(trim($this->request->post['postcode'])) < 2 || utf8_strlen(trim($this->request->post['postcode'])) > 10)) {
            $json['error']['postcode'] = $this->language->get('error_postcode');
         }
Vervang door:
            if ($country_info && $country_info['postcode_required']) {
               $zipcode = strtoupper(preg_replace('/\s/', '', trim($this->request->post['postcode'])));
               // iso_code_2 NL of BE
               if ($country_info['iso_code_2'] == 'NL') {
                  if (!preg_match ('/^([0-9]{5})([A-Z]{2})$/', $zipcode)) {
                     $json['error']['postcode'] = sprintf($this->language->get('error_postcode2'),$country_info['name']);
                  }
               } elseif ($country_info['iso_code_2'] == 'BE') {
                  if (!preg_match ('/^[0-9]{4}$/', $zipcode)) {
                     $json['error']['postcode'] = sprintf($this->language->get('error_postcode2'),$country_info['name']);
                  }
               } else {
                  if((utf8_strlen(trim($this->request->post['postcode'])) < 2 || utf8_strlen(trim($this->request->post['postcode'])) > 10)) {
                     $json['error']['postcode'] = $this->language->get('error_postcode');
                  }
               }
         }
$_['error_postcode2']                 = 'Postcode not valid for %s!';
Advertentie

Met Shopify maak je zelf je eigen webwinkel dankzij meer dan honderd thema’s en de complete appstore. Shopify sluit ook goed aan op dropshippers. De software is technisch volledig SEO-geoptimaliseerd en biedt alle sociale media-integraties. Meer info op Shopify.com.