他收到了几个答案,但它们基本相同,指向Martin Fowlers Accounting Patterns。
我真的没有找到有用的福勒模式。对于更简单的会计系统来说,它们看起来过于复杂,所以我正在重复克里斯托弗的问题并寻找更多选择,最好是针对较小的系统。
这主要是基于现金的系统,其中向用户提供类似于银行的账户。他们可以登录(基于网络)并查看余额,进行某些交易等。
我想它会比PayPal或信用卡公司更像银行,但规模较小。它不必处理税收,摊销或您在完全成熟的会计系统中看到的任何事情。只是平衡和交易。
那么,任何人都可以指出基于会计的软件设计的任何额外资源,甚至是简单会计系统的良好实现吗?
答案 0 :(得分:9)
福勒的模式不过于复杂。它们是关于所需要的。如果不与最终用户或会计师发生问题,您不太可能构建更简单的东西。
答案 1 :(得分:8)
那么,任何人都可以指出基于会计的软件设计的任何额外资源,甚至是简单会计系统的良好实现吗?
Free Digital Money Project看起来对您的需求很有帮助。它提供了一个基本的交易和平衡框架。它有意简单和抽象,因此可能提供有用的设计见解,特别是如果你想测试新颖的想法。
Cyclos更实用。它涵盖了用户帐户和交易。
MyBanco是另一个开源银行系统,支持用户银行账户和基于网络的访问。它可以与虚拟货币和真实货币一起使用。
所有这些都是开源的,因此您可以直接查看文档,架构和代码。
顺便说一句,如果你真的只对余额和交易感兴趣,那么听起来任何与声誉,业力或积分系统相关的模式或项目都可能会有相关的重叠......
答案 2 :(得分:4)
当我实施会计时,它是期刊,交易和账户以及账户类型的典型模型。
tblTransactions
- Amount
- AccountID1
- AccountID2
- Type [CR/DR]
- DateEntered
然后我还有一个tblJournals
,它明显地对交易进行分组。您还可以添加JournalTypes,它包含对哪种日记的一般描述,因此您可以检测好东西(reverals等)。
这很好,因为这种模式下的逆转是微不足道的。您可以收集日记帐的所有交易,并交换类型。
tblTransactions有一个触发器,触发器根据类型更新特定帐户的“CalculatedBalance”。然后,您还可以在给定时间段内运行报告,依此类推。
实现这一点并不需要太多会计知识,而且简单但有效。
答案 3 :(得分:1)
Google search for "two phase commit"
不是设计模式本身,但你需要确保像这样的操作 “将$ amount从$ account1转移到$ account2”在没有匹配的“存款”的情况下永远“撤回”...即如果电源在“存款“完成后,”撤回“被回滚(撤消)
可提交事务由可撤销(可回滚)子事务组成......
警告:发明BCD数学是为了防止Base 10数学中的舍入错误。你没有提到国际问题,但你需要定点或“大精度”数学,货币转换,以及所有其他...
答案 4 :(得分:0)
我实际上是MyBanco的作者,如果您需要任何帮助,请给我发电子邮件:)
答案 5 :(得分:-3)
将货币存储为美分(整数)而不是美元(浮动)。它不是设计,但它可能更有用。