Судя по всему, остатки действительно "гуляют".
Причин может быть масса, особенно в нагруженной и распределённой системе. Не зная точной архитектуры судить не берусь.
Могу, лишь, предложить следующий подход:
1) Остаток на счете -- это атрибут счета. Конкретное значение, привязанное к конкретной дате. (Например, дате банковской выписки)
2) Доступные средства -- сумма остатка на счете и _новых_ (появившихся с момента последнего расчета остатка) транзакций.
3) В момент расчета остатка, транзакции, приведшие к изменению его значения, помечаются как "чистые". И больше не участвуют ни в расчетах. Просто хранятся как справочник.
"Чистыми" транзакциями, можно для себя считать, например, транзакции, попавшие в выписку по счету.
"Чистые" транзакции, в последствии, можно архивировать. И выводить из системы.
Чего данные-то за год (в моём случае) суммировать? А через 10 лет?
------------------------------------------------------------------------------------------------
Это не моё изобретение. Так устроен реестр во многих настольных системах. В Quicken, например. Или в, царствие им небесное, MS Money.
|