OpenCart postcode restricties instellen

1
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.

Re: OpenCart postcode restricties instellen

4
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:

Code: Selecteer alles

         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:

Code: Selecteer alles

            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');
                  }
               }
         }

Code: Selecteer alles

$_['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.