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

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

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

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

Нажмите на кнопку "Сохранить", после чего зайдите в раздел "Платежи" и нажмите на кнопку "Экспортировать". В появившемся окне выберите файл с именем 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 создателя
reason              : дополнительные закодированные данные платежа
comment             : комментарий к платежу
category            : категория платежа
user.name           : логин
user.pass           : пароль
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 %}
{% endif %}

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

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

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