Skip to content
Extraits de code Groupes Projets
Valider bfcc05cc rédigé par Julien - Le Filament's avatar Julien - Le Filament
Parcourir les fichiers

16.0 review

parent 81fae1c8
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!1316.0 review
...@@ -108,10 +108,13 @@ class AccOperation(models.Model): ...@@ -108,10 +108,13 @@ class AccOperation(models.Model):
_("Pas de données brute pour le mois précedent présente") _("Pas de données brute pour le mois précedent présente")
) )
# todo : ajouter la verification de coherence des données # todo : ajouter la verification de coherence des données
for slot in data: for slot in data:
affect = data.get(slot).get("affect") affect = data.get(slot).get("affect")
if affect: if affect:
total_affecte = sum(affect.values()) total_affecte = sum(affect.values())
slot_result = {}
for counter in affect: for counter in affect:
counter_id = self.env["acc.counter"].search( counter_id = self.env["acc.counter"].search(
[("name", "=", counter)] [("name", "=", counter)]
...@@ -120,29 +123,29 @@ class AccOperation(models.Model): ...@@ -120,29 +123,29 @@ class AccOperation(models.Model):
weight = 0.0 weight = 0.0
else: else:
weight = round((affect.get(counter) * 100) / total_affecte, 8) weight = round((affect.get(counter) * 100) / total_affecte, 8)
slot_result[counter_id.id] = weight
total_weight = sum(slot_result.values())
max_value = None
if total_weight > 100.0:
max_value = max(slot_result.values())
for result in slot_result:
if max_value is not None:
if slot_result[result] == max_value:
slot_result[result] -= 0.0000001
self.env["acc.repartition.counter"].create( self.env["acc.repartition.counter"].create(
{ {
"acc_repartition_id": repartition.id, "acc_repartition_id": repartition.id,
"time_slot": slot, "time_slot": slot,
"weight": weight, "weight": slot_result[result],
"acc_counter_id": counter_id.id, "acc_counter_id": result,
}
)
else:
# aucune consommation n a été affecté, on envoi des clé a zero
for counter in data.get(slot).get("conso"):
counter_id = self.env["acc.counter"].search(
[("name", "=", counter)]
)
self.env["acc.repartition.counter"].create(
{
"acc_repartition_id": repartition.id,
"time_slot": slot,
"weight": 0,
"acc_counter_id": counter_id.id,
} }
) )
# ------------------------------------------------------ # ------------------------------------------------------
# Computed fields / Search Fields # Computed fields / Search Fields
# ------------------------------------------------------ # ------------------------------------------------------
......
...@@ -49,9 +49,21 @@ class AccRepartitionKeysComputeWizard(models.TransientModel): ...@@ -49,9 +49,21 @@ class AccRepartitionKeysComputeWizard(models.TransientModel):
# ------------------------------------------------------ # ------------------------------------------------------
def send_keys(self): def send_keys(self):
if not self.operation_id.acc_priority_group_ids:
raise ValidationError(
_("Aucune priorité n'est définie pour cette opération.")
)
self.operation_id.action_send_repartition_keys() self.operation_id.action_send_repartition_keys()
def get_csv(self): def get_csv(self):
if not self.operation_id.acc_priority_group_ids:
raise ValidationError(
_("Aucune priorité n'est définie pour cette opération.")
)
job_description = f"{self.operation_id.name} - Generate repartition CSV " job_description = f"{self.operation_id.name} - Generate repartition CSV "
try: try:
self.operation_id.with_delay( self.operation_id.with_delay(
...@@ -63,7 +75,14 @@ class AccRepartitionKeysComputeWizard(models.TransientModel): ...@@ -63,7 +75,14 @@ class AccRepartitionKeysComputeWizard(models.TransientModel):
return {"type": "ir.actions.act_window_close"} return {"type": "ir.actions.act_window_close"}
def compute_keys(self): def compute_keys(self):
if not self.operation_id.acc_priority_group_ids:
raise ValidationError(
_("Aucune priorité n'est définie pour cette opération.")
)
job_description = f"{self.operation_id.name} - Generate repartition key " job_description = f"{self.operation_id.name} - Generate repartition key "
try: try:
self.operation_id.with_delay( self.operation_id.with_delay(
description=job_description description=job_description
......
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