PDF-Rechnung an Bestellbestätigung anhängen (funktionierender Workaround)

Hallo zusammen,
wer vor dreckigen Hacks nicht zurückschreckt oder daraus ein richtiges Modul bauen will*: Hier ist eine Lösung zum automatischen Anhängen von Rechnungen an die E-Mail mit der Bestellbestätigung
(ohne Gewähr, bei mir läuft’s unter CE 6.0.4)
Voraussetzung: Das Standard-Modul “Invoice PDF” muss installiert sein.

Dazu ändere ich in der Datei
vendor/oxid-esales/oxideshop-ce/Email.php
die Funktion sendOrderEmailToUser

Genauer füge ich an zwei Stellen neuen Code ein.
Erste Stelle (A) zwischen den Zeilen
$this->_setMailParams($shop);
(…)
$user = $order->getOrderUser();

Zweite Stelle (B) zwischen
$this->setReplyTo($shop->oxshops__oxorderemail->value, $shop->oxshops__oxname->getRawValue());
(…)
return $this->send();

Den Code zum Einfügen an beiden Stellen findet ihr hier:
https://pastebin.com/fVqcZBnr
(Posten hier im Forum geht leider aus technischen Gründen derzeit nicht)

Damit die Sprachplatzhalter richtig gefüllt werden, muss noch händisch die cust_lang.php erweitert werden um den Inhalt von /source/modules/oe/invoicepdf/views/admin/de/invoicepdf_lang.php
(also alle ORDER_OVERVIEW_PDF*-Inhalte).
Hintergrund ist, dass das Invoice PDF-Modul normalerweise aus dem Admin-Bereich heraus genutzt wird und die Sprachdatei entsprechend ausgerichtet ist. Die E-Mail wird aber im Frontend-Umfeld versendet und sucht nach User-Sprachen in lang.php und cust_lang.php. Kopiert man die Inhalte nicht rüber aus Admin, stehen also nur die nackten Platzhalter im PDF.

Ältere Rechnungs-PDF werden bei jedem Aufruf der Funktion aus dem Verzeichnis gelöscht, damit sich da nicht allzuviel ansammelt.

Vielleicht nutzt das ja dem einen oder anderen als Basis für eigene Entwicklungen - wie schon geschrieben, alles ohne Gewähr und auf eigenes Risiko.

Viel Spaß!
floko

*P.S.: Ich hatte ein Modul für CE 6.0.2. für diese und andere Funktionen gebaut, bekomme das aber nicht mehr zum Laufen. Da mir momentan Nerven und Zeit fehlen, um dem auf den Grund zu gehen, hier eine Lösung, die unsexy ist, aber funktioniert.

es ist nicht optimal die Rechnung bereits mit der Bestellbestätigung zu schicken. Unser liebes FA verlangt ja u.a. dass in der Rechnung das Leistungsdatum (i.A. = Lieferdatum) angegeben ist.
Auch können noch Änderungen nötig sein z.B. der Artikel ist gerde nicht am Lager/nicht lieferbar o.ä.
Sinnvoller ist es die Rechnung mit der Versandbestätigung mitzuschicken.

Danke für die Hinweise!
Das mit dem Leistungsdatum als Lieferdatum ist mir neu, muss ich mal klären ob da ggf. auch ein geplantes Lieferdatum reicht. Das könnte man ja errechnen.
In unserem Fall kann man nur verfügbare Waren kaufen, zumindest das Problem haben wir also nicht.
Eine Versandbestätigung schicken wir nicht. Für viele andere hast du sicher recht, für diesen Anwendungsfall müsste man das ganze noch mal umschreiben, um das PDF an die Versandbestätigung anstelle der Bestellbestätigung anzuhängen.

Ist bei uns auch so, aber merkwürdigerweise kommt es vor dass Artikelbestände nicht stimmen :slight_smile:

Dafür gibt’s ```

setAdminMode

1 Like

Wieder was gelernt :slight_smile: Danke für den Hinweis

Hab es mal unter Community Edition 6.1.3 getestet. Ich nehmen mal an, dass cust_lang.php bei der 6.1.3 einfach nur source/Application/translations/de/lang.php heißt. Es funktioniert leider nicht. Vermutlich wel die Variablennamen sich in der Zwischenzeit verändert haben. Schade.

source/Application/translations/de/lang.php => setAdminMode false