Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #15 : 01 Октября 2012, 15:10:29 » |
|
А я где-то что-то написал про приостановку "вручную"? Вы, любезный, по ссылке были?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 1407
|
|
« Ответ #19 : 02 Октября 2012, 00:58:05 » |
|
Похвальное желание обойтись одним запросом, только боюсь, что ничего не выйдет ) Во-первых это нифига не универсальный способ, т.к. бывают еще доп тарифы... скидки, доп услуги ну и не забываем о потрафиковых списаниях )))) Я же говорю, все придумали до вас )))
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #20 : 02 Октября 2012, 06:12:51 » |
|
ну тот модуль это не совсем то, что нужно. мне по-сути нужна только модификация new month. насчет доп услуг верно, я забыл за них. одним sql наверное не отделаешься, хотя опять Join ) но в srvs если не ошибаюсь битовые сдвиги плохо, что времени нет особо то....
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #21 : 02 Октября 2012, 10:45:02 » |
|
ну тот модуль это не совсем то, что нужно.
Судя по описанию как раз именно то. Т.к. если у юзера баланс 104 а услуга 105 - это обозначает что баланс с услугой (-1) т.е. как раз та ситуация, которую и обрабатывает мой модуль. )))
|
|
« Последнее редактирование: 02 Октября 2012, 10:47:28 от Cell »
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #22 : 02 Октября 2012, 10:50:38 » |
|
зачем модуль? когда достаточно изменить new_month.pl как оно должно работать я понимаю, вопрос в том, что я не успеваю по времени сделать все правильно и горожу велосипеды. судя по описанию модулю, он замораживает и че-то там переводит пользователей. а мне достаточно тупо блочить пользователей, не снимая денег за новый месяц. Модуль представляет из себя отдельный скрипт, запускаемый по cron. Если у абонента на момент запуска скрипта имеется заблокированная по финансовым причинам услуга, то считается, что абонент не пользовался услугами весь прошлый месяц и абонплата с него не списывается. Т.е. абонент становится "замороженным" до тех пор, пока он не пополнит баланс. После пополнения баланса система автоматически "размораживает" абонента. $got_money это ж сумма снятия с услугами, так?
|
|
« Последнее редактирование: 02 Октября 2012, 11:02:01 от stimels »
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 352
|
|
« Ответ #24 : 02 Октября 2012, 22:07:34 » |
|
а в каком месте это вставить?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #25 : 02 Октября 2012, 22:12:47 » |
|
после: $err_connect="$0: обрыв соединения с базой данных. Вероятно, переход на новый месяц не завершен. Запустите скрипт перехода повторно.\n"; 250 строка
ща еще доделал велосипед к доп услугам.
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #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
Сообщений: 1407
|
|
« Ответ #27 : 03 Октября 2012, 00:34:49 » |
|
ну и модуль соответственно покупать не имело смысл.
Имело, т.к. ты целый день протрахался, но даже близко не подобрался к тому что делает модуль ))))
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
|
« Ответ #28 : 03 Октября 2012, 06:19:07 » |
|
не целый день, а вечер и ночь ) другой работы тонна. сегодня еще доделаю по-человечески кое-чего. тебя затрахал бы заказчик с постоянным изменением ТЗ
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #29 : 03 Октября 2012, 08:36:10 » |
|
Да я все изменения знаю уже... даже знаю что он тебя следующее попросить сделать. И ты будешь делать делать и делать... а всего-то нужно было 300 гр. ))) Я сам никогда не заморачиваюсь, если подходящий софт уже есть. Правда часто даже в купленном приходится находить и исправлять ошибки, ну дык все этим грешат.... куда деваться.
|
|
|
Записан
|
|
|
|
|