Beancount 雖然自帶簡單的 Web GUI 功能,但是功能簡陋且不美觀。Fava 是由 Beancount 開發的同樣開源的 Web GUI 管理工具,功能強大且界面美觀,因此推薦通過 Fava 來使用 Beancount。
Beancount 與 Fava 都是 Python 程序,因此需要搭建 Python 環境。Fava 依賴於 Beancount,因此需要提前安裝 Beancount。
pip install beancount
pip install fava
配置 Fava 允許的訪問 IP、端口號及加載 main.bean 文件等參數。
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。
2000-01-01 open Expenses:Clothing
含義是 2000 年 1 月 1 日開戶 Expenses:Clothing。
通常單獨創建一個*.bean
文件用來管理開戶與銷戶。
採用借貸記帳法,即每筆交易必有帳戶涉及資金的增加和減少,且總合為零。有借必有貸,借貸必相等。
2020-01-01 * "付款者" "交易說明" #標籤
Expenses:Clothing 990 USD
Assets:DebitCard -990 USD
關鍵詞是 balance,用於定期核對帳戶金額(非必須,建議定期核對)。
2020-01-03 balance Assets:DebitCard 10000 USD
需要注意的是斷言的時間是該日期的 0 時,帳戶餘額實際上是昨天 24 時的帳戶餘額。如果該帳戶當天有交易,實際上要「提前一天」斷言。
關鍵詞是 event,用於描述任何文本信息(非必須)。
2021-01-01 event "Beancount" "Start accounting with Beancount"
關鍵詞是 document,用於添加文檔(非必須)。
2020-01-01 document Assets:Equipment "documents/assets.csv"
option "operating_currency" "USD"
option "inferred_tolerance_default" "*:0.01"
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 的這篇寫的很詳細。
這兩個工具支持支付寶、微信等帳單的處理。