首页 > 解决方案 > 收到订单后更新订单商品

问题描述

我的客户在市场上工作并想开始在线销售

当他收到订单时,他应该确认该商品是否真的有货,以及他是否能够满足需求。

更新> 我已经有一些回调来检查文章是否有货,但是......我实际上需要某种双重检查......(首先通过回调完成,然后手动......但我没有知道我如何以卖家身份编辑 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 件商品,但我的客户发现他只剩下一件了……

我的客户想要一个清单,上面写着每个项目:

然后它会更新库存并向客户发送电子邮件,警告他某些商品不可用等......

做这个的最好方式是什么?

是否可以在订单控制器中进行管理?还是我应该创建一个发票控制器?

欢迎所有建议。

标签: ruby-on-rails

解决方案


订单是发票的不同流程,您提到的 3 个选项可以在订单控制器中完成,如果您认为需要一个控制器,您可以使用 PORO 系统创建服务来管理流程

基本上是全自动检查库存的理想条件,如果您的客户选择/输入产品名称,软件将自动检查产品的可用库存,您的客户不能输入超过可用的值。您可以使用 javascript 检查产品名称是否已更改,然后它将触发检查可用库存的过程,如果订购的订单项目之一有库存,则客户无法保存订单

第二个选项你可以使用像aasm这样的状态机gem

  • 第一个状态,客户打开订单。
  • 第二个说明您的客户收到的订单,如果所有订单商品都可用,他必须给予批准,如果没有,则转到
  • 订单返回给客户的第三个状态,依此类推,直到到达订单准备好处理的最后一个状态

通常在订单批准后的业务流程在客户收到交货订单后会生成另一个流程(交货订单),下一个流程是根据已批准和收到的订单为客户生成发票


推荐阅读