2009-07-12 150 views
3

我正在开发一个简单的发票和会计应用程序,但我完全失去了如何在数据库中表示会计事务(日记条目)。在数据库中使用单独的借记和贷记列似乎是一种方式,但大多数我看到的开源会计使用单一数量的列。我假设这很简化数学。但是,如何将借记转换为贷方数值。 Wikipedia Helped a little,但是当我试图与会计系统进行交叉核对时,它看起来并没有看到它是如何完成的。会计系统设计和数据库

Here's the export从计帐系统:

看一看轴颈326虽然量的在此情况下= 0的总和,信用的总和不等于求和借记(从咨询&中扣除29的会计(E),AP(L)的31.39借记,以及2.39记入销售税(L))。

但是,如果我把它看作从AP的Debiting -31.39,它确实如此。但是我不确定我们是否可以信用/借记负值。

有人可以解释数据库和会计原则是如何结合在一起的吗?

回答

1

我认为你提到的交易326的问题在于,你认为你在借记/贷记事情上做了错误的一面。

正确的应该是: 从咨询中扣除29 &会计和 从销售税中扣除2.39。 (如果这是您必须作为消费者支付的税额) ,然后从AP存入Crediiting 31.39,

通常情况下,除非您安排付款,否则AP将在信用方。然后交易将是 从AP中扣除xx.xx,然后从Cash/Bank中扣除xx.xx

在分开的列中处理这些借记/贷记事项可能会导致数据库更容易阅读。顺便说一下,分隔这些列的UI也可以与最终用户进行更多的交流。以我的观点来看,我们越是将类似于用户从accouting类学到的东西的时尚,我们需要花费更多时间来告诉他们如何使用该软件。

我们不能在会计交易中使用负值。但在数据库管理系统方面,如果我们使用+作为借贷,我们可以保留在同一列中,并且 - 用于信贷。无论如何,在导出到会计报表时,您仍然必须将它们转换回绝对正值。

+0

你说得对。当我以这种方式思考它时,它是非常有意义的。 非常感谢! – 2009-07-13 01:30:19

1

我要概述的内容来自记忆,很可能是一种“老式”的代表账户的方式。

**借记卡的定义 - 任何或所有这些条件**

  1. 增加的资产(例如,当你开发票的人)
  2. 增加的费用的(购买固定)

**信用的定义 - 这些条件的任何或全部**

  1. 增加收入或增减的资产电子
  2. 增加的责任

在您的帐户的表,你可以有一个旗型柱称为“正常平衡”或“典型的平衡” -

  • 了/ c应收账款 - 正常余额为“D”或借方。
  • 适用于a/c应付帐户 - 正常余额为“C”或贷记。

无论何时有发票交易 - 它对AR(应收账款)进行过帐 - 并发布'正常余额',即将其视为借方金额。

每当客户支付发票(全部或部分)时,其对抗AR账户(异常) - 因此它将是一个信用。

无论何时供应商向您发送发票,您都会在AP账户上发送正常余额,即信用额度。无论何时您向供应商付款,它都将是一个针对该AP账户的(异常 - 即。借记)张贴。

您的发票级别或您的发票事务处理知道它将通常针对AR(应收账款账户)进行发布。

同样,您的支付交易或支付控制器模型也知道它会针对AR发布信用。

请记住,当您向某人发票时,您正在“建立资产”,方法是创建一个“应收帐款”。因此,应收账款被视为资产,除非他们多年没有支付。

HTH。

+0

感谢您的回复!我知道借方和贷方与账户类型的关系。我的问题是,我如何从数学角度表示借记和贷记?我想在我的transaction_entries表中有单个金额栏,而不是单独的信用/借记栏。 – 2009-07-12 21:24:53

2

Martin Fowler的"Analysis Patterns"在会计系统建模方面有着不错的篇章。也许它可以帮助你。

我想你会更好地考虑对象的问题而不是尝试将其映射到关系数据库上。数据库是声明式和基于集合的;对象用组件中的操作封装数据。我认为后者会更好地模拟会计,特别是如果你用面向方面的编程结婚。让数据库成为你坚持事物并将逻辑保持在中间层的方式。

+0

我看过福勒的书,但它对这个特殊问题没有帮助。 – 2009-07-12 22:51:21

2

检出SQL-Ledger,一个用Perl和PostgreSQL实现的免费软件会计系统。应该给你一个工作的例子。 (我与他们没有任何关系,但我以前用过它,基本会计满意。)