Magento: Barzahlung nur bei Selbstabholung aktivieren

Ich werde hier immer mal wieder Magento Module, die ich geschrieben habe, vorstellen. Heute geht es los mit einem kleinen Modul, das die Zahlungsart „Barzahlung“ nur dann aktiviert, wenn als Versandart „Selbstabholung“ ausgewählt wurde. Das Modul lässt sich einfach an individuelle Anforderungen anpassen.

Ich gehe hier davon aus, dass die Zahlungsart Scheck/Zahlungsanweisung als „Barzahlung bei Selbstabholung“ genutzt wird.

Zunächst das Herzstück des Moduls – die config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Spranks_DeactivateCashPayment>
            <version>0.1.0</version>
        </Spranks_DeactivateCashPayment>
    </modules>

    <global>
        <models>
            <payment>
                <rewrite>
                    <method_checkmo>Spranks_DeactivateCashPayment_Model_Payment_Method_Checkmo</method_checkmo>
                </rewrite>
            </payment>
        </models>
    </global>
</config>

Wie man erkennen kann, wird das Model der Zahlungsart Checkmo mit meinem Modul überschrieben. Will man eine andere Zahlungsart manipulieren, muss man das Model des entsprechenden Moduls überschreiben. Schauen wir uns nun die überschreibende Klasse in der Datei Checkmo.php an:

class Spranks_DeactivateCashPayment_Model_Payment_Method_Checkmo extends Mage_Payment_Model_Method_Checkmo
{

    public function isAvailable($quote=null)
    {
        if ($quote == null) {
	        return true;
        }
        $shippingMethodCode = $quote->getShippingAddress()->getShippingMethod();
        if ($shippingMethodCode == 'storepickupmodule_pickup') {
            return true;
        }
        return false;
    }

}

Wir holen uns erst aus der Quote den Code des ausgewählten Versandmoduls (Zeile 6). Dann prüfen wir, ob es sich um das Versandmodul Selbstabholung handelt. Wenn ja, sagen wir, dass die Zahlungsart verfügbar sein soll und ansonsten nicht.

Großer Effekt mit kleinem Aufwand. Jetzt bestellt kein Kunde mehr aus dem Ausland und will bar zahlen 🙂 Wenn es euch geholfen hat oder ihr Anregungen/Fragen/Ideen habt, schreibt doch einen Kommentar oder liked den Artikel auf Facebook!

Das ganze Modul als zip-Archiv: DeactivateCashPayment

[UPDATE] Gerade eben landete in meinem RSS Postkasten ein sehr schönes neues Modul, welches genau oben beschriebenes Problem löst – und das für alle Liefer- und Zahlarten. Ich habe das Modul nicht getestet, wenn es jemand erfolgreich im Einsatz hat, würde ich mich über einen Kommentar freuen. Das Modul gibt es auf Magento Connect.

[UPDATE 2] Eben gerade ist mir noch aufgefallen, dass eine hässliche Exception geworfen wird, wenn der Quote null ist. Daher wurde die Funktion isAvailable oben um zwei Zeilen erweitert.

Mymonki_Ship2pay

4 Gedanken zu „Magento: Barzahlung nur bei Selbstabholung aktivieren“

  1. die anleitung würde gut sein wenn du so schreiben würdest das man es versteht. wo soll die config.xml hin welche der drei checkmo.php dateien meinst du was ist die „quote“?

    update: wie heißt das modul?

  2. Wie wäre es mit einem update? Offenbar haben es einige Leute schon auf Version 1.7 umsonst installiert weil es da noch immer nicht funktioniert O.O

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert