diff --git a/addons/point_of_sale/wizard/pos_details.py b/addons/point_of_sale/wizard/pos_details.py index 3b8c236fccc..4153ae61c9b 100644 --- a/addons/point_of_sale/wizard/pos_details.py +++ b/addons/point_of_sale/wizard/pos_details.py @@ -9,7 +9,25 @@ class PosDetails(models.TransientModel): _name = 'pos.details.wizard' _description = 'Open Sale Details Report' - start_date = fields.Datetime(required=True, default=fields.Datetime.now) + def _default_start_date(self): + """ Find the earliest start_date of the latests sessions """ + # restrict to configs available to the user + config_ids = self.env['pos.config'].search([]).ids + # exclude configs has not been opened for 2 days + self.env.cr.execute(""" + SELECT + max(start_at) as start, + config_id + FROM pos_session + WHERE config_id = ANY(%s) + AND start_at > (NOW() - INTERVAL '2 DAYS') + GROUP BY config_id + """, (config_ids,)) + latest_start_dates = [res['start'] for res in self.env.cr.dictfetchall()] + # earliest of the latest sessions + return latest_start_dates and min(latest_start_dates) or fields.Datetime.now() + + start_date = fields.Datetime(required=True, default=_default_start_date) end_date = fields.Datetime(required=True, default=fields.Datetime.now) pos_config_ids = fields.Many2many('pos.config', 'pos_detail_configs', default=lambda s: s.env['pos.config'].search([]))