Laut Studie von ibi research, nimmt die Zahlart Rechnung zu 81% einen sehr großen Einfluß auf den Umsatz in Onlineshops. Aus diesem Grund greifen immer mehr Onlinehändler zur Zahlart Rechnung. Die Einschränkungen zur Unterstützung des Risikomagaments sind für diese Zahlart vielfältig.
Der eine möchte dass Kunden eine Mindestanzahl Aufträgen mit einem Warenwert der Summe X abgeschlossen haben. Andere haben einen Mindestbestellwert für Rechnungen oder begrenzen die Zahlart Rechnung auf einen Maximalbetrag.
Aus diesem Grund haben wir das Zahlungsmodul Mxperts - Invoice mit der Version 1.0.5 um einige Features erweitert. Folgende Einstellungen können nun vorgenommen werden:
- Rechnung nur für bestimmte Kundengruppen
- Rechnung nur bei einer Mindestanzahl abgeschlossener Aufträge
- Rechnung nur bei einem Mindestwarenwert abgeschlossener Aufträge
- Rechnung nur ab einem Mindestbestellwert
- Rechnung nur bis zu einem Maximalbestellwert
Das Modul kann über das Magento-Backend installiert/aktualisiert werden und ist auf Magento-Connect verfügbar.
SVN: http://www.mxperts.de/svn/mxperts-invoice/
Infos zur Programmierung:
Die zusätzlichen Einstellungen in unserem Rechnungsmodul sind auch für andere Zahlverfahren interessant. Deshalb werde ich diese Optionen hier im Detail erläutern.
Wer ein Zahlungsmodul entwickeln möchte, kann mit unseem Tutorial Payment-Modul “Rechnung” - Teil1 (Basismodul) beginnen.
Das Model unseres Payment-Moduls ist von der Klasse Mage_Payment_Model_Method_Abstract abgeleitet. Den PHP-Code dieser Klasse finden Sie in der Datei app\code\core\Mage\Payment\Model\Method\Abstract.php. Nehmen Sie sich die Zeit, dann sehen Sie welche Funktionen Sie überschreiben und einsetzen können.
Um die Anzeige eines Payment-Modul zu steuern benutzen wir die Funktion canUseCheckout(). Diese wird in unsere Klasse integriert und mit den notwendigen Abfragen ergänzt. Damit wir in Abhängigkeit zu bereits abgeschlossenen Aufträgen reagieren können, müssen die Kundenaufträge eingelesen werden. Dies erfolgt mit folgender Funktionen:
public function initOrders() {
$this->_orders = Mage::getResourceModel('sales/order_collection')
->addAttributeToSelect('*')
->joinAttribute('shipping_firstname', 'order_address/firstname', 'shipping_address_id', null, 'left')
->joinAttribute('shipping_lastname', 'order_address/lastname', 'shipping_address_id', null, 'left')
->addAttributeToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
->addAttributeToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE)
->addAttributeToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates()))
->addAttributeToSort('created_at', 'desc')
->load();
}
Beachten Sie den Filter STATE_COMPLETE, damit werden nur abgeschlossene Aufträge abgefragt.
Nachdem uns die Aufträge vorliegen, können wir die Anzeige des Rechnungsmoduls in Abhängigkeit abgeschlossener Aufträge sehr einfach realisieren. Denn wir müssen einfach nur die Anzahl der Aufträge ermitteln.
public function ordersCount() {
return count($this->_orders);
}
Für die Begrenzung des Auftragswertes ermitteln wir den Bruttopreis der Produkte aller abgeschlossenen Bestellungen. Dafür ist die Funktion ordersValue() zuständig.
public function ordersValue() {
$total = 0;
if (count($this->_orders) > 0) {
foreach($this->_orders as $order) {
$total += $order->getbase_subtotal();
}
}
return $total;
}
Nun folgen noch die Abfragen auf den aktuellen Warenkorb - genauer gesagt Mindest- und Maximalbestellwert. Dafür ermitteln wir den Gesamtbetrag aller Produkte aus dem Warenkorb.
public function initAmount() {
$sess = Mage::getSingleton('checkout/session');
$items = $sess->getQuote()->getItemsCollection()->getItems();
$value = 0;
foreach($items as $item) {
$value += $item->getCalculationPrice() * $item->getQty();
$value += $item->getTaxAmount();
}
$this->_amount = $value;
}
Schlußendlich können wir die canUseCheckout() mit den von uns erstellten Funktionen fertigstellten.
public function canUseCheckout()
{
$canUse = true;
if($this->getConfigData('customergroups') != '') {
$customer_groups = explode(',',$this->getConfigData('customergroups'));
$activecustomer_groups_id = $this->getCurrentCustomerGroup();
if (!in_array($activecustomer_groups_id,$customer_groups)) {
$canUse = false;
}
}
if ($canUse):
$this->initOrders();
$canUse = ( $this->ordersCount() >= (int)$this->getConfigData('orderscount') );
endif;
if ($canUse):
$canUse = ( $this->ordersValue() >= (float)$this->getConfigData('ordersamount') );
endif;
if ($canUse):
$this->initAmount();
if ((int)$this->getConfigData('minamount') > 0) {
$canUse = ( $this->_amount >= (float)$this->getConfigData('minamount') );
}
endif;
if ($canUse):
if ((int)$this->getConfigData('maxamount') > 0) {
$canUse = ( $this->_amount < (float)$this->getConfigData('maxamount') );
}
endif;
return $canUse;
}
Über die system.xml haben wir unser Modul fürs Backend erweitert.

