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
3Altijd aardig als je de oplossing ook even deelt.Anonieme vraag schreef:Opgelost.
Re: OpenCart postcode restricties instellen
4Klopt. 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:
Vervang door:
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');
}
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
Wil je zelf je eigen webwinkel maken? Met JouwWeb is dat heel eenvoudig! Dankzij een slimme keuzehulp ontwerp je zelf je eigen thema of huisstijl. De software is technisch volledig doorontwikkeld en naast het Nederlands ook in het Engels beschikbaar. Ruim 250.000 ondernemers gingen je voor!