如何获取单个库存的产品可用数量(Odoo11)
How to get products available quantity for individual stock (Odoo11)
我正在使用 odoo11(python3) 和 开发自定义模块。
我想获取单个仓库的产品数量(手动或预测)。
只是我 select 任何一个仓库并显示该仓库的产品数量。
其实我的目标是两件事
1.Products 总可用数量
2.Products 可用数量基于位置
这是我的代码
class Threshold(models.Model):
_name="threshold.threshold"
main_location=fields.Many2many("stock.warehouse", string="Main Location")
product=fields.Many2many("product.template", string="Product")
category=fields.Many2one("product.category", string="Category")
attribute=fields.Many2many("product.attribute", string="Attribute")
threshold_value=fields.Integer(string="Threshold Value")
transfer_quantity=fields.Integer(string="Transfer Quantity")
status_button=fields.Selection([('0','Active'),('1','Dissmiss')], default='0', index=True, string="Status")
threshold_selection=fields.Selection([('0','Product'),('1','Category'),], default= '0', index=True, string="Threshold Selection")
product_quantity=fields.Integer(compute="_product_based_on_warehouse", store=True)
@api.depends('main_location','product_quantity')
def _product_based_on_warehouse(self):
count_products = 0
self.env['product.template'].with_context(warehouse=self.main_location).search([], limit=1)
self.product_quantity=products print(f'Product Quantity: {self.product_quantity}')
您必须 load/browse 具有特殊上下文值的产品 warehouse
才能获取所有、一个或多个仓库的所有数量值。
# load all products and use a warehouse id
products = self.env['product.product'].with_context(warehouse=1).search([])
# load one product and use a warehouse name
products = self.env['product.product'].with_context(warehouse="Main Warehouse").search([], limit=1)
# load product with ID 1 and use a list of warehouse IDs
products = self.env['product.product'].with_context(warehouse=[1,2]).browse([1])
您可以使用产品的 4 个数量字段来获取您需要的数量值。还有一个选项可以使用 location
作为上下文值,方式与 warehouse
.
相同
如果您想知道这是从哪里来的,请查看方法 _compute_quantities
、_compute_quantities_dict
和最重要的方法 _get_domain_locations
.
我正在使用 odoo11(python3) 和 开发自定义模块。
我想获取单个仓库的产品数量(手动或预测)。
只是我 select 任何一个仓库并显示该仓库的产品数量。 其实我的目标是两件事 1.Products 总可用数量 2.Products 可用数量基于位置 这是我的代码
class Threshold(models.Model):
_name="threshold.threshold"
main_location=fields.Many2many("stock.warehouse", string="Main Location")
product=fields.Many2many("product.template", string="Product")
category=fields.Many2one("product.category", string="Category")
attribute=fields.Many2many("product.attribute", string="Attribute")
threshold_value=fields.Integer(string="Threshold Value")
transfer_quantity=fields.Integer(string="Transfer Quantity")
status_button=fields.Selection([('0','Active'),('1','Dissmiss')], default='0', index=True, string="Status")
threshold_selection=fields.Selection([('0','Product'),('1','Category'),], default= '0', index=True, string="Threshold Selection")
product_quantity=fields.Integer(compute="_product_based_on_warehouse", store=True)
@api.depends('main_location','product_quantity')
def _product_based_on_warehouse(self):
count_products = 0
self.env['product.template'].with_context(warehouse=self.main_location).search([], limit=1)
self.product_quantity=products print(f'Product Quantity: {self.product_quantity}')
您必须 load/browse 具有特殊上下文值的产品 warehouse
才能获取所有、一个或多个仓库的所有数量值。
# load all products and use a warehouse id
products = self.env['product.product'].with_context(warehouse=1).search([])
# load one product and use a warehouse name
products = self.env['product.product'].with_context(warehouse="Main Warehouse").search([], limit=1)
# load product with ID 1 and use a list of warehouse IDs
products = self.env['product.product'].with_context(warehouse=[1,2]).browse([1])
您可以使用产品的 4 个数量字段来获取您需要的数量值。还有一个选项可以使用 location
作为上下文值,方式与 warehouse
.
如果您想知道这是从哪里来的,请查看方法 _compute_quantities
、_compute_quantities_dict
和最重要的方法 _get_domain_locations
.