复式记账需要根据实际情况设提前建立好相关账户
beancount 支持如下五种账户类型:
Assets
资产类型帐户,例如银行存款、现金或者房产、车子等Incom
收入类型帐户,例如工资、理财、外快等Expense
支出类型的帐户,例如餐饮、房租、教育等Liabilities
负债类型的帐户,例如信用卡、房贷等Equity
权益类型的帐户,通常对进行帐户的初始化的时候需要用到
开户语法
在 beancount 账本中进行帐户开设需要用到 open
语法
2022-01-01 open Assets:Bank:CMB:0001 CNY
上面的代码帮助我们开设了一个 Assests:Bank:CMB:001
帐户
开户纪录分为四部分
2022-01-01
:帐户的开户时间,需要早于该帐户的第一笔交易时间open
:开立帐户的语法Assests:Bank:CMB:001
:以Assests
开头的均为资产帐户,通过:
可以进行多层级的划分CNY
则表示帐户的货币单位
设置初始资产
根据会计恒等式,有借必有贷借贷必相等。
一个帐户不可能凭空多出一部份资产,而我们也必定不是在所有资产都还是 0 的时刻才开始记账。
这时就需要用到 Equity
权益帐户类型来进行初始值的设定了。
例如我们为 Assests:Bank:CMB:001
账户设置 100 CNY
的初始资产分为如下几步:
第一步,开设 Equity:Opening-Balances
权益类型账户,专门用来账户初始值设置:
2022-01-01 open Equity:Opening-Balances
第二步,进行账户初始值设置:
这里其实很容易理解。根据会计恒等式,进入 Assets:Bank:CMB:0001
账户的钱不可能凭空产生,这里有加一定在另一个地方有减。而 Equity:Opening-Balances
账户就是我们专门开设用来进行初始化的账户。
2022-01-01 open Assets:Bank:CMB:0001 CNY
2022-01-01 * "" "初始化账户余额"
Assets:Bank:CMB:0001 100.00 CNY
Equity:Opening-Balances -100.00 CNY
使用 pad 语法
在上面的例子中,为了方便理解,我们在第二步通过一笔虚拟的交易记录来进行了账户初始值的设置。
除此之外,我们还可以通过 pad
、 balance
语法来进行账户初始值的设置(pad
总是需要搭配其他的语法一起使用):
2022-01-01 open Assets:Bank:CMB:0001 CNY
2022-01-01 pad Assets:Bank:CMB:0001 Equity:Opening-Balances
2022-01-02 balance Assets:Bank:CMB:0001 100.00 CNY;
在第一行,pad
语法表示对 Assets:Bank:CMB:0001
账户进行 “填充”,而这比钱的窟窿由第二个参数 Equity:Opening-Balances
账户来填上。
随即在第二行使用 balance
语法,对 Assets:Bank:CMB:0001
账户余额进行了断言
这就完成了对 Assets:Bank:CMB:0001
账户 100 CNY 的初始余额设置。