How To: Печать документа заказа (счет, акт, ТОРГ-12 и т.д.) в личном кабинете клиента

* Доступно с версии 6.8.7

Пример реализации печати документа заказа в личном кабинете клиента.

  1. Редактируем XSL-шаблон списка заказов в личном кабинете и добавляем кнопку печати вида <a href="?action=print&amp;printlayout_id=10&amp;guid={guid}">Печать</a>, где в printlayout_id указываем идентификатор шаблона документа, который будет использован для генерации документа.
  2. Редактируем ТДС списка заказов в личном кабинете и в коде настроек добавляем обработку:
    <?php
    // Печать документа
    if (Core_Array::getGet('action') == 'print')
    {
    	// Драйвер шаблона документов. 1-HTML, 2-Docx
    	$driver_id = 2;
    
    	/* Массив идентификаторов доступных для заказа шаблонов документов:
    		* 9 - Акт об оказании услуг
    		* 10 - Счет на оплату
    		* 11 - ТОРГ-12
    		* 12 - Товарный чек
    		* 13 - Счет-фактура
    	*/
    	$aAvailablePrintlayouts = array(9, 10, 11, 12, 13);
    
    	$printlayout_id = intval(Core_Array::getGet('printlayout_id'));
    
    	if (in_array($printlayout_id, $aAvailablePrintlayouts))
    	{
    		$oPrintlayout = Core_Entity::factory('Printlayout')->getById($printlayout_id);
    
    		if (!is_null($oPrintlayout))
    		{
    			$oPrintlayout_Controller = new Printlayout_Controller($oPrintlayout);
    
    			$oShop = Core_Entity::factory('Shop', Core_Array::get(Core_Page::instance()->libParams, 'shopId'));
    
    			$oPrintlayout_Driver = Core_Entity::factory('Printlayout_Driver', $driver_id);
    
    			$guid = strval(Core_Array::getGet('guid'));
    
    			$oShop_Order = $oShop->Shop_Orders->getByGuid($guid);
    
    			if (!is_null($oShop_Order))
    			{
    				$oPrintlayout_Controller
    					->replace($oShop_Order->getPrintlayoutReplaces())
    					->driver($oPrintlayout_Driver)
    					->entity($oShop_Order);
    
    				$oPrintlayout_Controller->execute()->downloadFile();
    
    				exit();
    			}
    		}
    	}
    
    	Core_Page::instance()->response->status(404)->sendHeaders()->showBody();
    	exit();
    }
    

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.