- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我的程序员同事们,
我正在从头开始设计和编程一家在线商店。它有一个模块来管理通过前端收到的“订单”。
我需要一个状态来了解订单在特定时刻发生了什么,假设状态是:
我的问题很简单,但对于决定商店设计非常重要,并且是:您将如何存储此状态:您会在 Orders 表中为它创建一个列还是只是“计算“每个订单的状态取决于每个订单是否已收到付款或是否已发货? (除了我假设的 is_cancelled 列)
模拟此类问题的最佳方法是什么?
PD:我什至希望将来可以配置这些状态购买使用相同软件的其他客户..
最佳答案
订单
创建一个状态列基本原理是,如果 Orders
可以与多个 Payments
或 Invoices
相关联(取决于您的实现),那么一个状态订单
不与任何未决或已完成的付款
有绝对关系,并且因此不能直接计算。
订单
可以标记为已付款 或已完成 即使尚未收到付款。订单恰好表示:按计划发货给客户。它不应代表实际收入,而后者又是Payments
表的域。
具体实现取决于您的工作流程;我之前将“已完成”订单视为付款的“替代品”,但它变得困惑。特别是当您进行促销事件或想要赠送库存并且必须考虑丢失的库存和没有收到的收入时。 欢迎来到会计 hell 。
当收到订单的付款
时,您的业务逻辑应该决定是否调整订单状态。如果订单处于待处理状态,并且现在收到的付款总额加起来等于或大于订单值(value),则订单
应标记为已付款,表明它已准备好发货。
总结:已完成的付款
代表收入,而已完成的订单
代表发货和/或库存变化。
关于database-design - 网上商店实现 : Status for Orders?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130987/
我是一名优秀的程序员,十分优秀!