我们给出了一个简短的分类记账和我们即将构建的Mac app的介绍。

这一集和常规的视频集有一点不一样,因为我们打算介绍一个项目。用于提供上下文。之后我们会用常规的视频集和直播代码来展示。

显示分类记账

我们用Swift复制了ledger。这是个用来记账的app 。我们复制的是Mac GUI的app,之前的是基于命令行的。很酷的地方是Ledger在一个简单的text文件中运行,很好的符合我们的工作流。像是一个记账的Markdown。我们使用版本管理来管理这个文件,这样易于协作而且可以查看历史。

我们想写一个GUI的app比CLI的app方便可视化。因为像搜索和高亮在用GUI更好。

先说一下基本的原则。一个Ledger文件是一个简单的text文件。如果我们想要增加一个新的入口,我们开始写下日期和标题。然后我们写下两个posting。一个posting是我们写下账号名字和张哈。下一个我们必须写下来源,举个栗子,账号是如何支付的。我们增加另外的在单独的一行增加另外的posting来写Assets:Checking作为账号和-50 USD作为账目数目。

Ledger最基本的是,他使用双向记账,并且所有的条目都是需要增加到零。这也是我们喜欢的:内置一个检查。我们了解到一个双向检查的账目并不复杂,作为一个补充也确实有用。就像给你的记账增加了一个类型系统。

一个命令行App

只要我们有一个具有单业务的文件,我们转到终端上,在这个文件上运行ledger并且显示余额。这边我们看到我们所有的账单(在这个案例中,我们只有两个),并且这些账单都计算了和。

当我们有多个业务的时候,余额视图开始变得有趣。为了示范,我们增加第二个业务并且记录租游艇的的费用。收入是1000刀,并且加入到了检查账号里。如果我们保存这个文件,重新运行余额计算命令,我们可以看到每个账单已经被加起来了。检查账单现在包含了950刀(-50刀和1000刀求和)。这将符合一个实际的账号计算余额。

我们已经展示了Ledger基本的功能。然而,有一些方便的功能。举个例子,我们不需要重复:我们可能会遗漏一个账单并且Ledger会推断那是哪个账单。我们也可以看Ledger生成的第二个报道:注册者。这里是所有单独业务和一个总和,并且我们可以看到遗失的账号都被填充在了Ledger里。

自动计算余额

另一个有趣的事是显示一业务并不需要只有两页,也有可能更多。举个例子,我们可以增加一项给我们租赁业务的增值税。这帮助我欧美管理在欧洲的增值税。增值税的问题是你总是有特定的数目的钱在你的账户里,并且你也不知道增值税你在特定的时间点交了多少给国家。为了解决这个问题,我们创建另一个账单,Liabilities:VAT,给账号写上190刀。现在我们可以再一次运行余额计算命令并且立即知道我们还剩多少增值税。

这些就是Ledger的主要功能。不需要看账单上一个大的数字,我么可以看到钱需要去哪,我们还需要支付给谁,和这些数字代表什么。

图形化App

现在我们来看看我们图形化的app,和命令行版本的相似。一方面,我们显示每个账单的综合的账单条目。另一个方面,我们以相反的顺序显示一个注册中心。这个app可让我们做一些很酷的事情。举个栗子,我们可以选择一个账单来过滤这个账单上的业务。同样我们也可以通过搜索栏来过滤。

我们用一个扩展的方式来设计这个app,因此有些功能我们还没有展示。这需要一个很长的过程,并且也不是一个完全完成的app。我们做这个项目中有很多有趣的话题。举个栗子,我们必须把Ledger文件解析成机构化的数据。然后我们需要在这个结构内评估所有的支出和业务。最终,我们需要把这些显示在图形化app中。为了实现,我们必须先构建树形结构,也必须把所有的view controllers链接起来。我们会在后面的几个视频集中讲这些。