Расчет бонусов по пользовательским транзакциям.
Из списка часто задаваемых вопросов
Пример.
Есть пользовательская операция - «покупка» с набором атрибутов: товар, категория товара, цена, количество, сумма, дата покупки и и т.д.
Для расчетов формируется следующий набор записей (пример для чека с двумя позициями)
- товар - 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 решение.