ruby-on-rails - 收到订单后更新订单商品
问题描述
我的客户在市场上工作并想开始在线销售
当他收到订单时,他应该确认该商品是否真的有货,以及他是否能够满足需求。
更新> 我已经有一些回调来检查文章是否有货,但是......我实际上需要某种双重检查......(首先通过回调完成,然后手动......但我没有知道我如何以卖家身份编辑 OrderItem....
(当您在市场上工作时可能会发生,您没有时间登记您的销售,甚至某些物品可能被盗......所以这会弄乱库存)
更新 >如果缺少商品(表示库存错误),我如何编辑收到的订单
我的模型是:
Size
belongs_to :product
Order
has_many :order_items
OrderItem
belongs_to :order
belongs_to :product
belongs_to :size
Product
has_many :order_items
has_many :sizes
OrderItem 属性是::id, :quantity, :product_id, :user_id, :size_id, :order_id
假设订单已到:
#here is how are orders are created
order_1 = Order.create(
payment: "{'stub','stripe'}",
created_at: 1.day.ago,
user_id: 1,
token: SecureRandom.hex(8),
status: 1,
shipping_fees: 5,
sub_total: [product_1.price + product_1.price].sum ,
total: 135
)
order_item_1 = OrderItem.create(
price: product_1.price,
order_id: order_1.id,
product_id: 10,
quantity: 1,
size_id: 3
)
order_item_2 = OrderItem.create(
price: product_2.price,
order_id: order_1.id,
product_id: 42,
quantity: 2,
size_id: 8
)
在order_item_2中,客户需要 2 件商品,但我的客户发现他只剩下一件了……
我的客户想要一个清单,上面写着每个项目:
- 是的,它是可用的
- 呜呜我只剩一个了
- 它不再可用
然后它会更新库存并向客户发送电子邮件,警告他某些商品不可用等......
做这个的最好方式是什么?
是否可以在订单控制器中进行管理?还是我应该创建一个发票控制器?
欢迎所有建议。
解决方案
订单是发票的不同流程,您提到的 3 个选项可以在订单控制器中完成,如果您认为需要一个控制器,您可以使用 PORO 系统创建服务来管理流程
基本上是全自动检查库存的理想条件,如果您的客户选择/输入产品名称,软件将自动检查产品的可用库存,您的客户不能输入超过可用的值。您可以使用 javascript 检查产品名称是否已更改,然后它将触发检查可用库存的过程,如果订购的订单项目之一有库存,则客户无法保存订单
第二个选项你可以使用像aasm这样的状态机gem
- 第一个状态,客户打开订单。
- 第二个说明您的客户收到的订单,如果所有订单商品都可用,他必须给予批准,如果没有,则转到
- 订单返回给客户的第三个状态,依此类推,直到到达订单准备好处理的最后一个状态
通常在订单批准后的业务流程在客户收到交货订单后会生成另一个流程(交货订单),下一个流程是根据已批准和收到的订单为客户生成发票
推荐阅读
- sql - 是否有可以返回完整日期时间值的 MIN() 替代方法?
- php - 循环期间的服务器响应(状态更新)
- c# - WPF中列表视图的性能缓慢
- c++ - 正则表达式多次匹配相同的模式
- ios - 是否可以检测到将远程通知添加到通知中心的时刻?
- python - 有没有办法使用条件中的多种数据类型来过滤 Python 中的列?
- css - 使用重复(自动填充)时如何限制列宽
- sql-server - 当前记录与先前记录之间的时间差(带有滞后变量和案例语句)
- c++ - 将 NDEF 记录有效负载转换为 EthernetClient print() 的字符串
- r - 有没有合适的方法来聚类时间序列,其中只有四个值是可能的(0,1,2,4)并且长度不固定?