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

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 7 8 [9] 10
  Печать  
Автор Тема: Вести с полей  (Прочитано 56945 раз)
ivanmfan
Постоялец
***

Карма: 9
Offline Offline

Сообщений: 131


Просмотр профиля Email
« Ответ #120 : 24 Января 2014, 11:38:30 »

Я думаю многие возрадуются наконец, узнав о новой фиче. Вот сидел до полпятого ночи и сделал вам фичу "не допускаем ухода в минус".

Зачем с самого начала разработки биллинга в тарифах нужно было привязываться к дате старта и дате окончания. Было бы замечательно,  включать тариф на количество дней в месяце. Т.е. включил тариф, абоненту он дается на 30 дней.
Когда абонент берет кредит (т.е. когда у него на счету уже 0 дней), то у него количество дней уходит в минус т.е. "Количество дней: каждый день уменьшается к примеру до -4", после включения нового тарифа ему  включает интернет на 30 - 4 = 26дней.
Алгоритм примерно таков:
Раз в сутки в 00:00 скрипт обходит всех абонентов и выполняет "Количество дней = Количество дней -1", если у него уже 0й день то просто абоненту ставит "Доступ: Запрещен" и на след день он этого абонента не проверяет, когда абонент берет кредитные дни то у него становится возможность по дням уйти в минус на  количество в настройках. Либо у данного абонента Статус может быть : Приостановлен, тогда скрипт так же не выполняет "Количество оставшихся дней -1".
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #121 : 24 Января 2014, 18:47:40 »

Я не полностью вник в суть, но прокомментирую по поводу дней. Представим, что мы программа. Биллинг. Вот у нас есть тариф и количество дней работы тарифа. Проходит час. К вам поступает запрос: сколько дней осталось пользоваться тарифом? Для того, чтобы в любой момент времени узнать сколько осталось, нам нужно регулярно уменьшать счетчик, причем у тарифов каждого клиента. Например, каждую 1 минуту мы уменьшаем количество времени в тарифе на 1 минуту. Забудем, что мы дрочим диск, и посмотрим на другую сторону: компьютер - это не сферический конь в вакуме. Идеально с точностью в 1 секунду не сработает таймер ибо это скриптовый язык, а не модуль ядра FreeBSD. Итого, скажем погрешность в 0.5 сек. В час у нас может до полминуты дойти, а в сутки до нескольких минут, а в месяц ... Это в принципе неверный подход. Это как баланс посекундно уменьшать - в итоге такая погрешность, что мама не горюй.
Записан
Morozikfeo
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 22


Просмотр профиля
« Ответ #122 : 26 Января 2014, 19:28:47 »

Я думаю многие возрадуются наконец, узнав о новой фиче. Вот сидел до полпятого ночи и сделал вам фичу "не допускаем ухода в минус". Я вам предлагал несколько вариантов, но вы просили "сделай чтоб слуга отключалась если баланс меньше нуля и включалась когда счет пополнялся". Сделал. Если бабла не хватает, то клиенту не подключается услуга, как тока появляется - подключается. Кстати, работает и с несколькими подключенными услугами. Вот алгоритм:

Подключено несколько услуг. Пришло время смены услуги. Завершаем и подключаем следующую по плану. Если баланс отрицательный, то услугу удаляем. Остальные услуги завершаем. При этом услуги завершаются раньше срока, т.е. сумма снятия меньше полной стоимости. В базу пишется событие "ждем баланса" который должен быть не меньше стоимости удаленной услуги и завершенных, также в этом событии хранятся айдишники услуг, которые нужно подключить.

Еще надо разрулить случай когда событие записалось, а потом клиент вручную подключил какую-нибудь другую услугу, на которую денег хватило.

В ознакомительной версии данная фича  работает?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #123 : 27 Января 2014, 10:35:22 »

Да, как закоммичу, будет и там. Но туда я реже коммичу
Записан
Nafanya
NoDeny
Старожил
*

Карма: 1
Offline Offline

Сообщений: 459


412112973
Просмотр профиля Email
« Ответ #124 : 29 Января 2014, 22:01:52 »

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

Кому то Бог дал ручки, а кому то - грабельки.
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #125 : 02 Февраля 2014, 04:18:02 »

Цитата: offtop
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #126 : 02 Февраля 2014, 11:06:07 »

