From 76fc5b772d3fbff282a2b8042770126024036f19 Mon Sep 17 00:00:00 2001 From: Robin Heinz Date: Thu, 18 Jul 2019 14:20:32 +0000 Subject: [PATCH] [IMP] point_of_sale: new state on session To have a better flow when a session needs to be cash controled and really opened, we've added a state on the session which is 'new_session' to identify the new sessions that have not been cash controled yet. TASK-ID: 1934784 closes odoo/odoo#33948 Signed-off-by: pimodoo --- addons/point_of_sale/models/pos_config.py | 2 +- addons/point_of_sale/models/pos_session.py | 7 ++++--- addons/point_of_sale/views/point_of_sale_dashboard.xml | 5 ++++- addons/point_of_sale/views/pos_session_view.xml | 10 ++++++---- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py index e95e14410d4..38214d8baa8 100644 --- a/addons/point_of_sale/models/pos_config.py +++ b/addons/point_of_sale/models/pos_config.py @@ -250,7 +250,7 @@ class PosConfig(models.Model): @api.depends('session_ids') def _compute_current_session_user(self): for pos_config in self: - session = pos_config.session_ids.filtered(lambda s: s.state in ['opening_control', 'opened', 'closing_control'] and not s.rescue) + session = pos_config.session_ids.filtered(lambda s: s.state in ['new_session', 'opening_control', 'opened', 'closing_control'] and not s.rescue) if session: pos_config.pos_session_username = session[0].user_id.name pos_config.pos_session_state = session[0].state diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index 5326205bd5c..420fe5bc20c 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -13,6 +13,7 @@ class PosSession(models.Model): _inherit = ['mail.thread', 'mail.activity.mixin'] POS_SESSION_STATE = [ + ('new_session', 'New Session'), ('opening_control', 'Opening Control'), # method action_pos_session_open ('opened', 'In Progress'), # method action_pos_session_closing_control ('closing_control', 'Closing Control'), # method action_pos_session_close @@ -41,7 +42,7 @@ class PosSession(models.Model): orders_to_reconcile.sudo()._reconcile_payments() company_id = fields.Many2one('res.company', related='config_id.company_id', string="Company", readonly=True) - + config_id = fields.Many2one( 'pos.config', string='Point of Sale', help="The physical point of sale you will use.", @@ -62,7 +63,7 @@ class PosSession(models.Model): state = fields.Selection( POS_SESSION_STATE, string='Status', required=True, readonly=True, - index=True, copy=False, default='opening_control') + index=True, copy=False, default='new_session') sequence_number = fields.Integer(string='Order Sequence Number', help='A sequence number that is incremented with each order', default=1) login_number = fields.Integer(string='Login Sequence Number', help='A sequence number that is incremented each time a user resumes the pos session', default=0) @@ -253,7 +254,7 @@ class PosSession(models.Model): def action_pos_session_open(self): # second browse because we need to refetch the data from the DB for cash_register_id # we only open sessions that haven't already been opened - for session in self.filtered(lambda session: session.state == 'opening_control'): + for session in self.filtered(lambda session: session.state in ('new_session', 'opening_control')): values = {} if not session.start_at: values['start_at'] = fields.Datetime.now() diff --git a/addons/point_of_sale/views/point_of_sale_dashboard.xml b/addons/point_of_sale/views/point_of_sale_dashboard.xml index 44179abc6a7..89cb1438f61 100644 --- a/addons/point_of_sale/views/point_of_sale_dashboard.xml +++ b/addons/point_of_sale/views/point_of_sale_dashboard.xml @@ -59,6 +59,9 @@
+ +
New session
+
Opening Control
@@ -81,7 +84,7 @@
- + diff --git a/addons/point_of_sale/views/pos_session_view.xml b/addons/point_of_sale/views/pos_session_view.xml index d911880c2ce..875d92f897b 100644 --- a/addons/point_of_sale/views/pos_session_view.xml +++ b/addons/point_of_sale/views/pos_session_view.xml @@ -6,7 +6,10 @@
-
@@ -81,7 +83,7 @@
- +