From ffd2502fb49a0e4910b781a126dd303665004048 Mon Sep 17 00:00:00 2001 From: Robin Heinz Date: Thu, 12 Dec 2019 10:10:35 +0000 Subject: [PATCH] [IMP] point_of_sale: Show customer only and increase customer ranking. Following the removing of the vendor and customer field, when we wanted to display customer in the back end, we saw all. We added a default filter when clicking on the menu button that displays only customer with a customer rank higher than 0. We also increase their customer ranks everytime they make an order in the front end. closes odoo/odoo#41769 Task-id: 2092483 Signed-off-by: pimodoo --- addons/point_of_sale/models/pos_order.py | 15 +++++++++++++++ addons/point_of_sale/views/point_of_sale_view.xml | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index f4f3b103609..4152d0dc333 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -366,6 +366,21 @@ class PosOrder(models.Model): raise UserError(_("Order %s is not fully paid.") % self.name) self.write({'state': 'paid'}) + + if self.partner_id: + try: + with self.env.cr.savepoint(): + self.env.cr.execute("SELECT 'customer_rank' FROM res_partner WHERE ID=%s FOR UPDATE NOWAIT", + (self.partner_id.id,)) + self.env.cr.execute("UPDATE res_partner SET customer_rank = customer_rank +1 WHERE ID=%s", + (self.partner_id.id,)) + self.env.cache.remove(self.partner_id, self.partner_id._fields['customer_rank']) + except psycopg2.DatabaseError as e: + if e.pgcode == '55P03': + _logger.debug('Another transaction already locked partner rows. Cannot update partner ranks.') + else: + raise e + return True def action_pos_order_invoice(self): diff --git a/addons/point_of_sale/views/point_of_sale_view.xml b/addons/point_of_sale/views/point_of_sale_view.xml index 31d9db50398..933233bc9a6 100644 --- a/addons/point_of_sale/views/point_of_sale_view.xml +++ b/addons/point_of_sale/views/point_of_sale_view.xml @@ -17,7 +17,7 @@