在一次偶然的机会了解到 beancount
beancount 是一个开源软件,支持以纯文本的方式进行复式记账,提供、查询、可视化、导入等能力
流水账的问题
日常中,我们常用流水账的方式进行记账:
时间 | 金额 | 备注 |
---|---|---|
2020-05-01 | 5 | 肠粉 |
2020-05-01 | 13 | 午饭外卖 |
2020-05-01 | 1800 | 发工资了 |
2020-05-02 | 5.9 | 手机壳 |
一笔交易只与一个账户进行关联,简单清楚。但无法适用于复杂的场景。
假设一个常见场景:
今天中午和同事拼车点外卖,从我的信用卡支付了 168 元的账单。随后 AA 收款,微信收得 84 元、现金收得 42 元。
试想一下通过流水账记录有什么问题?
- 如果将 168 直接记录为餐饮支出,则会导致后续进行支出分析时 “餐饮” 消费虚高;
- 想要记录实际的 “餐饮” 支出需要进行额外的计算,并且在导出账单时无法匹配账单上的金额;
- 如无提别标注,微信、现金收得的 AA 款项将记录为 “收入”,与实际存在出入;
复式记账示例
同样的场景按照 beancount 的复式记账格式,则可记录为:
2022-05-9 * "财付通-美团平台商户" "午餐拼车" ; 2022-05-9 发生了一笔确切的交易(* 表示交易是明确的)收款人是 "财付通-美团平台商户",我们对它添加了 “午餐拼车” 的备注
Liabilities:CreditCard:CMB:3722 -168 CNY ; 信用卡支出
Assets:WeChat 84 CNY ; 微信零钱 AA 账户增加了 84 元
Assets:Cash 42 CNY ; 现金 AA 账户增加了 42 元
Expenses:Lunch ; 根据会计恒等式,差价计入午餐支出账户中
通过上面的记录,可以很直观的反映出实际的资金流动情况。
餐饮支出不再是 168 元,而是剔除 AA 收款后的 42 元。
即根据会计恒等式 资产 + 负债 + 权益(净资产)= 0
计算 -168 + 84 + 42 + x = 0
得出 x = 42
记录中的金额也能与微信、银行等机构导出账单金额保持一致,方便后期进行回溯分析。