Вопрос по Activation

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Вопрос по Activation

Сообщение chtito2 »

Кто нибудь знает по какому принципу происходит начало работы пользователя? Например пользователь заходит, качает, выходит, но поле Activation остается 0000-00-00. Интересно почему оно не ставится в текущее время в момент первого захода? Вручную оператор должен что-ли вводить каждый раз? Тот же вопрос по полю Expire 0000-00-00. Для чего оно?

ppe
Сообщения: 50
Зарегистрирован: Чт авг 09, 2007 11:35 am

Сообщение ppe »

Насколько я знаю (да и пользуюсь им именно так) это опорная дата для снятия абонентской платы. Если дата активации 0000-00-00, то она снимается первого числа каждого месяца. если не нулевая, то съем происходит через 30 дней после этой даты и дата "сдвигается" на текущую дату. Еще одна особенность. Если установлена будущая дата, то клиент не может работать пока она не наступит, выдает ошибку авторизации.

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

если не нулевая, то съем происходит через 30 дней после этой даты и дата "сдвигается" на текущую дату.
30 дней не самая лучшая идея :( Обычно желается, чтобы учетный период считался с 2-го по 2-е, с 5-го по 5-е независимо от того, сколько дней в месяце. Ну и как частный случай: если сегодня 31-е, то переносилось бы на 1-е через два месяца.

Ммм... а сколько снимется если Activation не вводить (оставить 0000-00-00), но клиент подключился например 26-го числа? До 1-го числа следующего месяца тоже снимется полная абонплата?

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

Сообщение ran »

1-го числа следующего месяца тоже снимется полная абонплата?
да

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Удивительно. Столько разной функциональности и такое странное решение. Логичного поведения никак не добиться, кроме как самому переписать эту часть? В принципе проще найти где в коде обсчитывается дата следующего снятия, и прибавлять к началу использования не 30 дней, а 1 месяц по указанному выше алгоритму.

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

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

chtito2 писал(а):Удивительно. Столько разной функциональности и такое странное решение. Логичного поведения никак не добиться, кроме как самому переписать эту часть? В принципе проще найти где в коде обсчитывается дата следующего снятия, и прибавлять к началу использования не 30 дней, а 1 месяц по указанному выше алгоритму.
Некоторые люди перед тем ка писать систему почитали RFC, а некоторые дают утопичные советы даже не задумываясь над их последствиями.

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Подскажите номер RFC и что именно прочитанное в нем побудило вас решить считать месяц с 2 февраля по 5 марта, или со 2 апреля по 3 мая. Ведь как я понял прибавив 31 день именно это и произойдет?

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

Сообщение ran »

та шо ты потеешь? проблема яйца выеденного не стоит... хочешь чтоб снималась ежемесячно 1 числа не заполняй активацию, а один раз за оставшиеся дни месяца и руцями снять можно...

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Вы видимо не связывались с базой в несколько тыщ абонентов, раз руками предлагаете :) Автоматизировать хоцца, чтобы операторы не парились и свести к минимуму фактор человеческой ошибки. И продолжения своего поста от Асмодеуса я честно говоря не жду, т.к. боюсь что там уже все сказано :)

Наиболее приемлемый вариант - найти где в коде прибавляется 31 день и прибавить 1 месяц... но для начала хотелось бы узнать у автора есть ли риск что в каком-то месте это изменение вызовет regressions.

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

Сообщение ran »

причём тут твои тыщи... я имел ввиду при подключении - сам же писал:
но клиент подключился например 26-го числа?
или у тебя ежедневно тыщи подключаются? :shock: А 1 число тебе чем не нравится? ну какая в ж разница - 1 или 10 снимать??? сдвинь календарь на биллинге на 10 дней - и будет тебе 10-е :D

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

У самого по себе 1-го числа проблем нет, а проблема у снятия при Activation date 0000-00-00: если клиент подключится например 26-го мая, то 1-го июня с него за эти 5 дней будет снята месячная абонплата? Я так понял что да. А это же полный ляпос. Поэтому и придется переделывать чтобы считалось с числа по число (с 26-го по 26-е, с 3-го по 3-е, и с 31-го по 1-е через 2 месяца). Скорее всего это в periodic daily, хотя пока не смотрел.

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

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

ага и с 30 января по 30 февраля :)

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Обычно желается, чтобы учетный период считался с 2-го по 2-е, с 5-го по 5-е независимо от того, сколько дней в месяце. Ну и как частный случай: если сегодня 31-е, то переносилось бы на 1-е через два месяца.
А у снятия полной абонплаты за несколько дней использования нет права на жизнь. Ну разве что в музее :)

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Abills/modules/Abon/webinterface
sub abon_periodic {

что в ней нужно поменять чтобы месяц считался с числа по число?

Заранее спасибо.

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Нашел Abills/modules/Dv/webinterface

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

     if ($users->{ACTIVATE} ne '0000-00-00') {
        my ($Y, $M, $D)=split(/-/, $users->{ACTIVATE}, 3);
        $M--;
        $Dv->{ABON_DATE} = strftime "%Y-%m-%d", localtime(  (mktime(0, 0, 0, $D, $M, ($Y-1900), 0, 0, 0)  + 31 * 86400) );
       }
Вот эту калькуляцию мы и помассируем! Ура?

Единственная просьба к автору прокомментировать вызовет ли изменение алгоритма вычисления ABON_DATE регрессию где-то в другом месте кода. Я поделюсь своими наработками если кому будет нужно.

Ответить