Преступление и наказание

Начиная с Ubilling 0.6.7 реализована новая механика убийства старушек начисления штрафов, за пребывание абонентом в неактивном (читаем неоплаченном) состоянии на протяжении определенного интервала, указываемого в количестве дней. Штраф начисляется единоразово, при достижении абонентом указанного порога.

Как конфигурируется?

Вся обработка производится ежедневным вызовом соответствующего действия из Remote API - crimeandpunishment. Очень хорошо бы уже после начисления абонплаты и прочих действий затрагивающих баланс абонента. Например вот так:

2 2 * * *       /bin/ubapi "crimeandpunishment"

Поведение данного механизма полностью регулируется при помощи следующих опций alter.ini в вот таком виде для примера:

CAP_ENABLED=1
CAP_DAYLIMIT=30
CAP_PENALTY_PERCENT=0
CAP_PENALTY=20
CAP_PAYID=1
CAP_IGNOREFROZEN=1

Что происходит?

Предназначено это все для описания бизнес логики следующего вида:

  • Абонент Родион Романович забыл оплатить интернет и внезапно состояние его счета стало меньше кредитного лимита.
  • Он не является замороженным - игнорирование этого факта происходит при помощи CAP_IGNOREFROZEN.
  • Для него заводится соответствующая запись в БД и счетчик дней неактивности выставляется в 1 (один).
  • Если счетчик неактивности уже существует - к нему прибавляется еще один день, на пути к неотвратимому концу.
  • Если счетчик неактивности Раскольникова становится равным количеству в 30 дней CAP_DAYLIMIT, происходит снятие суммы 20 денег CAP_PENALTY со счета, под видом платежа типа «наличка» CAP_PAYID
  • Счетчик продолжает тикать… ну так.. на всякий случай.
  • Если абонент раскаялся и внес на счет сумму достаточную для погашения долга (либо Баланс начал равняться кредитному лимиту) - счетчик неактивности выставляется в 0 (ноль) и продолжает ожидать дальнейшего развития событий.
  • Обо всех этих интереснейших событиях можно узнать при помощи соответствующего модуля «Черной магии»:

crimeandpunishment.txt · Последние изменения: 2017/05/08 15:13 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki