乐趣区

关于python:复式记账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 繁难入门指南:具体到日常的一些我的项目的命名
退出移动版