Накопительные скидки

Начиная с Ubilling 0.6.7 реализована новая механика накопительных скидок. Что она из себя представляет? А представляет она из себя страшную штуку, ежедневно динамически крутящую процент скидки для активных пользователей, при достижении определенных условий, и начисляющий относительно этого процента часть полной стоимости текущего тарифного плана. Вся обработка производится ежедневным вызовом соответствующего действия из Remote API - cudiscounts. Очень хорошо бы уже после начисления абонплаты. Например вот так:

1 1 * * *       /bin/ubapi "cudiscounts"

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

  CUD_ENABLED=1
  CUD_PULLDAYS=30 
  CUD_PERCENT=1
  CUD_PERCENTLIMIT=10
  CUD_PAYID=1
  CUD_CFID="44"

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

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

  • Абонент Василий Илларионович исправно платит на протяжении 30 дней CUD_PULLDAYS (ну, как минимум у него все хорошо с балансом, он не заморожен, и не отключен принудительно) Возможно он заплатил вперед - это нас не волнует. В общем у Василия все хорошо.
  • По прохождению этих самых 30 дней, ему выставляется 1 процент скидки CUD_PERCENT, и счетчик дней выставляется в 0. По текущему значению процента скидки абоненту начисляются средства в размере 1% от стоимости тарифа. Оплата будет проведена как типичный платеж с типом CUD_PAYID - в нашем случае это наличка. Да - никто не мешает зарезервировать под всякие такие вещи какой-то особенный тип платежей.

  • Все, абонент Василий пошел на следующий заход в 30 дней по накоплению следующего, второго процента своей скидки.
  • Через 300 дней активного использования нашей услуги Василий упирается в верхний порог скидки в 10% CUD_PERCENTLIMIT (ну да, у нас же не благотворительная организация, правда?)
  • В общем живет себе Василий счастливо, получая ежемесячно на счет по 10% стоимости своего тарифа.
  • И тут наступает ситуация - деньги на счету Василия Илларионовича неожиданно заканчиваются. По какой причине? Как всегда по трагической. Его сбил автобус. Да, насмерть, а как же еще? И он не смог оплатить Интернет вовремя. Что случается? А ничего - бонусные средства ясно не начисляются, процент скидки выставляется в 0 (ноль), и его безутешная вдова после пополнения счета опять будет накапливать до 10% скидки на протяжении 10 месяцев по новой. Несправедливо? Ну а как же еще - жизнь вообще по своей природе несправедливая штука.
  • А что же с абонентом по имени Никодим Петрович?
  • А он поставщик качественного колумбийского кокаина кофе.
  • За это ему от нас положена пожизненная скидка в 20%. Как это реализовано? А при помощи опции CUD_CFID указывающего ID вот такого поля профиля, типа VARCHAR, где для абонента можно указать принудительную скидку.

  • Каждый раз при обработке абонента с этим заполненным полем вместо «натуральной накопительной» скидочный процент будет подменяться на указанный в его профиле.

Как проверять?

При большом желании, о всех этих событиях можно узнать при помощи соответствующего модуля:

cumulativediscounts.txt · Последние изменения: 2015/05/28 17:57 — 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