Jump to content

AGB als PDF bei Bestellung mitschicken


mashart

Recommended Posts

Guten Tag,

 

in meinem Shop will ich, dass bei Bestellbestätigung und bei Versandbenachrichtigung die AGB zusammen mit der Rechnung (PDF) verschickt wird.

 

Leider habe ich bis jetzt nichts funktionierendes gefunden.

Kann mir hemand helfen?

 

Ich hab die Version 1.5.6.1.

 

Vielen Dank

 

Grüße

Link to comment
Share on other sites

Hallo mashart,

wir versenden die agb und die Widerrufserklärung als pdf mit der Bestellbestätigung. Dazu haben wir einen Override der Mail.php. Den Original-Code habe ich so modifiziert:

if (isset($logo))
				$template_vars['{shop_logo}'] = $message->attach(new Swift_Message_EmbeddedFile(new Swift_File($logo), null, ImageManager::getMimeTypeByExtension($logo))); */
             /* AGB und Widerrufserklärung im Mailanhang für die Bestellbestätigung*/
            if(strpos($template,'order_conf') !== false
        && file_exists($theme_path.'/mailtexte/agb.pdf')){
        $message->attach(new Swift_Message_Attachment(new Swift_File($theme_path.'/mailtexte/agb.pdf')));
      }
      if(strpos($template,'order_conf') !== false
        && file_exists($theme_path.'/mailtexte/widerrufsbelehrung.pdf')){
        $message->attach(new Swift_Message_Attachment(new Swift_File($theme_path.'/mailtexte/widerrufsbelehrung.pdf')));
      }
/* ENDE --- AGB und Widerrufserklärung im Mailanhang für die Bestellbestätigung*/
			if ((Context::getContext()->link instanceof Link) === false)
				Context::getContext()->link = new Link();

Die pdf-Dokumente liegen in dem Beispiel im Unterverzeichnis /mailtexte/ des Theme-Verzeichnis.

 

Eine Idee, um die Rechnung als pdf in die Versandbestätigung zu bekommen, habe ich leider nicht. Die Rechnung wird quasi beim Aufrufen "on-the-fly" aus der Datenbank generiert. Liegt also nicht als pdf vor.

Viele Grüße

Edited by Luca01 (see edit history)
  • Like 3
Link to comment
Share on other sites

Auch wenns offiziell bereits als gelöst gilt. :-)

 

Luca's Posting war der Anlass mich nochmal meinem Problem der E-Mailpakete zu widmen, in dem ich an sich auch AGB und eine Widerufsbelehrung als PDF mit der Bestellbestätigung senden wollte.......

Wenn sie denn im Mail-Verzeichnis vorhanden sind und natürlich für die einzelnen Sprachen extra.....

 

Bis eben gings einfach nicht, obwohl ich mir sicher war, dass alles wesentliche richtig sein müsste. Oki, langer Rede kurzer Sinn. Luca zeigt mir, dass mein Aufruf der Mailfunktionen (Swift und Co.) richtig ist. das hab ich auch so. :-)

Also kann es nur noch an den Pfaden liegen.

 

Bingo! da wars es dann:

			// attach pdf for agb and confirmrevocation if aviable KKEDV 01.2014
			if(strpos($template,'order_conf') !== false 
			&& file_exists(_PS_MAIL_DIR_.$iso.'/terms-agb.pdf')){
			$message->attach(new Swift_Message_Attachment(new Swift_File(_PS_MAIL_DIR_.$iso.'/terms-agb.pdf')));		
			}

			if(strpos($template,'order_conf') !== false 
			&& file_exists(_PS_MAIL_DIR_.$iso.'/revocation-widerruf.pdf')){
			$message->attach(new Swift_Message_Attachment(new Swift_File(_PS_MAIL_DIR_.$iso.'/revocation-widerruf.pdf')));		
			}
			// End  attach pdf for agb and confirmrevocation if aviable KKEDV 01.2014

            /* Send mail */
            $send = $swift->send($message, $to, new Swift_Address($from, $from_name));
            $swift->disconnect();
            return $send;

So hängt der Override der Mail.php hier PDFs für AGB und Widerrufsbelehrung auch in verschiedenen Sprachen an. Sie müssen nur im normalen Mails-Verzeichnis der jeweiligen Sprache vorhanden sein. 

 

Anmerkung:

Hab das auf die Schnelle jetzt nur mit der terms-agb.pdf in einer 1.5.6 getestet, gehe aber davon aus, dass es auch mit revocation-widerruf.pdf funktionieren wird.

 

Anmerkung 2:

Ich habs anscheinend auch an etwas anderer Stelle eingebaut. bei mir isses ziemlich am Ende der Funktion gelandet.

 

 

LG Klaus / Lockesoft

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

Danke für die tolle Erklärung.

 

Der obige Code oben an sich reicht nicht als override, sondern ich muss die original mail.php ergänzen und dann in den override Ordner schieben. So sollte es gehen oder?

 

Dann habe ich noch eine Frage im engl. Forumteil gefunden, die fragt, wie man diese Anhänge nur bei bestimmten mails anhängt und nicht bei allen. Ehm, macht dieser Code es schon so, wie wir es in Dt. brauchen oder müsste noch was geändert werden? Ich weiß noch nicht genau, wie es sein müsste, aber so wie Ihr es nutzt macht es sicher Sinn. Also möglichst schon beim 1. mail raussenden...Bestellbestätigung...

Jedoch nicht, bei z.B. Supportantworten....

Edited by c-louder (see edit history)
Link to comment
Share on other sites

  • 1 year later...

Hallo Ihr,

 

und entschuldigt bitte, das ich diese alte Kiste wieder ausgrabe.

Ich habe ja nun noch immer 1.5.4.1 laufen und wollte obigen Code eingeben.

 

Eigentlich bin ich ja garnicht so doof, aber hier übersteigt das meine knapp vorhandenen Kompetenzen.

 

Kann mir evtl. jemand eine Schritt-für-Schritt Anleitung knapp verfassen, damit ich 2 PDF´s (AGB und Widerruf natürlich) an die Mails anhängen kann?

Das nervt nämlich, andauernd sämtliche Mails bearbeiten zu müssen, wenn sich die AGB ändert.

 

Danke schonmal von einen ratlosen Distrax

Link to comment
Share on other sites

Hallo zurück,
Luca hat das doch weiter oben sooo schön erklärt. ^_^
Also, dann mal Schritt für Schritt:

  • Du richtest für deine PDFs ein eigenes Verzeichnis im Root ein.
  • Nun legst du eine Override-Datei namens Mail.php an (z.B. mit notepad++) mit folgendem Rahmeninhalt:
    <?php
    
    class Mail extends MailCore
    {
    <!-- Hierher gehört die Änerung -->
    }
    
  • Du kopierst aus der Datei /classes/Mail.php der Einfachheit halber die komplette public static function Send und plazierst sie zwischen die beiden geschweiften Klammern.
  • Nun suchst du folgenden Text: don't attach the logo as
    Da sollte jetzt stehen, so ab Zeile 276 (der Original-Datei) oder etwa Zeile 223 (des Overrides):
    /* don't attach the logo as */
    if (isset($logo))
    	$template_vars['{shop_logo}'] = $message->attach(new Swift_Message_EmbeddedFile(new Swift_File($logo), null, ImageManager::getMimeTypeByExtension($logo)));
    	if ((Context::getContext()->link instanceof Link) === false)
    		Context::getContext()->link = new Link();
    
  • Das erweiterst du nun wie oben beschrieben zu:
    if (isset($logo))
    	$template_vars['{shop_logo}'] = $message->attach(new Swift_Message_EmbeddedFile(new Swift_File($logo), null, ImageManager::getMimeTypeByExtension($logo))); */
                 /* AGB und Widerrufserklärung im Mailanhang für die Bestellbestätigung*/
                if(strpos($template,'order_conf') !== false
            && file_exists($theme_path.'/mailtexte/agb.pdf')){
            $message->attach(new Swift_Message_Attachment(new Swift_File($theme_path.'/mailtexte/agb.pdf')));
          }
          if(strpos($template,'order_conf') !== false
            && file_exists($theme_path.'/mailtexte/widerrufsbelehrung.pdf')){
            $message->attach(new Swift_Message_Attachment(new Swift_File($theme_path.'/mailtexte/widerrufsbelehrung.pdf')));
          }
    /* ENDE --- AGB und Widerrufserklärung im Mailanhang für die Bestellbestätigung*/
    			if ((Context::getContext()->link instanceof Link) === false)
    				Context::getContext()->link = new Link();
    
  • Nun lädst du deine Override-Datei ins Verzeichnis /override/classes/, löscht den Cache und .... Bingo!

Und was 1.5.4.1 anbelangt, da brauchst du dich nicht zu schämen. Die Version läuft nach wie vor schneller und problemloser als 1.6.1.

Und es erweist sich als weiser Entschluss. Denn momentan lohnt sich der Umstieg sowieso nicht, da der Core gerade in Symfony umgeschrieben wird und das Bootstrap-Template mit der kommenden Version 1.7 und ihrem Baukastensystem Starter Theme auf den Müllhaufen der derzeit noch schnelllebigen PrestaShop-Geschichte geworfen wird. Eine Abwärtskompatibilität wird es nach aktuellem Stand nicht geben. Du hättest dann u. U. ganz umsonst am Template "herumgeschraubt".

  • Like 2
Link to comment
Share on other sites

First of all: Danke Dir eleazar, ein weiteres mal ;-)

 

 

Nach langem hin und her habe ich es jetzt geschafft. Allerdings nicht ganz so wie es hier beschrieben wurde, sondern mit dem Code von sm5k hier

 

statische-pdf-als-zusätzlicher-anhang-in-der-bestellbestätigungs-e-mail/

 

Vielen Dank dafür an Euch beide!

 

Und was 1.5.4.1 anbelangt habe ich mich ja nun schlaugelesen, was die aktuellen Versionen betrifft. Sehr schade drum, das PS diese Richtung geht. Aber vielelicht verstehen die in Paris mal das Problem der Rechtssicherheit für uns. Und letztendlich läuft ja mein Shop - wie heißt es so schön: never stop a running system.

Edited by distrax (see edit history)
Link to comment
Share on other sites

Für diejenigen, die mit dem M4 PDF Extensions Modul, fügen Sie diesen Code in die Rechnungsvorlage und verändern CMS ID (statt 10):

For those using the M4 PDF Extensions module, add this code to the invoice template and change CMS ID (instead of 10):

{factory assign=cms class="CMS" id_lang=$m4_actual_language id=10}
{if is_object($cms)}
    <pagebreak />
    {$cms->content}
{/if}
Link to comment
Share on other sites

  • 1 year later...

Hey Danke für deine Antwort.

 

Das habe ich bis jetzt auch, nur leider hängt er das nicht als PDF an sondern als Text direkt im Anschluss an die Bestellbestätigung. Wenn jemand das Drucken will sind das dann fast 10 Seiten Papier!?

 

Hab ich da was übersehen?

Link to comment
Share on other sites

Siehste, das ist mir eigentlich egal, wenn jemand seine Tinte/Toner und Papier mit meinen AGB verballert......

 

Da die AGB auf der Seite sind und der Kunde ausreichend Hinweise darauf sieht, sende ich die nur Neukunden mit, die sich anmelden, Gastbestellungen bleiben sogar davor verschont.

 

Ich hab auch schon überlegt, ob ich nur den Link zu den AGB mitsende. Bei Widerrufsbelehrung ist es klar, die geht als CMS bei der Bestellung mit, das hat den Vorteil, dass die Frist definitiv gewahrt bleibt und zu laufen beginnt, wann das paket beim Kunden ist. Sonst müsstest du ihm nachweisen, wann er es geöffent hat und darin seine Widerrufsbelehrung gefunden hat.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...