首页 文章

每月分期付款的发票数据库设计

提问于
浏览
4

这个问题是StackOverflow上已经回答的问题的扩展/扩展:Database Design for Invoices

但是,我想扩展这个想法,并找出允许客户使用某种类型的分期付款(月付款)系统支付发票的正确方法 .

在回答的问题中,投票的答案使用了具有以下表格的数据库模式:

  • 订单表:用于草稿/挂单

  • 订单明细表:用于挂单的订单项

  • 发票表:用于表示最终(不可变)订单以及客户欠款 .

  • 付款表:当客户付款时,总金额就在这里 .

  • InvoicesPayments表:显示每笔付款应适用于特定发票的金额 . 此表是必需的,因为有时付款可以应用于多个发票 .

(为了简化起见,因为这个问题's focus is the table design I'遗漏了触发器之类的细节等)

Simplified Database Schema

如何将发票分成每月分期付款?要求如下:

  • 在下订单时,客户将能够选择他们想要支付多少作为预付款,然后支付X个月分期付款,直到支付余额为止 .

  • 目前我们可以忽略利率之类的事情 .

  • 有时,客户将支付超过一个月付款的款项 . 例如,假设他们忘记支付一个月和下个月的费用,他们只用一次付款就可以支付当月和过去一个月的费用 .

我们非常感谢您提供的任何帮助/指导 . 谢谢!

-- AFTERNOON UPDATE --

在考虑到目前为止的响应并自行修改后,您如何看待如下的架构:

schema 2.0

在上面提出的模式中,所有发票都有一个ScheduledPayments记录 . 如果发票全部到期(全额付清),那么它将有一条记录 . 如果发票是分期付款的,则每笔付款都会有X个记录(加上任何预付款) .

然后,当进行支付时,将记录添加到支付表,并且将一个或多个记录添加到关系表“ScheduledPaymentsPayments”,其将支付连接到发票和每月支付 .

你怎么看待这个解决方案?您是否预见到它有任何问题,或者您能否提出可能更好的替代方案?

1 回答

  • 0

    您可以在Orders表中为DownPaymentAmount,MonthlyPaymentAmount,NumberOfMonthlyPayments添加列,并满足第一个要求 .

    第三个要求看起来像数据库已经可以使用InvoicesPayments表处理它,逻辑在app层中处理 .

相关问题