假设有一家银行、一家大商店等,希望对内部帐户和跟踪客户帐户进行正确的会计核算。而不是满足当前简单而狭窄的需求,这将是一种“家酿”:这些结果是当前简单需求的临时拐杖,当新的需求到来时很难或不可能扩展。
据我所知,复式会计是一种行之有效的方法,满足所有的会计和审计要求,包括目前尚未考虑的要求。如果这一规定得到执行,它将:
我研究了另一个问题的答案:派生账户余额还是简单银行账户的存款余额?,它为内部帐户提供了很好的信息。需要一个数据模型,以便人们能够理解实体;它们之间的交互;它们之间的关系,以及@PerformanceDBA给出了这一点。这个模型是从这个答案中得出的:

对于简单的内部帐户来说,这是令人满意的,但是我需要看到一个数据模型,它提供了完整的复式会计方法。
需要添加的文章有:Journal;内部与外部Transactions;等等。
理想情况下,我希望看到这些双条目行在数据库中的样子,整个过程在SQL中的样子,在每种情况下哪些实体会受到影响,等等:
让我们把它称为System而不是Bank,Bank可能太复杂,无法建模,让问题是关于虚拟系统,它与帐户和资产一起运作。客户使用系统执行一套操作(存款、提款、手续费、批次费用),以及相互之间的操作(转移)。
发布于 2022-10-24 00:46:23
下面是我的模式(使用sqlite作为示例),它有两个表:
表
-- This is a list of your chart of accounts
CREATE TABLE "accounts" (
"name" TEXT,
"number" INTEGER,
"normal" INTEGER
)
-- This is a table of each transaction
CREATE TABLE "transactions"
(
"id" INTEGER,
"date" TEXT,
"amount" REAL,
"account" INTEGER,
"direction" INTEGER
) 根据这个约定,accounts.normal和transaction.direction字段被设置为1作为借方,-1用于贷方。最终用户从未看到这一点,但它使算术变得容易。
当您创建日记条目时,它将在transactions表中至少有2行--借方和贷方。他们应该共享同一个id。
要查看余额,可以运行以下查询:
select
(account) as a,
name,
sum(amount * direction * normal) as balance
from
transactions
left join accounts on a = accounts.number
group by
name
order by
a,
name;要查看分类账,可以运行以下命令:
select
id,
date,
name,
case when direction == 1 then amount end as DR,
case when direction == -1 then amount end as CR
from
transactions
left join accounts on account = accounts.number
order by
id,
date,
CR,
DR;我可以运行更多的不同查询的详细员额,以及示例数据。但是,使用上述两个表,您可以创建一个工作的双条目系统。
https://stackoverflow.com/questions/59432964
复制相似问题