Zahlart Rechnung mit Mxperts-Invoice

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
War diese Antwort hilfreich?
LikeDislikeHi,
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
War diese Antwort hilfreich?
LikeDislikeHallo Tom,
danke für Dein Feedback, hast Du Details zu den Problemen?
Gruß
Johannes Teitge
War diese Antwort hilfreich?
LikeDislikeJa 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
War diese Antwort hilfreich?
LikeDislikeSorry for writing in English, but my German is not good enough.
Is it possible to add a fee for invoicing?
Thanks in advance.
War diese Antwort hilfreich?
LikeDislikeHallo,
ich arbeite gerade an einer Modifizierung mit Aufschlag. Leider kommt es zu folgendem Fehler:
Wenn ich eine Rechnung erstelle oder erstellen lasse bei Bezahlung über dieses Modul, wird alles auf bezahlt gesetzt, AUSSER dem Netto-Betrag des Aufschlags.
Hat jemand Lust mir dabei zu helfen? Bin derzeit sehr ratlos.
BG
Andreas
War diese Antwort hilfreich?
LikeDislike1. 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
War diese Antwort hilfreich?
LikeDislike1. 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
War diese Antwort hilfreich?
LikeDislikeIch 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.
War diese Antwort hilfreich?
LikeDislikeNette 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
War diese Antwort hilfreich?
LikeDislikeIch habe market_ready_germany nicht im Einsatz. Aber wir werden der Sache nachgehen.
War diese Antwort hilfreich?
LikeDislikeHey, 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
War diese Antwort hilfreich?
LikeDislikeSind auch die richtigen Benutzergruppen für das Modul gesetzt?
Gruß
Johannes Teitge
War diese Antwort hilfreich?
LikeDislikeWie 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!
War diese Antwort hilfreich?
LikeDislikeHallo,
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
War diese Antwort hilfreich?
LikeDislikeHallo,
in Magento 1.4.1.1 erscheinen in einem Multistore-Setup bei Generierung der Rechnung nicht die in der StoreView angelegten Kontodaten, sondern die der Standardkonfiguration. Lässt sich dies ändern?
Viele Grüße,
Achim
War diese Antwort hilfreich?
LikeDislikeWofür steht die Option “Rechnungs – E-Mail”?
Wird die Rechnung direkt mit der Bestellung automatisch verschickt?
Ich suche nämlich nach einer Lösung, dass nach Abschicken der Bestellung direkt die Rechnung mit im Anhang beigefügt wird.
War diese Antwort hilfreich?
LikeDislikeDas Modul funktioniert unter 1.6 nur noch teilweise. Im Bestellvorgang und in den E-Mails wird die Zahlart nicht wiedergegeben. Dort bleibt alles leer. Woran liegts? Ein Update wäre super!
War diese Antwort hilfreich?
LikeDislike