Skip to content
Extraits de code Groupes Projets
Valider 36f3c125 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

[MOV] move functions to oacc module

parent 50be1df3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -22,106 +22,6 @@ class AccEnedisCdc(models.Model): ...@@ -22,106 +22,6 @@ class AccEnedisCdc(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Business methods # Business methods
# ------------------------------------------------------ # ------------------------------------------------------
@api.model
def _get_last_month_power_tot(self, operation_id):
"""
Fonction retournant la consommation totale, l'autoconsommation totale
et la production totale du dernier mois.
:return: la somme de la conso totale de tous les consommateurs,
la somme de l autoconso totale de tous les consommateurs,
la sommme de la prod totale de tous les producteurs
la date de début de mois
"""
# Get last date slot recorded
last_record = self._get_last_cdc_record(operation_id)
start_date, end_date = self._get_interval("month", last_record)
end_date_month = end_date + relativedelta(days=1)
query = (
self._select_clause(
date_slot="month", curve_types=["cons", "prod", "autocons"]
)
+ self._from_clause()
+ self._where_clause(
operation_id=operation_id,
start_date=start_date,
end_date=end_date_month,
)
+ self._group_clause(date_slot="month")
+ self._order_clause()
)
self.env.cr.execute(query)
raw_data = self.env.cr.fetchone()
return raw_data[1], raw_data[2], raw_data[3], start_date
@api.model
def _get_last_cdc_record(self, operation_id, partner_id=None):
"""
@param: int operation_id identifiant de l'opération
int partner_id identifiant du contact
@returns: last acc.enedis.cdc record in operations
"""
domain = [("acc_operation_id", "=", operation_id)]
if partner_id:
domain = expression.AND([domain, [("partner_id", "=", partner_id)]])
# Get last date slot recorded
last_record = self.sudo().search(
domain,
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
@api.model
def _get_interval(self, scale, cdc_record):
"""
Fonction retournant une date de début et une date de fin.
Ces dates sont calculées en fonction de l'échelle choisie et du dernier
élément enregistré
- day: la date de début et la date de fin = dernier jour de données
- week: date de fin = fin du jour du dernier jour de données
date de début = date de fin moins 7 jours
- month: date de fin = fin du mois du dernier jour de données
date de début = début du mois du dernier jour de données
- year: date de fin = fin du mois du dernier jour de données
date de début = début de l'année du dernier jour de données
:param str scale: type d'affichage des graphes
(day/week/month/year)
:param object cdc_record: courbe de charge (table acc.enedis.cdc)
@returns: une date de début et une date de fin
"""
# Convert end datetime to timezone
cdc_datetime = fields.Datetime.context_timestamp(self, cdc_record.date_slot)
start_month, end_month = date_utils.get_month(cdc_datetime)
if scale == "year":
end_date = end_month
start_date = start_month.replace(month=1)
elif scale == "month":
end_date = end_month
start_date = start_month
elif scale == "week":
end_date = cdc_datetime.date()
start_date = cdc_datetime.date() - relativedelta(days=6)
elif scale == "day":
end_date = cdc_datetime.date()
start_date = cdc_datetime.date()
else:
raise ValueError(
_(
"La période d'affichage est incorrecte : %s, "
"valeurs attendues : day/week/month/year"
)
% scale
)
return start_date, end_date
@api.model @api.model
def _get_step_from_date(self, start_date, end_date): def _get_step_from_date(self, start_date, end_date):
""" """
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter