GNUCash transaction设计理念

分割,或 "账目条目 "是基本的
会计单位。每个分录由一个金额(美元钞票的数量、股票的数量等)组成,该金额的价值以美元表示。
钞票的数量,股票的数量,等等),该金额的价值,用与该金额不同的货币表示
一个(可能)与该金额不同的货币,一个备忘录,一个指向父交易的指针,一个指向母交易的指针。
父交易的指针,借方账户的指针,对账的标志和时间戳,"对账"。
标志和时间戳,一个 "行动 "字段,以及一个可以存储任意数据的键值框架。
存储任意数据。

交易体现了 "复式记账 "的概念。
一个交易由一个日期、一个描述、一个ID号组成。
一个或多个分叉的列表,以及一个键值框。 该交易
还指定了所有分叉的货币价值。
当复式记账规则被强制执行时,拆分的总价值
为零。 如果只有两个拆分,那么其中一个的价值必须是
正值,另一个是负值:这表示一个账户被借记,另一个账户被贷记。
而另一个账户则被记入同等金额的贷方。 通过强制要求分割的价值
的值总是 "加起来 "为零,我们可以保证账户余额
帐户的余额总是正确的平衡。

该引擎并不强制执行复式记账,但提供了一个API
以使用户代码能够找到不平衡的交易并 "修复 "它们,以便
以使它们处于平衡状态。

请注意,交易中拆分值的总和总是相对于货币计算的。
币值的总和;因此,即使它们是不同的货币,分叉也可以被平衡。
只要它们共享一种共同的货币,即使它们是不同的货币,也能达到平衡。
这一特点允许建立货币交易账户。

每个拆分必须指向其父交易,而该交易
必须反过来在交易的拆分列表中包括该拆分。A
分割最多只能属于一个交易。这些关系是
由引擎强制执行。引擎用户不能意外地破坏
这种关系,只要他们坚持使用API而不是
直接访问内部结构。

拆分被分组为账户,在会计实践中也被称为
在会计实践中被称为 "分类账"。每个账户由一个列表组成
借记该账户的拆分列表。为了确保一致性,如果一个拆分指向一个账户,那么账户必须指向
到一个账户,那么该账户也必须指向该拆分,反之亦然。
一个拆分项最多可以属于一个账户。除了仅仅包含一个
列表,账户结构还为账户提供了一个名称、一个代码、描述和注释字段。
代号、描述和注释字段、一个键值框架、一个指向所有商品的指针。
到商品的指针,该商品用于该账户中的所有拆分。该
商品可以是任何交易和可交易的东西的名称:一个股票
(例如,"IBM","麦当劳"),一种货币(例如,"美元","英镑"),或任何添加到商品表中的东西。
添加到商品表中。

账户可以被安排在一个分层的树中。树上的节点
被称为 "账户组"。根据会计
惯例,一个账户的价值等于其所有的
分割的价值加上其所有子账户的价值。

分类: 默认 标签: 发布于: 2022-06-15 15:15:51, 更新于: 2022-06-15 15:15:51