... h2. Шаблоны 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* \- стоимость звонка. * *descr* \- содержимое поля "Описание" при формировании документа. * *abonent_status* \- статус подключения * *abonent_substatus* \- подстатус подключения {tip} Вывод всех доступных в шаблоне переменных {code} {% debug %} {code} {tip} {info}Для того, чтобы печатать финансовые документы, как PDF, необходимо перейти в настройки оператора связи - настройки биллинга и включить опцию "Печатать финансовые документы, как PDF"{info} !PDF.png|border=1! h2. Скрипт выводящий (Буквами), за какой месяц счет. {code} Без склонения месяц выводится: {{ 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 %} {code} h2. Шаблоны Docx При создании и редактировании шаблона возможно использование переменных печати в формате *Jinja2*. В большинстве случаев всё аналогично шаблонам HTML. Различия: # Значение по умолчанию. Если в HTML шаблоне была конструкция вида {{ sms\|default_if_none:"-\--" }}, то в DOCX следует использовать {{ sms\|default("-\--", true) }}
|
... {% for attr in abonent_attrs %} {{ abonent_attrs_names[attr] }}: {{ abonent_attrs[attr] }} {% endfor %} {code} # При проверке шаблона с чем-то вроде {{users.0.something}} используется специальный абонент, у которого количество users равно нулю. Для того, чтобы шаблон проходил проверку, необходимо оборачивать элементы шаблона в if: {code} {% if users.0 %} {{users.0.something}} {% endif %} {code} Примеры шаблонов в формате *Docx*: * [Карточка абонента|^abonent_card_hWRmdlX-2.docx] * [Счет по услугам|^abonent_card_hWRmdlX-2.docx]
|