Aus Bestellung automatisch Rechnung generieren

In Magento besteht nicht automatisch zu jeder Bestellung eine Rechnung. Das heißt das zu einer Bestellung erst eine Rechnung erstellt werden muss. Das kann natürlich mit ein paar Code-Zeilen auch automatisch gehen:

$order = Mage::getModel('sales/order_invoice')->loadByIncrementId(100000006);

$invoice = $order->prepareInvoice();
$invoice->register()->pay();
$invoice->save();

$pdf = Mage::getModel('sales/order_pdf_invoice')->getPdf( array($invoice) );

Das PDF lässt sich dann natürlich auch noch per E-Mail verschicken:

$mail = new Zend_Mail();
$mail->setSubject('Order '. $order->getIncrementId() );
$mail->setBodyText('Test');

$mail->setFrom('mail@absender.test');
$mail->addTo('mail@empfaenger.test', 'Ein Empfänger');

$attachment = $mail->createAttachment( $pdf->render() );
$attachment->filename = $order->getIncrementId().'.pdf';

$mail->send();

In Kombination mit dem Artikel Events in Magento: Export bei neuer Bestellung lässt sich so auch automatisch eine Rechnung an den Kunden verschicken. Ein kleiner Tipp: Aus Erfahrung übersehen Kunden separate E-Mails mit dem Betreff "Ihre Rechnung zu 100000006" weniger schnell als wenn die Rechnung direkt im Anhang der Bestell-Email verschickt wird.



Ein Beitrag von Tobias Vogt
Tobias's avatar

Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Seit 2016 ist er Mitgründer und CTO bei der connect-io GmbH, einer Magento-Agentur mit Sitz im idyllischen Paderborn-Salzkotten. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.

Alle Beiträge von Tobias

Kommentare
skander am

hallo,

wie kann ich das gleiche wie dieses Beispiel aber es soll hier ein Lieferschein automatisch hergestellt. Danke

Daniel Kussin am

Hallo Michael,

ich glaube deine Bedenken sind unbegründet, weil du die automatische Generierung der Rechnung bzw. des Versandes der Rechnung abhängig vom aktuellen Bestellstatus machen solltest, d.h. erst wenn (z.B.) der Status "processing" erreicht ist, dann wird die Rechnung gemailt und danach aktualisierst du den Status auf (z.B.) "complete".

@Comment vom 19.03.2012 - Lösung:

Gruß Daniel

Michael am

Hallo,

ich sehe es als etwas kritisch an, eine Rechnung direkt zu erzeugen, da diese dann im System auch direkt als bezahlt (Bestellung -> Rechnungen) gekennzeichnet wird.

Daniel Kussin am

Hallo Tobias,

dein Code funktioniert super, wenn das Zahlungsmodul nicht selbstständig eine Rechnung erzeugt (z.B. PayPal), aber sobald von einem Zahlungmodul die Rechnung nach Zahlungseingang selbstständig eine Rechnung generiert wird (z.B. EOS), dann wird von deinem Code eine zusätzliche Rechnung erzeugt und zwar ohne Artikel und damit auch ohne Betrag bzw. die Rechnungssumme beträgt 0,00 Euro.

Weißt du, wie ich programmatisch die bereits erstellte Rechnung an die E-Mail anhängen kann?

Gruß Daniel

Tobias Vogt am

Hallo Yalgin,

du müsstest ein eigens Modul erstellen. Danach könntest du den Code in einer Controller-Action verwenden. Zum Einstieg empfehle ich dir das Handbuch für Entwickler von Vinai Kopp :)

Tobi

Yalgin am

Hallo in welcher Datei muss ich das hier editieren? liebe Grüße und schonmal vielen Dank

Tobias Vogt am

Je nachdem was du tun möchtest kannst du mit dem Code nun einen Cron erstellen, Rechnungen automatisch bei Bestelleingang erstellen usw. Dazu musst du einen Observer erstellen. Wenn du dort ein wenig support brauchst helfen wir dir gerne. Melde dich dann doch einfach bei tobi@webguys.de :)

mdp am

Ist ja schick und genau das was ich Suche, aber wohin mit dem Code?

Links der Woche 31/2010 | Kai Köpke | Webdesign & Magento Online Shops am

[...] ein paar nützliche Zeilen Code, um in Magento aus Bestellungen automatisch Rechnungen zu generieren [...]

Dein Kommentar