22

早在 10 月,Kristopher Johnson 就询问了会计软件设计模式

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

我真的觉得 Fowlers 模式并不是那么有用。对于更简单的会计系统,它们似乎过于复杂,所以我正在重新讨论 Kristopher 的问题并寻找更多选项,最好是针对较小的系统。

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

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

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

4

5 回答 5

9

Fowler 的模式并不过分复杂。他们是关于什么是需要的。您不太可能在不与最终用户或会计师发生麻烦的情况下构建更简单的东西。

于 2009-04-02T09:32:56.827 回答
8

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

免费数字货币项目看起来对您的需求很有帮助。它提供了一个基本的交易和平衡框架。它有意简单和抽象,因此可以提供有用的设计见解,特别是如果您想测试新颖的想法。

Cyclos更实用。它涵盖了用户帐户和交易。

MyBanco是另一个开源银行系统,支持用户银行账户和基于 Web 的访问。它可以与虚拟货币和真实货币一起使用。

所有这些都是开源的,因此您可以直接查看文档、架构和代码。

顺便说一句,如果你真的只对余额和交易感兴趣,那么听起来任何与声誉、业力或积分系统相关的模式或项目都可能有相关的重叠......

于 2009-09-06T01:52:00.023 回答
4

当我实施会计时,它是日记帐、交易和帐户以及帐户类型的典型模型。

tblTransactions
    - Amount
    - AccountID1
    - AccountID2
    - Type [CR/DR]
    - DateEntered

然后我也有一个tblJournals明显的基础上对交易进行分组。您还可以添加 JournalTypes,它包含对期刊类型的一般描述,因此您可以检测到好东西(reverals 等)。

这很好,因为这种模型下的逆转是微不足道的。您可以为您的日记收集所有交易,并交换类型。

tblTransactions 有一个触发器,触发器根据类型更新针对特定帐户的“CalculatedBalance”。然后,您还可以在给定时间段内运行报告,依此类推。

它不需要太多的会计知识来实现​​这一点,而且简单而有效。

于 2009-09-06T02:31:32.107 回答
1

谷歌搜索“两阶段提交”

本身不是设计模式,但您需要确保 “将 $amount 从 $account1 转移到 $account2”之类的操作在没有匹配的“存款”的情况下永远不会“提款”......即如果电源在“存款”完成,“提款”回滚(撤消)

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

  1. 获得所需的权限:琐碎的拒绝,“资金不足”
  2. 开始“两阶段提交”
  3. 添加子交易
  4. 提交或回滚

警告:发明 BCD 数学是为了防止 Base 10 数学中的舍入错误。你没有提到国际问题,但你需要定点或“大精度”数学、货币转换等等……

于 2009-03-22T23:54:26.283 回答
-3

将钱存储为美分(整数)而不是美元(浮点数)。这不是一个设计,但它可能更有用。

于 2009-03-22T18:55:57.423 回答