Damit wünsche ich viel Erfolg beim Einsatz mit dem Rechnungsmodul. Ich hoffe, dass wir eine Anregung für andere Zahlumgsmodule geben konnten.
Viele Grüße
Johannes Teitge
Hi,
sehr gute sache. Ein Modul für Lastschrift mit den selben Einstellungen wären auch ne gute Sache.
Gruss, Mati
Hi,
hab das Modul grad instaliert und muss feststellen das es wohl in Zusammenarbeit mit dem “Market Ready” Modul nicht zusammen arbeitet.
Ist das Problem bekannt oder eher Unfähigkeit meiner seits?
Gruss, Tom
Hallo Tom,
danke für Dein Feedback, hast Du Details zu den Problemen?
Gruß
Johannes Teitge
Ja also mein Magento ist die aktuellste Stable version.
Dazu das “Market Ready Modul” in der Version 0.1.6, sprich das aktuelle.
So bald ich das Mxperts-Invoice aktiviere und im Frontend auf bestellen klicke passiert folgendes:
Es sollte nun die Bestellabwicklung geladen werden wo die Benuzterinfos eingegeben werden (bestellen als Gast usw)
Aber die Maske kommt nicht, wird ausgegraut dargestellt.
Blöd zu beschreiben, deshalb hier der link zum screenshot.
http://www.tcf-group.com/image/magento_prob.jpg
Würd mich über eine Lösung freuen!
Vielen Dank
Gruß Tom
Sorry for writing in English, but my German is not good enough.
Is it possible to add a fee for invoicing?
Thanks in advance.
1. GROSSES DANKESCHÖN
2. habe ich einen kleine Bug wenn ich Bestellungen welche Status Bearbeitung haben stornieren will gehe diese auf Vollständig…
Hat jemand dieses BUG auch noch?
Gruss BOODOO
1. GROSSES DANKESCHÖN
2. Ich habe einen Bug wenn ich Bestellungen welche auf Status VERARBEITUNG sind, stornieren will gehen diese auf Status VOLLSTÄNDIG anstatt STORNIERT. Hat jemand diesen BUG auch noch und ev. eine Lösung
Dankeschön
Ich habe das gleiche Problem mit dem Status aber leider auch keine Lösung dafür oder auch nur ansatzweise eine Idee, woran es liegen könnte. Wenn es nur einige betrifft, könnte ein installiertes Modul dafür verantwortlich sein.
Nette Idee das Rechnungsmodul, jedoch reißt es bei mir den kompletten kompletten Checkout-Prozess ins Grab.
Installiert ist Magento Version 1.3.2.4 sowie
market_ready_germany 0.1.7 (beta)
Vielleicht findet sich ja eine Lösung.
Gruß, Christian
Ich habe market_ready_germany nicht im Einsatz. Aber wir werden der Sache nachgehen.
Hey, cooles Modul, wahrscheinlich, bei mir funktioniert es leider irgendwie nicht.
Ich benutz’ Magento 1.3.2.4.
Ich hab das Modul per Magento Connect installiert, dann in der Konfig. meine Einstellungen gesetzt, aber die Zahlfunktion taucht dann beim bestellen nicht mehr auf.
Ich habe diese Bezahlfunktion als einzige aktiv.
Wüsste jmd warn das liegen könnte??
Greetz,
BP
Sind auch die richtigen Benutzergruppen für das Modul gesetzt?
Gruß
Johannes Teitge
Wie kann ich Rechnungen denn wieder löschen? Für den laufenden Betrieb vielleicht unnötig, in der Anfangszeit wäre das aber sicher sehr hilfreich. Danke!
Hallo,
wir verwenden bei unseren Projekten die Extension Vireo Delete-Any-Order - https://www.yireo.com/software/delete-any-order/buy-now
Viele Grüße
Johannes Teitge