首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试复式记账系统,但获取交易清单有问题

尝试复式记账系统,但获取交易清单有问题
EN

Stack Overflow用户
提问于 2019-07-26 20:29:05
回答 1查看 252关注 0票数 2

这个问题已经被问过几次了,但更多的是关于设计。我正在尝试制作一个家庭财务应用程序来学习一些新技术。我采用了单列双列复式输入系统的设计。

因此,一个日志是根事务,它有2个或更多的事务。账户可以是第三方(我付给我朋友一些现金,我的公司付钱给我,我请餐馆吃饭)或者银行账户(我用信用卡付钱)。

所以,我可以在两个账户之间转账。(我从我的活期账户转了200美元到我的信用卡账户)我可以收到钱。(我的公司把钱打进了我的活期账户。我可以付钱给别人。(我付了餐厅20美元的晚餐钱)

因此,让我们使用最后一个示例。我用我的活期帐户来支付肯德基。我有两个帐户要处理。肯德基,我的活期账户。

我为这个事务创建了一个日记账。然后,对于该日志,我创建了两个事务。

第一个是-20,这个账户是我的银行账户。第二个是+20的金额,账户是肯德基。

我可以很快地拿到我银行账户的余额。

从AccountID = MyBankAccountId的日记账中选择SUM(金额)

太完美了。

但我有个问题。

如何显示我的银行账户的交易清单?

所以我想为AccountId 1获取一个'Statement‘

但从这一点上,我真的不能说出我付钱给了谁,或者被付钱给了谁。它只显示与Account 1相关的行。

上面的数据显示了针对我关心的帐户的交易,但是..我也需要显示其他帐户的详细信息。所以我需要以某种方式获取'SourceAccountId‘和'DestinationAccountId’。

我的设计是不是错了,我需要转到一行交易,源和目标账户id在同一行?

我的问题是-我希望能够将预算分配给我的事务。例如,我打算向Transaction表添加一个BudgetId,允许我将金额分配到不同的预算或类别。

(我去了五金店,花了25美元。在这25美元中,10美元是我的“花园”预算,15美元是“内部家装”预算。

所以我的事务行可能有3行。

1用于硬件商店的贷方帐户为25美元。1借记到我的银行账户10美元,预算Id是我的‘花园预算’。1借记到我的银行账户15美元,预算Id是我的“内部家装”预算。

这也可能是一个问题,因为我的银行账户的对账单上会有两行……一张15美元,一张10美元。也许我可以做一笔交易,但是...预算分配的额外表格?

这将使为账户获得余额变得更加棘手。我需要检查一下SoutceAccountId和DestinationAccountId。

任何想法都是很棒的。

EN

回答 1

Stack Overflow用户

发布于 2019-07-26 21:00:51

我以前做过一些A/R系统,它是...至少可以说很有趣。通常,它的完成方式是将金额记录为正数(无论支付交易...$100在事务级别移动到某个地方,方向是不相关的),所以由于它不是记录+/-,所以我认为您的事务表是好的。可能想要添加一个备注字段,这样你就可以记录它的用途(例如,假设你支付了电费,你可以记录这笔交易是为了“6月19日的账单”)。

日志表是魔术发生的地方。

我见过两种模型,都是有效的:

代码语言:javascript
复制
ID - PKey - Integer - IDENTITY
TransactionID - FKey - Integer - Indicates the parent Transaction
Amount - Decimal - The amount of the journal entry
AccountID - FKey - integer - Indicates the Account the journal entry is for
NetEffect - Bit - Flag which indicates if the item is a Credit (True) or Debit (False)

或者..。

代码语言:javascript
复制
ID - PKey - Integer - IDENTITY
TransactionID - FKey - Integer - Indicates the parent Transaction
DebitAmount - Decimal - Amount of Debit
CreditAmount - Decimal - Amount of Credit
DebitAccountID - FKey - Integer - Indicates the Debit account for the item
CreditAccountID - FKey - Integer - Indicates the Credit account for the item

然后两者都使用Sum(借方)-Sum(借方)来获得余额。

第一个应该是解释性的。第二个更接近于复式表单。您可以使用贷方或借方字段进行分录,但不能同时使用这两个字段。但它也让你的预算计算变得更容易。

这笔交易将记录25美元。然后,事务记录如下:

代码语言:javascript
复制
1 -- 1 -- 00 -- 25 -- null -- {account number for garden store}
2 -- 1 -- 10 -- 00 -- {Account for Garden Budget} -- null
3 -- 1 -- 15 -- 00 -- {Internal home Budget} -- null

要将某物分配到预算中,请执行以下操作:

代码语言:javascript
复制
4 -- 2 -- 25 -- 00 -- null -- {Account for Garden Budget}
5 -- 2 -- 25 -- 00 -- null -- {Internal hom Budget}
6 -- 2 -- 00 -- 50 -- {Your checking account} -- null

这会将50美元转移到你的两个预算中,一个预算25美元,另一个预算25美元,并从你的账户中扣除。

然后你会得到报酬:

代码语言:javascript
复制
7 -- 3 -- 1000 -- 00 -- null -- {Checking account number}
8 -- 3 -- 00 -- 1000 -- {Account for employer} -- null

希望这一切都是有意义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57220095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档