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

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Как разрешить подключать тариф только новым абонентам?  (Прочитано 2636 раз)
garik24
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 72



Просмотр профиля
« : 19 Октября 2020, 19:02:40 »

Добрый день!

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

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

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

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

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

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

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

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #1 : 19 Октября 2020, 20:09:34 »

Код:
date(from_unixtime(contract_date))=date(now())
Записан
garik24
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 72



Просмотр профиля
« Ответ #2 : 20 Октября 2020, 14:26:51 »

Код:
date(from_unixtime(contract_date))=date(now())
Спасибо

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

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

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

Как можно решить проблему?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #3 : 22 Октября 2020, 12:55:26 »

если я не ошибаюсь, при автоматическом переподключении услуги условия не применяются. Запусти perl nokernel.pl -m=services -v
Записан
garik24
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 72



Просмотр профиля
« Ответ #4 : 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 сек
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #5 : 22 Октября 2020, 19:26:16 »

Да, посмотрел я код, условие применяется всегда. Хотя в документации написано, что применяется только в момент подключения клиентом. Надо сделать фикс, только внимательно подумать не будет ли проблем у тех сетей, у которых и должно проверяться всегда
Записан
garik24
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 72



Просмотр профиля
« Ответ #6 : 23 Октября 2020, 19:00:10 »

Да, посмотрел я код, условие применяется всегда. Хотя в документации написано, что применяется только в момент подключения клиентом. Надо сделать фикс, только внимательно подумать не будет ли проблем у тех сетей, у которых и должно проверяться всегда

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

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

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #7 : 23 Октября 2020, 22:33:09 »

я считаю, что проверять условие нужно только при поключении. Чтобы услуга не была переподключена повторно, нужно убрать галку автопродолжения
Записан
garik24
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 72



Просмотр профиля
« Ответ #8 : 26 Октября 2020, 18:56:22 »

Согласен, проверка условия только при подключении - решит проблему.

Как это сделать?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« Ответ #9 : 26 Октября 2020, 21:18:37 »

Внес исправления и в ветку next и в ветку plus
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

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