[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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user