Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: SerjioMati от 01 Апреля 2014, 00:38:41



Название: Баланс
Отправлено: SerjioMati от 01 Апреля 2014, 00:38:41
Сьогодні замітив що білінг не виключив інтернет і навіть баланс в мінус не загнав в чому може бути проблема?
rev238


Название: Re: Баланс
Отправлено: Efendy от 01 Апреля 2014, 11:10:52
Если в данных клиента нажать на установленную услугу, то какая дата завершения услуги указана?


Название: Re: Баланс
Отправлено: SerjioMati от 02 Апреля 2014, 07:24:57
Конец   01.04.2014 00:00


Название: Re: Баланс
Отправлено: SerjioMati от 02 Апреля 2014, 07:25:26
Платеж, связанный с услугой, не существует!
Безлімітний доступ до інтернету на швидкості 50 Мбіт/c
Старт   06.03.2014 00:10
Конец   01.04.2014 00:00
Будет завершена с минуты на минуту
Следующая услуга   50 Мбіт/c


Название: Re: Баланс
Отправлено: Efendy от 02 Апреля 2014, 09:38:47
Ядро биллинга запущено?

Код:
ps ax | grep nokernel

Какие модули ядра запускаются:

Код:
perl nokernel.pl -L


Название: Re: Баланс
Отправлено: SerjioMati от 02 Апреля 2014, 20:26:25
Цитировать
ps ax | grep nokernel
1096 v0- S     43:22.43 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d (perl5.1
4978  0  DL+    0:00.00 grep nokernel
Цитировать
perl nokernel.pl -l
Start. Flag -h for help
loading /usr/local/nodeny/sat.cfg

MODULE                   RUN?
cap                      1
capremind                1
system_clean             1
services                 1
make_config              0
turbosms                 1
authserver               1
auth                     1
tmppays                  1
collectors               1
balance                  1
websession               1
system_check             1
authtraf                 1
dhcp                     1


Название: Re: Баланс
Отправлено: Efendy от 02 Апреля 2014, 21:15:04
Код:
perl nokernel.pl -m=services -v


Название: Re: Баланс
Отправлено: SerjioMati от 03 Апреля 2014, 01:15:09
Цитировать
perl nokernel.pl -m=services -v
Start. Flag -h for help

loading /usr/local/nodeny/sat.cfg

Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.025068 sec

SELECT * FROM config ORDER BY time DESC LIMIT 1
Строк: 1. Время выполнения sql: 0.0002 сек

loading kernel::services.pm

kernel::services Start

SELECT v.id, v.uid, s.module, s.title, IF(u.balance < u.limit_balance,1,0) AS neg FROM users_services v JOIN users u ON v.uid =  u.id LEFT JOIN services s ON v.service_id = s.service_id WHERE (v.tm_end > 0 AND v.tm_end < UNIX_TIMESTAMP()) OR v.tags LIKE '%,end_now,%'
Строк: 0. Время выполнения sql: 0.0007 сек

SELECT u.balance, p.id, p.mid, p.reason FROM pays p JOIN users u ON p.mid=u.id WHERE p.category=208
Строк: 0. Время выполнения sql: 0.0002 сек

^CGot the INT sign


Название: Re: Баланс
Отправлено: Efendy от 03 Апреля 2014, 12:30:07
Время на сервере правильное?

Код:
SELECT v.tm_end, UNIX_TIMESTAMP()  FROM users_services v JOIN users u ON v.uid =  u.id LEFT JOIN services s ON v.service_id = s.service_id WHERE (v.tm_end > 0 AND v.tm_end < UNIX_TIMESTAMP()) AND v.uid=id клиента


Название: Re: Баланс
Отправлено: SerjioMati от 04 Апреля 2014, 07:35:22
Цитировать
date
Fri Apr  4 08:33:39 EEST 2014


Название: Re: Баланс
Отправлено: cojiict от 04 Апреля 2014, 08:04:16
в 50.32  в настройках групи була галочка "При переходе на новый месяц не производить снятие денежных средств"
Подивись щось схоже бачив в N+


Название: Re: Баланс
Отправлено: SerjioMati от 04 Апреля 2014, 22:47:22
нема


Название: Re: Баланс
Отправлено: tom от 23 Марта 2018, 05:25:54
Вітаю.
Тут так і не написали, як вирішувати таку проблему?

Платіж, повязаний з послугою, не існує!

Хоча баланси в списку відображає, в особистому кабінеті відсутні записи по платежам і баланс. Це схоже зявилось пілся відновлення з бекапу.


Название: Re: Баланс
Отправлено: Efendy от 23 Марта 2018, 09:41:53
Если восстановление бекапа не прервалось вручную или ошибкой, то платежи не должны были исчезнуть


Название: Re: Баланс
Отправлено: tom от 23 Марта 2018, 11:09:31
Все могло бути. Чи реально це пофіксити?


Название: Re: Баланс
Отправлено: Efendy от 23 Марта 2018, 12:23:36
Пофиксить отсутствие платежей? Платежи, для которых услуга активна, теоретически можно создать sql, а для завершенных услуг придется писать скрипт


Название: Re: Баланс
Отправлено: tom от 24 Марта 2018, 00:50:38
як я зрозумів, чомусь обнулилось поле mid. Немає не тільки списання а й поповнення. Може, хоть баланси можна повносити. Без історії?


Название: Re: Баланс
Отправлено: tom от 24 Марта 2018, 03:28:38
Перезалив бекап, все стало в нормі...
хз, що то було..


Название: Re: Баланс
Отправлено: tom от 31 Марта 2018, 11:56:10
Стас, можеш підказати по скрипту csv.pl?

Два питання:
1) пр оновленні данних, мені також і оновити послугу, бо могла змінитися.. а там тільки add і видає помилку, послуга існуює.
варіант з remove, не спрацьовуює, він в модулі описаний мало. Які потрібно параметри туди передати, крім uid?

