使用以下要点中的基本sql模式:https://gist.github.com/nykevin/9433376 ,如何创建拆分日记账分录?
我明白为什么 entries
表中有一个单独的金额,带有指向要贷记/借记的账户的指针-这迫使复式记账保持一致,并便于余额的计算。
但这似乎使得拆分日记账分录变得不可能。一个简单的例子就是在一个£1200购买:
1. Credit "Creditors control" account with £1200
2. Debit "VAT" account with £200
3. Debit "Purchases" account with £1000
一个更为复杂的例子是工资,其中有一个借记工资支出,另一个借记工资税支出,贷记现金和各种扣除账户。
这个sql模式是否不足以满足这些目的,或者是否有一种方法可以从要点中使用sql来实现这一点?
1条答案
按热度按时间a0x5cqrl1#
你说得对,gist中的示例模式使拆分日记账分录变得不可能。
您需要的是一个模式,该模式在每个单独的日记条目上都有一行。这是一个更灵活的设计,将适应复杂的情况下,你正在寻找。
示例
架构
我建议至少提供三张table来满足您的要求:
帐户设置
我们将为您的示例创建三个帐户。尽管你可能不会硬编码
id
,我们这样做是为了演示采购交易示例
每一个金融交易都有一行插入到
financial_transaction
表中至少插入两行journal
表和这些行的贷方和借方之和必须平衡。注意事项
您可以看到如何轻松地适应这种结构拆分日记账。可以方便地查询结构,并且可以为不同的目的聚合事务或帐户。
如果我在构建它,我可能会创建一个触发器,在任何交易结束时强制执行它,即它的贷方和借方的总和
journal
条目平衡。我可能还想定义某些类型的事务,以及这些事务类型可以记录到哪些类型的帐户,这取决于我的系统有多复杂或严格。最后,我将创建一个规则、触发器或配置权限,以确保这些表中的行不会被删除或更新。在这样的系统中,所有的更正都应该通过额外的事务进行。