题
早在十月份,克里斯托弗·约翰逊就曾询问过 会计软件设计模式
他收到了好几个答案,但基本上都是一样的,都指向 马丁·福勒斯会计模式.
我真的不认为福勒斯模式有什么用处。对于更简单的会计系统来说,它们似乎过于复杂,因此我正在重新讨论克里斯托弗的问题并寻找更多选择,最好是针对较小的系统。
这主要是一个基于现金的系统,其中用户拥有类似于银行的账户。他们可以登录(基于网络)并检查余额、进行某些交易等。
我想它更像是 Paypal 或信用卡公司,而不是银行,但规模较小。它不必处理税收、摊销或任何您在成熟的会计系统中会看到的事情。只是余额和交易。
那么,任何人都可以指出基于会计的软件设计的任何额外资源,甚至是简单会计系统的良好实现吗?
其他提示
Fowler的图案的不过于复杂。他们对所需要的。你是不太可能能够建立更简单的东西没有得到麻烦与任何最终用户或会计。
当我实施会计时,它是日记帐、交易、帐户和帐户类型的典型模型。
tblTransactions
- Amount
- AccountID1
- AccountID2
- Type [CR/DR]
- DateEntered
那么我也有一个 tblJournals
它在明显的基础上对交易进行分组。您还可以添加 JournalTypes,它包含日志类型的一般描述,以便您可以检测到好的内容(反转等)。
这很好,因为在这个模型下逆转是微不足道的。您只需收集日记帐的所有交易,然后交换类型即可。
tblTransactions 有一个触发器,触发器根据类型针对特定帐户更新“CalculatedBalance”。然后,您还可以在给定时间段内运行报告,等等。
实现这一点不需要太多的会计知识,而且简单而有效。
本身不是设计模式,但您需要确保像这样的操作“将$金额从$account1转移到$account2” 不 曾经 “提款”没有匹配的“存款”...IE。如果在“存款”完成之前断电,则“取款”将回滚(撤消)
可提交事务由可撤消(可回滚)子事务组成......
- 获取所需权限:微不足道的拒绝,“资金不足”
- 开始“两阶段提交”
- 添加子交易
- 提交或回滚
警告:BCD 数学的发明是为了防止 Base 10 数学中的舍入错误。你没有提到国际问题,但你需要定点或“高精度”数学、货币转换,以及所有其他......
我其实MyBanco的作者,如果您想任何帮助,只是给我发电子邮件:)
存储货币作为分(整数)代替美元(浮点)。这不是一个设计,但它可能更有用。