如何在 Django Oscar 中执行股票更新过程

Sam*_*y J 3 django python-3.x django-oscar

我正在浏览股票记录模型的代码here,在 num_allocated 字段上方,它在评论中说,

#: The amount of stock allocated to orders but not fed back to the master
#: stock system.  A typical stock update process will set the num_in_stock
#: variable to a new value and reset num_allocated to zero
Run Code Online (Sandbox Code Playgroud)

那么,当产品缺货时,我如何按照评论中指定的方式进行库存更新过程?我需要将 num_in_stock 变量设置为新值并将 num_allocated 设置为零。

到目前为止,如果订单正在发货,我会调用 EventHandler 类中的 consumer_stock_allocations() 方法,并且订单中产品的库存数量正在减少。

如果有人已经实现了这个,请分享一些代码或一些例子,因为我是 oscar 的新手。

sol*_*oke 7

对于num_allocated,最常见的解决方法是消费

EventHandler().consume_stock_allocations(order, [lines], [line_quantities])

或取消

EventHandler().cancel_stock_allocations(order, [lines], [line_quantities])

每次发货或取消订单时的分配。像您一样在运输事件处理程序中执行此操作非常好。

这将清除分配并减少与分配num_in_stock相同的数量(用于消费,而不是取消) - 即,您无需再进行任何调整num_in_stock

您需要做的是num_in_stock在新库存到达时保持更新等。您如何做到这一点实际上取决于您如何管理站点上的库存 - 例如,如果您从第三方 ERP 系统获取库存信息,那么您将重置在num_in_stock每次与ERP同步。如果您手动管理库存,则只需从仪表板进行更新。