Alferov 0 Опубликовано: 2007-11-01 09:49:44 Share Опубликовано: 2007-11-01 09:49:44 Обнаружил неприятный баг (а может это фича?) Если СТГ настроен на снятие абонентской платы раз в месяц (SpreadFee=no), то у замороженных пользователей абонентка тоже снимается. Хотя, по логике - не должна. Если же SpreadFee=yes, то все в порядке. Насколько я понимаю, в функции ежедневного снятия абонентки за это отвечает вот этот код (файл user.cpp): Цитата void USER::ProcessDayFeeSpread(){ if (passive.ConstData()) return; ....бла-бла-бла... А вот в функции разового снятия абонентки этого кода почему то нет. ((( Цитата void USER::ProcessDayFee(){ double passiveTimePart = 1.0; if (!settings->GetFullFee()) { passiveTimePart = GetPassiveTimePart(); } ....бла-бла-бла... Так баг это или фича??? Ссылка на сообщение Поделиться на других сайтах
gall 6 Опубліковано: 2007-11-01 10:21:37 Share Опубліковано: 2007-11-01 10:21:37 +1 Пришлось вручную перелопачивать всех замороженных. Хотелось бы, чтоб абонка не снималась у замороженных.. зачем тогда существует стоимость заморозки? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-11-01 11:15:55 Share Опубліковано: 2007-11-01 11:15:55 За неснятие абонки у замороженных пользователей неявно отвечает passiveTimePart - часть времени, которую пользователь провел вне пассива. Так, например, если пользователь был заморожен в середине месяца - с него снимется половина абонки. Если в начале - не снимется вобще. Логика работы меняется, если в конфиге указан FullFee=true - при этом снимается полная абонка вне зависимости от passiveTimePart. Бага скорее в том, что FullFee сделан необязательным, но по умолчанию установлен в true (см. settings.cpp, конструктор класса SETTINGS, строка 49). Уже пофикшен. Ссылка на сообщение Поделиться на других сайтах
Alferov 0 Опубліковано: 2007-11-01 12:16:51 Автор Share Опубліковано: 2007-11-01 12:16:51 Неееет. Вот если абонентка снимается в конце месяца... тогда да, тогда эта логика применима. Т.е. 15-го заморозили, 30-го снимаем абонентку и тут надо считать время заморозки и сколько снимать. Да и то, только в случае, если FullFee в конфиге не выставлен в true А если у меня снятие абонентки 1-го числа? И юзер при этом заморожен?? И FullFee в конфиге выставлен в true??? Тогда как? Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2007-11-01 12:40:39 Share Опубліковано: 2007-11-01 12:40:39 Если абонка снимается наперед, то естественно бессмыслено снимать часть АП. Это машина времени нужна Поэтому если логика снимать АП заранее, то должно быть FullFee=yes. Ссылка на сообщение Поделиться на других сайтах
Alferov 0 Опубліковано: 2007-11-01 18:30:18 Автор Share Опубліковано: 2007-11-01 18:30:18 Т.е. иными словами при FullFee=yes в функцию ProcessDayFee() надо добавлять этот код? Цитата if (passive.ConstData()) return; или надо усложнять, проверяя в какой день снимается абонка? и если в 1-й, то выходить... Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас