Биллинговая система Nodeny
25 Ноября 2024, 18:17:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 [2] 3
  Печать  
Автор Тема: Баланс и новый месяц!  (Прочитано 19468 раз)
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #15 : 01 Октября 2012, 15:10:29 »

А я где-то что-то написал про приостановку "вручную"? Вы, любезный, по ссылке были?
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #16 : 01 Октября 2012, 19:52:02 »

$sql="SELECT * FROM users WHERE if(block_if_limit=1,balance>=limit_balance,1) AND mid=0";

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

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

только у меня заказчик поменял ТЗ.
так что - пока я занят другим
« Последнее редактирование: 01 Октября 2012, 20:02:21 от stimels » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #17 : 01 Октября 2012, 20:06:30 »

у меня заказчик просит реализовать такое:
стоимость тарифа например - 105 грн
на счету - 104 грн.

у такого пользователя при запуске new_month.pl доступ должен заблочиться, а деньги не списаться.
если у пользователя сумма > стоимости его тарифа, то сумма спишется и доступ не заблочится.
поидее left join подкидываю таблицу Plans2,  и если мой u.balance >= p.price, то тогда списывать
« Последнее редактирование: 01 Октября 2012, 20:11:14 от stimels » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #18 : 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";
чето не то....туплю на ночь
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #19 : 02 Октября 2012, 00:58:05 »

Похвальное желание обойтись одним запросом, только боюсь, что ничего не выйдет )
Во-первых это нифига не универсальный способ, т.к. бывают еще доп тарифы... скидки, доп услуги ну и не забываем о потрафиковых списаниях ))))
Я же говорю, все придумали до вас )))
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #20 : 02 Октября 2012, 06:12:51 »

ну тот модуль это не совсем то, что нужно.
мне по-сути нужна только модификация new month.
насчет доп услуг верно, я забыл за них. одним sql наверное не отделаешься, хотя опять Join )
но в srvs если не ошибаюсь битовые сдвиги
плохо, что времени нет особо то....
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #21 : 02 Октября 2012, 10:45:02 »

ну тот модуль это не совсем то, что нужно.
Судя по описанию как раз именно то. Т.к. если у юзера баланс 104 а услуга 105 - это обозначает что баланс с услугой (-1) т.е. как раз та ситуация, которую и обрабатывает мой модуль. )))
« Последнее редактирование: 02 Октября 2012, 10:47:28 от Cell » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #22 : 02 Октября 2012, 10:50:38 »

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

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

Цитировать
Модуль представляет из себя отдельный скрипт, запускаемый по cron. Если у абонента на момент запуска скрипта имеется заблокированная по финансовым причинам услуга, то считается, что абонент не пользовался услугами весь прошлый месяц и абонплата с него не списывается. Т.е. абонент становится "замороженным" до тех пор, пока он не пополнит баланс. После пополнения баланса система автоматически "размораживает" абонента.
$got_money это ж сумма снятия с услугами, так?
« Последнее редактирование: 02 Октября 2012, 11:02:01 от stimels » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #23 : 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

но не учитывает еще доп услуги.
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #24 : 02 Октября 2012, 22:07:34 »

а в каком месте это вставить?
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #25 : 02 Октября 2012, 22:12:47 »

после:
$err_connect="$0: обрыв соединения с базой данных. Вероятно, переход на новый месяц не завершен. Запустите скрипт перехода повторно.\n";
250 строка

ща еще доделал велосипед к доп услугам.
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #26 : 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 грн.

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

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

остается еще поработать с доп услугами тарифов "заморозки"
нужно поставить триггер на такой тариф, чтобы снимались доп услуги.
« Последнее редактирование: 02 Октября 2012, 22:44:44 от stimels » Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #27 : 03 Октября 2012, 00:34:49 »

ну и модуль соответственно покупать не имело смысл.
Имело, т.к. ты целый день протрахался, но даже близко не подобрался к тому что делает модуль ))))
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #28 : 03 Октября 2012, 06:19:07 »

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

тебя затрахал бы заказчик с постоянным изменением ТЗ  Смеющийся
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #29 : 03 Октября 2012, 08:36:10 »

Да я все изменения знаю уже... даже знаю что он тебя следующее попросить сделать. И ты будешь делать делать и делать... а всего-то нужно было 300 гр. )))
Я сам никогда не заморачиваюсь, если подходящий софт уже есть. Правда часто даже в купленном приходится находить и исправлять ошибки, ну дык все этим  грешат.... куда деваться.
Записан
Страниц: 1 [2] 3
  Печать  
 
Перейти в:  

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