Создание шаблона печатной формы для одного заказа
Скопировать ссылку на статью
Скопировано

Примечание

Печатные формы также могут быть созданы автоматически по 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) достаем торговое предложение, которое было добавлено в заказ, потом получаем связанный товар, к которому относится торговое предложение и узнаем производителя товара.

В результате получим форму счета-фактуры следующего вида:

Благодарим за отзыв.
Была ли статья полезна?
Нет
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Да
Предыдущая статья
Основные настройки печатной формы
Печатная форма - файл, который генерируется из заказа или списка с подстановкой данных из заказа.
Следующая статья
Создание шаблона для списка заказов
Рассмотрим, как создать печатную форму для групповой печати.