Что то я запутался.
Сейчас поставил другой статус на вывод и там находится 355 заказов.
И вот что получается, в контроллере на странице выводятся все заказы
Но еще в модуле если нажать на кнопку "Распечатать накладную"
И должно открываться следующее окно
Но открывается пустая страница потому что там слишком много заказов
Почему так?
model/waybillform/waybillform.inc.php
<?php
namespace Waybill\Model\WaybillForm;
class WaybillForm extends AbstractPrintForm
{
function getId()
{
return 'waybill';
}
function getTitle()
{
return t('Накладная');
}
function getTemplate()
{
return '%waybill%/waybillform/waybillform.tpl';
}
}
model/waybillform/abstractprintform.inc.php
<?php
/**
* ReadyScript (http://readyscript.ru)
*
* @copyright Copyright (c) ReadyScript lab. (http://readyscript.ru)
* @license http://readyscript.ru/licenseAgreement/
*/
namespace Waybill\Model\WaybillForm;
/**
* Абстрактный класс печатной формы заказа.
*/
abstract class AbstractPrintForm
{
protected
$order;
/**
* Конструктор печатной формы
*
* @param \Shop\Model\Orm\Order $order - заказ, который должен быть использован для формирования печатной формы
* @return AbstractPrintForm
*/
function __construct(\Shop\Model\Orm\Order $order = null)
{
$this->setOrder($order);
}
public function setOrder(\Shop\Model\Orm\Order $order = null)
{
$this->order = $order;
}
/**
* Возвращает объект печатной формы по символьному идентификатору
*
* @param mixed $id
* @param \Shop\Model\Orm\Order $order
* @return AbstractPrintForm | false
*/
public static function getById($id, \Shop\Model\Orm\Order $order = null)
{
$all = self::getList();
if (isset($all[$id])) {
$item = $all[$id];
$item->setOrder($order);
return $item;
}
return false;
}
/**
* Возвращает список всех печатных форм, имеющихся в системе
*
* @return array
*/
public static function getList()
{
$result = array();
$event_result = \RS\Event\Manager::fire('printform.getlist', array());
$list = (array)$event_result->getResult();
foreach($list as $print_form) {
$result[$print_form->getId()] = $print_form;
}
return $result;
}
/**
* Возвращает краткий символьный идентификатор печатной формы
*
* @return string
*/
abstract function getId();
/**
* Возвращает название печатной формы
*
* @return string
*/
abstract function getTitle();
/**
* Возвращает шаблон формы
*
* @return string
*/
abstract function getTemplate();
/**
* Возвращает HTML готовой печатной формы
*
* @return string
*/
function getHtml()
{
$view = new \RS\View\Engine();
$view->assign(array(
'order' => $this->order
));
$view->assign(\RS\Module\Item::getResourceFolders($this));
return $view->fetch($this->getTemplate());
}
}
?>
model/myapi.inc.php
<?php
namespace Waybill\Model;
/**
* Класс API
*/
class MyApi extends \RS\Module\AbstractModel\EntityList
{
function __construct()
{
parent::__construct(new \Shop\Model\Orm\Order, //С какой таблицей через ORM объект работать
array(
'multisite' => false, //Объект является не мультисайтовым (без поля site_id)
//'defaultOrder' => 'id DESC' //Сортировка по умолчанию при выборке
));
}
}
view/orders_waybill.tpl
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
{if !empty($orders)} {* Проверяем есть ли заказы *}
{foreach $orders as $order} {* Циклим чтобы вытащить каждый заказ отдельности *}
{assign var=delivery value=$order->getDelivery()}
{assign var=address value=$order->getAddress()}
{assign var=cart value=$order->getCart()}
{assign var=order_data value=$cart->getOrderData(true, false)}
{assign var=products value=$cart->getProductItems()}
{assign var=user value=$order->getUser()}
{/foreach}
{/if}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#btnExport").click(function(e) {
e.preventDefault();
//getting data from our table
var data_type = 'data:application/vnd.ms-excel';
var table_div = document.getElementById('tableWrap');
var table_html = table_div.outerHTML.replace(/ /g, '%20');
var userName = '<?php echo $order.order_num;?>';
var a = document.createElement('a');
a.href = data_type + ', ' + table_html;
a.download = "{$order.order_num}-' + 16.xls";
a.click();
});
});
</script>
<style>
@media print {
.button {
display: none;
}
}
</style>
</head>
<body>
<input class="button" type="button" value="Печать" onclick="print()"></input><button class="button" id="btnExport">Скачать Excel</button>
<div id="tableWrap">
<div style="text-align:left;font-weight:bold;margin-bottom:10px;">
ООО "ПБМ", ИНН 7328065001, КПП 732801001                  
Накладная номер {$today = date("d-m-y")}{$today}
</div>
<table style="border: 1px solid black;border-collapse: collapse;">
<thead>
<tr>
<th style="border: 1px solid black;border-collapse: collapse;">№</th>
<th style="border: 1px solid black;border-collapse: collapse;">ТК</th>
<th style="border: 1px solid black;border-collapse: collapse;">Город</th>
<th style="border: 1px solid black;border-collapse: collapse;">ФИО</th>
<th style="border: 1px solid black;border-collapse: collapse;">Паспорт</th>
<th style="border: 1px solid black;border-collapse: collapse;">Телефон</th>
<th style="border: 1px solid black;border-collapse: collapse;">Сумма</th>
<th style="border: 1px solid black;border-collapse: collapse;">Место</th>
</tr>
</thead>
<tbody style="border: 1px solid black;border-collapse: collapse;">
{foreach $orders as $order}
<tr style="border: 1px solid black;border-collapse: collapse;">
<td style="border: 1px solid black;border-collapse: collapse;text-align: center;">{$order@iteration}</td>
{if $order.user_id>0}
{$address=$order->getAddress()}
<td style="border: 1px solid black;border-collapse: collapse;">{$address.city}</td>
{else}
<td style="border: 1px solid black;border-collapse: collapse;">{$order.userfields_arr['tk']}</td>
{/if}
{if $order.user_id>0}
{$address=$order->getAddress()}
<td style="border: 1px solid black;border-collapse: collapse;">г. {$address.region}</td>
{else}
<td style="border: 1px solid black;border-collapse: collapse;">г. {$order.userfields_arr['gorod']}</td>
{/if}
{if $order.user_id>0}
{$user=$order->getUser()}
<td style="border: 1px solid black;border-collapse: collapse;">
{if empty($user.company) && empty($address.zipcode)}
<!-- Выводим ФИО -->
{$user.surname} {$user.name} {$user.midname}
<!-- Если нет получателя -->
{elseif empty($address.zipcode)}
<!-- Выводим ИП -->
{$user.company}<!-- / ИНН: {$user.company_inn} -->
<!-- Если не ИП -->
{else empty($user.company)}
<!-- Выводим получателя -->
{$address.zipcode}
{/if}
</td>
{else}
{$address=$order->getAddress()}
<td style="border: 1px solid black;border-collapse: collapse;">{if empty($address.zipcode)}{$order.user_fio}{else}{$address.zipcode}{/if}</td>
{/if}
{if $order.user_id>0}
<td style="border: 1px solid black;border-collapse: collapse;">{if empty($user.company_inn)}{$user.passport}{else}ИНН: {$user.company_inn}{/if}</td>
{else}
<td style="border: 1px solid black;border-collapse: collapse;">{$order.userfields_arr['passport']}</td>
{/if}
{if $order.user_id>0}
<td style="border: 1px solid black;border-collapse: collapse;width:125px;text-align:center;">
{if empty($order.userfields_arr['phonerecipient'])}
{preg_replace('#(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})#', '$1-$2-$3-$4-$5', $user.phone)}
{else}
{preg_replace('#(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})#', '$1-$2-$3-$4-$5', $order.userfields_arr['phonerecipient'])}
{/if}
</td>
{else}
{$user=$order->getUser()}
<td style="border: 1px solid black;border-collapse: collapse;width:125px;text-align:center;">
{if empty($order.userfields_arr['phonerecipient'])}
{preg_replace('#(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})#', '$1-$2-$3-$4-$5', $order.user_phone)}
{else}
{preg_replace('#(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})#', '$1-$2-$3-$4-$5', $order.userfields_arr['phonerecipient'])}
{/if}
</td>
{/if}
<td style="border: 1px solid black;border-collapse: collapse;width:85px;text-align:center;">{$order.new_cost|format_price} руб.</td>
<td style="border: 1px solid black;border-collapse: collapse;text-align:center;">{$order.userfields_arr['mesto']}</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
</body>
</html>