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

Главная категория => Nodeny Plus => Тема начата: kostya_zpr от 17 Мая 2018, 09:45:20



Название: Условия выбора тарифа - проблемы с переходом на новый период
Отправлено: kostya_zpr от 17 Мая 2018, 09:45:20
Начали использовать поле "Условия" в настройках тарифов (услуг)
Наткнулись на баг
Если уже установленный абоненту тариф не подходит под прописанные условия, то биллинг не может его корректно завершить и продлить на следующий месяц.
Когда оператор смотрит, что же с тарифом (ajUserSrvInfo.pl) ему сообщают:

Цитировать
Старт   14.04.2018 15:38
Конец   14.05.2018 15:38
Будет завершена с минуты на минуту

И тариф не завершается

Подозреваю, виноват следующий фрагмент:
Код:
services.pm:
...
    # --- Подключение услуги / установка поля `следующая услуга`

    {
        $cmd =~ /^(add|set_next)$/ or last;
        $service_id or last;
...
        my $conditions = $service_new{conditions}? "AND $service_new{conditions}" : '';
        my %u = Db->line("SELECT * FROM users u JOIN data0 d ON u.id=d.uid WHERE u.id=? $conditions LIMIT 1", $uid);
        %u or return {
            for_adm => 'ошибка получения данных клиента',
            for_usr => '',
        };
Что любопытно, эта ошибка нигде не высвечивается
Нужно ли здесь проверять, соответствует ли установленный тариф условиям?


Название: Re: Условия выбора тарифа - проблемы с переходом на новый период
Отправлено: Efendy от 17 Мая 2018, 10:06:20
/usr/local/nodeny/logs/kernel.log - здесь нет ошибки?

Приведи какое условие ты используешь?


Название: Re: Условия выбора тарифа - проблемы с переходом на новый период
Отправлено: kostya_zpr от 17 Мая 2018, 11:23:45
С id этого клиента в kernel.log нашлась единственная запись (при ручном включении тарифа оператором)
kernel.log:14.04.2018 15:38:51 Заблокирован доступ клиенту id=9871, баланс -90.00 < 0.00

web.log:   14.04.2018 15:38 Adm maytome(id=12, ip=10.11.3.31) операция с услугами uid=9871, cmd=add, id=0, service_id=71
web.log:   14.04.2018 15:39 Adm maytome(id=12, ip=10.11.3.31) посмотрел пароль uid=9871
web.log:   14.04.2018 15:39 Adm wolfzp(id=11, ip=10.11.3.26) создал платеж id=366474 категории 69, cash=90, uid=9871
web.log:   14.04.2018 15:39 Adm maytome(id=12, ip=10.11.3.31) посмотрел пароль uid=9871
web.log:   14.04.2018 15:43 Adm maytome(id=12, ip=10.11.3.31) добавил ip=10.13.98.110 клиенту id=9871
Лог моего скрипта файрволла
fw.log:       Apr 14 15:43:05 fw.sh: ON  IPS=[10.13.98.110] UID=[9871] XID=[268f] SPEED_IN=[50000000] SPEED_OUT=[25000000] GRP=[11] SRV=[71] TARIF=[] TABLE=[]
fw.log:       Apr 28 14:06:46 fw.sh: ON  IPS=[10.13.98.110] UID=[9871] XID=[268f] SPEED_IN=[50000000] SPEED_OUT=[25000000] GRP=[11] SRV=[71] TARIF=[] TABLE=[]

После чего абону пополнили счет, доступ включился
После окончания тарифного периода ядро не может перейти на новый период.
-------------------------
Upd
Нашел, где ошибка высвечивается
Карточка абонента (операторская сторона) -> Тариф (ajUserSrvInfo) -> Заказ следующей (ajUserSrvAdd) -> Продлить текущей ->
Цитировать
Ошибка:
ошибка получения данных клиента

Если ошибка устойчивая - к администратору (см. Debug)
Прикладываю Debug.txt (хотя там на мой взгляд ничего по этой ошибке нету)

В _ajUserSrvAdd.pl этот кусок кода мне ответил при ручном продлении тарифа:
Код:
    # add - подключение услуги
    # set_next - изменение поля 'следующая услуга' в существующей услуге
    my $cmd = ses::input('cmd') eq 'set_next'? 'set_next' : 'add';
...
        my %param = (
            cmd         => $cmd,
            id          => $id,
            uid         => $uid,
...
        my $err = services->proc( %param );

        if( $err )
        {
            return _('[span error]:[p][p]',
                $lang::error,
                $lang::services_pm->{$err->{for_adm}} || $err->{for_adm},
                L('Если ошибка устойчивая - к администратору (см. Debug)')
            );
        }


Название: Re: Условия выбора тарифа - проблемы с переходом на новый период
Отправлено: Efendy от 18 Мая 2018, 00:17:01
Начали использовать поле "Условия" в настройках тарифов (услуг)
ты так и не привел условия


Название: Re: Условия выбора тарифа - проблемы с переходом на новый период
Отправлено: vddav от 24 Мая 2018, 11:39:36
есть такое что если критерии условия изменились (к примеру перевели абона в другую группу, а там другие тарифы), а сам тариф не изменили - то соответственно система не может назначить следующий тариф т.к. по условию он не соответствует и платежах появляются сообщения что есть тарифы, которые не завершились более суток назад. при этом начисления прекращаются, а услуга не завершается, но действует и абон при наличии инета ничего не платит(. получается что абон, если не следить за сообщениями системы, может долго ловить халяву)))
в общем когда назначаешь тариф абону - есть проверка условий, а когда меняются данные абонента - нет проверки будет ли тариф работать или его нужно изменить.
как по мне, если следующий тариф не соответствует условиям - оставлять без услуг - сам позвонит - разберемся.