Таки не меняются тарифные планы. Причина - в том, что в базе день/месяц хранятся без предшествующего нуля, при этом день и месяц - записи типа 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); ):
Временный фикс - в 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:
заменен на
Код: Выделить всё
(length($attr->{M}) == 1 && $attr->{M} ne '*') ? push @WHERE_RULES, "s.m='0$attr->{M}'" : push @WHERE_RULES, "s.m='$attr->{M}'";
131:
заменен на
Код: Выделить всё
(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 раза.