V emailu pro potvrzení objednávky máme možnost zákazníkovi přikládat v příloze pdf fakturu. Co však v případě, že chceme zasílat nějaké další přílohy, například obchodní podmínky? To již nastavení Prestashopu nedovoluje a musíme najít vlastní způsob, jak toho docílit. Bohužel samotný kód s tímto příliš nepočítá a bude tak nutné zasáhnout do samotného jádra eshopu.
Budeme muset upravit soubor: classes/PaymentModule.php
Kde najděte tento kód:
// Join PDF invoice if ((int)Configuration::get('PS_INVOICE') && $order_status->invoice && $order->invoice_number) { $order_invoice_list = $order->getInvoicesCollection(); Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list)); $pdf = new PDF($order_invoice_list, PDF::TEMPLATE_INVOICE, $this->context->smarty); $file_attachement['content'] = $pdf->render(false); $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).sprintf('%06d', $order->invoice_number).'.pdf'; $file_attachement['mime'] = 'application/pdf'; } else { $file_attachement = null; }
Zde je vidět, jakým způsobem se do přílohy emailu generuje samotná faktura. Potřebujeme tedy případně přidat nějaký náš vlastní dokument. V tomto případě se jedná o soubor pdf, umístěný v kořenu našeho eshopu s názvem „Obchodni_podminky.pdf“. Název dokumentu zobrazovaný v emailu je pak definován jako „Obchodní podmínky.pdf“.
Za tento kód vložte tyto řádky:
// Custom attachment $custom_attachement['content'] = file_get_contents(_PS_ROOT_DIR_.'/Obchodni_podminky.pdf'); $custom_attachement['name'] = 'Obchodní podmínky.pdf'; $custom_attachement['mime'] = 'application/pdf'; if(is_null($file_attachement)){ $file_attachement = $custom_attachement; }else{ $temp = $file_attachement; $file_attachement = array(); $file_attachement[] = $temp; $file_attachement[] = $custom_attachement; } //end
Kód funguje tak, že v případě, že do emailu není žádná příloha vkládána, přikládá se ta naše. V opačném případě se původní příloha vloží do pole, do kterého lze přiložit neomezené množství dalších.
Zásahem do jádra eshopu však po upgradu o úpravu přijdeme, je tedy možné tuto úpravu přenést do složky override/classes. Ideální řešení by pak bylo využít hook, který však pro tento případ vkládání přílohy není implementován.