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

В версии 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