2) як правильно при оновленні балансу, зробити платіж, вирівнюючий баланс. Тобто якщо я просто зміню баланс - це буде невірно, бо по платежам буде не сходитися.

Дякую.


Название: Re: Баланс
Отправлено: Efendy от 01 Апреля 2018, 08:47:18
Этот скрипт сделан для миграции с других биллингов. Ты хочешь изменить его? Какая у тебя общая задача стоит?


Название: Re: Баланс
Отправлено: tom от 01 Апреля 2018, 10:57:54
я зробив вигрузку з старого білінгу в файл форматі csv. Вигружаю не всих користувачів, а по умові (наприклад один будинок).
в N+ вже був зроблений перенос, тому структура і більшість клієнтів вже перенесено. Я хочу лише синхронизувати інформацію на поточний час, клієнтів які вигрузив. Це повязане з тим, що переходжу на нову систему qinq+accel+radius. В старому білінгу ж був звичайних дхцп. І зробити масову мігріцію нереально. Тимбільше, є вже частина працюючих клієнтів в новому білінгу. Тому така потреба в мякому переносі.

Якщо, Стас, має час і бажання, готовий замовити скрипт вигрузки і загрузки )) Бо мій вигрузки тре теж доробити, бо є іноді записи номерів телефонів через кому, і коли їх заносе в csv файл, виходить здвиг полів (


Название: Re: Баланс
Отправлено: Efendy от 01 Апреля 2018, 23:40:55
Задачу понял, но отвечу позже


Название: Re: Баланс
Отправлено: tom от 04 Апреля 2018, 15:44:14
Апну, на всяк випадок ))


Название: Re: Баланс
Отправлено: Efendy от 06 Апреля 2018, 14:39:54
1) В биллинг нужно добавить новых абоненов или обновить данные уже существующих?
2) Если добавляется новый абон и него ненулевой баланс (отрицательный и положительный), нужно создать платеж "перенос баланса со старого биллинга"? Если подключается услуга, то баланс уменьшать на стоимость данной услуги? Или нужно уменьшить "перенос баланса со старого биллинга" на стоимость услуги чтобы баланс НЕ изменился?
3) если идет обновление данных, то удалить текущие установленные услуги если добавляется новая?
4) если идет обновление данных и текущие услуги удаляются, удалять платежи привязанные к удаляемой услуге? Если после подключения услуги баланс не будет равен стоимости платежей, то создавать выравнивающий (положительный или отрицательный) платеж?

На всякий случай, отвечай максимально понятно, перед сабмитом перечитай то, что на писал и задайся вопросом может ли твой ответ интерпретироваться неправильно либо двояко


