From dd8e3e305647d94c4773584368a827b6739f0998 Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Mon, 15 Jun 2026 13:31:26 +0200 Subject: [PATCH] Dashboard bug --- modules/purchase_trade/dashboard.py | 31 +++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/modules/purchase_trade/dashboard.py b/modules/purchase_trade/dashboard.py index 405933c..4853b14 100755 --- a/modules/purchase_trade/dashboard.py +++ b/modules/purchase_trade/dashboard.py @@ -193,16 +193,29 @@ class Dashboard(ModelSQL, ModelView): self.chatbot = 'chatbot:' + json.dumps(dial, ensure_ascii=False) logger.info("EXITONCHANGE",self.chatbot) + @staticmethod + def _empty_fx_rates(): + return (None, None, None, None, None, None, None, None, None, None) + + @classmethod + def _find_currency_by_code(cls, code): + Currency = Pool().get('currency.currency') + currencies = Currency.search([('name', '=', code)], limit=1) + if not currencies: + currencies = Currency.search([('code', '=', code)], limit=1) + return currencies[0] if currencies else None + def get_last_five_fx_rates(self, from_code='USD', to_code='EUR'): """ Retourne (dernier_taux, avant_dernier_taux) pour le couple de devises. """ - Currency = Pool().get('currency.currency') CurrencyRate = Pool().get('currency.currency.rate') # Récupérer les devises EUR et USD - from_currency = Currency.search([('name', '=', from_code)])[0] - to_currency = Currency.search([('name', '=', to_code)])[0] + from_currency = self._find_currency_by_code(from_code) + to_currency = self._find_currency_by_code(to_code) + if not from_currency or not to_currency: + return self._empty_fx_rates() # Recherche des taux de la devise de base (ex: USD) rates = CurrencyRate.search( @@ -212,7 +225,7 @@ class Dashboard(ModelSQL, ModelView): ) if not rates: - return None, None, None, None, None + return self._empty_fx_rates() # Calcul du taux EUR/USD # Si la devise principale de la société est EUR, et que le taux stocké est @@ -232,7 +245,13 @@ class Dashboard(ModelSQL, ModelView): # last_rate = 1 / last_rate if last_rate else None # prev_rate = 1 / prev_rate if prev_rate else None - return round(1/f1,6), round(1/f2,6) if f2 else None, round(1/f3,6) if f3 else None, round(1/f4,6) if f4 else None, round(1/f5,6) if f5 else None, d1, d2, d3, d4, d5 + return ( + round(1/f1,6) if f1 else None, + round(1/f2,6) if f2 else None, + round(1/f3,6) if f3 else None, + round(1/f4,6) if f4 else None, + round(1/f5,6) if f5 else None, + d1, d2, d3, d4, d5) def get_tremor(self,name): Date = Pool().get('ir.date') @@ -430,7 +449,7 @@ class Dashboard(ModelSQL, ModelView): News = Pool().get('news.news') Date = Pool().get('ir.date') news_list = News.search([('active', '=', True)], limit=5, order=[('publish_date', 'DESC')]) - last_rate,prev_rate, = self.get_last_five_fx_rates() + last_rate, prev_rate = self.get_last_five_fx_rates()[:2] if last_rate and prev_rate: variation = ((last_rate - prev_rate) / prev_rate) * 100 if prev_rate else 0 direction = "📈" if variation > 0 else "📉"