Шаблоны для экспорта платежей

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку

Если вы хотите экспортировать платежи в определенном формате, например csv, вы можете создать один или несколько шаблонов. На титульной странице админки зайдите в раздел «Документы» и создайте папку с любым именем, например, «Шаблоны экспорта». В этой папке создайте файл, например, с именем «pays.csv». В этот файл вставьте следующий текст:

{% for i in pays %}{% one_line %}
{{ i.time }},{{ i.mid }},{{ i.cash }},{{ i.category }}
{% one_line_end %}
{% endfor %} 

Нажмите на кнопку «Сохранить», после чего зайдите в раздел «Платежи» и нажмите на кнопку «Экспортировать». В появившемся окне выберите файл с именем pays.csv. В результате, вы получите примерно такой вывод:

 1455023272,15,200.00,1 
 1450882737,15,0.00,400 
 1450882493,15,0.00,400 

Здесь вы получили информацию о трех платежах. В первой колонке время создания платежа в виде timestamp, во 2й - id пользователя, в 3й - сумма, в 4й - категория. Данные, которые вы выводите, находятся внутри двойных фигурных скобок. Вам доступны следующие поля:

id                  : id записи в таблице платежей
mid                 : id учетной записи клиента
cash                : сумма платежа, если меньше нуля - списание, больше 0 - пополнение счета
time                : время создания платежа в виде timestamp
creator             : кто создал платеж (admin - администратор, user - пользователь, kernel - система, other - иное)
creator_id          : id создателя (администратора или пользователя)
creator_ip          : ip создателя в виде целого числа
creator_ipa         : ip создателя
reason              : дополнительные закодированные данные платежа
comment             : комментарий к платежу
category            : категория платежа
user.name           : логин
user.fio            : ФИО
user.grp            : номер группы клиента
user.grp_name       : имя группы
user.state          : on - доступ открыт, off - закрыт
user.state_off      : установлен если state равен off
user.contract       : договор
user.contract_date  : дата договора (timestamp)
user.balance        : баланс
user.limit_balance  : граница отключения
user.block_if_limit : отключать ли запись при достижении границы отключения
user.cstate         : техническое состояние (настроить/ремонт/вирусы...) в виде числа
user.commen         : комментарий
user.lstate         : нужна авторизация/всегда онлайн
user.discount       : скидка
user.dopdata        : дополнительные данные
user.services       : подключенные услуги
user.ips            : ip адреса

Если вы экспортируете в формат csv, учтите особенности этого формата: если в поле будет символ разделитель, то поле необходимо взять в кавычки. Кроме этого, если в поле присутствует кавычка - ее необходимо удвоить. Для этого необходимо использовать фильтр с именем csv:

{% for i in pays %}{% one_line %}
{{i.time}},{{ i.cash }},{{ i.comment|csv }}
{% one_line_end %}
{% endfor %}

В выборке можно указывать условия, например, экспортируем платежи пользователей в группе «Пользователь»

{% for i in pays %}{% one_line %}
{% if i.user.grp_name == "Пользователь" %}
{{ i.time }},{{ i.cash }},{{ i.user.login|csv }},{{ i.user.grp_name|csv }}
{% endif %}
{% one_line_end %}
{% endfor %}

Тег {% one_line %} нужен для того, чтобы вся информации внутри него на выходе была в одну строку.

Дополнительные поля клиента хранятся в user.dopdata. Чтобы получить их значения, необходимо обратиться по имени поля в базе данных (смотри настройки дополнительного поля) и добавить get(): user.dopdata.имя_поля.get(). Например:

{% for i in pays %}{% one_line %}
{% if i.category == 1 %}
{{ i.time }},{{ i.cash }},{{ i.user.dopdata._adr_street.get()|csv }},{{ i.user.grp_name|csv }}
{% endif %}
{% one_line_end %}
{% endfor %}

У абонента может быть подключено несколько услуг. Но обычно одна. Выведем первую из списка:

{{ i.user.services.0.title|csv }}