复式记账Beancount入门

Posted Fw恶龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复式记账Beancount入门相关的知识,希望对你有一定的参考价值。

原文地址:https://segmentfault.com/a/1190000039353992
作者:Fw恶龙
本文首发于:思否

一、前言

最早是从大学开始记账的,由于当时唯一的收入是每个月的生活费,为了可以买自己想要的东西,只能通过记账以减少不必要的开支。当时用的是Timi记账,整体风格还是挺喜欢的,一直用到了现在。但是一般的记账app记的都是流水账(单式记账),对于一些复杂场景无法做到很好的记录,设想以下场景:

场景1:从银行卡分别转1000元到支某宝和微某信

或许你会认为当成银行卡的总金额就好,但是这样银行卡只会记录转出了2000元,而这2000元在支某宝和微某信里具体怎么花的你并不清楚,支某宝和微某信的收益率也不一样,这时候把支某宝和微某信分别当成一个账户或许是更好的方法,这样在定期对账时,账目才好对上。

这里涉及到内部转账(即:银行卡->支某宝/微某信),这是单式记账无法记录的。

场景2:同学一起出去吃饭,由你先垫付,其他同学表示后续再转账给你

假设共付了500(共5人,每个人100),你记账支出500,然后同学还你的时候再分别记账收入100,这样在后续统计时会发现自己多支出了400,虽然收入也会多出400,但是在比较几个月的支出时会发现这个月支出得特别多,数据间的比较意义不大。

当然还有更多复杂的场景(买房、二手买卖、基金、股票...)

为什么流水账(单式记账)不能够满足记账需求?:从单式记账到复式记账

关于Beancount介绍的文章已经非常多了,想要了解的可以见文末的相关链接,本文主要记录Beancount的安装以及初步使用。

二、Beancount安装步骤

1. 安装Python

其实我很早就想试试复式记账了,但是当时看到还需要安装Python,就以为还需要学习这门语法,直接劝退。最近又被安利复式记账,所以再次尝试搭建环境,结果会发现其实不用学习Python(当然高阶玩法可能还是需要)。

错误记录

  • win10 cmd下运行python弹出windows应用商店

2. 安装Beancount

命令行执行如下代码,安装速度视网络情况而定,以下时间仅供参考

pip install beancount (10分钟左右)
pip install fava(10分钟左右)

错误记录

  • NameError: name \'pip\' is not defined 使用pip时报错:原因是无需在python环境中运行
  • pip版本太低:执行以下代码将pip版本更新至最新
python -m pip install --upgrade pip

3. 新建账本 moneybook.bean

参考右侧链接文章的“账本示例”:记账神器 Beancount 教程

;【一、账本信息】
option "title" "我的账本" ;账本名称
option "operating_currency" "CNY" ;账本主货币

;【二、账户设置】
;1、开设账户
1990-01-01 open Assets:Card:1234 CNY, USD ;尾号1234的银行卡,支持CNY和USD
1990-01-01 open Liabilities:CreditCard:5678 CNY, USD ;双币信用卡
1990-01-01 open Income:Salary CNY ;工资收入
1990-01-01 open Expenses:Tax CNY ;交税
1990-01-01 open Expenses:Traffic:Taxi CNY ;打车消费,只支持CNY
1990-01-01 open Equity:OpenBalance ;用于账户初始化,支持任意货币

;2、账户初始化
2019-08-27 * "" "银行卡,初始余额10000元"
    Assets:Card:1234           10000.00 CNY
    Equity:OpenBalance        -10000.00 CNY

;【三、交易记录】
2019-08-28 * "杭州出租车公司" "打车到公司,银行卡支付"
    Expenses:Traffic:Taxi        200.00 CNY
    Assets:Card:1234            -200.00 CNY

2019-08-29 * "" "餐饮"
    Assets:Card:1234           -1100.00 CNY
    Liabilities:CreditCard:5678 1100.00 CNY

2019-08-31 * "XX公司" "工资收入"
    Assets:Card:1234           12000.00 CNY
    Expenses:Tax                1000.00 CNY
    Income:Salary

4. 启动项目

fava moneybook.bean

5. 浏览器查看项目:http://localhost:5000/

三、备忘

1. 类型

  • Assets 资产
  • Liabilities 负债
  • Equity 权益(净资产)
  • Expenses 支出
  • Income 收入

2. 合理填充+定期断言

平常可能存在一些支出忘记记录,或者是比较小的金额(如:群红包)没有记录的情况,时间一长会导致记账总金额和账户总金额对不上的情况,所以需要定期校对。

合理填充:

2021-02-28 pad Assets:Wechat Income:MoneyManagement

定期断言:

2021-03-01 balance Assets:Wechat      1000.00 CNY

四、相关链接

  • Beancount复式记账:接地气的Why and How
  • Beancount —— 命令行复式簿记
  • 使用 Beancount 记录证券投资
  • Beancount复式记账(一):为什么
  • 记账神器 Beancount 教程
  • beancount 简易入门指南:具体到日常的一些项目的命名

以上是关于复式记账Beancount入门的主要内容,如果未能解决你的问题,请参考以下文章

从单式记账到复式记账

使用事件溯源的复式记账系统

如何学好会计?复式会计思维导图模板分享

软件工程财务知识入门 - 软件工程常见的财务名词

区块链为何会上升国家战略技术

程序员如何确保软件没 Bug?