收到订单后更新订单商品

时间:2019-02-07 15:21:11

标签: 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件商品,但是我的客户发现他只剩一件商品...

我的客户想要类似清单的内容:

  • 是的,可用
  • 我只剩一个了
  • 它不再可用

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

做到这一点的最佳方法是什么?

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

欢迎提出所有建议。

1 个答案:

答案 0 :(得分:1)

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

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

第二个选项,您可以使用状态机gem,例如aasm

  • 第一状态,客户打开订单。
  • 第二状态说明您的客户收到的订单和 如果所有订单项都可用,他必须给予批准,否则,请转到
  • 第三个状态,订单发回客户等 直到到达准备处理订单的最后状态

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