automatisch generierte Rechnungen als PDF-Anhang senden

Begonnen von dobra, Juni 17, 2010, 13:33:18

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Mit der Mail an Kunden (und/oder Händler) können automatisch generierte PDF-Rechnungen als Attachment gesendet werden.


Voraussetzung:
1) auf dem Server müssen die Perl-Module MIME::Base64, LWP::Simple (sollten auf allen Servern verfügbar sein)
und HTML::HTMLDoc (wird wahrscheinlich nachgerüstet werden müssen) installiert sein.
2) die neueste SP-Version 3.02.03b vom 10.6.

Einbauanleitung:

  • im cgi-Verzeichnis den Ordner PDF mit Chmod 755 manuell per FTP anlegen (der Ordner MUSS im cgi-Verzeichnis liegen und schreibend und lesend darauf zugegriffen werden können)
  • auf die "Danke" Seite diesen Code schreiben:
<!--spmacro:module(test)
{
if (!$main::liveview) {

use strict;
use warnings;

my $bestnr = $main::gOrderId;
my $testtext = ssp::embedded("showwk","embedded/rechnung.txt");

 require HTML::HTMLDoc;
 my $htmldoc = new HTML::HTMLDoc();
 $htmldoc->set_bodyfont('Arial');
 $htmldoc->set_html_content($testtext);
 my $pdf = $htmldoc->generate_pdf();
 $pdf->to_file('PDF/' . $bestnr . '.pdf');
 }
}
-->

  • eine rechnung.txt Datei (genauso wie eine HTML-Mail) erstellen, im "embedded" Ordner ablegen (oder Pfad anpassen) und im WC bei "Dateien hinzufügen" eintragen.
  • Code in stdall.ipl
<!--spmacro:module(Callback)
sub modify_mailtext {
my $to = $_[0];
my $subject = $_[1];
my $ref_mailtext = $_[2];
my $type = "application/pdf";
my $datei = $main::gOrderId . ".pdf";
use MIME::Base64;
use LWP::Simple qw(get);
my $attachment = get "http://www.woll-insel.at/demo-cgi-bin/demo_konfiguratorshop/PDF/" . $datei;

if ($attachment && $subject eq "Bestätigung Konfiguratorshop (EP)")
{
my $mailtext = $$ref_mailtext;
my $bound = "----------" . $subject . $to;

my $newmail = "MIME-Version: 1.0"."\n";
$newmail .= "Content-type: multipart/mixed; boundary=\"$bound\""."\n\n";
$newmail .= "--$bound"."\n";
$newmail .= "Content-type: text/html"."\n";
$newmail .= $mailtext."\n\n";
$newmail .= "--$bound"."\n";
$newmail .= "Content-type: $type;  name=\"Rechnung.pdf\"\n";
$newmail .= "Content-Transfer-Encoding: base64\n";
$newmail .= "Content-Disposition: attachment; filename=\"Rechnung.pdf\"\n\n";

my $acod = MIME::Base64::encode($attachment);

$newmail .= $acod;
$newmail .= "\n--$bound--\n";

$$ref_mailtext = $newmail;
}
return 0;
}
-->


my $attachment = get "http://www.woll-insel.at/demo-cgi-bin/demo_konfiguratorshop/PDF/" . $datei;
hier den absoluten Pfad zum CGI!!! Ordner eintragen (funktioniert nur so)

if ($attachment && $subject eq "Bestätigung Konfiguratorshop (EP)")
hier die Bedingung mit welchem Formular an wen der Anhang gesendet werden soll - vorausgesetzt, dass für Händler und Kunden ein anderer Betreff im WC eingetragen ist.

wie das funktioniert, kann im Konfiguratorshop
http://www.woll-insel.at/demo-cgi-bin/demo_konfiguratorshop/iboshop.cgi?show0
getestet werden.
Bei Absenden einer Bestellung wird die PDF-Rechnung der "Mail an Kunden" angehangen.
(zum testen habe ich da jetzt einfach die Mail an Kunden als rechnung.txt genommen - das kann natürlich dann jeder individuell mit Firmen Briefkopf usw erstellen)

Nachtrag:  bitte bedenken, dass PDF-Rechnungen - wenn sie ausschließlich digital gesendet werden und nicht der Ware noch eine gedruckte Rechnung beiliegt - digital signiert sein müssen.
mfG
dobra

jg

Hallo dobra,

Super Idee! Es funktioniert. So ähnlich wollen wir das mal bei uns einbauen.
Besonders interessant ist es für mich im Bereich Dropshipping:
Hier könnten wir dann zB. zusammen mit der Dropshipping-Bestellung unseres Händlers
auch gleich noch die Rechnung für den jeweiligen Endkunden erstellen lassen
(an den wir die Ware im Auftrag unseres Kunden schicken sollen).
Unser Kunde muss diese Rechnung oder den Lieferschein dann nicht mehr
separat erstellen und uns - wie jetzt noch - in einer 2. E-Mail zuschicken.

Vllt könnte man später sogar i-wo im Shop 'PDF-Settings' hinterlegen, die die Einstellungen
für den Rechnungsanhang definieren, bzw. die unsere Händler evtl. sogar selbst einstellen
können wie zB: HTML-Pfad zu einem Logo, Zusatztexte die in der PDF erscheinen sollen u.a.

Grüße, jg

--
www.schmuckzone.de

dobra

Hallo jg,

Zitat...im Bereich Dropshipping:
ja - DA hätte ich auch Wünsche  ;)

Wenn jetzt Kunde bei mir bestellt, muß ich das dann separat wieder bei Dir bestellen = Artikelnummer von meiner Bestellung kopieren und bei Dir suchen etc
Vllt könnten wir da mal gemeinsam überlegen, wie das automatisiert werden kann....

hab da auch schon ne Idee - aber das muss ich erst mal testen
schreib ich Dir dann per mail
mfG
dobra