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

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
Немає опису редагування
 
(Не показано 25 проміжних версій цього користувача)
Рядок 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>


Сохраните файл, после чего зайдите в раздел "Платежи" и нажмите на кнопку "Экспортировать". В появившемся окне выберите файл с именем CSV. В результате, вы получите примерно такой вывод:
Нажмите на кнопку «Сохранить», после чего зайдите в раздел «Платежи» и нажмите на кнопку «Экспортировать». В появившемся окне выберите файл с именем 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 записи в таблице платежей
mid             : id учетной записи клиента
mid                 : id учетной записи клиента
cash           : сумма платежа, если меньше нуля - списание, больше 0 - пополнение счета
cash               : сумма платежа, если меньше нуля - списание, больше 0 - пополнение счета
time           : время создания платежа в виде timestamp
time               : время создания платежа в виде timestamp
creator     : кто создал платеж (admin - администратор, user - пользователь, kernel - система, other - иное)
creator             : кто создал платеж (admin - администратор, user - пользователь, kernel - система, other - иное)
creator_id : id создателя (администратора или пользователя)
creator_id         : id создателя (администратора или пользователя)
creator_ip : ip создателя
creator_ip         : ip создателя в виде целого числа
reason     : дополнительные закодированные данные платежа
creator_ipa        : ip создателя
comment : комментарий к платежу
reason             : дополнительные закодированные данные платежа
category : категория платежа
comment             : комментарий к платежу
usr.name           : логин
category           : категория платежа
usr.pass           : пароль
user.name           : логин
usr.fio            : ФИО
user.fio           : ФИО
usr.grp             : номер группы клиента
user.grp           : номер группы клиента
usr.grp_name       : имя группы
user.grp_name       : имя группы
usr.state           : on - доступ открыт, off - закрыт
user.state         : on - доступ открыт, off - закрыт
usr.state_off       : установлен если state равен off
user.state_off     : установлен если state равен off
usr.contract       : договор
user.contract       : договор
usr.contract_date   : дата договора (timestamp)
user.contract_date : дата договора (timestamp)
usr.balance         : баланс
user.balance       : баланс
usr.limit_balance   : граница отключения
user.limit_balance : граница отключения
usr.block_if_limit : отключать ли запись при достижении границы отключения
user.block_if_limit : отключать ли запись при достижении границы отключения
usr.cstate         : техническое состояние (настроить/ремонт/вирусы...) в виде числа
user.cstate         : техническое состояние (настроить/ремонт/вирусы...) в виде числа
usr.comment         : комментарий
user.commen         : комментарий
usr.lstate         : нужна авторизация/всегда онлайн
user.lstate         : нужна авторизация/всегда онлайн
usr.discount       : скидка
user.discount       : скидка
usr.dopdata         : дополнительные данные
user.dopdata       : дополнительные данные
usr.services       : подключенные услуги
user.services       : подключенные услуги
usr.ips             : ip адреса
user.ips           : ip адреса
</pre>
 
Если вы экспортируете в формат 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 }}