Rehash:会计软件设计模式

时间:2009-03-22 00:16:24

标签: design-patterns accounting

回到十月,克里斯托弗约翰逊询问了Accounting Software Design Patterns

他收到了几个答案,但它们基本相同,指向Martin Fowlers Accounting Patterns

我真的没有找到有用的福勒模式。对于更简单的会计系统来说,它们看起来过于复杂,所以我正在重复克里斯托弗的问题并寻找更多选择,最好是针对较小的系统。

这主要是基于现金的系统,其中向用户提供类似于银行的账户。他们可以登录(基于网络)并查看余额,进行某些交易等。

我想它会比PayPal或信用卡公司更像银行,但规模较小。它不必处理税收,摊销或您在完全成熟的会计系统中看到的任何事情。只是平衡和交易。

那么,任何人都可以指出基于会计的软件设计的任何额外资源,甚至是简单会计系统的良好实现吗?

6 个答案:

答案 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”在没有匹配的“存款”的情况下永远“撤回”...即如果电源在“存款“完成后,”撤回“被回滚(撤消)

可提交事务由可撤销(可回滚)子事务组成......

  1. 获得所需的权限:琐碎拒绝,“不足 资金“
  2. 开始“两阶段提交”
  3. 添加子交易
  4. 提交或回滚
  5. 警告:发明BCD数学是为了防止Base 10数学中的舍入错误。你没有提到国际问题,但你需要定点或“大精度”数学,货币转换,以及所有其他...

答案 4 :(得分:0)

我实际上是MyBanco的作者,如果您需要任何帮助,请给我发电子邮件:)

答案 5 :(得分:-3)

将货币存储为美分(整数)而不是美元(浮动)。它不是设计,但它可能更有用。