如何获取产品可用数量(Odoo v8 和 v9)

Tan*_*han 6 openerp stock python-2.7 odoo-8 odoo-9

我需要从 odoo 库存中获取可用数量的产品。

我有几个模型stock_quant、stock_move、stock_location。

我想要实现的是两件事:

  1. 产品总可用数量
  2. 基于位置的产品可用数量

任何人都可以指导我吗?

Emi*_*td. 5

库存相关字段在产品(功能字段)中定义,您可以直接从产品中获取所有仓库/位置或单个位置/仓库的库存。

例子:

适用于所有仓库/地点

product = self.env['product.product'].browse(PRODUCT_ID)
available_qty = product.qty_available
Run Code Online (Sandbox Code Playgroud)

对于单个位置/仓库(WAREHOUSE_ID / LOCATION_ID 应替换为实际 ID)

product = self.env['product.product'].browse(PRODUCT_ID)
available_qty = product.with_context({'warehouse' : WAREHOUSE_ID}).qty_available

available_qty = product.with_context({'location' : LOCATION_ID}).qty_available
Run Code Online (Sandbox Code Playgroud)

其他领域也有。

Forecasted Stock => virtual_available
Incoming Stock => incoming
Outgoing Stock => outgoing
Run Code Online (Sandbox Code Playgroud)

您可以以类似的方式访问所有这些字段。如果您不会在上下文中传递任何仓库/位置,那么它将一起返回所有仓库的库存。

有关更多详细信息,您可以参考 product.py in stock模块。

解决方案:

@api.onchange('product_id','source_location') 
def product_qty_location_check(self): 
    if self.product_id and self.source_location: 
        product = self.product_id
        available_qty = product.with_context({'location' : self.source_location.id}).qty_??available 
        print available_qty
Run Code Online (Sandbox Code Playgroud)