Шаблоны для экспорта платежей: відмінності між версіями
Sv (обговорення | внесок) Немає опису редагування |
Sv (обговорення | внесок) Немає опису редагування |
||
Рядок 67: | Рядок 67: | ||
{% endif %} | {% endif %} | ||
{% one_line_end %} | {% one_line_end %} | ||
{% | {% endfor %} | ||
</pre> | </pre> | ||
Версія за 15:51, 13 листопада 2019
Если вы хотите экспортировать платежи в определенном формате, например 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 %}