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

因此,一个日志是根事务,它有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。
任何想法都是很棒的。
发布于 2019-07-26 21:00:51
我以前做过一些A/R系统,它是...至少可以说很有趣。通常,它的完成方式是将金额记录为正数(无论支付交易...$100在事务级别移动到某个地方,方向是不相关的),所以由于它不是记录+/-,所以我认为您的事务表是好的。可能想要添加一个备注字段,这样你就可以记录它的用途(例如,假设你支付了电费,你可以记录这笔交易是为了“6月19日的账单”)。
日志表是魔术发生的地方。
我见过两种模型,都是有效的:
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)或者..。
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美元。然后,事务记录如下:
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要将某物分配到预算中,请执行以下操作:
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美元,并从你的账户中扣除。
然后你会得到报酬:
7 -- 3 -- 1000 -- 00 -- null -- {Checking account number}
8 -- 3 -- 00 -- 1000 -- {Account for employer} -- null希望这一切都是有意义的。
https://stackoverflow.com/questions/57220095
复制相似问题