From 40dab4b5a385f0e18b9640116d0b049f37e16bc3 Mon Sep 17 00:00:00 2001 From: "Victor Piryns (pivi)" Date: Wed, 10 Jan 2024 10:39:56 +0100 Subject: [PATCH] [PERF] point_of_sale,pos_sale: better usage of the currency cache Tune currency cache usage to enhance entry sharing by converting date_order from datetimes to dates. This change aligns with currency rates being queried based on dates, enabling the cache to consolidate entries for identical currency rates on the same date. This optimization reduces the number of entries and queries, especially for orders made on the same date but different times. closes odoo/odoo#148825 Signed-off-by: Joseph Caburnay (jcb) --- addons/point_of_sale/models/pos_order.py | 2 +- addons/pos_sale/models/pos_order.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index b361860278e..11088a49000 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -381,7 +381,7 @@ class PosOrder(models.Model): @api.depends('date_order', 'company_id', 'currency_id', 'company_id.currency_id') def _compute_currency_rate(self): for order in self: - order.currency_rate = self.env['res.currency']._get_conversion_rate(order.company_id.currency_id, order.currency_id, order.company_id, order.date_order) + order.currency_rate = self.env['res.currency']._get_conversion_rate(order.company_id.currency_id, order.currency_id, order.company_id, order.date_order.date()) @api.depends('lines.is_total_cost_computed') def _compute_is_total_cost_computed(self): diff --git a/addons/pos_sale/models/pos_order.py b/addons/pos_sale/models/pos_order.py index 534ccc869a3..0b666f54b73 100644 --- a/addons/pos_sale/models/pos_order.py +++ b/addons/pos_sale/models/pos_order.py @@ -26,7 +26,7 @@ class PosOrder(models.Model): def _compute_currency_rate(self): for order in self: date_order = order.date_order or fields.Datetime.now() - order.currency_rate = self.env['res.currency']._get_conversion_rate(order.company_id.currency_id, order.currency_id, order.company_id, date_order) + order.currency_rate = self.env['res.currency']._get_conversion_rate(order.company_id.currency_id, order.currency_id, order.company_id, date_order.date()) def _prepare_invoice_vals(self): invoice_vals = super(PosOrder, self)._prepare_invoice_vals()