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

Главная категория => Nodeny Plus => Тема начата: garik24 от 19 Октября 2020, 19:02:40



Название: Как разрешить подключать тариф только новым абонентам?
Отправлено: garik24 от 19 Октября 2020, 19:02:40
Добрый день!

У нас есть Акции при подключении - n-месяцев со скидкой для новых абонентов (модуль "Длинные услуги").

Необходимо разрешить подключать  тариф в личном кабинете только новым абонентам.

Для этого, полагаю, необходимо задать условие в тарифе, в поле "Условия":

дата договора=текущая дата

Прошу помочь сформулировать условие на понятном Nodeny-plus/Nodeny-next "языке".
 contract_date       = ?
Либо подсказать альтернативное рабочее решение.

P.S.:  Состояние = "На подключении" (cstate = 1) не подходит,
т.к. к моменту заказа тарифа состояние успевает смениться на "Всё ок" (cstate = 0).

Спасибо


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: Efendy от 19 Октября 2020, 20:09:34
Код:
 date(from_unixtime(contract_date))=date(now())


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: garik24 от 20 Октября 2020, 14:26:51
Код:
 date(from_unixtime(contract_date))=date(now())
Спасибо

Попробовал, но вылезла проблема.

Подключенная услуга не завершается.

Получается вечный акционный тариф, т.к. при изменении условий подключения тарифа абонплата уже не списывается.

Как можно решить проблему?


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: Efendy от 22 Октября 2020, 12:55:26
если я не ошибаюсь, при автоматическом переподключении услуги условия не применяются. Запусти perl nokernel.pl -m=services -v


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: garik24 от 22 Октября 2020, 17:00:16
если я не ошибаюсь, при автоматическом переподключении услуги условия не применяются. Запусти perl nokernel.pl -m=services -v

для теста создал услугу длительностью 1 минуту, которая должна автоматически переподключаться 6 раз.
Услугу подключил, потом сменил условия (поменял дату на новую).
Прошло 10 минут. Услуга не отключается и не переподключается.

Вывод -m=services -v прилагаю:

Цитировать
Завершение услуги с подключением следующей

SELECT *, UNIX_TIMESTAMP() AS t FROM v_services WHERE id='36628' AND uid='298' LIMIT 1
Строк: 1. Время выполнения sql: 0.0007 сек

SELECT 1 FROM services_log WHERE uid='298' AND token='509404051656' AND service_id='113' AND module='inet_unlim'
Строк: 1. Время выполнения sql: 0.0013 сек

SELECT * FROM pays WHERE id='575118'
Строк: 1. Время выполнения sql: 0.0005 сек

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

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

SELECT * FROM users u JOIN data0 d ON u.id=d.uid WHERE u.id='298' AND (date(from_unixtime(contract_date))=date(now())) LIMIT 1
Строк: 0. Время выполнения sql: 0.0006 сек

SELECT * FROM user_grp ORDER BY grp_name
Строк: 13. Время выполнения sql: 0.0012 сек

UPDATE users_services SET tags = REPLACE(tags, ',count_delay=', ',nodelay') WHERE tags LIKE '%,count_delay%' AND uid IN (SELECT id FROM users WHERE balance>=limit_balance AND block_if_limit=1)
Строк: 0. Время выполнения sql: 0.0044 сек


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: Efendy от 22 Октября 2020, 19:26:16
Да, посмотрел я код, условие применяется всегда. Хотя в документации написано, что применяется только в момент подключения клиентом. Надо сделать фикс, только внимательно подумать не будет ли проблем у тех сетей, у которых и должно проверяться всегда


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: garik24 от 23 Октября 2020, 19:00:10
Да, посмотрел я код, условие применяется всегда. Хотя в документации написано, что применяется только в момент подключения клиентом. Надо сделать фикс, только внимательно подумать не будет ли проблем у тех сетей, у которых и должно проверяться всегда

А возможно ли добавить опцию дабы в самом выражении можно было обозначить проверять условия разово/проверять всегда?

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


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: Efendy от 23 Октября 2020, 22:33:09
я считаю, что проверять условие нужно только при поключении. Чтобы услуга не была переподключена повторно, нужно убрать галку автопродолжения


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: garik24 от 26 Октября 2020, 18:56:22
Согласен, проверка условия только при подключении - решит проблему.

Как это сделать?


Название: Re: Как разрешить подключать тариф только новым абонентам?
Отправлено: Efendy от 26 Октября 2020, 21:18:37
Внес исправления и в ветку next и в ветку plus