跳转到内容

简介

张记账(Zhang,即“账”的拼音)是一款纯文本的复式记账工具。你把账记在自己拥有的文本文件里,张记账在这些文件之上提供网页界面。它直接读取 Beancount 账本,所以你可以把它指向现有的 Beancount 账本,无需做任何转换。

张记账适合这样的人:想要精确地记录个人或家庭的财务,希望数据保存为可以阅读、比较差异和备份的格式,同时又想要仪表盘、报表,以及在浏览器里记一笔消费的表单。它由你自己运行,可以在自己的电脑上,也可以在服务器上。

打开在线 Demo,可以在安装前体验网页界面。它使用一套虚构的只读账本,对共享账本的修改和附件上传无法保存。

  • 从总览和流水开始,浏览收入、支出、多币种交易、标签和链接。
  • 打开货币查看投资批次及其成本,再到预算查看月度分配、支出和结余滚存。
  • 在文档中浏览示例收据和对账单;打开查询,点击已保存选择一个查询,执行后将结果导出为 CSV。

要记录自己的交易,请继续阅读安装和你的第一个账本。

账本文件。 账本由一个或多个文本文件组成,文件内容是一条条指令:以日期开头、说明发生了什么的条目,例如开设一个账户或记录一笔交易。张记账从主文件(默认为 main.zhang)开始,顺着其中的 include 指令读取其他文件。指令的先后顺序无关紧要,张记账会按日期排序。以 .bean、.beancount 或 .bc 结尾的文件按 Beancount 格式读取。其他文件使用张记账格式,它与 Beancount 的格式很接近,并增加了几种指令,例如预算。

账户。 金额存放在账户中,账户名是分层的,例如 Assets:Bank:Checking。名称的第一部分是五种账户类型之一:

  • Assets:你拥有的东西,例如现金、银行账户和投资。
  • Liabilities:你欠下的钱,例如信用卡和贷款。
  • Equity:期初余额的来源。
  • Income:钱的来处,例如工资或利息。
  • Expenses:钱的去处,例如餐饮或房租。

账户必须先开设才能使用,之后也可以关闭。

货币与商品。 每个金额都有一种商品:可以是 USD 这样的货币,也可以是你要计数的任何东西,例如股票或航空里程。用 commodity 指令声明它们,用 price 记录它们随时间变化的价值。

交易与记账行。 交易在账户之间转移金额。交易中的每一个账户行都是一条记账行。一笔交易的所有记账行之和必须为零,这就是复式记账的含义:钱总是从某处来,到某处去。其中一条记账行可以省略金额,由张记账自动补上。

断言。 balance 指令声明某个账户在某一天持有多少,例如银行对账单上印的余额。张记账会检查它,账目不一致时报告错误。除非你明确给出容差,断言必须精确相等。

网页界面读取的是文件。 张记账把账本加载到内存中,并据此提供网页界面。你在界面中记录的内容会作为普通指令写回文件;你自己修改文件时,张记账会重新加载账本(何时会重新加载,见本地文件系统)。账目中的问题,例如不平衡的交易或不成立的断言,会出现在网页界面的错误列表中。