Как зарезервировать транзакцию в базе данных с двойной записью! - PullRequest
0 голосов
/ 12 февраля 2011

Не устраивает мой дизайн базы данных резервирования транзакций

Сценарий , Пользователь выводит деньги из системы (приложения / игры, платформы и т. Д.) На свой банковский счет.

Банк отклоняет банковский перевод, поэтому операция снятия средств не удалась. Теперь система должна вернуть средства пользователю за вычетом комиссии за отклоненную / неудачную транзакцию.

Для выполнения снятия существует 4 записи транзакции (создано 4 записи), затем для выполнения сторнирования транзакции есть еще 6 записей транзакции. Всего 10 записей транзакций! (Создано 10 записей!)

Я чувствую, что может быть лучший способ сделать это! может быть можно просто пометить записи как зарезервированные и добавить логику в программное обеспечение для зарезервированной транзакции ???

Я делаю это правильно?

как зарезервировать транзакцию в базе данных бухгалтерского учета с двойной записью?

РЕДАКТИРОВАТЬ: резервирование транзакции, не ссылаясь на пересмотр базы данных сделка, а скорее резерв фонды.

1 Ответ

1 голос
/ 12 февраля 2011

Я не уверен, что это вопрос программирования. Проблема здесь заключается в требованиях к бухгалтерскому учету. В нашей системе мы проводим дебет в вспомогательную бухгалтерскую книгу AR, а затем кредит / дебет в главную бухгалтерскую книгу. Если мы затем получим отклонение, отскоченный чек или что-то еще, мы публикуем новые транзакции, которые отменяют его. Без этого не было бы записи о том, что на самом деле произошло.

Мы предотвращаем некоторые из них с помощью кредитных карт, потому что мы можем оплатить их в пост-время. Если транзакция не может быть завершена, пакет AR не публикуется, и клерк должен исправить ее или удалить транзакцию. В транзакции вспомогательной книги AR установлен флажок, который необходимо перевернуть, прежде чем он повлияет на баланс, и GL не будет откорректирован до успешной публикации. Если сообщение будет опубликовано успешно, но мы получим возвратный платеж, мы все равно будем использовать вышеуказанный метод.

На самом деле все сводится к тому, какие записи хочет хранить ваш контроллер. Они могут захотеть отслеживать неудачные транзакции для составления отчетов и возможного обнаружения мошенничества. Общее правило: если что-то опубликовано, оно никогда не должно меняться.

...