代码之家  ›  专栏  ›  技术社区  ›  Chaban33

按位置列出的可用数量(再次)

  •  0
  • Chaban33  · 技术社区  · 6 年前

    我知道这以前讨论过,但对我来说不太管用。我怎样才能得到我的产品现在的位置或仓库的可用数量。

    (大多数答案都在旧的API中,而这一个并不适合我)

    class ProductProduct(models.Model):
        _inherit = 'product.template'
    
      available_qty = fields.Integer(
        string='Qty By Loc',
        compute='product_qty_location_check',
    )
    
    
        def product_qty_location_check(self): 
            if self: 
    
                self.available_qty = self.with_context({'location' : self.source_location.id}).qty_‌​available 
    
    AttributeError: 'product.template' object has no attribute 'source_location'
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   CZoellner    6 年前

    首先你必须找出你的位置和/或仓库。有足够的可能性做到这一点:

    1. 参照搜索,例如 self.env.ref('my_module.my_location')

    product.product _product_available()

    # get a recordset of all products
    products = self.env['product.product'].search([])
    # get a special location (my_location)
    location = self.env.ref('my_module.my_location')
    quantities = products.with_context(location=location.id)._product_available()
    # print the quantities
    for product_id, quantity_dict in quantities.iteritems():
        print product_id
        print quantity_dict
    

    同样的情况也可能发生在 with_context(warehouse=warehouse.id) with_context(location=[1,2,3]) ,请 with_context(location="My Location")

        2
  •  2
  •   sfx    6 年前

    位置 产品ID

    在计算函数中使用以下示例:

    quant_sr = self.env["stock.quant"].search([('location_id','=',self.source_location.id),('product_id','=',self.product_id.id)])
    qty = 0.0
    for quant in quant_sr:
        qty += quant.qty
    print qty