Биллинговая система Nodeny
22 Ноября 2024, 11:10:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 2 3 [4] 5 6
  Печать  
Автор Тема: обновление на 50.28=>50.32  (Прочитано 36006 раз)
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #45 : 12 Октября 2009, 16:25:10 »

а чё в письме пишет???
Код:
Очередное обновление Nodeny50! Необходимо обновится.

Откуда ж я знаю чего твой почтовый сервер кодировку сломал
Там написано следующее
Очередное обновление Nodeny50! Необходимо обновится.
Записан
Jovani
NoDeny
Постоялец
*

Карма: -9
Offline Offline

Сообщений: 234


Просмотр профиля
« Ответ #46 : 12 Октября 2009, 21:02:22 »

Не знаю у кого как , но в группе "Удаленные" галочка стоит не показывать группу в обычном списке, а их все равно показывает, версия 50.28.
« Последнее редактирование: 13 Октября 2009, 07:54:19 от vano » Записан
Jovani
NoDeny
Постоялец
*

Карма: -9
Offline Offline

Сообщений: 234


Просмотр профиля
« Ответ #47 : 12 Октября 2009, 21:08:54 »

А на тестовом Nodeny какая версия 49.31, или Вы ошиблись, может должна быть 50.31...
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #48 : 12 Октября 2009, 21:30:40 »

какая разница 49 или 50 на демоверсии Непонимающий внешне они не отличаются
Записан
trio
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #49 : 12 Октября 2009, 21:56:54 »

Заметил такую особенность.
Клиент в средине месяца выработал весь пакет и ушел в минус на 12 грн.
Тут ему захотелось перейти на другой пакет, он переходит у него обнуляется трафик и сумма.
Пополняет на сумму пакета и работает себе дальше.
а минус 12 ему прощается. Возможно учесть в следующих версиях долг не обнулять при смене тарифа в средине месяца ?
Записан
Maks
NoDeny
Ветеран
*

Карма: 13
Offline Offline

Сообщений: 575


Скажи спасибо - подними карму.

https://t.me/smv https://t.me/smv_wz
Просмотр профиля Email
« Ответ #50 : 12 Октября 2009, 22:40:16 »

Заметил такую особенность.
Клиент в средине месяца выработал весь пакет и ушел в минус на 12 грн.
Тут ему захотелось перейти на другой пакет, он переходит у него обнуляется трафик и сумма.
Пополняет на сумму пакета и работает себе дальше.
а минус 12 ему прощается. Возможно учесть в следующих версиях долг не обнулять при смене тарифа в средине месяца ?

Так это все логично, он входит по перерасходу, а так больший пакет и перерасхода нет. Но он больше платит в месяц.
Записан

Nodeny общение
https://t.me/nodeny_chat
trio
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #51 : 13 Октября 2009, 01:11:54 »

Есть модуль квитанции Skvit.pl
как формируется лицевой счет ?
Попробывал подставить в лицевой поле contract из Users не выводит - почему ?
Хотя поле ip и поле name из Users - идет на ура.
« Последнее редактирование: 13 Октября 2009, 01:15:23 от trio » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #52 : 13 Октября 2009, 07:03:25 »

Есть модуль квитанции Skvit.pl
как формируется лицевой счет ?
Попробывал подставить в лицевой поле contract из Users не выводит - почему ?
Хотя поле ip и поле name из Users - идет на ура.
как именно ты подставлял ip и contract
Записан
Jovani
NoDeny
Постоялец
*

Карма: -9
Offline Offline

Сообщений: 234


Просмотр профиля
« Ответ #53 : 13 Октября 2009, 07:54:54 »

Не знаю у кого как , но в группе "Удаленные" галочка стоит не показывать группу в обычном списке, а их все равно показывает, версия 50.28.

На єтот вопрос какой ответ?
Записан
trio
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #54 : 13 Октября 2009, 08:16:31 »


Цитировать
как именно ты подставлял ip и contract
ставлю
2 -> $U{$Mid}{ip} - появляется в платежке в поле лицевой счет ір клиента
сталвю
2 -> $U{$Mid}{contract} - пусто.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #55 : 13 Октября 2009, 09:20:50 »

вместо $U{$Mid}{contract} попробуй $pm->{contract}
Записан
trio
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #56 : 13 Октября 2009, 12:48:17 »

вместо $U{$Mid}{contract} попробуй $pm->{contract}

Спасибо есть контакт!
а как мак клиента вытянуть ?
« Последнее редактирование: 13 Октября 2009, 13:20:30 от trio » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #57 : 13 Октября 2009, 13:22:41 »

вместо $U{$Mid}{contract} попробуй $pm->{contract}

Спасибо есть контакт!
а как мак клиента вытянуть ?

смотри в коде выборку из таблицы dopdata, я смогу посмотреть только вечером
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #58 : 14 Октября 2009, 00:08:28 »

Довел до ума плагин квитанций. Теперь аналогично скрипту nomake дополнительные данные задаются в тегах <dopdata-алиас>, например:

Код:
ул. <dopdata-_adr_street> дом <dopdata-_adr_house> кв. <dopdata-_adr_room>

Кстати, модуль получился небольшим, на его примере покажу некоторые возможности плагинов NoDeny
Код:
#!/usr/bin/perl
# ------------------- NoDeny ------------------
# Copyright (с) Volik Stanislav, 2008, 2009
# Read license http://nodeny.com.ua/license.txt
# ---------------------------------------------
$VER=50.25;