Цитировать
В Киеве на улице Грушевского активисты Майдана установили на одной из баррикад перед кордоном бойцов Внутренних войск и "Беркута", охраняющих правительственный квартал, большой монитор. Как сообщает 5 канал, на мониторе непрерывно транслируются новости нескольких независимых телеканалов.

В ответ на это с противоположной стороны силовики подогнали громкоговоритель и пытаются глушить новости песнями украинских и российских эстрадных исполнителей.
Власть боится, что солдаты узнают правду

Цитировать
Исполняющий обязанностей министра иностранных дел Украины Леонид Кожара в рамках Мюнхенской конференции безопасности рассказал о возможном банкротстве страны


Цитировать
Прокуратура й міліція досі "не можуть" знайти цих садистів. Це співробітники спецпідрозділу "Ягуар" Внутрішніх військ МВС Хортюк Сергій і Костюк Максим – вони роздягали Гаврилюка. Козацького чуба відрізав майор Фірак Ігор. Серед тих, хто знущався над затриманим також Ругеніус Томас. За катуваннями спостерігав їх начальник – полковник Плахотнюк Олег Миколайович

Азаров смылся в Европу, а вы рабы живите в Украине
http://std3.ru/c1/a2/1391245824-c1a210adbb6ac9a772d8909dd5acb7f5.jpg

Украина одна из самых коррумпированных стран в мире
http://zn.ua/ECONOMICS/transparency-international-korrumpirovannye-oligarhicheskie-klany-ubivayut-v-ukraine-chestnyy-biznes-134155_.html

Перевоплощение титушек в миллиционеров
http://ukraine.d3.ru/comments/518911/

И таких сообщений десятки. Но я уже пометал бисер перед форумчанами. Я не знал насколько людям пофик за свое будущее и приятно быть рабами. Так что не буду дискутировать по этому поводу. И ты не подсовывай агитки, пожалуйста

Записан
sov
Постоялец
***

Карма: 0
Offline Offline

Сообщений: 101


Просмотр профиля
« Ответ #127 : 09 Февраля 2014, 16:15:34 »

Я думаю многие возрадуются наконец, узнав о новой фиче. Вот сидел до полпятого ночи и сделал вам фичу "не допускаем ухода в минус".
Хотел возрадоваться, но не получилось.

Накатил через svn последние обновления, сделал install.pl -X, перезапустил процессы биллинга.
Не помогло: уходит в минус, блокирует клиентов, услуга не удаляется.

Что нужно подправить/настроить? В каком направлении копать?
Записан
Morozikfeo
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 22


Просмотр профиля
« Ответ #128 : 18 Февраля 2014, 14:09:55 »

Я думаю многие возрадуются наконец, узнав о новой фиче. Вот сидел до полпятого ночи и сделал вам фичу "не допускаем ухода в минус".
Хотел возрадоваться, но не получилось.

Накатил через svn последние обновления, сделал install.pl -X, перезапустил процессы биллинга.
Не помогло: уходит в минус, блокирует клиентов, услуга не удаляется.

Что нужно подправить/настроить? В каком направлении копать?
Тоже хотел узнать, уже закоммичили донную функцию?
Записан
poxy.
NoDeny
Спец
*

Карма: 10
Offline Offline

Сообщений: 844



Просмотр профиля
« Ответ #129 : 18 Февраля 2014, 14:18:24 »

Я думаю многие возрадуются наконец, узнав о новой фиче. Вот сидел до полпятого ночи и сделал вам фичу "не допускаем ухода в минус".
Хотел возрадоваться, но не получилось.

Накатил через svn последние обновления, сделал install.pl -X, перезапустил процессы биллинга.
Не помогло: уходит в минус, блокирует клиентов, услуга не удаляется.

Что нужно подправить/настроить? В каком направлении копать?

kernel/services.cfg :

Код:
# Удаляет услуги, время которых завершилось. Если автопродление - подключает новую

run => 1,

# Типы услуг, которые не будут завершаться, если баланс отрицательный
# В таком случае услуга завершится и подключится следующая только после пополнения баланса
# например: delay_services => 'inet_unlim' или delay_services => 'inet_unlim,basic'

delay_services => '',

# Если после завершения услуги баланс станет отрицательным, то услуги отключаются и создается
# событие "подключить такие услуги когда баланс станет достаточным для их покдлючения"

