复式记账(二)- 创建账户

复式记账需要根据实际情况设提前建立好相关账户

beancount 支持如下五种账户类型:

开户语法

在 beancount 账本中进行帐户开设需要用到 open 语法

2022-01-01 open Assets:Bank:CMB:0001 CNY

上面的代码帮助我们开设了一个 Assests:Bank:CMB:001 帐户

开户纪录分为四部分

  1. 2022-01-01:帐户的开户时间,需要早于该帐户的第一笔交易时间
  2. open:开立帐户的语法
  3. Assests:Bank:CMB:001:以 Assests 开头的均为资产帐户,通过 : 可以进行多层级的划分
  4. 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 语法

在上面的例子中,为了方便理解,我们在第二步通过一笔虚拟的交易记录来进行了账户初始值的设置。

除此之外,我们还可以通过 padbalance 语法来进行账户初始值的设置(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 的初始余额设置。