diff --git a/stock_inventory_preparation_filter/README.rst b/stock_inventory_preparation_filter/README.rst index 02d4c20cb..5c824d859 100644 --- a/stock_inventory_preparation_filter/README.rst +++ b/stock_inventory_preparation_filter/README.rst @@ -28,6 +28,7 @@ Extended Inventory Preparation Filters Includes more options for making an inventory out of: * Multiple products. +* Products filtered by a domain. * Products of a category. * Multiple lots diff --git a/stock_inventory_preparation_filter/models/stock_inventory.py b/stock_inventory_preparation_filter/models/stock_inventory.py index cd736122c..17a42d1fb 100644 --- a/stock_inventory_preparation_filter/models/stock_inventory.py +++ b/stock_inventory_preparation_filter/models/stock_inventory.py @@ -4,6 +4,7 @@ from odoo import _, api, fields, models from odoo.addons import decimal_precision as dp +from odoo.tools.safe_eval import safe_eval class StockInventoryEmptyLines(models.Model): @@ -41,6 +42,7 @@ class StockInventory(models.Model): res_filters = super(StockInventory, self)._selection_filter() res_filters.append(('categories', _('Selected Categories'))) res_filters.append(('products', _('Selected Products'))) + res_filters.append(('domain', _('Filtered Products'))) for res_filter in res_filters: if res_filter[0] == 'lot': res_filters.append(('lots', _('Selected Lots'))) @@ -60,6 +62,7 @@ class StockInventory(models.Model): empty_line_ids = fields.One2many( comodel_name='stock.inventory.line.empty', inverse_name='inventory_id', string='Capture Lines') + product_domain = fields.Char('Domain', default=[('name', 'ilike', '')]) @api.model def _get_inventory_lines_values(self): @@ -85,6 +88,14 @@ class StockInventory(models.Model): inventory.lot_id = lot vals += super(StockInventory, inventory)._get_inventory_lines_values() + elif self.filter == 'domain': + domain = safe_eval(self.product_domain) + products = self.env['product.product'].search(domain) + inventory.filter = 'product' + for product in products: + inventory.product_id = product + vals += super( + StockInventory, inventory)._get_inventory_lines_values() elif self.filter == 'empty': tmp_lines = {} for line in self.empty_line_ids: diff --git a/stock_inventory_preparation_filter/readme/DESCRIPTION.rst b/stock_inventory_preparation_filter/readme/DESCRIPTION.rst index 7eb4d0bf4..33779664f 100644 --- a/stock_inventory_preparation_filter/readme/DESCRIPTION.rst +++ b/stock_inventory_preparation_filter/readme/DESCRIPTION.rst @@ -1,6 +1,7 @@ Includes more options for making an inventory out of: * Multiple products. +* Products filtered by a domain. * Products of a category. * Multiple lots diff --git a/stock_inventory_preparation_filter/static/description/index.html b/stock_inventory_preparation_filter/static/description/index.html index 82c5fb771..039f44545 100644 --- a/stock_inventory_preparation_filter/static/description/index.html +++ b/stock_inventory_preparation_filter/static/description/index.html @@ -371,6 +371,7 @@ ul.auto-toc {
Includes more options for making an inventory out of: