【发布时间】:2016-05-10 04:17:11
【问题描述】:
此问题是 StackOverflow 上已回答问题的扩展/扩展:Database Design for Invoices
但是,我想扩展这个想法并找出允许客户使用某种类型的分期付款(按月付款)系统支付发票的正确方法。
在已回答的问题中,投票的答案使用了具有以下表格的数据库架构:
- 订单表:用于草稿/挂单
- 订单明细表:用于挂单的行项
- 发票表:用于表示最终的(不可变的)订单以及客户欠款的金额。
- 付款表:当客户付款时,总金额会显示在此处。
- InvoicesPayments 表:该表显示每笔付款中应有多少金额适用于特定发票。此表是必需的,因为有时付款可能适用于多张发票。
(为了简化,因为这个问题的重点是表格设计,我省略了触发器等细节)
如何允许将发票分成每月分期付款?要求如下:
- 在下订单时,客户可以选择他们想要支付多少作为首付款,然后每月分期付款 X 次,直到付清余额。
- 现在我们可以忽略利率等因素。
- 有时客户会支付超过一个月的付款。例如,假设他们忘记支付一个月和下个月,他们在一次付款中支付了当月和上个月的费用。
您能提供的任何帮助/指导将不胜感激。谢谢!
-- 下午更新--
在考虑了迄今为止的响应并自己进行了一些修改之后,您对拥有如下架构有何看法:
在上述建议的架构中,所有发票都将有一个 ScheduledPayments 记录。如果发票是一次性到期的(全额支付),它将在那里有一个记录。如果发票是分期付款的,那么每次付款(加上任何预付款)都会有 X 条记录。
然后,在进行付款时,将一条记录添加到付款表中,并将一条或多条记录添加到关系表“ScheduledPaymentsPayments”中,该表将付款与发票和每月付款相关联.
您如何看待这个解决方案?您是否预见到它会出现任何问题,或者您能提出任何可能更好的替代方案吗?
【问题讨论】:
-
根据哪张发票付款是否重要? (请说“不”)
-
@Strawberry 是的。通过跟踪付款适用于哪些发票,您可以知道哪些发票已得到满足。我想我知道你可能在说什么。在宏观层面上,只有客户总报表余额很重要。但是对于这个项目,我需要确保每张发票都满足其余额。
-
但这有什么关系呢?客户有一个帐户。该帐户的余额就是发票总金额减去支付的总金额。
-
@Strawberry 为简单起见,我没有包括所有项目细节,但是对于这个特定的应用程序,每张发票都是由代理人出售的,代理人在支付发票时获得佣金。一个客户可以有多个由不同“代理”出售的发票。因此,我需要跟踪付款适用于哪些发票。
-
我碰巧有两个客户以完全随机和任意的方式支付发票,金额与对我来说没有任何意义的对应。如果我必须计算出哪笔付款属于哪张发票,我真的会失去这个情节。但祝你好运!
标签: mysql sql sql-server database-design