wait_pos_balance => 0,
Записан
vadim_swg
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 13


Просмотр профиля
« Ответ #130 : 20 Февраля 2014, 12:41:13 »

Заметил одну неточность в фиче "неухода в минус" (или не нашёл правильных настроек, поэтому не обижусь, но буду благодарен, если ткнёте носом как щенка).
Услуги удаляются, баланс не уходит в минус при условии, что у абонента положительный баланс. Но ежели у абонента установлена отрицательная граница отключения, то баланс не уходит в минус, остаётся как положено, но услуга удаляется и доступ в интернет блокируется, хотя должен быть.
Текущие настройки в kernel/services.cfg следующие:
run => 1,
delay_services => 'basic',
wait_pos_balance => 1.

Решение нашёл в файле kernel/services.pm строка 75, условие "... AND u.balance<0 ..." изменить на "... AND u.balance<u.limit_balance ..."
Ревизия нодени - 232
Записан
sov
Постоялец
***

Карма: 0
Offline Offline

Сообщений: 101


Просмотр профиля
« Ответ #131 : 20 Февраля 2014, 19:41:18 »

Спасибо stimels7 за пинок в нужном направлении. Фича заработала.
Правда, обнаружились нюансы.

Нюанс номер 1: Услуги удаляются, но у клиента остаётся включенным статус "Доступ разрешён". Интернета-то он не получает, но в общем списке красненьким не выделяется. Неудобно.

Нюанс номер 2: Более серьёзный. Баланс теперь не отрицательный, а нулевой. А значит, клиент не может самостоятельно взять кредит.
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #132 : 20 Февраля 2014, 20:27:23 »

Спасибо stimels7 за пинок в нужном направлении. Фича заработала.
Правда, обнаружились нюансы.

Нюанс номер 1: Услуги удаляются, но у клиента остаётся включенным статус "Доступ разрешён". Интернета-то он не получает, но в общем списке красненьким не выделяется. Неудобно.

Нюанс номер 2: Более серьёзный. Баланс теперь не отрицательный, а нулевой. А значит, клиент не может самостоятельно взять кредит.
up 1; 2;
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
sov
Постоялец
***

Карма: 0
Offline Offline

Сообщений: 101


Просмотр профиля
« Ответ #133 : 22 Февраля 2014, 18:12:46 »

Пришлось "допиливать" самому.

Нюанс номер 1: Услуги удаляются, но у клиента остаётся включенным статус "Доступ разрешён". Интернета-то он не получает, но в общем списке красненьким не выделяется. Неудобно.

В kernel/services.pm после

Код:
my $rows = Db->do(
"INSERT INTO pays SET cash=0, creator_ip=0, creator='kernel', creator_id=1, time=UNIX_TIMESTAMP(), ".
"mid=?, category=?, reason=?", $uid, 208, $info,
);
if( $rows < 1 )
{
tolog "Sql error: SET uid=$uid, category=208";
last;
}

Добавил
Код:
my $rows = Db->do("UPDATE users SET state='off' WHERE id=?", $uid);
if( $rows < 1 )
{
tolog "Sql error: SET uid=$uid, state off";
last;
}

А после
Код:
my $rows = Db->do("UPDATE pays SET category=209 WHERE category=208 AND id=?", $p{id});
$rows < 1 && next;
           
Вот это:
Код:
my $rows = Db->do("UPDATE users SET state='on' WHERE id=?", $uid);
$rows < 1 && next;

Нюанс номер 2: Более серьёзный. Баланс теперь не отрицательный, а нулевой. А значит, клиент не может самостоятельно взять кредит.

А вот здесь я сделал неправильно, но оно хоть как-то позволяет клиенту взять кредит:

В modules/credit/create.user.credit.pl
Код:
$balance >= 0 && Error $lang{pos_balance};
заменено на
Код:
$balance > 0 && Error $lang{pos_balance};
Записан
Morozikfeo
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 22


Просмотр профиля
« Ответ #134 : 24 Февраля 2014, 18:05:06 »

Да, как закоммичу, будет и там. Но туда я реже коммичу
В демку уже коммичили?
Записан
Страниц: 1 ... 7 8 [9] 10
  Печать  
 
Перейти в:  

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