Отправка счета на оплату при оформлении заказа

В версии HostCMS 6.8.7 от 22.03.2019 г. появился новый модуль "Шаблоны документов", позволяющий формировать word документ с различными данными, например, счет на оплату.

В код нужной платежной системы (например, "Безналичная оплата от юридического лица") вставляется либо заменяется метод sendInvoice.

В коде указывается идентификатор шаблона документа из раздела Контент → Шаблоны документов и драйвер обработчика.

/** * Отправка клиенту письма со счетом. */ function sendInvoice() { $sInvoice = $this->getInvoice(); $sInvoice = str_replace(">", ">\n", $sInvoice); $subject = 'Банковский счет'; $oCore_Mail_Driver = Core_Mail::instance(); $oCore_Mail_Driver ->to($this->_shopOrder->email) ->from($this->_shopOrder->Shop->getFirstEmail()) ->subject($subject) ->message($sInvoice) ->contentType('text/html') ->header('X-HostCMS-Reason', 'OrderInvoice') ->header('Precedence', 'bulk'); $oPrintlayout = Core_Entity::factory('Printlayout', 10); // ID шаблона документа $oPrintlayout_Controller = new Printlayout_Controller($oPrintlayout); $oPrintlayout_Driver = Core_Entity::factory('Printlayout_Driver', 2); // ID драйвера обработчика шаблона документа $oPrintlayout_Controller ->replace($this->_shopOrder->getPrintlayoutReplaces()) ->driver($oPrintlayout_Driver) ->entity($this->_shopOrder) ->execute(); $oCore_Mail_Driver->attach(array( 'filepath' => $oPrintlayout_Controller->getFilePath(), 'filename' => $oPrintlayout_Controller->getFileName(), 'Content-ID' => str_pad($this->_shopOrder->id, 10, "0", STR_PAD_LEFT), // attachment or inline 'Content-Disposition' => 'attachment', 'Content-Type' => 'application/octet-stream' )); $oCore_Mail_Driver->send(); $oPrintlayout_Controller->deleteFile(); return $this; }

16.02.2021