Antwort #13 am: 21. August 2013, 03:35:15
Nö das:
for ($i = 0; $i < count($cod_zones); $i++) { if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) { $cod_cost = $cod_zones[$i + 1]; $cod_country = true; break; } elseif ($cod_zones[$i] == '00') { $cod_cost = $cod_zones[$i + 1]; $cod_country = true; break; // BOC dont't show cod on checkout_pament when cod fee in ot_cod_fee empty } else if ($cod_zones[$i] == 0) { return; } // EOC dont't show cod on checkout_pament when cod fee in ot_cod_fee empty $i++; } Geht nicht ganz, und zwar:
$cod_zones[$i] == 0 geht da unten nicht mehr, weil der '00'er
$cod_zones[$i] == '00' ja eigentlich immer vorhanden ist, bzw. sein sollte, und somit immer vorher greift.
... und
$cod_zones[$i] ist ja der erste wert also 'DE' 'AT' '00' usw., damit kann er eigentlich auch nicht 0 sein.
Also müsste es der zweite Wert
$cod_zones[$i + 1] sein, aber auch nicht dort unten.
Mein Vorschlag wäre dann:
for ($i = 0; $i < count($cod_zones); $i++) { if ($cod_zones[$i] == $order->delivery['country']['iso_code_2'] || $cod_zones[$i] == '00') { $cod_cost = $cod_zones[$i + 1]; if ($cod_cost == '') return; $cod_country = true; break; } $i++; } Damit kann man z. B. eingeben;
- DE:4.00 Modul wird angezeigt bei DE mit 4,00€
- DE:0.00 Modul wird angezeigt bei DE mit 0,00€
- DE: Modul wird bei DE NICHT angezeigt
Dann kann man für jedes beliebige Land pro Versandart die Nachnahme ganz deaktivieren, bzw. hat auch die Möglichkeit das Modul anzuzeigen mit 0.00€.
Gruß