diff --git a/addons/pos_restaurant/models/pos_config.py b/addons/pos_restaurant/models/pos_config.py index 20d37ec1338..3316be8ae67 100644 --- a/addons/pos_restaurant/models/pos_config.py +++ b/addons/pos_restaurant/models/pos_config.py @@ -38,7 +38,13 @@ class PosConfig(models.Model): def get_tables_order_count(self): """ """ self.ensure_one() + tables = self.env['restaurant.table'].search([('floor_id.pos_config_id', 'in', self.ids)]) + domain = [('state', '=', 'draft'), ('table_id', 'in', tables.ids)] + + order_stats = self.env['pos.order'].read_group(domain, ['table_id'], 'table_id') + orders_map = dict((s['table_id'][0], s['table_id_count']) for s in order_stats) + result = [] - for table in self.floor_ids.table_ids.filtered(lambda t: t.active == True): - result.append({'id': table.id, 'orders': self.env['pos.order'].search_count([('state', '=', 'draft'), ('table_id', '=', table.id)])}) + for table in tables: + result.append({'id': table.id, 'orders': orders_map.get(table.id, 0)}) return result diff --git a/addons/pos_restaurant/models/pos_order.py b/addons/pos_restaurant/models/pos_order.py index 8f160c79917..70966ea47ba 100644 --- a/addons/pos_restaurant/models/pos_order.py +++ b/addons/pos_restaurant/models/pos_order.py @@ -17,7 +17,7 @@ class PosOrderLine(models.Model): class PosOrder(models.Model): _inherit = 'pos.order' - table_id = fields.Many2one('restaurant.table', string='Table', help='The table where this order was served') + table_id = fields.Many2one('restaurant.table', string='Table', help='The table where this order was served', index=True) customer_count = fields.Integer(string='Guests', help='The amount of customers that have been served by this order.') multiprint_resume = fields.Char()