Расчет бонусов по пользовательским транзакциям.

Из списка часто задаваемых  вопросов
Пример.
Есть пользовательская операция  - «покупка» с набором атрибутов: товар, категория товара, цена, количество, сумма, дата покупки и и т.д.
Для расчетов формируется следующий набор записей (пример для чека с двумя позициями)
- товар - X, категория - промтовары, цена - 100 рублей, количество - 5 единиц, сумма -  500 рублей, дата покупки - 01/01/2010 11AM.
- товар -  Y, категория - сопутствующие товары, цена - 200 рублей, количество - 1 единица, сумма -  200 рублей, дата покупки - 01/01/2010 11AM.

Т.е. для одного чека в системе формируется 2 записи.

Совершенно очевидно, как назначить правила для начисления бонусов за за покупку товара Z, или товаров категории «сопутствующие товары», или для товаров дороже 150 рублей и т.д..

Но иногда необходимо рассчитать бонусы, просто если общая сумма чека превышает N рублей. Разумеется при подобной схеме начисления конкретный товар, его категория, количество единиц в чеке  будут проигнорированы.

Как поступить в данной ситуации?
Если Вы заведомо идете на упрощение системы расчетов — передавайте только одну запись, соответствующую покупке в целом с атрибутами: общая сумма, дата покупки. В нашем случае это будет следующая запись:
- общая сумма — 700 рублей, дата покупки - 01/01/2010 11AM.
И назначайте правило расчета бонусов, исходя из общей суммы чека.

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

Метки:

Оставить комментарий