Hallo, ist es irgendwie möglich unterschiedliche Bestellbestätigungen für einzelne Kundengruppen zu versenden? Also die sOrder soll z.B. für Kundengruppe ID:1 einen etwas anderen Text enthalten als für ID:2. Ich bin ja kein Programmierer, aber denke ob das viell. mit einer Abfrage geht. Viell. mit Vorlage sOrder1 und sOrder2 die angelegt werden und wenn die Kundengruppe ID 1 bestellt, dann die Abfrage auf sOrder1 usw. Ginge sowas?
Hi artep, Ich denke es sollte klappen, indem du per Smarty direkt im Mailtemlate sORDER eine Unterscheidung rein machst, um welche Kundengruppe es sich handelt. Nach dem Schema: Wenn Kundengruppen-ID = 1, dann Text1 sonst Text2 Gruß Sven Sent from my iPad using Tapatalk
Sodele, möchte hier mal die Lösung posten, vielleicht hilft dies auch anderen Shopbetreibern! Bei mir klappt das wunderbar und genau so wie ich es brauche. Dies ist leider nicht updatesicher, man sollte es sich auf dem PC abspeichern und nach einem Update wieder einfügen! Wenn man je Kundengruppe verschiedene E-Mails anhängen will (bei Verkauf an B2C und B2B), Pdf erzeugen und im Medienmanager hochladen. Bei mir sind es unterschiedliche AGB. In der engine/Shopware/Components/TemplateMail.php hinter if($modelName == „sORDER“ && $attachment->getFileName() ----- ist bei mir Zeile 248 die versch. pdfs und Kundengruppen eingeben : /\*\* @var $attachment \Shopware\Models\Mail\Attachment \*/ foreach ($mailModel-\>getAttachments() as $attachment) { if ($attachment-\>getShopId() !== null && ($this-\>getShop() === null || $attachment-\>getShopId() != $this-\>getShop()-\>getId())) { continue; } if($modelName == "sORDER" && $attachment-\>getFileName() == "shop-agb.pdf" && ($usergroup == 3 || $usergroup == 5 || $usergroup == "H")) { continue; } if($modelName == "sORDER" && $attachment-\>getFileName() == "shop\_agb\_u.pdf" && !($usergroup == 3 || $usergroup == 5 || $usergroup == "H")) { continue; } if (false === ($fileHandle = fopen($attachment-\>getPath(), 'r'))) { throw new \Enlight\_Exception('Could not load file: ' . $attachment-\>getPath()); } $fileAttachment = $mail-\>createAttachment($fileHandle); $fileAttachment-\>filename = $attachment-\>getFileName(); } return $mail; } }
Hat man nur eine Kundengruppe, dann nur einmal die Abfrage z.B. ($usergroup == „H“). In der Mail-Vorlage sOrder haben wir im HTML noch folgendes eingefügt, damit für die verschiedenen Kundengruppen auch ein anderer Text ausgegeben wird: Im Anhang finden Sie unsere {if $additional.user.customergroup == 3 || $additional.user.customergroup == 5 || $additional.user.customergroup == „H“}AGB als PDF-Datei{else}Widerrufsbelehrung, sowie AGB für Verbraucher als PDF-Datei{/if}. Zum Öffnen benötigen Sie den Adobe Acrobat Reader. Falls Sie noch keinen Adobe Acrobat Reader installiert haben, nutzen Sie bitte nachstehenden Link zum kostenlosen Download.Adobe Reader
Somit zeigt er den Text der Widerufsbelehrung etc. eben nur Verbrauchern an. Ich hoffe ich konnte dem Einen oder Anderen damit helfen.
hi, danke für deinen Code. Leider funktioniert dieser in der aktuellen 4.2.2 nicht. $modelName und $usergroup stehen hier gar nicht zur Verfügung. $modelName kann man durch $mailModel->getName() ersetzen und die $usergroup durch Shopware()->Session()->sUserGroup Hat hier schon jemand eine updatesichere Methode gefunden? Ich hatte ja auch gehofft, dass das evtl. mit den Business Essentials geht… Vielen Dank.
Hi, da fehlte noch etwas in der Datei. Sorry! Dann müsste es aber funktionieren! Ab Zeile 138 ersetzen mit folgendem: /\*\* \* @param string|\Shopware\Models\Mail\Mail $mailModel \* @param array $context \* @param \Shopware\Models\Shop\Shop $shop \* @param array $overrideConfig \* @return \Enlight\_Components\_Mail \* @throws \Enlight\_Exception \*/ public function createMail($mailModel, $context = array(), $shop = null, $overrideConfig = array()) { if (null !== $shop) { $this-\>setShop($shop); } if (!($mailModel instanceof \Shopware\Models\Mail\Mail)) { $modelName = $mailModel; /\* @var $mailModel \Shopware\Models\Mail\Mail \*/ $mailModel = $this-\>getModelManager()-\>getRepository('Shopware\Models\Mail\Mail')-\>findOneBy( array('name' =\> $modelName) ); if (!$mailModel) { throw new \Enlight\_Exception("Mail-Template with name '{$modelName}' could not be found."); } } //todo@all Add setter and getter like the shop $config = Shopware()-\>Config(); if ($this-\>getShop() !== null) { $defaultContext = array( 'sConfig' =\> $config, 'sShop' =\> $config-\>get('shopName'), 'sShopURL' =\> 'http://' . $config-\>basePath, ); $isoCode = $this-\>getShop()-\>get('isocode'); $translationReader = $this-\>getTranslationReader(); $translation = $translationReader-\>read($isoCode, 'config\_mails', $mailModel-\>getId()); $mailModel-\>setTranslation($translation); } else { $defaultContext = array( 'sConfig' =\> $config, ); } // save current context to mail model $mailContext = json\_encode($context); $mailContext = json\_decode($mailContext, true); $mailModel-\>setContext($mailContext); $this-\>getModelManager()-\>flush($mailModel); $this-\>getStringCompiler()-\>setContext(array\_merge($defaultContext, $context)); $mail = clone Shopware()-\>Mail(); return $this-\>loadValues($mail, $mailModel, $overrideConfig); } /\*\* \* Loads values from MailModel into Mail \* \* @param \Enlight\_Components\_Mail $mail \* @param \Shopware\Models\Mail\Mail $mailModel \* @param array $overrideConfig \* @return \Enlight\_Components\_Mail \* @throws \Enlight\_Exception \*/ public function loadValues(\Enlight\_Components\_Mail $mail, \Shopware\Models\Mail\Mail $mailModel, $overrideConfig = array()) { $stringCompiler = $this-\>getStringCompiler(); $context = $mailModel-\>getContext(); $modelName = $mailModel-\>getName(); $usergroup = $context["additional"]["user"]["customergroup"]; $subject = $stringCompiler-\>compileString($mailModel-\>getSubject()); if (!empty($subject)) { $mail-\>setSubject($subject); } if (!empty($overrideConfig["fromMail"])) { $fromMail = $overrideConfig["fromMail"]; } else { $fromMail = $stringCompiler-\>compileString($mailModel-\>getFromMail()); } if (!empty($overrideConfig["fromName"])) { $fromName = $overrideConfig["fromName"]; } else { $fromName = $stringCompiler-\>compileString($mailModel-\>getFromName()); } if (!empty($fromMail) && !empty($fromName)) { $mail-\>setFrom($fromMail, $fromName); } elseif (!empty($fromMail)) { $mail-\>setFrom($fromMail); } $bodyText = $stringCompiler-\>compileString($mailModel-\>getContent()); $mail-\>setBodyText($bodyText); if ($mailModel-\>isHtml()) { $mail-\>setBodyHtml($stringCompiler-\>compileString($mailModel-\>getContentHtml())); } /\*\* @var $attachment \Shopware\Models\Mail\Attachment \*/ foreach ($mailModel-\>getAttachments() as $attachment) { if ($attachment-\>getShopId() !== null && ($this-\>getShop() === null || $attachment-\>getShopId() != $this-\>getShop()-\>getId())) { continue; } if($modelName == "sORDER" && $attachment-\>getFileName() == "shop-agb.pdf" && ($usergroup == 3 || $usergroup == 5 || $usergroup == "H")) { continue; } if($modelName == "sORDER" && $attachment-\>getFileName() == "shop\_agb\_u.pdf" && !($usergroup == 3 || $usergroup == 5 || $usergroup == "H")) { continue; } if (false === ($fileHandle = fopen($attachment-\>getPath(), 'r'))) { throw new \Enlight\_Exception('Could not load file: ' . $attachment-\>getPath()); } $fileAttachment = $mail-\>createAttachment($fileHandle); $fileAttachment-\>filename = $attachment-\>getFileName(); } return $mail; } }