From 6913d697f0eac8e56acf60d8e97f67ce63f5f883 Mon Sep 17 00:00:00 2001 From: Juliana <juliana@le-filament.com> Date: Mon, 11 Sep 2023 14:55:42 +0200 Subject: [PATCH] [UPD]Update function find date --- models/acc_operation.py | 62 ++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/models/acc_operation.py b/models/acc_operation.py index fcbc99a..1dbfd7c 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -16,13 +16,14 @@ class AccOperation(models.Model): _inherit = "acc.operation" def prepare_values(self): + last_record = self.get_the_last_day() - date_day_start, date_day_end = self.get_last_day("day") + date_day_start, date_day_end = self.get_last_day("day", last_record) last_day = date_day_start.strftime("%d %B %Y") date_day_start = date_day_start.strftime("%Y-%m-%d") date_day_end = date_day_end.strftime("%Y-%m-%d") - date_week_start, date_week_end = self.get_last_day("week") + date_week_start, date_week_end = self.get_last_day("week", last_record) last_week = ( date_week_start.strftime("%d %B %Y") + "-" @@ -31,7 +32,7 @@ class AccOperation(models.Model): date_week_start = date_week_start.strftime("%Y-%m-%d") date_week_end = date_week_end.strftime("%Y-%m-%d") - date_month_start, date_month_end = self.get_last_day("month") + date_month_start, date_month_end = self.get_last_day("month", last_record) last_month = ( date_month_start.strftime("%d %B %Y") + "-" @@ -40,7 +41,7 @@ class AccOperation(models.Model): date_month_start = date_month_start.strftime("%Y-%m-%d") date_month_end = date_month_end.strftime("%Y-%m-%d") - date_semestre_start, date_semestre_end = self.get_last_day("semestre") + date_semestre_start, date_semestre_end = self.get_last_day("semestre", last_record) last_semester = ( date_semestre_start.strftime("%d %B %Y") + "-" @@ -49,7 +50,7 @@ class AccOperation(models.Model): date_semestre_start = date_semestre_start.strftime("%Y-%m-%d") date_semestre_end = date_semestre_end.strftime("%Y-%m-%d") - date_year_start, date_year_end = self.get_last_day("year") + date_year_start, date_year_end = self.get_last_day("year", last_record) last_year = ( date_year_start.strftime("%d %B %Y") + "- " @@ -107,7 +108,8 @@ class AccOperation(models.Model): :return: la somme de l'autoconso totale de tous les consommateurs """ # Récupère les dates du dernier mois disponible - date_start, date_end = self.get_last_day("month") + last_record = self.get_the_last_day() + date_start, date_end = self.get_last_day("month", last_record) # Conso Totale autoconso_ids = self.env["acc.enedis.cdc"].search( [ @@ -131,7 +133,8 @@ class AccOperation(models.Model): la date de début de mois """ # Récupère les dates du dernier mois disponible - date_start, date_end = self.get_last_day("month") + last_record = self.get_the_last_day() + date_start, date_end = self.get_last_day("month", last_record) query = """ SELECT date_trunc('month', A.date_slot) AS date_slot, @@ -176,7 +179,26 @@ class AccOperation(models.Model): return puiss_tot - def get_last_day(self, scale): + def get_the_last_day(self): + """ + Fonction retournant la date du dernier enregistrement + """ + + # Get last date slot recorded + last_record = self.env["acc.enedis.cdc"].search( + [ + ("acc_operation_id", "in", self.ids), + ], + limit=1, + order="date_slot DESC", + ) + + if not last_record: + raise ValidationError(_("L'opération ne possède pas de données")) + + return last_record + + def get_last_day(self, scale, last_record): """ Fonction retournant une date de début et une date de fin. Ces dates sont calculées en fonction de l'échelle choisie @@ -205,16 +227,16 @@ class AccOperation(models.Model): """ # Get last date slot recorded - last_record = self.env["acc.enedis.cdc"].search( - [ - ("acc_operation_id", "in", self.ids), - ], - limit=1, - order="date_slot DESC", - ) - - if not last_record: - raise ValidationError(_("L'opération ne possède pas de données")) + # last_record = self.env["acc.enedis.cdc"].search( + # [ + # ("acc_operation_id", "in", self.ids), + # ], + # limit=1, + # order="date_slot DESC", + # ) + # + # if not last_record: + # raise ValidationError(_("L'opération ne possède pas de données")) # Convert end datetime to timezone last_day_start = last_record.date_slot.replace(hour=0, minute=0, second=0) last_day_end = last_day_start + relativedelta(days=1) @@ -630,8 +652,8 @@ class AccOperation(models.Model): chart_data.update(chart_data_prod) result_graph["chart_data"] = chart_data - - date_deb, date_max = self.get_last_day("day") + last_record = self.get_the_last_day() + date_deb, date_max = self.get_last_day("day", last_record) date_max = date_max.strftime("%d/%m/%Y") date_min = self.get_first_day() date_min = date_min.strftime("%d/%m/%Y") -- GitLab