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
Dieser Beitrag wurde unter Magento, PHP veröffentlicht. Setze ein Lesezeichen auf den Permalink.

5 Antworten auf Magento: Barzahlung nur bei Selbstabholung aktivieren

  1. nerd sagt:

    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?

    • Jan sagt:

      Wenn ich Deine Rechtschreibung und Grammatik sehe, entziehe ich Dir glatt das Recht, in diesem Ton zu schreiben.

      Wahrscheinlich liest Du auch mit dieser Einstellung. Denn dann ist es schon wieder verständlich, dass Du das Gelesene nicht verstehst.

  2. Vielleicht schaust du einfach mal in das gepackte Modul, dann siehst du auch, wie der Pfad lautet :-) Aber nur für dich: app/code/local/Spranks/DeactivateCashPayment/etc/config.xml

    Aber wie gesagt, würde ich mittlerweile einfach das Modul hier http://www.magentocommerce.com/magento-connect/ship-and-pay-combo.html benutzen, das scheint das zu leisten mit einem einfachen Interface…

  3. Karl Prock sagt:

    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

  4. Die Extension ist nicht von mir, von daher solltest du vielleicht direkt den Programmierer der Extension darauf ansprechen…

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>