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

Смена ТП по расписанию не работает

Добавлено: Пт янв 16, 2009 8:07 pm
chtito2
В модуле Dv смена тарифного плана по расписанию не работает: смены не происходит, а сумма с депозита юзера списывается по цене текущего ТП. Кто сталкивался? Модуль Abon не включен, да и он по моему здесь ни при чем?

Добавлено: Пт янв 16, 2009 8:15 pm
chtito2
Разобрался: смена почему-то в periodic daily происходила.

Добавлено: Сб янв 17, 2009 8:15 pm
NiTr0
Она там всегда и происходила.
А вот списывание деег было раньше так сказать по факту смены, тоже в периодик. Как сейчас - ХЗ.

Добавлено: Вс янв 18, 2009 8:10 am
chtito2
А вот списывание деег было раньше так сказать по факту смены, тоже в периодик. Как сейчас - ХЗ.
У меня periodic daily вызывалась после periodic monthly поэтому некорректно работало. Автор предлагает daily запускать до monthly:
1 0 * * * root /usr/abills/libexec/periodic daily
1 1 * * * root /usr/abills/libexec/periodic monthly
но тогда получается, что юзеру меняется план, а деньги снимаются только спустя какое-то время (во время periodic monthly). Обычно хочется чтобы деньги снялись в одно время со сменой плана. Вот как я этого добился:

закомментировал строчку вызова sheduler из libexec/periodic, которая вызывалась при daily, и перенес вызов в Abills/modules/Dv/config
%PERIODIC = (daily => [ 'dv_daily_fees', 'dv_users_warning_messages' ],
monthly => [ 'sheduler', 'dv_monthly_fees', 'dv_periodic_logrotate', ],
report => [ 'dv_report' ]);
sheduler() уже сама вызывает dv_sheduler() из Abills/modules/Dv/webinterface, которая и меняет план, а снятие абонплаты и перенос даты активации на сегодняшний день происходит в dv_monthly_fees, поэтому важно, чтобы sheduler шла ДО dv_monthly_fees, как выше, а не ПОСЛЕ, как было до этого. Еще одно необходимое изменение: по какой-то известной только автору причине monthly функции вызываются в обратном порядке их перечисления. Маленькое изменение в libexec/periodic:
if (defined($args->{monthly})) {
#for(my $i=$#monthly_functions; $i>-1; $i--) {
for(my $i=0; $i < @monthly_functions; $i++) {
т.е. убираем закомментированную строку и пишем вместо нее следующую.
Теперь все работает.

Добавлено: Вс янв 18, 2009 4:26 pm
ran
chtito2 писал(а):who | grep -i blonde | date; cd $HOME; unzip; touch; strip; finger; mount; fsck; more; yes; uptime; umount; sleep
после слип цифирю забыл поставить - не проснёшься :D

Добавлено: Вс янв 18, 2009 6:56 pm
chtito2
Вы правы: sleep 69
А почему 69 - так валетиком же спим :D :D