3个版本

0.1.2 2020年7月31日
0.1.1 2020年7月24日
0.1.0 2020年7月17日

#2043 in 解析实现

GPL-3.0许可

57KB
2K SLoC

acc

acc(ounting)是一个纯文本复式记账命令行工具。它是开源的,是商业会计软件的免费替代品。

acc使用严格的复式记账原则跟踪商品,如法定货币或加密货币。它受到了ledgerhledger的启发,并使用ledger文件格式。

快速入门

开始跟踪每一分钱,无需信任任何人

安装

使用cargo

稳定

cargo install acc

测试

git clone https://github.com/rudolfschmidt/acc
cd acc
cargo build --release 
./target/release/acc -f demo.ledger print

创建Ledger文件

使用您最喜欢的文本编辑器在纯文本文件中记录交易

2020-01-01 (123) opening balances
    assets:checking           $1234.00
    equity

2020-03-15 (456) client payment
    assets:checking           $2000.00
    income:consulting

2020-03-20 (789) Sprouts
    expenses:food:groceries   $100.00
    assets:cash                $40.00
    assets:checking

使用以下列表中的任何一条命令。

命令

语法

acc [-f FILE] [command] [arguments]

命令行参数的顺序不重要。它们首先解析,然后处理。

余额报告

$ acc -f [file] [bal|balance] [--flat|--tree]

树形余额报告

$ acc -f demo.ledger bal --tree
 $3134.00 assets
   $40.00   cash
 $3094.00   checking
$-1234.00 equity
  $100.00 expenses
  $100.00   food
  $100.00     groceries
$-2000.00 income
$-2000.00   consulting
---------
        0

平面余额报告

$ acc -f demo.ledger bal --flat
   $40.00 assets:cash
 $3094.00 assets:checking
$-1234.00 equity
  $100.00 expenses:food:groceries
$-2000.00 income:consulting
---------
        0

登记簿报告

语法

$ acc -f [file] [reg|register]

示例

$ acc -f demo.ledger reg 
2020-01-01 opening balances    assets:checking            $ 1234.001       $1234.00
                               equity                     $-1234.001       $   0.00
2020-03-15 client payment      assets:checking            $ 2000.001       $2000.00
                               income:consulting          $-2000.001       $   0.00
2020-03-20 Sprouts             expenses:food:groceries    $  100.001       $ 100.00
                               assets:cash                $   40.001       $ 140.00
                               assets:checking            $ -140.001       $   0.00

打印报告

语法

$ acc -f [file] [print] [--raw|--explicit]

原始打印报告

它以原始格式打印数据,但进行了格式化。当您想格式化您的登记簿文件时很有用。(默认选择)

$ acc -f demo.ledger print --raw
2020-01-01 opening balances
	assets:checking            $ 1234.00
	equity

2020-03-15 client payment
	assets:checking            $ 2000.00
	income:consulting

2020-03-20 Sprouts
	expenses:food:groceries    $ 100.00
	assets:cash                $ 40.00
	assets:checking

显式打印报告

它解释了记账金额,并用有用的数字填充它们

$ acc -f demo.ledger print [--explicit|-x]
2020-01-01 opening balances
	assets:checking            $ 1234.00
	equity                     $-1234.00

2020-03-15 client payment
	assets:checking            $ 2000.00
	income:consulting          $-2000.00

2020-03-20 Sprouts
	expenses:food:groceries    $ 100.00
	assets:cash                $ 40.00
	assets:checking            $-140.00

账户报告

按字母顺序打印账户。

语法

$ acc -f demo.ledger accounts [--tree|--flat]

树形输出

$ acc -f demo.ledger accounts --tree
assets
  cash
  checking
equity
expenses
  food
    groceries
income
  consulting

平面输出

$ acc -f demo.ledger accounts --flat
assets:cash
assets:checking
equity
expenses:food:groceries
income:consulting

代码报告

按自然顺序打印代码。

acc -f demo.ledger codes
123
456
789

指令

包含

在登记簿文件中包含另一个登记簿文件

include file.ledger
include files/file.ledger

包含所有扩展名为ledger的文件

include *.ledger 
include files/*.ledger 

包含任何文件

include *.*
include files/*.*

包含目录files(第一级)内部的所有文件

include files/*/*.*
include files/*/*.ledger

包含目录files(递归)下的所有文件

include files/**/*.*
include files/**/*.ledger

常见问题解答

为什么你不应该使用专有软件,尤其是用于会计的软件?

使用花费时间和精力创建的软件赚钱是可以的。

我们忽略了使用专有软件通常是件坏事的事实,但生活中有些情况会使使用专有软件变得更糟,会计和金钱就是其中之一。

会计的本质就是整理关于你自身最敏感的数据,即你的财务数据。

大多数专有会计软件都会要求你上网连接到他们的服务器。一旦你这样做,他们就会将你的数据存储在他们的服务器上以“维护”它。

你的数据在一家以盈利为目的的公司的一台机器上,这家公司对你的数据感兴趣,想从你身上赚钱。

如果他们决定出售你的数据,你如何知道或阻止他们呢?

你无法知道,因为一切都是封闭的,他们的软件、他们的服务器。

你以舒适换取了自由,而且在大多数情况下,你还为此付出了代价。

你有没有尝试过按发票购买东西?

大多数情况下,你会被转接到另一家公司,这家公司会检查你的信用评级。你有没有经历过被拒绝的经历?如果有,他们告诉你原因了吗?大多数情况下他们没有,这也有原因。他们不希望你知道他们知道关于你的什么,信息的来源是什么。

可能没有比财务数据更敏感和私人的东西了。

如果你重视自由和隐私,关心你的财务或他人会这样做!

你为什么要追踪你的钱?

  1. 你生活中尊重的任何东西都会留下;你不尊重的任何东西都会消失。如果你不尊重你的钱,你将很难保留它。它会逃逸到你不知道的方向。金钱就像所有有价值的东西一样,需要关注和照顾。最好的照顾方式就是了解你的财务。

  2. 另一个原因是掌握你的人生。哪些成本存在,为什么存在,以及最重要的,金额是否正确。我无法告诉你我收到过多少不同金额的账单,我不得不投诉。如果时间差是几天,你可以手动处理,但如果差异是几个月甚至一年,你如何记住你得到的是哪个号码呢。一些机构希望你忘记它们,通过发送不同金额的账单来欺骗你,使它们看起来像是刚刚给你发送了一份副本。

  3. 另一个重要原因,可能是最重要的,就是能够根据财务数据而不是暂时的感觉做出决定。一个简单的现实场景可能是你出去吃饭还是在家吃饭以节省一些钱的问题。追踪你的杂货成本并计算每日平均数,你就会惊讶地发现你“在家吃饭”花得多多了。我相信在外面吃饭再也不会显得昂贵了。

待办事项

  • 添加对表达式的支持
  • 添加对定期交易的支持
  • 添加对其他文件格式(如yaml)的实验性支持

依赖关系

~0.3–8MB
~48K SLoC