什么是总分类账?结构、示例以及软件如何进行建模
什么是总分类账、科目、交易和分录如何协同工作,以及现代会计软件如何将分类账作为数据进行建模。
总分类账是公司账簿中所有发生过的事情的完整记录:每一个科目,以及在每个科目下过账的每一笔借方和贷方金额。资产负债表、利润表、增值税申报表——所有这些都是从总分类账中计算出来的视图。它不是众多报表中的一份,而是计算这些报表的数据集(dataset)。
结构:科目 → 交易 → 分录
总分类账包含三个层次:
- 科目(Accounts) - 由科目表(chart of accounts)定义的类别:银行、应收账款、实收资本、服务收入、薪酬费用。每个科目都有代码、名称和类型(资产、负债、所有者权益、收入、费用)。
- 交易(Transactions) - 业务事件:3月12日开具的发票,3月15日的银行付款。每笔交易都带有日期和描述。
- 分录(Entries) - 交易内部的行:指定科目、借方或贷方金额。一笔交易至少包含两行分录,且其借方和贷方金额相等——这就是复式记账法(double-entry bookkeeping)。
一个科目的余额不过是过账到该科目的所有分录之和。如果问“为什么应收账款是 9,300 €?”,总分类账会用构成该金额的发票和付款的确切列表来回答。这种可分解性是总分类账的核心属性——财务报表中的每一个数字都可以追溯到具体的单笔分录。
纸面上的总分类账科目
传统的呈现方式是T字账。以某一个月的应收账款(2410)为例:
| 日期 | 描述 | 借方 | 贷方 |
|---|---|---|---|
| 03-01 | 期初余额 | 4,200 | |
| 03-12 | 发票 S-1041 | 1,210 | |
| 03-15 | 付款,发票 S-1038 | 2,400 | |
| 03-28 | 发票 S-1042 | 605 | |
| 期末余额 | 3,615 |
这里的每一行都是某笔交易的一侧——另一侧存在于另一个科目的页面上(发票对应收入和增值税,付款对应银行)。像这样读取单个科目的历史记录,仍然是回答“这里发生了什么”的最快方法,这也是为什么每个会计系统都会提供总分类账明细报告的原因。
辅助分类账:将明细剥离在外
在实际操作中,高容量的明细数据存储在辅助分类账(subledgers)中,并汇总到总分类账里。应收账款追踪按客户划分的发票,应付账款追踪按供应商划分的账单,存货追踪按物品划分的数量和成本,薪酬追踪按员工划分的金额。总分类账保留控制总额——一个应收账款余额、一个应付账款余额——而辅助分类账保留明细。如果辅助分类账的总额与控制科目不符,说明有些分录记入了一方而没有记入另一方;找出这一差异是关闭会计期间(accounting period)的例行工作。
软件如何对分类账进行建模
剥离专业术语,总分类账本质上是一个小型、严谨的数据模型:
- 一个
accounts表——代码、名称、类型、在科目层级中的位置; - 一个
transactionstable——日期、描述、源文件的链接; - 一个
entriestable——交易 ID、科目 ID、借方、贷方。
其他一切都是派生出来的。余额是对分录求和得出的;试算平衡表(trial balance)是按科目分组的求和结果;资产负债表(balance sheet)则是映射到法定格式的试算平衡表。设计良好的系统会将分录表视为**仅追加(append-only)**的:已过账的分录绝不进行编辑或删除,更正操作必须通过过账冲销分录(reversing entries)来实现。这正是让分类账成为审计线索(audit trail)而非可变电子表格的原因——账簿的历史本身就是账簿的一部分。
这正是 Nordlet 对其进行建模的方式。科目、日记账交易和日记账分录都是一等 API 对象:POST /v1/ledger/accounts/list 返回科目表,POST /v1/ledger/journal/transactions/create 过账一笔平衡的交易(不平衡的交易在写入前会被拒绝),并且每一份单据——销售发票、采购、薪酬运行、银行导入——都通过可配置的规则过账到同一个分类账中。读取端则是一组报表:POST /v1/reports/general-journal 按时间顺序列出交易,POST /v1/reports/gl-detail 重新构建上述的按科目视图,POST /v1/reports/trial-balance 对其进行汇总。已过账的分录不可篡改,已锁定的期间无法进行过账操作——仅追加的分类账是通过强制执行来实现的,而不仅仅是假设。
总分类账与普通日记账
这是对同一数据的两种不同排序方式的两个称呼。普通日记账(journal)是按时间顺序排列的——每一笔交易都按照记录时的日期先后排列。总分类账则是将这些分录按科目进行组织。历史上,这是两本实体账簿,过账意味着在它们之间进行抄录;而在软件中,它们只是针对同一个分录表的两次不同查询。这一区别在报表名称中得以保留,而不在数据中。
FAQ
什么是总分类账,用简单的术语怎么解释?
总分类账是公司所有科目以及过账到这些科目的每一笔借方和贷方金额的主记录。财务报表不是凭空编写的,而是从总分类账中计算出来的。
总分类账和普通日记账有什么区别?
它们是同一组分录的两种排序方式:日记账按时间顺序排列,分类账按科目分组。在现代软件中,两者都是针对同一个数据集的视图。
什么是辅助分类账?
辅助分类账是一个明细账簿,它会汇总到一个总分类账控制科目中——例如应收账款余额背后的按客户发票,应付账款背后的按供应商账单,以及库存背后的按物品库存。这样既能保持总分类账的可读性,又能随时查阅明细。
总分类账中的分录可以修改吗?
在一个设计良好的系统中,不可以。已过账的分录是仅追加的;错误必须通过过账冲销分录来更正,因此更正本身也会留在记录中。允许对已过账分录进行静默编辑的系统无法生成可信赖的审计线索。
余额是如何进入总分类账的?
余额不会直接进入——余额不是存储的,而是计算出来的。一个科目的余额是过账到该科目的所有分录之和,这也是为什么报告中的每一个数字都可以追溯到生成它的交易。