Название: Re: Баланс
Отправлено: tom от 09 Апреля 2018, 01:53:58
Якщо абонент інснує — оновлення данних, перевірка по полю login
Якщо абонента немає в БД — внесення нового

Якщо новий абон і в нього не нульовий баланс- створюється платіж “перенос зі старого білінга” на суму балансу і підключається послуга. Бланс зі старого білінгу береться з поля - “На счету, грн.”

Якщо оновлення даних - видаляється поточна послуга і створюється нова. Видаляються всі платежі у клієнта і створюється платіж “перенос зі старого білінга” на суму балансу. Бланс з старого білінгу береться з поля - “На счету, грн.”

Створити вулицю з ключем city. Оновити у клієнта вулицю на ново створену.

Приведення номерів телефонів до одного шаблону. Якщо при видаленні пробілів  залишається інший символ що не цифра або кількість цифр більше 10 і менше 7 — запросити ручне введення, інакше — привести до шаблону 0XY0000000(запропонувати свій варіант) Який вид має бути у поля телефон для модуля смс розсилки, коли є два номери?

Наче нічого не провтикав. Якщо є якісь питанні ініші, неоднозначні, пиши. І ще, можна буде якось у приват? Є цікавий проект, потрібна допомога його реалізувати в N+


Название: Re: Баланс
Отправлено: Efendy от 09 Апреля 2018, 23:38:05
Якщо абонент інснує — оновлення данних, перевірка по полю login
Якщо абонента немає в БД — внесення нового

Якщо новий абон і в нього не нульовий баланс- створюється платіж “перенос зі старого білінга” на суму балансу і підключається послуга. Бланс зі старого білінгу береться з поля - “На счету, грн.”

Якщо оновлення даних - видаляється поточна послуга і створюється нова. Видаляються всі платежі у клієнта і створюється платіж “перенос зі старого білінга” на суму балансу. Бланс з старого білінгу береться з поля - “На счету, грн.”
Это сделал. Обнови биллинг
Створити вулицю з ключем city. Оновити у клієнта вулицю на ново створену.
это сам можешь сделать
Приведення номерів телефонів до одного шаблону. Якщо при видаленні пробілів  залишається інший символ що не цифра або кількість цифр більше 10 і менше 7 — запросити ручне введення, інакше — привести до шаблону 0XY0000000(запропонувати свій варіант) Який вид має бути у поля телефон для модуля смс розсилки, коли є два номери?
это ты разашелся


Название: Re: Баланс
Отправлено: tom от 10 Апреля 2018, 11:08:29
А як бути з комами? Може можна їх замінити на інший розділяючий символ? або коменти і номера телефонів тре брати в кавички, і при парсингу уберати..


Название: Re: Баланс
Отправлено: Efendy от 10 Апреля 2018, 11:55:14
А як бути з комами? Може можна їх замінити на інший розділяючий символ? або коменти і номера телефонів тре брати в кавички, і при парсингу уберати..
можно:
Код:
my $csv = Text::CSV->new({ sep_char => ',' });


Название: Re: Баланс
Отправлено: tom от 10 Апреля 2018, 11:58:46
Дякую. По результату відпишу. Номер карти і суму в приват)) для карми )


Название: Re: Баланс
Отправлено: tom от 10 Апреля 2018, 12:36:55
Сорі, можна видалити повідомлення.

P.S. помудохався я без цього рядка   utf8::encode($service_name);


Название: Re: Баланс
Отправлено: tom от 12 Апреля 2018, 01:20:10
Стас, є проблема з переносом dropdown_values.
В таблицю data0 заносить, але в даних клієнта не відображаєтсья. Здається тре щось доробити ))


Название: Re: Баланс
Отправлено: Efendy от 12 Апреля 2018, 07:58:41
мало инфы. у меня работает


Название: Re: Баланс
Отправлено: tom от 12 Апреля 2018, 18:05:28
Ну по перше, на мою думку ця процедура вже не дуже коректна, якщо використовуються ключі
foreach my $f( keys %dropdown_values )
{
    foreach my $value( keys %{$dropdown_values{$f}} )
    {
        $value or next;
        $test && next;
        Db->do("INSERT INTO dictionary SET type=?, k=?, v=? ON DUPLICATE KEY UPDATE v=?",
                $dropdown_fields{$f}, $value, $value, $value);
    }
}
та
my $sql = 'uid=?';
    my @sql_param = ($uid);
    foreach my $f( keys %c )
    {
        $f =~ /^_/ or next;
        $sql .= ", $f=?";
        push @sql_param, $d[$c{$f}];
    }
    my $rows = Db->do("INSERT INTO data0 SET $sql ON DUPLICATE KEY UPDATE $sql", @sql_param, @sql_param);

Воно тупо записує імя вулиці і не враховуютсья використання ключів. Тобто, якщо використовується параметр city, то він вже має бути ключем до street.

Але не зважаючи на це все, в особистій картоці клієнта, не підтягуються з таблиці data0 данні
mysql> select _adr_street,_adr_city from  data0 where uid=84;
+--------------------------------------------------------+--------------------+
| _adr_street                                            | _adr_city          |
+--------------------------------------------------------+--------------------+
| 60                                                     |                    |
| 117                                                    |                    |
| 117                                                    |                    |
| 117                                                    |                    |
| 117                                                    |                    |
| Соборності (Леніна)                                    | Миронівка          |
| Соборності (Леніна)                                    | Миронівка          |
| Соборності (Леніна)                                    | Миронівка          |
| Соборності (Леніна)                                    | Миронівка          |
| Миронівка:Соборності (Леніна)                          | Миронівка          |
+--------------------------------------------------------+--------------------+

Як правильно передати данні, що б воно зафіксувало і підтягнуло данні. Також, як правильно додати і точку топології?

SELECT id FROM users WHERE name='117'
Строк: 1. Время выполнения sql: 0.00007100 сек

UPDATE users SET fio = 'Соломяний Артем Віталійович', contract = '117', name='117', balance='284.92' WHERE name='117'
Строк: 1. Время выполнения sql: 0.0004 сек

INSERT INTO data0 SET uid='84', _adr_telefon='42 4 68, 8 067 456 16 18', _adr_sn='', _adr_city='Миронівка', _adr_street='Миронівка:Соборності (Леніна)', _adr_house='21', _adr_room='66' ON DUPLICATE KEY UPDATE uid='84', _adr_telefon='42 4 68, 8 067 456 16 18', _adr_sn='', _adr_city='Миронівка', _adr_street='Миронівка:Соборності (Леніна)', _adr_house='21', _adr_room='66'
Строк: 1. Время выполнения sql: 0.0015 сек

INSERT INTO users_trf SET uid='84' ON DUPLICATE KEY UPDATE uid=uid
Строк: 1. Время выполнения sql: 0.00006900 сек

DELETE FROM pays WHERE mid='84' AND cash<>0
Строк: 1. Время выполнения sql: 0.0010 сек

DELETE FROM users_services WHERE uid='84'
Строк: 1. Время выполнения sql: 0.0007 сек

SELECT * FROM users WHERE name='117'
Строк: 1. Время выполнения sql: 0.0001 сек

INSERT INTO pays SET time=UNIX_TIMESTAMP()-1, creator='other', category=5, mid='84', cash='284.92', comment='Перенос баланса со старого биллинга'
Строк: 1. Время выполнения sql: 0.0004 сек

Подключение услуги

SELECT * FROM services WHERE service_id='10' LIMIT 1
Строк: 1. Время выполнения sql: 0.00008700 сек

SELECT 1 FROM v_services WHERE uid='84' AND service_id='10' AND id<>'0' LIMIT 1
Строк: 0. Время выполнения sql: 0.0001 сек

SELECT * FROM users u JOIN data0 d ON u.id=d.uid WHERE u.id='84'  LIMIT 1
Строк: 1. Время выполнения sql: 0.0002 сек

SELECT (in1+in2+in3+in4+out1+out2+out3+out4) AS traf FROM users_trf WHERE uid='84'
Строк: 1. Время выполнения sql: 0.00007300 сек

start transaction

SELECT UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME('1523487520') - INTERVAL 1 MONTH) + INTERVAL 1 DAY) AS tm1, UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME('1523487520')) + INTERVAL 1 DAY) AS tm2, UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME('1523487520')) + INTERVAL '1' DAY) AS tm_end
Строк: 1. Время выполнения sql: 0.00006700 сек