sub KV_main
{
 &LoadDopdataMod;

 $f="$Nodeny_dir_web/kvit.html";
 open(FL,"<$f") or &Error($V? "$V Не найден шаблон для квитанций ".&Filtr_out($f) : $Er_Mess_for_Client, $EOUT);
 $out='';
 $out.=$_ while(<FL>);
 close(FL);

 # Персональный платежный код
 $csum=0;
 $csum+=$_ foreach split //,$Mid;
 $csum%=10;
 $account="$Mid$csum";

 %f=(
   1 => $U{$Mid}{o_fio},
   2 => $account,
   4 => $pm->{contract},
 );

 $out=~s/<(\d+)>/$f{$1}/g;

 $sth=&sql($dbh,"SELECT * FROM dopdata WHERE revision IN (SELECT rev FROM rev_users WHERE id=$Mid)");
 while ($h=$sth->fetchrow_hashref)
 {
    $field_alias=$h->{field_alias};
    $field_value=&Filtr_out(
       &nDopdata_print_value
       ({
          type => $h->{field_type},
          alias => $field_alias,
          value => $h->{field_value}
       })
    );
    $field_alias='_adr_street' if $field_alias eq 'p_street:street:name_street';
    $out=~s/<dopdata-$field_alias>/$field_value/g;
 }

 print "Content-type: text/html\n\n".$out;
 exit;
}

1;

KV_main задается в реестре плагинов plugin_reestr.cfg.

&LoadDopdataMod; - загрузка модуля для работы с дополнительными данными. Дело в том, что недостаточно получить значение поля, бывают закодированные типы полей, которые необходимо преобразовывать в значения. Например тип поля "да/нет" хранится в базе не как строка, а как 1/0. Поле "улица" - это не название, а номер улицы в таблице p_street. Значение, хранящееся в таблице dopdata преобразуется в конечное с помощью подпрограммы nDopdata_print_value (встретите далее в коде).

Код:
$f="$Nodeny_dir_web/kvit.html";
 open(FL,"<$f") or &Error($V? "$V Не найден шаблон для квитанций ".&Filtr_out($f) : $Er_Mess_for_Client, $EOUT);
 $out='';
 $out.=$_ while(<FL>);
 close(FL);
считывание шаблона квитанций, если ошибка - выводим в браузер соответствующее сообщение. Обращаю внимание, что крайне рекомендуется понимать кто видит ошибку - админ или клиент. Админу выводится информация об ошибке, клиенту - заглушка типа "извините, технические работы" (указывается в языковом файле). $V установлена, когда  статистику просматривает админ, более того $V хранит сообщение "вы админ, поэтому вам видны сообщения об ошибках".

шаблон квитанции получаем в переменной $out. Все, что попадает под выражение <цифра> заменяем на соответствующее значение:

Код:
$out=~s/<(\d+)>/$f{$1}/g;

значений всего 3 (ФИО, ППК и контракт). Получаем все дополнительные данные клиента:

Код:
$sth=&sql($dbh,"SELECT * FROM dopdata WHERE revision IN (SELECT rev FROM rev_users WHERE id=$Mid)");

здесь

Код:
SELECT rev FROM rev_users WHERE id=$Mid

- это получение актуальной ревизии данных для клиента с id=$Mid. $Mid - это id основной записи клиента, а он может просматривать статистику с алиасной, поэтому $id не следует использовать. Насчет ревизий напомню - у клиента может быть множество копий его данных, но актуальны именно те, которые имеют самый большой номер ревизии. Другими словами, которые были изменены самыми последними.

Кстати, ревизии уникальны для клиентов, т.е. один и тот же номер ревизии не может встречаться у разных клиентов, т.е. не требуется писать типа:

Код:
$sth=&sql($dbh,"SELECT * FROM dopdata WHERE revision IN (SELECT rev FROM rev_users WHERE id=$Mid) AND parent_id=$Mid");


Код:
while ($h=$sth->fetchrow_hashref)
получение очередной строки-результата выполнения sql запроса.

Код:
    $field_alias=$h->{field_alias};
    $field_value=&Filtr_out(
       &nDopdata_print_value
       ({
          type => $h->{field_type},
          alias => $field_alias,
          value => $h->{field_value}
       })
    );
получим значение дополнительного поля, преобразованное в читаемый вид (с помощью подпрограммы nDopdata_print_value).

обязательно отфильтровываем спецсимволы (Filtr_out), которые могут исказить вывод в браузере, т.е. символы тегов <,>,&.

Чисто для удобства преобразуем алиас улицы ('p_street:street:name_street') в читаемый вид ('_adr_street'), чтобы в шаблоне квитанции было проще задавать (<dopdata-_adr_street>)

Код:
$field_alias='_adr_street' if $field_alias eq 'p_street:street:name_street';

Не забываем в конце

Код:
1;

- perl требует, чтобы загружаемые модули возвращали ненулевое значение
« Последнее редактирование: 14 Октября 2009, 00:13:37 от Efendy » Записан
trio
NoDeny
Пользователь
*

Карма: 0
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #59 : 14 Октября 2009, 00:36:49 »

Версия 50.31
Связка nomake.pl dhcp.txt

Приблизительно через 12часов работы nomake.pl не вытаскивает поле <lat_login> указанное в шаблоне dhcp.txt
В следствии чего в dhcpd.conf не хватает данных (логина клиента) - dhcpd после автоматического перезапуска перестает работать.
Записан
Страниц: 1 2 3 [4] 5 6
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!