Страница 1 из 2

Смена тарифного плана пользователем

Добавлено: Пт фев 15, 2008 12:17 pm
NiTr0
Смена тарифного плана по расписанию не работает. Денег на счету пользователя - достаточно для изменения. В крон скрипты прописал, для проверки пускал вручную - результат прежний.
2я проблема - при смене тарифного плана немедленно выдается ошибка сервера, при этом в логах остается строчка

Код: Выделить всё

 malformed header from script. Bad header=<p>SELECT u.uid,: index.cgi, referer: http://billing.xxx.xxx/index.cgi?index=33&sid=7LVNTJy6gMBhj3GL
Версия - 0.40b, апдейт от 13 февраля.

Добавлено: Пт фев 15, 2008 12:37 pm
ran
да всё работает... лично у меня больше года

Добавлено: Пт фев 15, 2008 12:41 pm
NiTr0
ran
Какая версия движка у вас сейчас?

ЗЫ при немедленной смене тарифного плана, несмотря на выдаваемую ошибку, тарифный план все же меняется.

Добавлено: Пт фев 15, 2008 12:59 pm
ran
рабочая 037 и давно... ну с ноября 07 не обновлял (реально Абиллс у меня пашет... ну гте-то с начала 07)

тестовая на каррент 04 иперейду сразу как перестрою свои почтовики

нюансы есть Автор знает...

Добавлено: Пт фев 15, 2008 2:02 pm
NiTr0
Смена тарифного плана же происходит в установленный пользователем день по старту daily/monthly скрипта? Или в следующий день?

Добавлено: Пн фев 18, 2008 9:25 pm
NiTr0
Хм... Вроде как тарифный план меняет (похоже на следующий день, еще проверю), но - время окончания пакета остается старое :( Это глюк, либо так и задумано?

Добавлено: Вт фев 19, 2008 6:16 am
chtito
Конечно глюк. И если в доках как использовать не расписано - тоже глюк...

Добавлено: Вт фев 19, 2008 9:18 am
~AsmodeuS~
NiTr0 писал(а):Смена тарифного плана же происходит в установленный пользователем день по старту daily/monthly скрипта? Или в следующий день?
в день записанный в дате расписания.

Добавлено: Вт фев 19, 2008 11:54 am
NiTr0
Таки не меняются тарифные планы. Причина - в том, что в базе день/месяц хранятся без предшествующего нуля, при этом день и месяц - записи типа char(2):

Код: Выделить всё

id 	uid 	date 	type 	action 	aid 	counts 	d 	m 	y 	h 	module
3 	1 	2008-02-18 	tp 	5	 	2 		0 		19 	2 	2008 	* 	Dv
В sql запросе же день и месяц - всегда 2-значные, вот пример (в Abills/mysql/Schedule.pm вставил в 158 строке print($WHERE); ):

Код: Выделить всё

WHERE s.y='2008' and s.m='02' and s.d='19'
Временный фикс - в Shedule.pm в строке 184 (добавление записи) добавлено

Код: Выделить всё

 if (length($H) == 1 && $H ne '*') {
    $H='0'.$H;
 }
 if (length($D) == 1 && $D ne '*') {
    $D='0'.$D;
 }
 if (length($M) == 1 && $M ne '*') {
    $M='0'.$M;
 }
и для спокойствия изменил строки (формирование выборки):

127:

Код: Выделить всё

    push @WHERE_RULES, "s.m='$attr->{M}'";
заменен на

Код: Выделить всё

    (length($attr->{M}) == 1 && $attr->{M} ne '*') ? push @WHERE_RULES, "s.m='0$attr->{M}'" : push @WHERE_RULES, "s.m='$attr->{M}'";
131:

Код: Выделить всё

    push @WHERE_RULES, "s.d='$attr->{D}'";
заменен на

Код: Выделить всё

    (length($attr->{D}) == 1 && $attr->{D} ne '*') ? push @WHERE_RULES, "s.d='0$attr->{D}'" : push @WHERE_RULES, "s.d='$attr->{D}'";

Добавлено: Вт фев 19, 2008 12:20 pm
chtito
Ну и ну, неужели все так плохо... У вас надеюсь куррент?

Добавлено: Вт фев 19, 2008 12:40 pm
NiTr0
chtito писал(а):У вас надеюсь куррент?
Версия и дата апдейта указана в 1м посте...

Re: Смена тарифного плана пользователем

Добавлено: Вт фев 19, 2008 1:26 pm
NiTr0
NiTr0 писал(а):2я проблема - при смене тарифного плана немедленно выдается ошибка сервера, при этом в логах остается строчка

Код: Выделить всё

 malformed header from script. Bad header=<p>SELECT u.uid,: index.cgi, referer: http://billing.xxx.xxx/index.cgi?index=33&sid=7LVNTJy6gMBhj3GL
С этим тоже разобрался - в Dv.pm есть строка 272:

Код: Выделить всё

       $user->{debug}=1;
которая и включает вывод дебаг инфо. Закомментировал - теперь все ОК.

Добавлено: Вт фев 19, 2008 3:16 pm
~AsmodeuS~
уже все поправил

Добавлено: Ср фев 20, 2008 1:47 pm
sopov
Не стал создавать отдельную тему - спрошу здесь - сильно не пинайте...Как работает смена тарифного пользователем? Дело в том, что я создал групу тар. планов - добавил туда соответствующие тп, добавил в конфиг нужные опции, а у пользователей в админке пишется "Неразрешенная операция"

Добавлено: Ср фев 20, 2008 2:10 pm
ran
да по-идее на это должно влиять вот это:

$conf{DV_USER_CHG_TP}
$conf{DV_USER_CHG_TP_SHEDULE}
$conf{DV_USER_CHG_TP_NPERIOD}

хотя я сам не пробовал - я не разрешаю менять