Шаблоны для экспорта платежей: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
Немає опису редагування
 
(Не показано 27 проміжних версій цього користувача)
Рядок 1: Рядок 1:
Если вы хотите экспортировать платежи в определенном формате, например csv, вы можете создать шаблон или несколько шаблонов. На титульной странице админки зайдите  в раздел "Документы" и создайте папку с любым именем, например, "Экспорт платежей". В этой папке создайте файл, например, с именем "CSV". В этот файл вставьте следующий текст:
Если вы хотите экспортировать платежи в определенном формате, например csv, вы можете создать один или несколько шаблонов. На титульной странице админки зайдите  в раздел «Документы» и создайте папку с любым именем, например, «Шаблоны экспорта». В этой папке создайте файл, например, с именем «pays.csv». В этот файл вставьте следующий текст:


<pre>
<pre>
{% for i in res %}{% one_line %}
{% for i in pays %}{% one_line %}
{{i.time}}:{{ i.mid }}:{{ i.cash }}:{{i.category}}
{{ i.time }},{{ i.mid }},{{ i.cash }},{{ i.category }}
{% one_line_end %}
{% one_line_end %}
{% endif %}  
{% endfor %}  
</pre>
</pre>


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


<pre>
<pre>
  1455023272:15:200.00:1  
  1455023272,15,200.00,1  
  1450882737:15:0.00:400  
  1450882737,15,0.00,400  
  1450882493:15:0.00:400  
  1450882493,15,0.00,400  
</pre>
</pre>


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


<pre>
<pre>
id             : id учетной записи клиента
id                 : id записи в таблице платежей
name           : логин
mid                : id учетной записи клиента
pass            : пароль
cash                : сумма платежа, если меньше нуля - списание, больше 0 - пополнение счета
fio             : ФИО
time                : время создания платежа в виде timestamp
grp             : номер группы клиента
creator            : кто создал платеж (admin - администратор, user - пользователь, kernel - система, other - иное)
grp_name       : имя группы
creator_id          : id создателя (администратора или пользователя)
state           : on - доступ открыт, off - закрыт
creator_ip          : ip создателя в виде целого числа
state_off       : установлен если state равен off
creator_ipa        : ip создателя
contract       : договор
reason              : дополнительные закодированные данные платежа
contract_date   : дата договора (timestamp)
comment            : комментарий к платежу
contract_date_as_text : дата договора в виде dd.mm.yyyy
category           : категория платежа
balance         : баланс
user.name          : логин
limit_balance   : граница отключения
user.fio           : ФИО
block_if_limit : отключать ли запись при достижении границы отключения
user.grp           : номер группы клиента
cstate         : техническое состояние (настроить/ремонт/вирусы...) в виде числа
user.grp_name       : имя группы
comment         : комментарий
user.state         : on - доступ открыт, off - закрыт
lstate         : нужна авторизация/всегда онлайн
user.state_off     : установлен если state равен off
discount       : скидка
user.contract       : договор
traf            : суммарный трафик
user.contract_date : дата договора (timestamp)
traf_in        : суммарный трафик к клиенту
user.balance       : баланс
traf_out        : суммарный трафик от клиента
user.limit_balance : граница отключения
traf1          : трафик в байтах направления 1
user.block_if_limit : отключать ли запись при достижении границы отключения
...
user.cstate         : техническое состояние (настроить/ремонт/вирусы...) в виде числа
traf4          : трафик в байтах направления 4
user.commen         : комментарий
in1            : входящий трафик направления 1
user.lstate         : нужна авторизация/всегда онлайн
out1            : исходящий трафик направления 1
user.discount       : скидка
...
user.dopdata        : дополнительные данные
dopdata        : дополнительные данные
user.services      : подключенные услуги
services        : подключенные услуги
user.ips            : ip адреса
ips            : ip адреса
</pre>
frozen_srv      : количество замороженных услуг
 
Если вы экспортируете в формат csv, учтите особенности этого формата: если в поле будет символ разделитель, то поле необходимо взять в кавычки. Кроме этого, если в поле присутствует кавычка - ее необходимо удвоить. Для этого необходимо использовать фильтр с именем csv:
 
<pre>
{% for i in pays %}{% one_line %}
{{i.time}},{{ i.cash }},{{ i.comment|csv }}
{% one_line_end %}
{% endfor %}
</pre>
 
В выборке можно указывать условия, например, экспортируем платежи пользователей в группе «Пользователь»
 
<pre>
{% 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 %}
</pre>
 
Тег {% one_line %} нужен для того, чтобы вся информации внутри него на выходе была в одну строку.
 
Дополнительные поля клиента хранятся в user.dopdata. Чтобы получить их значения, необходимо обратиться по имени поля в базе данных (смотри настройки дополнительного поля) и добавить get(): user.dopdata.имя_поля.get(). Например:
 
<pre>
{% 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 %}
</pre>
 
У абонента может быть подключено несколько услуг. Но обычно одна. Выведем первую из списка:
 
<pre>
{{ i.user.services.0.title|csv }}
</pre>
</pre>

Поточна версія на 14:44, 2 грудня 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 %}

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

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