Есть таблица balance_transaction, куда записывается приход с пополнений баланса и расход с оплаты заказов. В таблице user есть поле balance, чтобы не приходилось каждый раз пересчитывать баланс.
Нужно добавить реферальную программу, с заказов привлеченных клиентов будут капать процентные начисления. Реферальные начисления являются частью основного баланса клиента, их можно потратить на оплату товаров, но также реферальные начисления клиент может вывести себе на кошелек.
Была добавлена таблица referral_transaction, с полями order_id (для учета прихода % начислений с заказов) и withdrawal_id (для учета расхода с выводов реф начислений).
В таблицу user добавлено поле referral_balance, отражающее текущую сумму реф начислений.
1. Нужно ли в таблицу balance_transaction записывать приход реферальных начислений? Чтобы вывести общий баланс пока суммирую поля user.balance и user.referral_balance.
2. Как быть в ситуации, когда, напр, user.balance = 10 р, user.referral_balance = 50 р, а заказ на 40 р? Записать в balance_transaction расход на 10 р, а в referral_transaction расход на 30 р? Не возникнет ли потом путаницы при таком разбиении оплаты заказа?
Я бы повесил триггер на referral_transaction при переходе в статус "approved", чтобы добавлялась запись в balance_transaction. И суммировал только balance_transaction.