Использование шаблона печати и его настройка

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (21)

просмотр истории страницы
** *create_date* \- Дата договора.
** *nds* \- процент НДС
* ** *tarif* \- Тариф абонента. У этой переменной есть поля, содержащие более детальную информацию. Список полей:
*** *name* \- Название тарифа.
*** *tarif_group* \- Текстовое имя группы тарифа.
*** *limit* \- Ограничение по данному тарифу.
*** *get_abon_sum* \- Абонентская плата тарифа.
* *users* \- Содержит список учетных записей абонента. *{{ users.0 }}* \- первая учетная запись абонента, *{{ users.1 }}* \- вторая учетная запись абонента, *{{ users.2 }} *\- третья учетная запись абонента и т.д.. У каждой учетной записи есть поля, содержащие более детальную информацию. Список полей:
** *login* \- логин учетной записи.
** *gen_pwd* \- пароль учетной записи.
** *ip* \- IP адрес учетной записи.
** *hw_serial* \- серийный номер оборудования.
** *mask* \- Маска подсети учетной записи.
** *mask_str* \- Маска подсети в десятичной форме.
При создании и редактировании шаблона возможно использование переменных печати в формате Django Template. Возможные тэги django template можно посмотреть в [данной статье на русском языке|https://djbook.ru/rel1.6/ref/templates/builtins.html] и [официальной документации Django на английском языке|https://docs.djangoproject.com/en/1.7/ref/templates/builtins/] (большая часть документации по версии 1.7 так же применима к используемой версии 1.6). Для вставки значения из переменной в шаблоне необходимо использовать две пары фигурных скобок с названием переменной внутри, т.е. вот так \-  {{ название_переменной }} . Ниже приведен небольшой пример.

h3. Сумма всех тарифных услуг

Чтобы получить эту сумму в документе, нужно обратитьсяк модели tarif, но через абонента. Проще, говоря, вот так:

{code}{{ abonent.tarif.get_abon_sum }}{code}

h3. Скрипт выводящий (Буквами), за какой месяц счет.

{{ service.price|div:5 }} {# Деление #}
{{ service.price|add:5 }} {# Сложение #}
{{ service.price|addf:5 }} {# Сложение дробных чисел #}
{{ service.price|sub:5 }} {# Вычитание #}
{code}
<body>
<div class="container">
<div><img width=200 height=200 src="{{MEDIA_URL}}{% generate_qrcode inst operator_attrs.2 operator_attrs.6 operator_attrs.7 operator_attrs.8 op_summa|mul:100 'Назначение платежа' operator_attrs.4 abonent_attrs.3 abonent_attrs.1002 abonent_attrs.1001 abonent_attrs.1003 operator_attrs.12 %}" alt="альтернативный текст"></div>
<div><img width=200 height=200 src="{{MEDIA_URL}}{% generate_qrcode inst operator_attrs.2 operator_attrs.6 operator_attrs.7 operator_attrs.8 op_summa|mul:100 'Оплата услуг связи' operator_attrs.4 abonent_attrs.3 abonent_attrs.1007 abonent_attrs.1006 abonent_attrs.1008 operator_attrs.12 %}?{% now 'U' %}" alt="QR-код"></div>
</div>
</body>
h3. Разные договора в агентских счетах

Если Вы предоставляете услуги телефонии по [агентской схеме|CarbonBilling:Взаиморасчеты между операторами] операторами, агентская схема телефонии и транзит] и абонент подписывает с каждым оператором отедьные договора с разными номерами, можно выводить соответствующий номер в финансовых документах.
Допустим, у Вас есть несколько партнёров: Вымпелком, ТТК, МТС.

# Добавьте абонентам соответствующие реквизиты.

h3. Вывод информации об оборудовании, установленное абоненту.

!equip.png|width=600px!

Использовать только в привязке _abonents_
{code}
{% for equip in abonent_id_equipment %}
id {{ equip.id }}
Описание {{ equip.name }}
Тип {{ equip.equipment_type }}
Серийный номер {{ equip.serial_no }}
{% endfor %}
{code}

h3. Вывод названия услуг в документах для печати

Получить название услуги в шаблоны печати можно следующим методом:
1. Используем привязку _FinanceOperations_ + доп.привязка _op_type_id=1_

{code}
{% for service in act_services %}
Абонентская плата за услугу: {{ service.name }}
{% endfor %}

****
{% for service in services %}
Название: {{ service.name }}
{{services.0.usluga.name}}
{% endfor %}
{code}

2. Если использовать привязку _FinanceOperations_ + доп.привязка _op_type_id=6_
{code}{{active_services.0}} {{active_services.1}} {{active_services.2}}{code}

h3. Вывод учетной записи определенного типа

Вывести учетную запись определенного типа(Internet, VOIP, IPTV, Sensor) можно с помощью конструкции:
{code}
{% for user in users %}
{% if user.service_type_id == 2 %}
{{ user.login }}
{% endif %}
{% endfor %}
{code}
Где 2 - id типа учетной записи

Соответствие типа учетной записи и id:
1 - Internet
2 - IPTV
3 - VOIP
4 - Sensor

h2. Шаблоны .docx

Реквизит ФИО состоит из трех частей (фамилия, имя, отчество), каждую из которых можно вывести по-отдельности:
{code}
{% if abonent_attrs %}
Фамилия: {{ abonent_attrs['24']['0'] }} - фамилия
{{ abonent_attrs['24']['1'] }} - имя
{{ abonent_attrs['24']['2'] }} - отчество
{% endif %}
{code}
Для корректного вывода данного реквизита полностью, необходимо использовать конструкцию:
{code}
{% if abonent_attrs %}
{% endif %}
{code}
Для вывода значения реквизита с отрицательным id(например, с id -219000), вместо минуса необходимо указывать "m":
{code}
{{ abonent_attrs['m219000'] }}
{code}
Вывод названия реквизита с отрицательным id:
{code}
{{ abonent_attrs_names["-219000"] }}
{code}
# При проверке шаблона с чем-то вроде {{users.0.something}} используется специальный абонент, у которого количество users равно нулю. Для того, чтобы шаблон проходил проверку, необходимо оборачивать элементы шаблона в if:
{code}
{% endif %}
{code}
Например, так можно вывести дату договора в формате "«05» ноября 2020г."
{code}
«{{ abonent.create_date|dateformat("%d") }}» {% if abonent.create_date | dateformat('%-m') == '1' %}января{% elif abonent.create_date | dateformat('%-m') == '2' %}февраля{% elif abonent.create_date | dateformat('%-m') == '3' %}марта{% elif abonent.create_date | dateformat('%-m') == '4' %}апреля{% elif abonent.create_date | dateformat('%-m') == '5' %}мая{% elif abonent.create_date | dateformat('%-m') == '6' %}июня{% elif abonent.create_date | dateformat('%-m') == '7' %}июля{% elif abonent.create_date | dateformat('%-m') == '8' %}августа{% elif abonent.create_date | dateformat('%-m') == '9' %}сентября{% elif abonent.create_date | dateformat('%-m')== '10' %}октября{% elif abonent.create_date | dateformat('%-m') == '11' %}ноября{% elif abonent.create_date | dateformat('%-m') == '12' %}декабря{% else %}---
{% endif %} {{ abonent.create_date|dateformat("%Y") }}г.
{code}
# Для применения математической операции необходимо предварительно перевести значение исходных данных в тип данных *int* (если число целое без дробной части) или *float* (если число с дробной частью)
Пример умножения цены step_price(которая равна 1.5) на 1.2. В выводе будет число 1.8
{% endif %}
{code}
# Для отображения суммы стоимости тарифа
{code}{{ abonent.tarif.get_abon_sum() }}{code}
# Требуется показать в шаблоне печати последние 3 символа логина
{code}{{ users.0.login|slice:"-3:" }}{code}

h3. Примеры шаблонов
* [Заявка HelpDesk/CRM|^helpdesk.docx]
* [Акт+распечатка звонков|^akt_and_voip.docx]

h2. Расположение файлов на сервере

Файлы шаблонов хранятся на сервере биллинга в каталоге:
{code}
/app/asr_billing/mnt/var/print_tmpl/
{code}