|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (29)
просмотр истории страницы{toc:maxLevel=3} |
h2. Описание системы шаблонов печати |
... |
** *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* \- Маска подсети в десятичной форме. |
... |
* *account* \- лицевой счет ** *balance* \- текущий баланс |
** *balance_buh* \- баланс бухгалтерский |
h3. Переменные для шаблона заявки HelpDesk в DocX |
... |
При создании и редактировании шаблона возможно использование переменных печати в формате 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} |
h3. Переменные. Циклы |
{code} {% with op_summa|div:1.2 as test %} |
... |
QR-коды формируются согласно [ГОСТ|http://roskazna.ru/dokumenty/dokumenty/vzaimodeystvie-s-bankovskoy-sistemoy/1157315/] |
|
{code} {% load pytils_numeral %} |
{% load mathfilters %} |
{% load qr_code %} <!DOCTYPE html> |
... |
<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 'Назначение платежа' 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> |
... |
operator_attrs.7 - Банк operator_attrs.8 - БИК |
op_summa - сумма |
op_summa - сумма, по ГОСТ она должна быть в копейках, поэтому в документе подключен модуль mathfilters и сумма умножена на 100 |
Назначение платежа - указать текст без ковычек operator_attrs.4 - ИНН |
... |
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. Примеры шаблонов |
... |
* [Договор|^contract_dogovor.docx] * [Заявка HelpDesk/CRM|^helpdesk.docx] |
* [Акт+распечатка звонков|^akt_and_voip.docx] |
h2. Расположение файлов на сервере Файлы шаблонов хранятся на сервере биллинга в каталоге: {code} /app/asr_billing/mnt/var/print_tmpl/ {code} |