我不是很精通数据库,但如果我有这个设置:
Payment -> Advances -> Advance Payments
因此,apayment
可能是advance
由于应付总额不足而导致的。对于客户来说,当您想要制作一个时,advance payment
您必须将其“伪装”advance payment
为payment
- 用于他们自己的会计目的。我该怎么做。
现在,advances
有一个外键到payments
并且advance payments
有外键到advances
.
一个简单的场景:
我们有一个总额为 100 美元的订单。客户支付 80 美元,预付 20 美元。因此,我们创建了一个advance
(预付款 1),附加(fk'd)到此payment
(付款 1)。客户再次订购,这次总金额为 50 美元,只支付 40 美元,因此advance
创建了另一个(预付款 2)与新的payment
(付款 2)相关联。
当客户决定他们想要还清时,会创建advances
a payment
(付款 3)并将advances
(预付款 1 和预付款 2)添加到其中payment
(付款 3)。这样做是为了当它显示在系统中时,员工可以选择advance
向哪个付款。它不像得到总数然后减去payment
金额那么简单。
因此,当他们输入金额时,advance payment
将创建并附加到该金额,advance
因为它们advance payments
是 fk'd to advances
。
现在的问题是,如果我想查看付款产生了哪些预付款,我该怎么做?
我不想打破我的结构payment - advance - advance payment
——或者我是吗?我想过只是paymentids
在advance payment
桌子上,但这会在两者之间建立一种关系,payments
而advance payments
忽略了advance
中间人。我可能想错了,但我不确定。
更多信息:
Payment Table
-------------
id : pk
amount
Advance Table
-------------
id
amount
paymentId // payment that created the advance
Advance Payment Table
---------------------
id
amount
advanceId
我认为错误的建议是:
Payment Table
-------------
id : pk
amount
Advance Table
-------------
id
amount
paymentId // payment that created the advance
Advance Payment Table
---------------------
id
amount
advanceId
paymentId <---- add paymentid
我认为这会破坏结构/流程,并且付款将不再具有预付款的预付款。
更多信息 - 我们正在使用 linq 和 SQL Server 2008。我不知道这是否会有所不同。
这可能非常令人困惑,但我试图以最好的方式解释它。