Der Ansatz von dot°NETt bringt zwei Probleme mit sich: Er funktioniert nicht, wenn der Kunde entweder das Land nachträglich ändert, oder eine Lieferadresse angibt, deren Land von dem der Rechnungsadresse abweicht.
Deshalb hier noch eine andere Lösung für das ursprüngliche Problem:
Beim CheckOut - Step3 wird die Zahlungsart "Nachnahme" nicht angezeigt, wenn der Kunde nicht nach Deutschland bestellt....
In der Datei /administrator/components/com_virtuemart/classes/ps_payment_method.php diese Stelle suchen:
PHP-Code:
// Start radio list
while ($db->next_record()) {
und danach das hier einfügen:
PHP-Code:
$ship_to_info_id = mosGetParam( $_REQUEST, 'ship_to_info_id' );
$q = "SELECT country FROM #__{vm}_user_info ";
$q .= "WHERE user_info_id='".$ship_to_info_id. "'";
$dbd = new ps_DB;
$dbd->query($q);
$country = $dbd->f("country");
if (($db->f("payment_method_id") != 19) || ($country == 'DEU')){ // 19 = Nachnahme (Nachsehen)
(Um die ID für die Zahlungsart "Nachnahme" zu erfahren, kann man z.B. vorübergehend
PHP-Code:
echo $db->f("payment_method_id");
vor die if-Abfrage stellen, dann werden im Frontend die ID's vor den Zahlungsarten angezeigt.)
Außerdem muss am Ende der Funktion eine abschließende geschweifte Klammer ergänzt werden, also kommen nach:
PHP-Code:
if ($horiz) {
echo(" ");
} else {
echo("<br />");
}
noch drei abschließende geschweifte Klammern, statt wie bisher zwei.
Bei mir funktioniert das soweit wie bisher getestet bestens...
mfG
Lesezeichen