Примечание
Печатные формы также могут быть созданы автоматически по API, например, при подключении модуля службы доставки.
Для добавления новой печатной формы кликните по одноименной кнопке в разделе «Печатные формы».
Отобразится окно «Новая печатная форма» с вкладками: «Основные» и «Шаблон».
Во вкладке «Шаблон» можно настроить шаблон печатной формы в формате HTML с использованием Twig-шаблонов.
Смотрите также:
При генерации печатной формы, по умолчанию устанавливается шрифт Nimbus. Также доступно подключение внешних шрифтов, например, Google Fonts.
Рассмотрим работу с шаблоном на примере счета-фактуры.
Код шаблона счета-фактуры
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 3.2//EN">
<html>
<style>
body
{
font-family:"Arial", sans-serif;
font-size: 10pt;
}
p
{
line-height: 150%;
}
table.footer
{
font-size: 10pt;
margin-top: 15px;
line-height: 150%;
}
table.order
{
border-collapse: collapse;
}
table.order td
{
font-size: 10pt;
border: 1px solid #000000;
}
</style>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title langs="ru">Счет</title>
</head>
<body bgcolor="white" lang="RU">
<div class="Section1">
<h1>Счет-фактура №{{ order.number }} от {{ order.createdAt|date("d.m.Y") }}</h1>
<p>
Продавец: {{ order.site.contragent.legalName }}<br>
Адрес: {{ order.site.contragent.legalAddress }}<br>
ИНН: {{ order.site.contragent.inn }}<br>
Грузотправитель и его адрес: {{ order.site.contragent.legalName }} {{ order.site.contragent.legalAddress }}<br>
Грузополучатель и его адрес: {{ order.customer.nickName }} {{ order.deliveryAddress }}<br>
К платежно-расчетному документу №{{ order.number }} от {{ order.createdAt|date("d.m.Y") }}<br>
Покупатель: {{ order.customer.nickName }}<br>
Адрес: {{ order.customer.address }}<br>
Валюта: наименование, код {{ defaultCurrency }}<br>
</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%" class="order">
<tr>
<td rowspan=2 align="center" valign=middle>Наименование товара (описание выполненных работ, оказанных услуг), имущественного права</td>
<td rowspan=2 align="center" valign=middle>Единицы измерения</td>
<td rowspan=2 align="center" valign=middle>Количество/объем</td>
<td rowspan=2 align="center" valign=middle>Цена (тариф) за единицу измерения</td>
<td rowspan=2 align="center" valign=middle>Стоимость товаров (работ, услуг) имущественных прав, без налога — всего</td>
<td rowspan=2 align="center" valign=middle>В том числе сумма акциза</td>
<td rowspan=2 align="center" valign=middle>Налоговая ставка</td>
<td rowspan=2 align="center" valign=middle>Сумма налога, предъявляемая покупателю</td>
<td rowspan=2 align="center" valign=middle>Стоимость товаров (работ, услуг), имущественных прав с налогом — всего</td>
<td colspan=2 align="center" valign=middle>Страна происхождения товара</td>
<td rowspan=2 align="center" valign=middle>Номер таможенной декларации</td>
</tr>
<tr>
<td align="left">Код</td>
<td align="left">Условное обозначение (национальное)</td>
<td align="left">Цифровой код</td>
<td align="left">Краткое наименование</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>2а</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
<td>10а</td>
<td>11</td>
</tr>
{% for op in order.availableOrderProducts %}
<tr valign="top">
<td>
{{ op }}
</td>
<td>
</td>
<td>
</td>
<td>
{{ op.quantity }}
</td>
<td>
{{ op.price }}
</td>
<td>
{{ op.summ }}
</td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
{{ op.summ }}
</td>
<td>
</td>
<td>
{{ op.offer.product.manufacturer }}
</td>
<td>
</td>
</tr>
{% endfor %}
<tr valign="top">
<td colspan="5">
<h3>Всего к оплате:</h3>
</td>
<td>
{{ order.summ }}
</td>
<td colspan="2">
X
</td>
<td>
</td>
<td>
{{ order.totalSumm }}
</td>
<td colspan="3">
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%" class="footer">
<tr>
<td width="20%">
Руководитель организации:
</td>
<td width="80%">
_______________________ / ______________________________ /
</td>
</tr>
<tr>
<td width="20%">
Гл. бухгалтер:
</td>
<td width="80%">
_______________________ / ______________________________ /
</td>
</tr>
</table>
</div>
</body>
</html>
Пояснения к коду
Доступные переменные: при выборе типа шаблона «Заказ» - переменная order
(заказ), либо в случае типа шаблона «Список заказов» - переменная orders
(массив заказов). Также доступна переменная defaultCurrency
- текущая валюта.
Twig-код Cчет-фактура №{{ order.number }} от {{ order.createdAt|date("d.m.Y") }}
в результате генерирует следующий html: <h1>Счет-фактура No123654 от 22.11.2019</h1>
.
order
— сущность заказа, у него есть поле number
— это номер заказа, с помощью {{ }}
выводим значение поля number
на печать.
Также у заказа есть поле createdAt
, указывающее на дату создания. Системе неизвестно, в каком виде должна быть распечатана дата, поэтому необходимо с помощью фильтра указать формат даты: order.createdAt|date("d.m.Y")
. Здесь указан формат: день.месяц.год.
Twig-код Продавец: {{ order.site.legalEntity }}
в результате формирует html Продавец: Интернет-магазин Кроссовки.рф
. У order
есть поле site
, которое является сущностью магазина. У магазина есть поле legalEntity
, которое обозначает официальное название магазина.
Валюта: наименование, код {{ defaultCurrency }}
- в результате получится Валюта: наименование, код Российский рубль
. Текущая валюта отображается в системных настройках.
<table border="0" cellspacing="0" cellpadding="2" width="100%" class="order">
{% for op in order.availableOrderProducts %}
<tr valign="top">
...
<td>
{{ op.summ }}
</td>
...
</tr>
{% endfor %}
</table>
Выше показан стандартный способ построения таблицы, при котором в цикле выводится список строк, каждая из которых в данном случае является одной позицией товара в заказе.
<table border="0" cellspacing="0" cellpadding="2" width="100%" class="order">
<tr valign="top">
...
<td>
123,0
</td>
...
</tr>
<tr valign="top">
...
<td>
743,0
</td>
...
</tr>
<tr valign="top">
...
<td>
8583,0
</td>
...
</tr>
...
</table>
{{ op.offer.product.manufacturer }}
- из позиции заказа (op) достаем торговое предложение, которое было добавлено в заказ, потом получаем связанный товар, к которому относится торговое предложение и узнаем производителя товара.
В результате получим форму счета-фактуры следующего вида: