[FIX]point_of_sale:CORRECTION clients from pos sessions are now considered customers

this is a clean version of the fix made in 577dac5baee5e503baba9f30dff67e69daafa00b
requested here:
https://github.com/odoo/odoo/commit/577dac5baee5e503baba9f30dff67e69daafa00b#r36404308

opw-2148894

closes odoo/odoo#41851

X-original-commit: d57fdda5b0c1423aaa9fcba31cef1dfb52d334f6
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
This commit is contained in:
jerome hanke (jhk)
2019-12-13 13:35:51 +00:00
parent 94e28e1484
commit 70c8fb0cb1
+10 -5
View File
@@ -3,7 +3,8 @@
import time
import logging
import psycopg2
from psycopg2 import sql, DatabaseError
from odoo import api, fields, models, _
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
@@ -504,14 +505,18 @@ class ResPartner(models.Model):
return super().create(vals_list)
def _increase_rank(self, field):
if self.ids:
if self.ids and field in ['customer_rank', 'supplier_rank']:
try:
with self.env.cr.savepoint():
self.env.cr.execute("SELECT "+field+" FROM res_partner WHERE ID IN %(partner_ids)s FOR UPDATE NOWAIT", {'partner_ids': tuple(self.ids)})
self.env.cr.execute("UPDATE res_partner SET "+field+"="+field+"+1 WHERE ID IN %(partner_ids)s", {'partner_ids': tuple(self.ids)})
query = sql.SQL("""
SELECT {field} FROM res_partner WHERE ID IN %(partner_ids)s FOR UPDATE NOWAIT;
UPDATE res_partner SET {field} = {field} + 1
WHERE id IN %(partner_ids)s
""").format(field=sql.Identifier(field))
self.env.cr.execute(query, {'partner_ids': tuple(self.ids)})
for partner in self:
self.env.cache.remove(partner, partner._fields[field])
except psycopg2.DatabaseError as e:
except DatabaseError as e:
if e.pgcode == '55P03':
_logger.debug('Another transaction already locked partner rows. Cannot update partner ranks.')
else: