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

Главная категория => Nodeny 49 => Тема начата: md5 от 01 Октября 2012, 08:44:11



Название: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 08:44:11
Доброго времени суток!

Лазил по форуму не нашел ничего похожего, так что если повторюсь заранее извиняюсь!

Дело в том что при снятии денег 1-го числа у абонента баланс минусовой. Допустим что он не хочет пользоваться в этом месяце интернетом.
Через месяц опять начинает пользоваться! А баланс в минус за 2 месяца!
Я понимаю что если выставить другой пакет у которого абонплатны нет с заблокированым доступ это решит проблему.

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


Название: Re: Баланс и новый месяц!
Отправлено: Belos от 01 Октября 2012, 09:00:13
Может это подойдет - forum.nodeny.com.ua/index.php?topic=1532.0


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 09:37:49
$sql="SELECT * FROM users WHERE if(block_if_limit=1,balance>=limit_balance,1) AND mid=0";

надо поменять в файлике перехода на новый месяц.
250 строка


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 09:39:33
Спасибо!

Попробуем


Название: Re: Баланс и новый месяц!
Отправлено: elite от 01 Октября 2012, 09:49:42
$sql="SELECT * FROM users WHERE if(block_if_limit=1,balance>=limit_balance,1) AND mid=0";

надо поменять в файлике перехода на новый месяц.
250 строка
а почему не SELECT * FROM users WHERE block_if_limit=1 AND balance>=limit_balance AND mid=0
?


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 01 Октября 2012, 10:06:24
нифига это не решает проблему т.к. баланс с услугами и просто баланс - это разные вещи... всеравно 2 месяца отминусует


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 10:16:03
Тогда вариант решения проблемы есть ?
Что бы пакет остался и в минус дальше не уходил


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 11:07:07
С триггером трафика проще


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 12:12:49
Интересно как же проще ?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 12:29:08
У нас реализовано правда на суточной абонплате
Списывание происходит при условии наличия трафика
Порог выставляется в тарифе


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 12:53:32
тоесть ты хочешь сказать что у тебя в тарифном плане есть какой то лимитированый трафик и оплата только за трафик идет ?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 12:58:37
Нет. Снятие абонплаты идет только тогда, когда был трафик
А сколько трафика определяется в тарифе.
В вашем случае это не катит.

Как раз тоже заинтересован в вашей задаче. Буду на работе - подумаю


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 13:04:43
что ж...

буду тогда что то думать сам. если получиться что то сделать, скину инфу!
Но все таки если будут предложения выслушаю


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 01 Октября 2012, 13:05:04
да все уже придумали 100500 раз за вас http://nodeny.info/moduli/priostanovka


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 01 Октября 2012, 13:07:51
Cell

Еще раз повторюсь! Не все заходят на статистику и приостанавливают вручную!


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 01 Октября 2012, 15:10:29
А я где-то что-то написал про приостановку "вручную"? Вы, любезный, по ссылке были?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 19:52:02
$sql="SELECT * FROM users WHERE if(block_if_limit=1,balance>=limit_balance,1) AND mid=0";

надо поменять в файлике перехода на новый месяц.
250 строка
только что проверил.

снимает у тех у кого положительный баланс.
у кого отрицательный - не снимает.

только у меня заказчик поменял ТЗ.
так что - пока я занят другим


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 20:06:30
у меня заказчик просит реализовать такое:
стоимость тарифа например - 105 грн
на счету - 104 грн.

у такого пользователя при запуске new_month.pl доступ должен заблочиться, а деньги не списаться.
если у пользователя сумма > стоимости его тарифа, то сумма спишется и доступ не заблочится.
поидее left join подкидываю таблицу Plans2,  и если мой u.balance >= p.price, то тогда списывать


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Октября 2012, 22:10:13
$sql="SELECT * FROM users u LEFT JOIN plans2 p ON u.paket=p.id WHERE u.balance >= p.price AND mid=0";
чето не то....туплю на ночь


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 02 Октября 2012, 00:58:05
Похвальное желание обойтись одним запросом, только боюсь, что ничего не выйдет )
Во-первых это нифига не универсальный способ, т.к. бывают еще доп тарифы... скидки, доп услуги ну и не забываем о потрафиковых списаниях ))))
Я же говорю, все придумали до вас )))


Название: Re: Баланс и новый месяц!
Отправлено: stix от 02 Октября 2012, 06:12:51
ну тот модуль это не совсем то, что нужно.
мне по-сути нужна только модификация new month.
насчет доп услуг верно, я забыл за них. одним sql наверное не отделаешься, хотя опять Join )
но в srvs если не ошибаюсь битовые сдвиги
плохо, что времени нет особо то....


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 02 Октября 2012, 10:45:02
ну тот модуль это не совсем то, что нужно.
Судя по описанию как раз именно то. Т.к. если у юзера баланс 104 а услуга 105 - это обозначает что баланс с услугой (-1) т.е. как раз та ситуация, которую и обрабатывает мой модуль. )))


Название: Re: Баланс и новый месяц!
Отправлено: stix от 02 Октября 2012, 10:50:38
зачем модуль?
когда достаточно изменить new_month.pl
как оно должно работать я понимаю, вопрос в том, что я не успеваю по времени сделать все правильно и горожу велосипеды.

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

Цитировать
Модуль представляет из себя отдельный скрипт, запускаемый по cron. Если у абонента на момент запуска скрипта имеется заблокированная по финансовым причинам услуга, то считается, что абонент не пользовался услугами весь прошлый месяц и абонплата с него не списывается. Т.е. абонент становится "замороженным" до тех пор, пока он не пополнит баланс. После пополнения баланса система автоматически "размораживает" абонента.
$got_money это ж сумма снятия с услугами, так?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 02 Октября 2012, 19:34:17
Код:
$sql="SELECT u.id,u.balance,u.grp,u.paket,u.paket3,u.srvs,u.start_day,u.discount,u.cstate,u.next_paket,u.next_paket3,p.price FROM users u LEFT JOIN plans2 p ON u.paket=p.id WHERE u.balance >= p.price ";
вот так через одно место оно делает то, что я хочу.
u. и p. чтобы не путаться, а так грабли были в том, что снимало с p.id, а не u.id

но не учитывает еще доп услуги.


Название: Re: Баланс и новый месяц!
Отправлено: blackjack от 02 Октября 2012, 22:07:34
а в каком месте это вставить?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 02 Октября 2012, 22:12:47
после:
$err_connect="$0: обрыв соединения с базой данных. Вероятно, переход на новый месяц не завершен. Запустите скрипт перехода повторно.\n";
250 строка

ща еще доделал велосипед к доп услугам.


Название: Re: Баланс и новый месяц!
Отправлено: stix от 02 Октября 2012, 22:43:13
также добавляем ниже:

$price=$p->{price};

и так:
Код:
 # режим отчета=0 - необходим для формирования $service_list
 $money_param={
   paket=>$paket,
   paket3=>$paket3,
   traf1=>$traf1,
   traf2=>$traf2,
   traf3=>$traf3,
   traf4=>$traf4,
   service=>$srvs,
   start_day=>$start_day,
   discount=>$discount,
   mode_report=>0
 };
 $h=&Money($money_param);
 $got_money=sprintf("%.2f",$h->{money});

 $money_over=$h->{money_over};
 $service_list=$h->{service_list};
 chomp $service_list;

if ($got_money > $price)
{
$got_money = 0;
#$service_list="";
}

теперь логика работы такая:

если например у пользователя на счету 100 грн
тариф стоит 99 грн.
система его тарифицирует.
на счету остается 1 грн

если на счету 98 грн
тариф 99 грн
в новом месяце на счету остается 98 грн, доступ блокируется пока не доложит 1 грн.

если на счету 100 грн, стоимость тарифа 99 грн, но присутствует доп услуга стоимостью 30 грн
в новом месяце остается на счету 100 грн, доступ блокируется пока не доложит 30 грн.

вроде так как хотел заказчик.
если есть где-то логические ошибки, напишите плиз, а то ночные бредни в голове поднадоели.

ну и модуль соответственно покупать не имело смысл.

остается еще поработать с доп услугами тарифов "заморозки"
нужно поставить триггер на такой тариф, чтобы снимались доп услуги.


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 03 Октября 2012, 00:34:49
ну и модуль соответственно покупать не имело смысл.
Имело, т.к. ты целый день протрахался, но даже близко не подобрался к тому что делает модуль ))))


Название: Re: Баланс и новый месяц!
Отправлено: stix от 03 Октября 2012, 06:19:07
не целый день, а вечер и ночь )
другой работы тонна.
сегодня еще доделаю по-человечески кое-чего.

тебя затрахал бы заказчик с постоянным изменением ТЗ  ;D


Название: Re: Баланс и новый месяц!
Отправлено: Cell от 03 Октября 2012, 08:36:10
Да я все изменения знаю уже... даже знаю что он тебя следующее попросить сделать. И ты будешь делать делать и делать... а всего-то нужно было 300 гр. )))
Я сам никогда не заморачиваюсь, если подходящий софт уже есть. Правда часто даже в купленном приходится находить и исправлять ошибки, ну дык все этим  грешат.... куда деваться.


Название: Re: Баланс и новый месяц!
Отправлено: stix от 03 Октября 2012, 08:40:22
та дело не в том, что я принципиально не хочу покупать модуль, а в том, что я наверное не понимаю как он сможет подойти сюда.
но и не хочу доставать тебя каждый раз, чтобы ты допиливал и доставлял колеса в этот велосипед.


Название: Re: Баланс и новый месяц!
Отправлено: stix от 03 Октября 2012, 09:22:33
кстати таки натупил
надо так:
Код:
if ($got_money > $start_money)
{
$got_money = 0;
$perehodim = 0;
}
else
{
$perehodim = 1;
}

и добавить так:

Код:
if ($perehodim == 1)
{
 $sql="INSERT INTO pays ".
    "(mid,cash,time,admin_id,admin_ip,bonus,reason,coment,type,category) VALUES".
    "($id,-$got_money,$time_last,0,0,'y','$reason','$coment',10,110)";
}

костыль, но вроде работает  ;D


Название: Re: Баланс и новый месяц!
Отправлено: stix от 04 Октября 2012, 11:46:08
в финале все решилось еще проще и правильней.

250 строку оставляем как и есть
$sql="SELECT * FROM users WHERE mid=0";

 $price=$p->{price};
нафиг не нужно добавлять

после
Код:
$h=&Money($money_param);
 $got_money=sprintf("%.2f",$h->{money});

 $money_over=$h->{money_over};
 $service_list=$h->{service_list};
 chomp $service_list;
вставляем:
Код:
if ($got_money > $start_money)
{
$got_money = 0;
$perehodim = 0;
}
else
{
$perehodim = 1;
}
после
Код:
 chomp $reason;
вставляем:
Код:
if ($perehodim == 1)
{
 $sql="INSERT INTO pays ".
    "(mid,cash,time,admin_id,admin_ip,bonus,reason,coment,type,category) VALUES".
    "($id,-$got_money,$time_last,0,0,'y','$reason','$coment',10,110)";
}
else
{
 $sql="INSERT INTO pays ".
    "(mid,cash,time,admin_id,admin_ip,bonus,reason,coment,type,category) VALUES".
    "($id,-$got_money,$time_last,0,0,'y','$reason','Недостаточно средств для перехода на новый месяц',10,110)";

}


Название: Re: Баланс и новый месяц!
Отправлено: md5 от 04 Октября 2012, 12:00:04
Это что бы в минус не уходил ?

Или по твоему тарифу ?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 04 Октября 2012, 12:02:07
по твоему я писал вначале.
а это по-моему

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


Название: Re: Баланс и новый месяц!
Отправлено: kuhar от 01 Декабря 2012, 14:07:19
У меня возможно глупый вопрос, но что нужно сделать, если у клиента минус на счету, и он месяц не пользуется, чтобы у него абонплата не снималась еще больше в минус?


Название: Re: Баланс и новый месяц!
Отправлено: stix от 01 Декабря 2012, 14:16:50
на форуме 10500 ответов


Название: Re: Баланс и новый месяц!
Отправлено: Sergey от 01 Августа 2013, 00:06:46
если писали 10500 раз на форуме,так будь человеком покажи где оно!!!


Название: Re: Баланс и новый месяц!
Отправлено: Efendy от 01 Августа 2013, 08:33:31
Ставь N+, там есть такая фича)


Название: Re: Баланс и новый месяц!
Отправлено: Redmen от 01 Августа 2013, 11:12:46
Ставь N+, там есть такая фича)
up