Я нашел сильный способ сделать это.
По сути, поскольку я не могу редактировать Account.Balance напрямую, я создаю новую запись транзакции для зачисления (или дебетования, если баланс отрицательный) процента, который определяется Account.Balance * Account.Interest_Rate , Расчет, который я использую, прост и хорошо работает для очень простой формы расчета процентов. Однако, если бы я хотел рассчитать это один раз в день, например, для 12,99% годовых, расчет был бы немного другим. Вот примеры обоих.
Чтобы рассчитать базовый дневной процент, настройте задание на ночной запуск в 12:00:00, выполнив следующее:
INSERT INTO [Transaction] ([Account_Id], [Amount], [Trans_Type_Id], [DateTime], [Comment])
SELECT Account_Id, Balance * Interest_Rate, 101, GETDATE(), 'Interest' FROM Account WHERE Interest_Rate <> 0.0000
Это создаст новую транзакцию один раз в день для каждого клиента, у которого Account.Interest_Rate не равно 0,0000%.
Чтобы рассчитать APR, скажем, для счетов типа CreditCard, настройте задание на ежемесячное выполнение 1-го числа каждого месяца в 12:00:00 AM, выполнив следующее:
INSERT INTO [Transaction] ([Account_Id], [Amount], [Trans_Type_Id], [DateTime], [Comment])
SELECT Account_Id, ((Interest_Rate/12) * Balance), 101, GETDATE(), 'Interest' FROM Account WHERE Interest_Rate <> 0.0000 AND Account_Type = 103
(где Account_Type = 103 - это "Кредитная карта")