Шаблоны HTML
При создании и редактировании шаблона возможно использование переменных печати в формате Django Template. Возможные тэги django template можно посмотреть в данной статье https://djbook.ru/rel1.6/ref/templates/builtins.html Для вставки значения из переменной в шаблоне необходимо использовать две пары фигурных скобок с названием переменной внутри, т.е. вот так - {{ название_переменной }} . Ниже приведен небольшой пример.
Шаблон.png - Это один из шаблонов по умолчанию, карточка абонента. При печати карточки такого абонента - Абонент.png может быть создан следующий html-документ - Карточка.png. Обратите внимание что текст шаблона содержащий переменные был заменен на различный текст. Так например вместо {{ abonent.name }} было подставлено "ООО Лучший провайдер". Важно заметить и знать, что если при печати переменная не содержит значения, то будет вставлена пустая строка и никаких сообщений об ошибке не появится.
Ниже приведен неполный список доступных к использованию переменных:
- abonent - Информация по абоненту. У этой переменной есть поля, содержащие более детальную информацию. Список полей:
- name - ФИО абонента
- contract_number - Номер договора абонента.
- email - Адрес электронной почты абонента.
- sms - Телефонный номер абонента.
- home - Адрес дома абонента.
- a_home_number - Номер квартиры абонента.
- create_date - Дата договора.
- nds - процент НДС
- tarif - Тариф абонента. У этой переменной есть поля, содержащие более детальную информацию. Список полей:
- name - Название тарифа.
- tarif_group - Текстовое имя группы тарифа.
- limit - Ограничение по данному тарифу.
- get_abon_sum - Абонентская плата тарифа.
- users - Содержит список учетных записей абонента. {{ users.0 }} - первая учетная запись абонента, {{ users.1 }} - вторая учетная запись абонента, {{ users.2 }} - третья учетная запись абонента и т.д.. У каждой учетной записи есть поля, содержащие более детальную информацию. Список полей:
- login - логин учетной записи.
- gen_pwd - пароль учетной записи.
- ip - IP адрес учетной записи.
- mask - Маска подсети учетной записи.
- mask_str - Маска подсети в десятичной форме.
- pull - IP пул абонента
- gateway - шлюз, указанный в пуле
- full_credit_summ - сумму текущего счёта + задолженность за предыдущий период.
- services - Содержит список активных услуг абонента. {{ services.0 }} - первая услуга абонента, {{ services.1 }} - вторая услуга абонента, {{ services.2 }} - третья услуга абонента и т.д.. У каждой услуги есть поля, содержащие более детальную информацию. Список полей:
- comment - Примечание.
- usluga - Услуга абонента. У этой переменной есть поля, содержащие более детальную информацию. Список полей:
- name - Название услуги.
- nds - процент НДС
- summa - цена услуги
- activate_pay - стоимость подключения услуги
- active_services - Содержит список включенных, но, не обязательно, активных услуг абонента. {{ active_services.0 }} - первая услуга абонента, {{ active_services.1 }} - вторая услуга абонента, {{ active_services.2 }} - третья услуга абонента и т.д.. У каждой услуги есть поля, содержащие более детальную информацию. Список полей аналогичен services
- operator - Оператор связи, обслуживающий абонента. У этой переменной есть поля, содержащие более детальную информацию.
- name - Название оператора связи.
- email - Адрес электронной почты оператора связи.
- sms - Телефон оператора связи.
- operator_attrs - Содержит список значений реквизитов оператора. Полный список доступных реквизитов можно посмотреть в разделе "Справочники" на вкладке "Реквизиты" - Реквизиты.png. Для указания реквизита через точку к названию переменной необходимо дописать его номер, т.е. например {{ operator_attrs.25 }} подставит значения реквизита "Юридический адрес".
- abonent_attrs - Содержит список значений реквизитов абонента. Полный список доступных реквизитов можно посмотреть в разделе "Справочники" на вкладке "Реквизиты" - Реквизиты.png. Для указания реквизита через точку к названию переменной необходимо дописать его номер, т.е. например {{ abonent_attrs.33 }} подставит значения реквизита "Комментарий".
- abonent_attrs_names - Содержит список названий реквизитов абонента. Например {{ abonent_attrs_names.33 }} подставит название реквизита, т.е. "Комментарий".
- voip_logs - Содержит список звонков у каждой учетной записи абонента.
- account_number - Номер абонента в учетной записи
- s_time - время начала звонка.
- mask - маска исходящего номера.
- direction_name - направление звонка
- v - время звонка в минутах
- bill_sum - стоимость звонка.
- account_number - Номер абонента в учетной записи
- descr - содержимое поля "Описание" при формировании документа.
- abonent_status - статус подключения
- abonent_substatus - подстатус подключения
Вывод всех доступных в шаблоне переменных {% debug %} |
Для того, чтобы печатать финансовые документы, как PDF, необходимо перейти в настройки оператора связи - настройки биллинга и включить опцию "Печатать финансовые документы, как PDF" |
Скрипт выводящий (Буквами), за какой месяц счет.
Без склонения месяц выводится: {{ op_date|date:"E" }} Для вычисления предыдущего месяца нужно в начало шаблона добавить загрузку математических фильтров {% load mathfilters %} Далее редактировать строку с датой {% with month=op_date.month|sub:1 %} Счет на оплату № {{ number }} от {{ op_date|date:"d.m.y" }} за {% if month == 1 %} январь {% elif month == 2 %} февраль {% elif month == 5 %} май {% endif %} {% endwith %}
Шаблоны Docx
При создании и редактировании шаблона возможно использование переменных печати в формате Jinja2. В большинстве случаев всё аналогично шаблонам HTML.
Различия:
- Значение по умолчанию. Если в HTML шаблоне была конструкция вида {{ sms|default_if_none:"
-" }}, то в DOCX следует использовать {{ sms|default("-", true) }} - Форматирование даты. Используется фильтр dateformat. Если в HTML шаблоне была конструкция вида {{ create_date|date:"d.m.y" }}, то в DOCX следует использовать {{ create_date|dateformat("%Y.%m.%d") }}
- Форматирование валюты. Используется фильтр rubles.
- При проверке шаблона с чем-то вроде users.0.something используется специальный абонент, у которого количество users равно нулю. Для того, чтобы шаблон проходил проверку, необходимо оборачивать элементы шаблона в if:
{% if users.0 %} {{users.0.something}} {% endif %}
Примеры шаблонов в формате Docx:
- Реквизиты абонентов выводятся следующим образом: Вывести значение реквизита "Комментарий" {{ abonent_attrs['33'] }} .
Для того, что бы вывести список всех доступных реквизитов воспользуйтесь конструкцией:Unknown macro: {% for attr in abonent_attrs %}{{ abonent_attrs_names[attr] }}: {{ abonent_attrs[attr] }}
Unknown macro: {% endfor %}