J'ai trouvé une bonne façon de le faire. Fondamentalement, puisque je ne peux pas éditer Account.Balance directement, je crée un nouvel enregistrement de transaction pour créditer (ou débiter, si le solde est négatif) l'intérêt, qui est défini par compte Account.Balance *. Taux d'intérêt. Le calcul que j'utilise est simple et fonctionne bien pour une forme très simple de calculs d'intérêts. Si, cependant, je voulais le calculer une fois par jour pour, par exemple, 12,99% APR, le calcul serait un peu différent. Voici des exemples des deux.
Pour calculer l'intérêt quotidien de base, mis en place un travail à exécuter tous les soirs @ 12:00:00 AM exécutant la commande suivante:
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
Cela va créer une nouvelle transaction une fois par jour pour chaque client dont le compte. Interest_Rate n'est pas 0.0000%.
Pour calculer APR dire pour les comptes de type CreditCard, mis en place un travail à exécuter par mois sur le 1er de chaque mois @ 12:00:00 AM exécutant la commande suivante:
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
(où ACCOUNT_TYPE = 103 est "CreditCard")
Donc un oubli de ma part a créé un problème. Je ne peux pas faire l'instruction UPDATE dans la colonne Solde, car Balance est une colonne calculée. Je dois faire quelque chose comme INSERT INTO [Transaction] les colonnes "Account_Id", "Amount", "DateTime", "Comment", et "Trans_Type_Id" pour chaque compte ... –
Est intérêt par jour ou par an? Plat ou APR? – gbn