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

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 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 февраля.

ran
Сообщения: 2298
Зарегистрирован: Вс окт 21, 2007 2:29 pm

Сообщение ran »

да всё работает... лично у меня больше года

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

ran
Какая версия движка у вас сейчас?

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

ran
Сообщения: 2298
Зарегистрирован: Вс окт 21, 2007 2:29 pm

Сообщение ran »

рабочая 037 и давно... ну с ноября 07 не обновлял (реально Абиллс у меня пашет... ну гте-то с начала 07)

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

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

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

Смена тарифного плана же происходит в установленный пользователем день по старту daily/monthly скрипта? Или в следующий день?

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

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

chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Сообщение chtito »

Конечно глюк. И если в доках как использовать не расписано - тоже глюк...

~AsmodeuS~
Site Admin
Сообщения: 5749
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

NiTr0 писал(а):Смена тарифного плана же происходит в установленный пользователем день по старту daily/monthly скрипта? Или в следующий день?
в день записанный в дате расписания.

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение 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}'";
Последний раз редактировалось NiTr0 Вт фев 19, 2008 12:43 pm, всего редактировалось 2 раза.

chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Сообщение chtito »

Ну и ну, неужели все так плохо... У вас надеюсь куррент?

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

chtito писал(а):У вас надеюсь куррент?
Версия и дата апдейта указана в 1м посте...

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

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

Сообщение 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;
которая и включает вывод дебаг инфо. Закомментировал - теперь все ОК.

~AsmodeuS~
Site Admin
Сообщения: 5749
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Сообщение ~AsmodeuS~ »

уже все поправил

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Сообщение sopov »

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

ran
Сообщения: 2298
Зарегистрирован: Вс окт 21, 2007 2:29 pm

Сообщение ran »

да по-идее на это должно влиять вот это:

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

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

Ответить