Skip to content

Commit

Permalink
[feat] README 增加 BMO 银行相关说明 (#114)
Browse files Browse the repository at this point in the history
* 优化ledger 日期格式

* 更新README, 增加BMO相关内容

* 删除无用文件
  • Loading branch information
ramsayleung authored Jul 2, 2023
1 parent 75d1e35 commit 5d3b53e
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- 海通证券
- 中国工商银行
- Toronto-Dominion Bank
- Bank of Montreal

目前记账语言支持:

Expand All @@ -26,6 +27,7 @@
htsec htsec
icbc icbc
td td
bmo bmo
```

## 安装
Expand Down Expand Up @@ -123,6 +125,16 @@ double-entry-generator translate \
./example/td/example-td-records.csv
```

#### Bank of Montreal

```bash
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
```

### Ledger

#### 支付宝
Expand Down Expand Up @@ -190,6 +202,17 @@ double-entry-generator translate \
./example/td/example-td-records.csv
```

#### Bank of Montreal

```bash
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
```

## 账单下载与格式问题

### 支付宝
Expand Down Expand Up @@ -279,6 +302,19 @@ double-entry-generator translate \
+ Beancount 转换的结果示例: [example-td-out.beancount](./example/td/example-td-output.beancount)
+ Ledger 转换的结果示例: [example-td-out.ledger](./example/td/example-td-output.ledger)

### Bank of Montreal

1. 登录 BMO 网页版本: https://www.bmo.com/en-ca/main/personal/
2. 选择指定账户
3. Transactions -> Download 选择时间范围

#### 格式示例

[example-bmo-record.csv](./example/bmo/debit/example-bmo-records.csv)

+ Beancount 转换的结果示例: [example-bmo-out.beancount](./example/bmo/debit/example-bmo-output.beancount)
+ Ledger 转换的结果示例: [example-bmo-out.ledger](./example/bmo/debit/example-bmo-output.ledger)

## 配置

### 支付宝
Expand Down Expand Up @@ -761,6 +797,64 @@ TD账单中的记账金额中存在收入/支出之分,通过这个机制就
| 收入 | targetAccount | defaultCashAccount |
| 支出 | defaultCashAccount | targetAccount |

#### Bank of Montreal

<details>
<summary>
BMO银行配置文件示例
</summary>

```yaml
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
```

</details></br>

`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](https://beancount.github.io/docs/beancount_language_syntax.html#tags)或[Ledger Meta Tag](https://ledger-cli.org/doc/ledger3.html#Metadata-tags),使用 `sep` 作为分隔符。

在单条规则中可以使用 `ignore` 来设置是否忽略匹配上该规则的交易,`true` 表示忽略匹配上该规则的交易,`fasle` 则为不忽略,缺省为 `false` 。

匹配成功则使用规则中定义的 `targetAccount` 账户覆盖默认定义账户。

规则匹配的顺序是:从 `rules` 配置中的第一条开始匹配,如果匹配成功仍继续匹配。也就是后面的规则优先级要**高于**前面的规则。

BMO账单中的记账金额中存在收入/支出之分,通过这个机制就可以判断银行卡账户在交易中的正负关系。如支付宝配置类似,匹配成功则使用规则中定义的 `targetAccount` 和全局值 `defaultCashAccount` ,并通过确认该笔交易是收入还是支出,决定 `targetAccount` 和 `defaultCashAccount` 的正负关系,来覆盖默认定义的增减账户。

`targetAccount` 与 `defaultCashAccount` 的增减账户关系如下表:

| 收/支 | minusAccount | plusAccount |
| ----- | ------------------ | ------------------ |
| 收入 | targetAccount | defaultCashAccount |
| 支出 | defaultCashAccount | targetAccount |

## Special Thanks

- [dilfish/atb](https://github.com/dilfish/atb) convert alipay bill to beancount version

0 comments on commit 5d3b53e

Please sign in to comment.