Един вековен проблем, който никога не е бил решен елегантно.
Всички банкови пакети, с които съм работил, съхраняват салдото в лицето на сметката. Изчисляването му в движение от историята на движението е немислимо.
Правилният начин е:
- Таблицата за движение има транзакция „откриващо салдо“ за всяка сметка. Това ще ви е необходимо след няколко години, когато трябва да преместите стари движения от таблицата с активни движения в таблица с история.
- Обектът на сметката има поле за баланс
- В таблицата за движение има задействане, което актуализира салда по сметки за кредитираните и дебитираните сметки. Очевидно има контрол на ангажиментите. Ако не можете да имате тригер, тогава трябва да има уникален модул, който записва движения под контрол на ангажимента
- Имате програма за „безопасна мрежа“, която можете да стартирате офлайн, която преизчислява всички салда и показва (и по избор коригира) грешни баланси. Това е много полезна проверка.
Някои системи съхраняват всички движения като положителни числа и изразяват кредита/дебита чрез обръщане на полетата от/до или с флаг. Лично аз предпочитам кредитно поле, дебитно поле и подписана сума, това прави сторниранията много по-лесни за проследяване.
Забележете, че тези методи се отнасят както за пари в брой, така и за ценни книжа.
Транзакциите с ценни книжа могат да бъдат много по-трудни, особено за корпоративни действия, ще трябва да приемете една транзакция, която актуализира един или повече парични салда на купувача и продавача, баланса на техните позиции за сигурност и евентуално брокера/депозитаря.