Beancount Fava 學習總結

Beancount 雖然自帶簡單的 Web GUI 功能,但是功能簡陋且不美觀。Fava 是由 Beancount 開發的同樣開源的 Web GUI 管理工具,功能強大且界面美觀,因此推薦通過 Fava 來使用 Beancount。

安裝 Fava

Beancount 與 Fava 都是 Python 程序,因此需要搭建 Python 環境。Fava 依賴於 Beancount,因此需要提前安裝 Beancount。

1
2
pip install beancount
pip install fava

啟動 Fava

配置 Fava 允許的訪問 IP、端口號及加載 main.bean 文件等參數。

1
fava --host 0.0.0.0 --port 5000 main.bean

為了方便管理,通常把整套帳本按功能和時間分為若干子 *.bean 文件。main.bean 是整套張本的主文件,其文件名可以自定義,通常命名為 main.bean。其餘 *.bean 文件均 include "文件名.bean"main.bean 中。

複式記帳

Beancount 採用純文本方式複式記帳,分為 Assets、Liabilities、Equity、Expenses 和 Income 五大類帳戶。需要注意的是通常 Liabilities、Equity 和 Income 這三類帳戶是負數,Assets 和 Expenses 是正數。

複式記帳遵循收入-支出=淨利潤(通過損益表反映),資產=負債+權益(通過資產負債表反映),Assets + Expenses + Liabilities + Income + Equity = 0 的原則。

開戶與銷戶

首先需要開戶,關鍵詞是 open。相對應的,銷戶關鍵詞是 close。

1
2000-01-01 open Expenses:Clothing

含義是 2000 年 1 月 1 日開戶 Expenses:Clothing。 通常單獨創建一個*.bean文件用來管理開戶與銷戶。

記帳

採用借貸記帳法,即每筆交易必有帳戶涉及資金的增加和減少,且總合為零。有借必有貸,借貸必相等

1
2
3
2020-01-01 * "付款者" "交易說明" #標籤
  Expenses:Clothing                    990 USD
  Assets:DebitCard                    -990 USD

斷言

關鍵詞是 balance,用於定期核對帳戶金額(非必須,建議定期核對)。

1
2020-01-03 balance Assets:DebitCard  10000 USD

需要注意的是斷言的時間是該日期的 0 時,帳戶餘額實際上是昨天 24 時的帳戶餘額。如果該帳戶當天有交易,實際上要「提前一天」斷言。

事件

關鍵詞是 event,用於描述任何文本信息(非必須)。

1
2021-01-01 event "Beancount" "Start accounting with Beancount"

文檔

關鍵詞是 document,用於添加文檔(非必須)。

1
2020-01-01 document Assets:Equipment "documents/assets.csv"

功能設置

Beancount 功能設置

1
2
option "operating_currency" "USD"
option "inferred_tolerance_default" "*:0.01"

Fava 功能設置

1
2
3
4
5
6
7
8
2020-01-01 custom "fava-option" "language" "zh_TW"
2020-01-01 custom "fava-option" "currency-column" "60"
2020-01-01 custom "fava-option" "journal-show-transaction" "pending cleared other"
2020-01-01 custom "fava-sidebar-link" "最近七天" "/jump?time=day-6+-+day"
2020-01-01 custom "fava-sidebar-link" "本月" "/jump?time=month"
2020-01-01 custom "fava-sidebar-link" "本年" "/jump?time=year"
2020-01-01 custom "fava-sidebar-link" "本年已發生" "/jump?time=year+-+day"
2020-01-01 custom "fava-sidebar-link" "所有時間" "/jump?time="

證券交易

wzyboy 的這篇寫的很詳細。

帳單處理

這兩個工具支持支付寶、微信等帳單的處理。

  1. https://github.com/deb-sig/double-entry-generator
  2. https://github.com/zsxsoft/my-beancount-scripts

一些經驗

  1. 在「日記帳」界面。點擊每筆帳最左側的日期,可以修改交易內容;點擊每筆帳最右側圓點(圓點數量代表交易內含條目數量),可以查看交易內容。
  2. 根據情況合理設置帳戶、付款者、標籤和交易說明,對每筆帳從不同角度進行分類,方便查詢統計。
  3. 根據情況合理確定記帳的範圍和精度,以免產生大量的記帳工作,從而影響記帳的積極性。

相關資源

  1. Awesome Beancount - GitHub
  2. Beancount 中文用戶手冊 - GitHub
  3. Income Statement - Example Beancount file
  4. Beancount —— 命令行复式簿记 - wzyboy’s blog
  5. Beancount 複式記賬(一):爲什麼 - BYVoid