根據帳單產生複式記帳語言的代碼。目前帳單支援:
目前記帳語言支援:
架構支援擴展,如需支援新的帳單(如銀行帳單等),可新增provider。如需支援新的記帳語言,可新增compiler。
┌───────────┐ ┌──────────┐ ┌────┐ ┌──────────┐ ┌──────────┐
│ translate │->│ provider │->│ IR │->│ compiler │->│ analyser │
└───────────┘ └──────────┘ └────┘ └──────────┘ └──────────┘
alipay beancount alipay
wechat ledger wechat
huobi huobi
htsec htsec
icbc icbc
td td
bmo bmo
使用Homebrew 安裝:
brew install deb-sig/tap/double-entry-generator
使用Homebrew 更新軟體:
brew upgrade deb-sig/tap/double-entry-generator
在GitHub Release 頁面中下載對應架構的二進位到本機即可。
go get -u github.com/deb-sig/double-entry-generator
請見使用文檔
double-entry-generator translate
--config ./example/alipay/config.yaml
--output ./example/alipay/example-alipay-output.beancount
./example/alipay/example-alipay-records.csv
其中--config
是設定文件,預設情況下,使用支付寶作為提供方,也可手動指定--provider
。具體參考使用文件。預設產生的文件是default_output.beancount
,若有--output
或-o
指定輸出文件,則會輸出到指定的文件中。如上述範例會將轉換結果輸出至./example/alipay/example-alipay-output.beancount
檔案中。
double-entry-generator translate
--config ./example/wechat/config.yaml
--provider wechat
--output ./example/wechat/example-wechat-output.beancount
./example/wechat/example-wechat-records.csv
double-entry-generator translate
--config ./example/huobi/config.yaml
--provider huobi
--output ./example/huobi/example-huobi-output.beancount
./example/huobi/example-huobi-records.csv
double-entry-generator translate
--config ./example/htsec/config.yaml
--provider htsec
--output ./example/htsec/example-htsec-output.beancount
./example/htsec/example-htsec-records.xlsx
double-entry-generator translate
--config ./example/icbc/credit/config.yaml
--provider icbc
--output ./example/icbc/credit/example-icbc-credit-output.beancount
./example/icbc/credit/example-icbc-credit-records.csv
double-entry-generator translate
--config ./example/td/config.yaml
--provider td
--output ./example/td/example-td-output.beancount
./example/td/example-td-records.csv
double-entry-generator translate
--config ./example/bmo/credit/config.yaml
--provider bmo
--output ./example/bmo/credit/example-bmo-output.beancount
./example/bmo/credit/example-bmo-records.csv
double-entry-generator translate
--config ./example/alipay/config.yaml
--target ledger
--output ./example/alipay/example-alipay-output.ledger
./example/alipay/example-alipay-records.csv
double-entry-generator translate
--config ./example/wechat/config.yaml
--provider wechat
--target ledger
--output ./example/wechat/example-wechat-output.ledger
./example/wechat/example-wechat-records.csv
double-entry-generator translate
--config ./example/huobi/config.yaml
--provider huobi
--target ledger
--output ./example/huobi/example-huobi-output.ledger
./example/huobi/example-huobi-records.csv
double-entry-generator translate
--config ./example/htsec/config.yaml
--provider htsec
--target ledger
--output ./example/htsec/example-htsec-output.ledger
./example/htsec/example-htsec-records.xlsx
double-entry-generator translate
--config ./example/icbc/credit/config.yaml
--provider icbc
--target ledger
--output ./example/icbc/credit/example-icbc-credit-output.ledger
./example/icbc/credit/example-icbc-credit-records.csv
double-entry-generator translate
--config ./example/td/config.yaml
--provider td
--target ledger
--output ./example/td/example-td-output.ledger
./example/td/example-td-records.csv
double-entry-generator translate
--config ./example/bmo/debit/config.yaml
--provider bmo
--target ledger
--output ./example/bmo/debit/example-bmo-output.ledger
./example/bmo/debit/example-bmo-records.csv
v1.0.0
以上的版本請參考此文章以取得支付寶帳單。
v0.2.0
及以下版本請使用此方式取得帳單:登入PC 支付寶後,造訪這裡,選擇時間區間,下拉至頁面底端,點選下載查詢結果。注意:請下載查詢結果,而非收支明細。
example-alipay-records.csv
此範例為從「支付寶」APP 取得的帳單格式。
轉換後的結果範例:exmaple-alipay-output.beancount.
微信支付的下載方式請見此。
example-wechat-records.csv
轉換後的結果範例:exmaple-wechat-output.beancount.
目前該項目只保證幣幣交易訂單的轉換,暫時未測試合約、槓桿等交易訂單。
PR welcome :)
登入火幣Global 網站,進入幣幣訂單的成交明細頁面,選擇合適的時間區間後,點擊成交明細右上角的匯出按鈕即可。
exmaple-huobi-records.csv
轉換後的結果範例:exmaple-huobi-output.beancount.
登入e海通財PC獨立交易版PC客戶端,左側導覽列選擇查詢-交割單,右側點選查詢按鈕匯出交割單excel檔。
example-htsec-records.csv
轉換後的結果範例:exmaple-htsec-output.beancount.
中國工商銀行帳單的下載方式請見此。
double-entry-generator
能夠自動辨識出中國工商銀行的帳單類型(金融卡/信用卡)。
金融卡帳單範例: example-icbc-debit-records.csv
金融卡帳單轉換後的結果範例:example-icbc-debit-output.beancount.
信用卡帳單範例: example-icbc-credit-records.csv
信用卡帳單轉換後的結果範例:example-icbc-credit-output.beancount.
example-td-records.csv
example-bmo-record.csv
example-jd-records.csv
defaultMinusAccount : Assets:FIXME
defaultPlusAccount : Expenses:FIXME
defaultCurrency : CNY
title : 测试
alipay :
rules :
- category : 日用百货
targetAccount : Expenses:Groceries
- category : 餐饮美食
time : 11:00-14:00
targetAccount : Expenses:Food:Lunch
- category : 餐饮美食
time : 16:00-22:00
targetAccount : Expenses:Food:Dinner
- peer : 滴露
targetAccount : Expenses:Groceries
- peer : 苏宁
targetAccount : Expenses:Electronics
- item : 相互宝
targetAccount : Expenses:Insurance
- method : 余额
fullMatch : true
methodAccount : Assets:Alipay
- method : 余额宝
fullMatch : true
methodAccount : Assets:Alipay
- method : 招商银行(9876)
fullMatch : true
methodAccount : Assets:Bank:CN:CMB-9876:Savings
- type : 收入 # 其他转账收款
targetAccount : Income:FIXME
methodAccount : Assets:Alipay
- type : 收入 # 收款码收款
item : 商品
targetAccount : Income:Alipay:ShouKuanMa
methodAccount : Assets:Alipay
# 交易类型为其他
- type : 其他
item : 收益发放
methodAccount : Income:Alipay:YuEBao:PnL
targetAccount : Assets:Alipay
- type : 其他
item : 余额宝-单次转入
targetAccount : Assets:Alipay
methodAccount : Assets:Alipay
- peer : 基金
type : 其他
item : 黄金-买入
methodAccount : Assets:Alipay
targetAccount : Assets:Alipay:Invest:Gold
- peer : 基金
type : 其他
item : 黄金-卖出
methodAccount : Assets:Alipay:Invest:Gold
targetAccount : Assets:Alipay
pnlAccount : Income:Alipay:Invest:PnL
- peer : 基金
type : 其他
item : 买入
methodAccount : Assets:Alipay
targetAccount : Assets:Alipay:Invest:Fund
- peer : 基金
type : 其他
item : 卖出
methodAccount : Assets:Alipay:Invest:Fund
targetAccount : Assets:Alipay
pnlAccount : Income:Alipay:Invest:PnL
defaultMinusAccount
, defaultPlusAccount
和defaultCurrency
是全域的必填預設值。其中defaultMinusAccount
是預設金額減少的帳戶, defaultPlusAccount
是預設金額增加的帳戶。 defaultCurrency
是預設貨幣。
alipay
is the provider-specific configuration. Alipay provider has rules matching mechanism.
alipay
螞蟻帳單相關的配置。它提供基於規則的匹配。可以指定:
peer
(交易對方)的完全/包含匹配。item
(商品說明)的完全/包含符合。type
(收/支)的完全/包含匹配。method
(收/付款方式)的完全/包含符合。category
(交易分類)的完全/包含匹配。time
(交易時間)的區間匹配。交易時間可寫為以下兩種形式:
11:00-13:00
11:00:00-13:00:00
24 小時制,起始時間和終止之間使用-
分隔。
minPrice
(最小金額)和maxPrice
(最大金額)的區間匹配。在單一規則中可以使用分隔符號(sep)填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用tag
來設定流水的Tag,並使用sep
作為分隔符號。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的targetAccount
、 methodAccount
等帳戶覆蓋預設定義帳戶。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
支付寶提供了「交易方式」欄位來識別資金出入帳戶。這樣就可以直接透過“交易方式”,並輔以“收/支”欄位確認該帳戶為增加帳戶還是減少帳戶。而複式記帳法每筆交易至少需要兩個帳戶,另一個帳戶則可透過「交易對方」(peer)、「商品」(item)、「收/支」(type)以及「交易方式」(method )的多種包含匹配得出。符合成功則使用規則中定義的targetAccount
和methodAccount
,並透過確認該筆交易是收入還是支出,決定targetAccount
和methodAccount
的正負關係,來覆蓋預設定義的增減帳戶。
targetAccount
與methodAccount
的增減帳戶關係如下表:
收/支 | 交易分類 | minusAccount | plusAccount |
---|---|---|---|
收入 | * | targetAccount | methodAccount |
收入 | 退款 | targetAccount | methodAccount |
支出 | * | methodAccount | targetAccount |
其他 | * | methodAccount | targetAccount |
其他 | 退款 | targetAccount | methodAccount |
當交易類型為「其他」時,需要自行手動定義借貸帳戶。此時本軟體會認為
methodAccount
是貸帳戶,targetAccount
是藉帳戶。
defaultMinusAccount : Assets:FIXME
defaultPlusAccount : Expenses:FIXME
defaultCommissionAccount : Expenses:Commission:FIXME
defaultCurrency : CNY
title : 测试
wechat :
rules :
# type (additional condition)
- type : 收入 # 微信红包
method : /
item : /
targetAccount : Income:Wechat:RedPacket
- type : / # 转入零钱通
txType : 转入零钱
peer : /
item : /
targetAccount : Assets:Digital:Wechat:Cash
- type : / # 零钱提现
txType : 零钱提现
targetAccount : Assets:Digital:Wechat:Cash
commissionAccount : Expenses:Wechat:Commission
- type : / # 零钱充值
txType : 零钱充值
targetAccount : Assets:Digital:Wechat:Cash
- type : / # 零钱通转出-到工商银行(9876)
txType : 零钱通转出-到工商银行(9876)
targetAccount : Assets:Bank:CN:ICBC:Savings
- peer : 云膳过桥米线,餐厅
sep : ' , '
time : 11:00-15:00
targetAccount : Expenses:Food:Meal:Lunch
- peer : 云膳过桥米线,餐厅
sep : ' , '
time : 16:30-21:30
targetAccount : Expenses:Food:Meal:Dinner
- peer : 餐厅
time : 23:55-00:10 # test T+1
targetAccount : Expenses:Food:Meal:MidNight
- peer : 餐厅
time : 23:50-00:05 # test T-1
targetAccount : Expenses:Food:Meal:MidNight
- peer : 房东
type : 支出
targetAccount : Expenses:Housing:Rent
- peer : 用户
type : 收入
targetAccount : Income:Service
- peer : 理财通
type : /
targetAccount : Assets:Trade:Tencent:LiCaiTong
- peer : 建设银行
txType : 信用卡还款
targetAccount : Liabilities:Bank:CN:CCB
- method : / # 一般为收入,存入零钱
methodAccount : Assets:Digital:Wechat:Cash
- method : 零钱
fullMatch : true
methodAccount : Assets:Digital:Wechat:Cash
- method : 零钱通
fullMatch : true
methodAccount : Assets:Digital:Wechat:Cash
- method : 工商银行
methodAccount : Assets:Bank:CN:ICBC:Savings
- method : 中国银行
methodAccount : Assets:Bank:CN:BOC:Savings
defaultMinusAccount
, defaultPlusAccount
和defaultCurrency
是全域的必填預設值。其中defaultMinusAccount
是預設金額減少的帳戶, defaultPlusAccount
是預設金額增加的帳戶。 defaultCurrency
是預設貨幣。
defaultCommissionAccount
是預設的服務費帳戶,若無服務費相關交易,則不需要填寫。但筆者還是建議填寫一個佔位FIXME 帳戶,否則遇到有服務費的交易,轉換器會報錯退出。
wechat
is the provider-specific configuration. WeChat provider has rules matching mechanism.
wechat
是微信相關的配置。它提供基於規則的匹配。可以指定:
peer
(交易對方)的完全/包含匹配。item
(商品名稱)的完全/包含符合。type
(收/支)的完全/包含匹配。txType
(交易類型)的完全/包含匹配。method
(支付方式)的完全/包含符合。time
(交易時間)的區間匹配。交易時間可寫為以下兩種形式:
11:00-13:00
11:00:00-13:00:00
24 小時制,起始時間和終止之間使用-
分隔。
minPrice
(最小金額)和maxPrice
(最大金額)的區間匹配。在單一規則中可以使用分隔符號(sep)填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用tag
來設定流水的Tag,並使用sep
作為分隔符號。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的targetAccount
、 methodAccount
等帳戶覆蓋預設定義帳戶。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
微信帳單提供了「交易方式」欄位來識別資金出入帳戶。這樣就可以直接透過“交易方式”,並輔以“收/支”欄位確認該帳戶為增加帳戶還是減少帳戶。而複式記帳法每筆交易至少需要兩個帳戶,另一個帳戶則可透過「交易對方」(peer)、「商品」(item)、「收/支」(type)以及「交易方式」(method )的多種包含匹配得出。如支付寶配置類似,符合成功則使用規則中定義的targetAccount
和methodAccount
,並透過確認該筆交易是收入還是支出,決定targetAccount
和methodAccount
的正負關係,來覆蓋預設定義的增減帳戶。
targetAccount
與methodAccount
的增減帳戶關係如下表:
收/支 | minusAccount | plusAccount |
---|---|---|
收入 | targetAccount | methodAccount |
支出 | methodAccount | targetAccount |
defaultCashAccount : Assets:Huobi:Cash
defaultPositionAccount : Assets:Huobi:Positions
defaultCommissionAccount : Expenses:Huobi:Commission
defaultPnlAccount : Income:Huobi:PnL
defaultCurrency : USDT
title : 测试
huobi :
rules :
- item : BTC/USDT,BTC1S/USDT # multiple keywords with separator
type : 买入
txType : 币币交易
fullMatch : true
sep : ' , ' # define separator as a comma
cashAccount : Assets:Rule1:Cash
positionAccount : Assets:Rule1:Positions
CommissionAccount : Expenses:Rule1:Commission
pnlAccount : Income:Rule1:PnL
defaultCashAccount
, defaultPositionAccount
, defaultCommissionAccount
, defaultPnlAccount
和defaultCurrency
是全域的必填預設值。
huobi
is the provider-specific configuration. Huobi provider has rules matching mechanism.
huobi
是火幣相關的配置。它提供基於規則的匹配。可以指定:
item
(交易對)的完全/包含符合。type
(交易方向)的完全/包含符合。txType
(交易類型)的完全/包含匹配。time
(交易時間)的區間匹配。交易時間可寫為以下兩種形式:
11:00-13:00
11:00:00-13:00:00
24 小時制,起始時間和終止之間使用-
分隔。
在單一規則中可以使用分隔符號(sep)填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的cashAccount
, positionAccount
, commissionAccount
和pnlAccount
覆蓋預設定義。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
其中:
defaultCashAccount
是預設資本帳戶,一般用於儲存USDT。defaultPositionAccount
是預設持倉帳戶。defaultCommissionAccount
是預設手續費帳戶。defaultPnlAccount
是預設損益帳戶。defaultCurrency
是預設貨幣。 defaultCashAccount : Assets:Htsec:Cash
defaultPositionAccount : Assets:Htsec:Positions
defaultCommissionAccount : Expenses:Htsec:Commission
defaultPnlAccount : Income:Htsec:PnL
defaultCurrency : CNY
title : 测试
htsec :
rules :
- item : 兴业转债
type : 卖
sep : ' , '
cashAccount : Assets:Rule1:Cash
positionAccount : Assets:Rule1:Positions
CommissionAccount : Expenses:Rule1:Commission
pnlAccount : Income:Rule1:PnL
defaultCashAccount
, defaultPositionAccount
, defaultCommissionAccount
, defaultPnlAccount
和defaultCurrency
是全域的必填預設值。
htsec
is the provider-specific configuration. Htsec provider has rules matching mechanism.
htsec
是海通證券相關的配置。它提供基於規則的匹配。可以指定:
item
(交易方向-證券編碼-證券市值)的完全/包含匹配。type
(交易方向)的完全/包含匹配。time
(交易時間)的區間匹配。交易時間可寫為以下兩種形式:
11:00-13:00
11:00:00-13:00:00
> 24 小時制,起始時間和終止之間之間使用-
分隔。
在單一規則中可以使用分隔符號(sep)填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的cashAccount
, positionAccount
, commissionAccount
和pnlAccount
覆蓋預設定義。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
其中:
defaultCashAccount
是預設資本帳戶,一般用於儲存證券帳戶可用資金。defaultPositionAccount
是預設持倉帳戶。defaultCommissionAccount
是預設手續費帳戶。defaultPnlAccount
是預設損益帳戶。defaultCurrency
是預設貨幣。 defaultMinusAccount : Assets:FIXME
defaultPlusAccount : Expenses:FIXME
defaultCashAccount : Liabilities:Bank:CN:ICBC
defaultCurrency : CNY
title : 测试
icbc :
rules :
- peer : 财付通,支付宝
ignore : true
- peer : 广东联合电子收费股份
targetAccount : Expenses:Transport:Highway
- txType : 人民币自动转帐还款
targetAccount : Assets:Bank:CN:ICBC:Savings
- peer : XX旗舰店
targetAccount : Expenses:Joy
defaultMinusAccount
, defaultPlusAccount
, defaultCashAccount
和defaultCurrency
是全域的必填預設值。其中defaultMinusAccount
是預設金額減少的帳戶, defaultPlusAccount
是預設金額增加的帳戶, defaultCashAccount
是該配置中預設使用的銀行卡帳戶(等同於支付寶/微信中的methodAccount
)。 defaultCurrency
是預設貨幣。
icbc
是中國工商銀行相關的配置。它提供基於規則的匹配。可以指定:
peer
(交易對方)的完全/包含匹配。type
(收/支)的完全/包含匹配。txType
(交易類型)的完全/包含匹配。在單一規則中可以使用分隔符號sep
填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用tag
來設定流水的Tag,並使用sep
作為分隔符號。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的targetAccount
帳戶覆蓋預設定義帳戶。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
中國工商銀行帳單中的記帳金額中存在收入/支出之分,透過這個機制就可以判斷銀行卡帳戶在交易中的正負關係。如支付寶配置類似,符合成功則使用規則中定義的targetAccount
和全域值defaultCashAccount
,並透過確認該筆交易是收入還是支出,決定targetAccount
和defaultCashAccount
的正負關係,來覆蓋預設定義的增減帳戶。
targetAccount
與defaultCashAccount
的增減帳戶關係如下表:
收/支 | minusAccount | plusAccount |
---|---|---|
收入 | targetAccount | defaultCashAccount |
支出 | defaultCashAccount | targetAccount |
defaultMinusAccount : Assets:FIXME
defaultPlusAccount : Expenses:FIXME
defaultCashAccount : Assets:DebitCard:TDChequing
defaultCurrency : CAD
title : 测试
td :
rules :
- item : " T T "
targetAccount : Expenses:Grocery
tag : tt_tag
- item : " DOLLARAMA "
targetAccount : Expenses:Grocery
tag : grocery_tag1,cheap_tag2
- item : " DEVELOPM MSP "
targetAccount : Income:Salary
- type : 收入
item : " SEND E-TFR "
targetAccount : Income:FIXME
defaultMinusAccount
, defaultPlusAccount
, defaultCashAccount
和defaultCurrency
是全域的必填預設值。其中defaultMinusAccount
是預設金額減少的帳戶, defaultPlusAccount
是預設金額增加的帳戶, defaultCashAccount
是該配置中預設使用的銀行卡帳戶(等同於支付寶/微信中的methodAccount
)。 defaultCurrency
是預設貨幣。
td
是Toronto-Dominion Bank相關的配置。它提供基於規則的匹配。因為TD本身的帳單較簡單,所以可以指定的規則不多:
item
:(交易商品)的完全/包含符合。type
:(收/支)的完全/包含匹配。在單一規則中可以使用分隔符號sep
填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用tag
來設定流水的Beancount Tag或Ledger Meta Tag,使用sep
作為分隔符號。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的targetAccount
帳戶覆蓋預設定義帳戶。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
TD帳單中的記帳金額中存在收入/支出之分,透過這個機制就可以判斷銀行卡帳戶在交易中的正負關係。如支付寶配置類似,符合成功則使用規則中定義的targetAccount
和全域值defaultCashAccount
,並透過確認該筆交易是收入還是支出,決定targetAccount
和defaultCashAccount
的正負關係,來覆蓋預設定義的增減帳戶。
targetAccount
與defaultCashAccount
的增減帳戶關係如下表:
收/支 | minusAccount | plusAccount |
---|---|---|
收入 | targetAccount | defaultCashAccount |
支出 | defaultCashAccount | targetAccount |
defaultMinusAccount : Assets:FIXME
defaultPlusAccount : Expenses:FIXME
defaultCashAccount : Assets:DebitCard:BMOChequing
defaultCurrency : CAD
title : 测试
bmo :
rules :
- item : " T T "
targetAccount : Expenses:Grocery
tag : tt_tag
- item : " DOLLARAMA "
targetAccount : Expenses:Grocery
tag : grocery_tag1,cheap_tag2
- item : " DEVELOPM MSP "
targetAccount : Income:Salary
- type : 收入
item : " SEND E-TFR "
targetAccount : Income:FIXME
defaultMinusAccount
, defaultPlusAccount
, defaultCashAccount
和defaultCurrency
是全域的必填預設值。其中defaultMinusAccount
是預設金額減少的帳戶, defaultPlusAccount
是預設金額增加的帳戶, defaultCashAccount
是該配置中預設使用的銀行卡帳戶(等同於支付寶/微信中的methodAccount
)。 defaultCurrency
是預設貨幣。
bmo
是Toronto-Dominion Bank相關的設定。它提供基於規則的匹配。因為BMO本身的帳單較簡單,所以可以指定的規則不多:
item
:(交易商品)的完全/包含符合。type
:(收/支)的完全/包含匹配。在單一規則中可以使用分隔符號sep
填寫多個關鍵字,在同一物件中,每個關鍵字之間是或的關係。
在單一規則中可以使用fullMatch
來設定字元比對規則, true
表示使用完全比對(full match), false
表示使用包含比對(partial match),不設定該項則預設使用包含比對。
在單一規則中可以使用tag
來設定流水的Beancount Tag或Ledger Meta Tag,使用sep
作為分隔符號。
在單一規則中可以使用ignore
來設定是否忽略符合上該規則的交易, true
表示忽略符合上該規則的交易, fasle
則為不忽略,缺省為false
。
符合成功則使用規則中定義的targetAccount
帳戶覆蓋預設定義帳戶。
規則匹配的順序是:從rules
配置中的第一條開始匹配,如果匹配成功仍繼續匹配。也就是後面的規則優先權要高於前面的規則。
BMO帳單中的記帳金額中存在收入/支出之分,透過這個機制就可以判斷銀行卡帳戶在交易中的正負關係。如支付寶配置類似,符合成功則使用規則中定義的targetAccount
和全域值defaultCashAccount
,並透過確認該筆交易是收入還是支出,決定targetAccount
和defaultCashAccount
的正負關係,來覆蓋預設定義的增減帳戶。
targetAccount
與defaultCashAccount
的增減帳戶關係如下表:
收/支 | minusAccount | plusAccount |
---|---|---|
收入 | targetAccount | defaultCashAccount |
支出 | defaultCashAccount | targetAccount |
defaultMinusAccount : Assets:FIXME
defaultPlusAccount : Expenses:FIXME
defaultCurrency : CNY
title : 测试
jd :
rules :
- method : 京东白条
methodAccount : Liabilities:Baitiao
- method : 小金库零用钱
methodAccount : Assets:EPay:JD
- item : 椰子
targetAccount : Expenses:Food
- item : 京东小金库-转入
peer : 京东金融
targetAccount : Assets:EPay:JD
- category : 美妆个护
targetAccount : Expenses:MakeUp
- item : "食品酒饮"
targetAccount : Assets:Food
- peer : 亲密卡
targetAccount : Expenses:Prpaid
- item : 白条,还款
targetAccount : Liabilities:Baitiao
- item : 京东小金库收益
fullMatch : true
targetAccount : Income:PnL:JD
methodAccount : Assets:EPay:JD
京東帳單的格式大致上和支付寶類似。
京東帳單在交易類別為不计收支
時,帳戶的處理分為兩種情況:
一般情況:收/付款方式
(即method
符合的欄位) 一般為支出帳戶,交易分类
(即category
符合的欄位)一般為收入帳戶。例如銀行卡資金轉入京東小金庫時,收/付款方式
為銀行卡,交易分类
為小金庫; 白條還款時,收/付款方式
為銀行卡或小金庫零用錢,交易分类
為白條。
特殊情況:交易说明
(即item
符合的欄位)的前綴為冻结-
或解冻-
時為不计收支
的特殊情況。冻结-
情形下,收/付款方式
為支出帳戶;解冻-
情形下收/付款方式
為收入帳戶但是金額為0。目前所有和冻结
,解冻
相關的交易會被忽略。
targetAccount
與methodAccount
的增減帳戶關係如下表:
收/支 | minusAccount | plusAccount |
---|---|---|
收入 | targetAccount | methodAccount |
支出 | methodAccount | targetAccount |
不計收支 | methodAccount | targetAccount |