INSERT INTO pays SET time=UNIX_TIMESTAMP(), mid='84', cash='0', category='100', reason='$VAR1 = {\'start_traf\' => 2659720108,\'tm_end\' => 1525122000,\'tm_start\' => 1523487520,\'cash\' => 0};', comment='[1020]HiNet95', creator_ip=INET_ATON('0.0.0.0'), creator='kernel', creator_id='1'
Строк: 1. Время выполнения sql: 0.00008400 сек

UPDATE users SET balance=balance+('0') WHERE id='84' LIMIT 1
Строк: 1. Время выполнения sql: 0.0001 сек

INSERT INTO users_services SET uid='84', service_id='10', next_service_id='10', pay_id='7249991', tags=',inet,speed,start_traf=2659720108,',radius_attr='', tm_start='1523487520', tm_end=UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME('1523487520')) + INTERVAL '1' DAY)
Строк: 1. Время выполнения sql: 0.00008600 сек

commit


INSERT INTO dictionary SET type='street', k='Миронівка:Соборності (Леніна)', v='Миронівка:Соборності (Леніна)' ON DUPLICATE KEY UPDATE v='Миронівка:Соборності (Леніна)'
Строк: 1. Время выполнения sql: 0.0001 сек

INSERT INTO dictionary SET type='city', k='Миронівка', v='Миронівка' ON DUPLICATE KEY UPDATE v='Миронівка'
Строк: 1. Время выполнения sql: 0.00006500 сек

Ну й така ремарка, якщо в данних переноса немає ір, навіщо скрипту створювати статику?


Название: Re: Баланс
Отправлено: tom от 13 Апреля 2018, 00:14:34
Не знаю, чи це вірно, але так відображається у клієнта
    my $rows = Db->do("INSERT INTO data0 SET $sql ON DUPLICATE KEY UPDATE $sql", @sql_param, @sql_param);
    $rows < 1 && die 'sql error';
    $rows = Db->do("UPDATE data0 SET $sql WHERE uid=?", @sql_param,$uid);
    $rows < 1 && die 'sql error';


Название: Re: Баланс
Отправлено: tom от 26 Апреля 2018, 18:39:40
Так відображається, але затераєш всю історію. Я так розумію, не підтягує останню ревізію данних з таблиці, а бере перд останню. Десь тре зробити апдейт?


Название: Re: Баланс
Отправлено: Efendy от 27 Апреля 2018, 12:34:53
Проапдейтся до 50.33 - в ней нет ревизий


Название: Re: Баланс
Отправлено: tom от 28 Апреля 2018, 02:32:06
Щось не зрозумів? Я говорю про Н+


Название: Re: Баланс
Отправлено: Efendy от 29 Апреля 2018, 20:21:03
Ты ж говоришь про ревизию - нет такого понятия в н+.  Думал ты пытаешься что-то свое сделать с переводом абонов из н50


Название: Re: Баланс
Отправлено: tom от 29 Апреля 2018, 23:04:53
Ну не знаю як це вірно назвати, але в таблиці data0 - не один запис, який відповідає клієнту. Якби був один - то проблем би не було. Чому так - я не вкурсі ))


Название: Re: Баланс
Отправлено: Efendy от 30 Апреля 2018, 09:33:50
Эта проблема после переноса дополнительных абонов со старой версии?


Название: Re: Баланс
Отправлено: tom от 12 Июня 2018, 04:02:34
Вітаю.
Прошу підказати, як в переносі за допомогою csv.pl зробити платіж "перенос со старого білінга" при параметрі my $do_balance_pay  = 2; без урахування вартості підключаємої послуги. Тобто, в файлі з данними переноса вказано баланс 200 грн, згідно б логіці та пояснені у файлі, мається зробитися платіж переноса 200 грн і знятися 200 грн (наприклад) за підключену послугу. Тобто у клієтнта 0 на рахунку. Насправді при переносі відбувається трішки інше. Переноситься платіж 400 грн і знімається 200. Відповідно на балансі 200 грн.

Дякую

З.И. Знайшов в коді, прибрав +service_price. Прошу Стаса пояснити логіку, чому додавалась вартість послуги? Можливо я щось не так зрозумів?
З.И.2 - здається зрозумів. В мене переносився баланс без уархування зняття за послугу, з старого білінга данні з поля balance, тому логіку Стаса можна зрозуміти. Можливо варто в коді вказати параметр баланс з урахування чи без вартості послуги.


Название: Re: Баланс
Отправлено: Efendy от 12 Июня 2018, 16:13:37
З.И. Знайшов в коді, прибрав +service_price. Прошу Стаса пояснити логіку, чому додавалась вартість послуги? Можливо я щось не так зрозумів?
З.И.2 - здається зрозумів. В мене переносився баланс без уархування зняття за послугу, з старого білінга данні з поля balance, тому логіку Стаса можна зрозуміти. Можливо варто в коді вказати параметр баланс з урахування чи без вартості послуги.
Так и есть. Можно сделать параметр


Название: Re: Баланс
Отправлено: tom от 14 Июня 2018, 14:24:46
Вітаю.
Стас, а як включити логи в скрипта csv.pl. В коді бачу, що параметр з файлом є, а файла немає )
Просто глюк якийсь, не перенесло всі записи з файла. Хочу знайти причину


Название: Re: Баланс
Отправлено: tom от 14 Июня 2018, 17:34:28
Причину знайшов вроді, але б логи хобілося б мати.


Название: Re: Баланс
Отправлено: Efendy от 14 Июня 2018, 18:01:22
Причину знайшов вроді, але б логи хобілося б мати.
-v или -vv


Название: Re: Баланс
Отправлено: tom от 14 Июня 2018, 23:54:13
Причина в тому, що коли в коментах або в ФІО є " - то скрипт завершає роботу без помилок з повідомленням "ок".


Название: Re: Баланс
Отправлено: tom от 17 Июня 2018, 00:35:36
Стас, я правильно видалити клієнта з бази, з усима його хвостами?


Название: Re: Баланс
Отправлено: Efendy от 17 Июня 2018, 15:01:36
Смотри /usr/local/nodeny/web/user_del.pl  или /usr/local/nodeny/web/_user_del.pl


Название: Re: Баланс
Отправлено: tom от 17 Июня 2018, 15:59:46
    Db->do( "DELETE FROM mac_uid WHERE uid=?", $uid );
те що потрібно було ) якось не додумався.
Просто скрипт переноса, додає до клієнта ще один мак,
            "INSERT INTO mac_uid SET uid=?, mac=?, ip=0, device_mac='', device_port=0, oneconnect=2, `time`=0 ".
            "ON DUPLICATE KEY UPDATE uid=?, oneconnect=2", $uid, $mac, $uid
 якщо при оновленні в нього змінилася мак адреса.
Тому ліпше буде видалити всі маки клієнта, а потім додавати )
Звичайно можна апдейт робити, але тоді тре визначати, чи то новий клієнт чи оновлення учотки. Простіше  DELETE INSERT


Название: Re: Баланс
Отправлено: tom от 21 Июня 2018, 22:42:05
Підкажіть, куди дивитися.
У клієнта недостатньо коштів і його послуга заморожена, а учотка заблокована. Роблю йому тимчасовий платіж - учотка розблоковується, послуга залишається бути замороженою. Відповідно він авторизовується, на заглушку не форвардить, але шейп не виставляє.
Пніть в якому напрямку копати?


Название: Re: Баланс
Отправлено: tom от 22 Июня 2018, 02:27:44
Вроді розібрався.
Просто робили тимчасовий платіж на суму заборгованованості, без урахування вартості послуги. Тому в кабінеті показувало достатньо коштів, а от послуга не могла стартонути, бо для неї вже не вистачало коштів.. От така петрушка


Название: Re: Баланс
Отправлено: tom от 24 Июня 2018, 00:51:43
Вітаю, допоможіть розібратися з ситуацією.
Приклад.
У клієнта на балансі -25 грн. Тарифний план підключений 200 грн. Відповідно абонента заблоковано, послуга заморожена, абона форвардить на заглушку - все добре.
Телефонує клієнт, включіть мені послугу, бо капець тре, завтра оплачу, сам не вмію користуватися. Колцентр робить тимчасовий платіж на 25 грн, адже згідно особистого кабінету саме такої суми не вистачає.

Ну і доступ клієнту видкриваєтья, з табилці ipset ip видаляється, але послуга не розморожується, а відповідно в accel не отримує швидкість. І виходить клієнт працює на анлімі, оськільки коли в accel  пусті данні в шейпері, то він взагалі не шейпить.. Але діло не в шейпі, а втому що послуга надається, але не розморожується.

Звичайно можна довго вчити колцентр користуватися калькулятором, або робити тимчасовий через особистий кабінет клієнта (але може потрібно тимчасовий на більший термін).

Що порадите? Якось фіксити баланс, що відображається, з урахування послуги, що заморозилась? Чи дрочити колцентр, щоб не втикали?


Название: Re: Баланс
Отправлено: Pa4ka от 25 Июня 2018, 09:16:57
Вітаю, допоможіть розібратися з ситуацією.
Приклад.
У клієнта на балансі -25 грн. Тарифний план підключений 200 грн. Відповідно абонента заблоковано, послуга заморожена, абона форвардить на заглушку - все добре.
Телефонує клієнт, включіть мені послугу, бо капець тре, завтра оплачу, сам не вмію користуватися. Колцентр робить тимчасовий платіж на 25 грн, адже згідно особистого кабінету саме такої суми не вистачає.

Ну і доступ клієнту видкриваєтья, з табилці ipset ip видаляється, але послуга не розморожується, а відповідно в accel не отримує швидкість. І виходить клієнт працює на анлімі, оськільки коли в accel  пусті данні в шейпері, то він взагалі не шейпить.. Але діло не в шейпі, а втому що послуга надається, але не розморожується.

Звичайно можна довго вчити колцентр користуватися калькулятором, або робити тимчасовий через особистий кабінет клієнта (але може потрібно тимчасовий на більший термін).

Що порадите? Якось фіксити баланс, що відображається, з урахування послуги, що заморозилась? Чи дрочити колцентр, щоб не втикали?

По перше не повинен він видалятись з ipset якщо послуга заморожена.
По друге поясніть колцентру, що для того щоб щось у клієнта працювало потрібно щоб була підключена послуга, а не заморожена і для її підключення повинно бути достатньо коштів на балансі.


Название: Re: Баланс
Отправлено: tom от 26 Июня 2018, 02:38:33
Якщо у абона стоїть, що він не заблокований, то чому має ip не видалятися з ipset?
Ну я вже зрозумів, що колцентру будемо закуповувати калькулятори ) Ну в абона то працює, бо доступ відкрито, і видало швидкість по тарифу, або дефолтну.
Ось принцип роботи модуля СоА
ht  tp://forum.nodeny.com.ua/index.php?topic=3060.msg32878#msg32878
тут про заморожену послугу нічого не йдеться


Название: Re: Баланс
Отправлено: elite от 26 Июня 2018, 19:17:52
расширение функционала любого программного продукта всегда ведет к таким вот багам


Название: Re: Баланс
Отправлено: tom от 27 Июня 2018, 03:29:52
основне питання - це розширення функціоналу, чи допрацювання білінга, чи баг )))


Название: Re: Баланс
Отправлено: tom от 27 Июня 2018, 19:04:26
Все таки я рахую, що це баг, або я якось не вірно налаштував.

Ситуація.
Підключили абона, включили тимчасовий на 3 дні, протягом 3 днів він не заплатив, з нього знялося за 3 днів. Потім він сплачує лише вартість тарифного плана. Але коштів мало б не вистачати. Але оськільки послуга заморожена - то доступ йому відкривається. Лише не видається швидкість по тарифу, а видається дефолтна..

Хтось знає як це фіксити?


Название: Re: Баланс
Отправлено: Redmen от 28 Июня 2018, 00:56:01
Це не баг, а функціонал, все залежить від налаштувань і забаганок!
А взагалі то потрібно більше інформації!
Як побудоване ядро мережі (все в одному чи з НАСами), які НАСи, як налаштовані послуги і модуль послуг?

Крім того якщо абону дали кредит, то в цей момент, повноцінно підключаеться послуга і гроші списуються в відповідному розмірі, а коли кредит завершено = абона блокує, і коли абон погасив заборгованість = доступ розблоковується


Название: Re: Баланс
Отправлено: tom от 28 Июня 2018, 01:12:44
Це не баг, а функціонал, все залежить від налаштувань і забаганок!
А взагалі то потрібно більше інформації!
Як побудоване ядро мережі (все в одному чи з НАСами), які НАСи, як налаштовані послуги і модуль послуг?

Крім того якщо абону дали кредит, то в цей момент, повноцінно підключаеться послуга і гроші списуються в відповідному розмірі, а коли кредит завершено = абона блокує, і коли абон погасив заборгованість = доступ розблоковується
В тому то весь і прикол, що доступ розблоковується,  послуга не може розморозитися, бо не вистачає коштів.

Я то про ядро можу розповісти, але не думаю, що це повязно з насами, чи ще чимось іншим. Все відпрацьовується вірно, згідно логіки і налаштувань.

Яку я бачу проблему, що в білінгку включається доступ коли послуга заморожена. А це не мало б бути, якщо тут звичайно не закладався якийсь інший сенс і логіка.

Ідея з замороженою послугою, дуже прикольна. Знову ж таки, можливо я її не вірно приміняю, або не вірно розумію. Як я бачу логіку дії з налаштуваннями послуги з режимом "стандарт" та "Не активувати послугу поки не стане достатньо коштів".
-Клієнту видається кредит і активується послуга з цього дня.
-Якщо клієнт заплатив все вчасно, то просто послуга активна 30 днів і знімається вартість послуги, по завершенню кредиту.
-Якщо через 30 днів на балансі клієнта достатньо коштів - повторна активація. (доречі, тут може бути така ж проблема, що при тарифу 200 грн, на рахунку буде 100 і послуга заморозиться, а доступ клієнту буде відкрито)
-Якщо клієнт не заплатив до строку закінчення кредиту, послуга закінчується і знімається кошти пропорційно.
-Коли клієнт робить оплату = Вартість послуги+Вартість використаних днів по кредиту - активується послуга з цього дня і активна 30 діб.

Але саме в останньому пункті проблема, якщо клієнт заплатив суму меншу.. В нього виходить вічне користування на дефолтній швидкості (1мбіт/с) Але не в цьому проблема, проблема в тому, що йому відкривається доступ коли послуга заморожена і він сплатив лише борг і не сплатив вартість послуги..


Название: Re: Баланс
Отправлено: tom от 29 Июня 2018, 04:36:25
Дякую, всим хто допоміг. (Макс, Ваня, Дмитро)
Вирішується ця проблема дописуванням процедури radreply
А, саме потрібно змінити код на щось подібне. Де ця умова вирішальна " IF usr_id IS NULL OR usr_id = 0 OR u_state = 'off' OR ISNULL(add_attr) THEN" Тобто - якщо не знайдений користувач у звязці з таблиці mac_uid, або абонент ВІДКЛЮЧЕНИЙ (з цим теж були труднощі), або ж відсутній сервіс з радіус атрибутами (ось тут і вирішальна ситуйовіна, що якщо навіть білінг поставе клієнта на включений, він всерівно буде заблокований, доки не активується послуга)

SELECT NULL, login, 'Framed-IP-Address', usr_ip, '=';
    IF usr_id IS NULL OR usr_id = 0 OR u_state = 'off' OR ISNULL(add_attr) THEN
        SELECT NULL, login, 'L4-Redirect', '1', '=';
        SELECT NULL, login, 'L4-Redirect-ipset', 'cap', '=';
        SELECT NULL, login, 'Filter-Id', '1024/1024', '=';
    ELSE
        attr_loop: WHILE TRUE DO
          SELECT strSplit(add_attr, '\n', i) INTO line;
          IF LENGTH(line) = 0 OR i > 20 THEN LEAVE attr_loop; END IF;
          IF line LIKE '%+=%' THEN
              SELECT NULL,login,strSplit(line, '+=', 1),strSplit(line, '+=', 2),'+=';
          ELSEIF line LIKE '%=%' THEN
              SELECT NULL,login,strSplit(line, '=', 1),strSplit(line, '=', 2),'=';
          END IF;
          SET i = i + 1;
        END WHILE;
     END IF;

Ну і ще варто додати, якщо абони знайдений в mac_uid

        SELECT radius_attr INTO add_attr FROM users_services
            WHERE uid=usr_id AND tags LIKE '%,inet,%' LIMIT 1;
        SELECT state INTO u_state FROM users  WHERE id=usr_id;