diff --git a/addons/stock/models/stock_inventory.py b/addons/stock/models/stock_inventory.py index e7356cec98f9dff036e5757915408004d5f34e12..583a2f63d4898bc08a6b50ed3bc1020ce58a6b80 100644 --- a/addons/stock/models/stock_inventory.py +++ b/addons/stock/models/stock_inventory.py @@ -481,8 +481,14 @@ class InventoryLine(models.Model): return res def _check_no_duplicate_line(self): - # Performance: restrict domain on 'not null' fields of stock_inventory_line. - domain = [('product_id', 'in', self.product_id.ids), ('location_id', 'in', self.location_id.ids)] + domain = [ + ('product_id', 'in', self.product_id.ids), + ('location_id', 'in', self.location_id.ids), + '|', ('partner_id', 'in', self.partner_id.ids), ('partner_id', '=', None), + '|', ('package_id', 'in', self.package_id.ids), ('package_id', '=', None), + '|', ('prod_lot_id', 'in', self.prod_lot_id.ids), ('prod_lot_id', '=', None), + '|', ('inventory_id', 'in', self.inventory_id.ids), ('inventory_id', '=', None), + ] groupby_fields = ['product_id', 'location_id', 'partner_id', 'package_id', 'prod_lot_id', 'inventory_id'] lines_count = {} for group in self.read_group(domain, ['product_id'], groupby_fields, lazy=False):