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

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


<pre>
<pre>
{% for i in pays %}{% 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>
Рядок 25: Рядок 25:
creator            : кто создал платеж (admin - администратор, user - пользователь, kernel - система, other - иное)
creator            : кто создал платеж (admin - администратор, user - пользователь, kernel - система, other - иное)
creator_id          : id создателя (администратора или пользователя)
creator_id          : id создателя (администратора или пользователя)
creator_ip          : ip создателя
creator_ip          : ip создателя в виде целого числа
creator_ipa        : ip создателя
reason              : дополнительные закодированные данные платежа
reason              : дополнительные закодированные данные платежа
comment            : комментарий к платежу
comment            : комментарий к платежу
category            : категория платежа
category            : категория платежа
user.name          : логин
user.name          : логин
user.pass          : пароль
user.fio            : ФИО
user.fio            : ФИО
user.grp            : номер группы клиента
user.grp            : номер группы клиента
Рядок 44: Рядок 44:
user.commen        : комментарий
user.commen        : комментарий
user.lstate        : нужна авторизация/всегда онлайн
user.lstate        : нужна авторизация/всегда онлайн
user.discoun        : скидка
user.discount      : скидка
user.dopdata        : дополнительные данные
user.dopdata        : дополнительные данные
user.services      : подключенные услуги
user.services      : подключенные услуги
Рядок 50: Рядок 50:
</pre>
</pre>


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


<pre>
<pre>
{% for i in pays %}{% one_line %}
{% for i in pays %}{% one_line %}
{{i.time}},{{ i.cash }},"{{i.comment|csv}}"
{{i.time}},{{ i.cash }},{{ i.comment|csv }}
{% one_line_end %}
{% one_line_end %}
{% endif %}
{% endfor %}
</pre>
</pre>


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


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


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


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


<pre>
<pre>
{% for i in pays %}{% one_line %}
{% for i in pays %}{% one_line %}
{% if i.user.grp_name == "Пользователь" %}
{% if i.category == 1 %}
{{i.time}},{{ i.cash }},"{{i.user.dopdata._adr_street.show()|csv}}","{{i.user.grp_name|csv}}"
{{ i.time }},{{ i.cash }},{{ i.user.dopdata._adr_street.get()|csv }},{{ i.user.grp_name|csv }}
{% endif %}
{% endif %}
{% one_line_end %}
{% one_line_end %}
{% endif %}
{% 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 }}