From bfcc05ccb9555a3b3dc88135b19445475dd305af Mon Sep 17 00:00:00 2001 From: Julien - Le Filament <julien@le-filament.com> Date: Mon, 4 Nov 2024 11:56:42 +0100 Subject: [PATCH] 16.0 review --- models/acc_operation.py | 35 ++++++++++--------- wizard/acc_repartition_keys_compute_wizard.py | 19 ++++++++++ 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/models/acc_operation.py b/models/acc_operation.py index f43c4c3..2bd2454 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -108,10 +108,13 @@ class AccOperation(models.Model): _("Pas de données brute pour le mois précedent présente") ) # todo : ajouter la verification de coherence des données + for slot in data: affect = data.get(slot).get("affect") if affect: total_affecte = sum(affect.values()) + + slot_result = {} for counter in affect: counter_id = self.env["acc.counter"].search( [("name", "=", counter)] @@ -120,29 +123,29 @@ class AccOperation(models.Model): weight = 0.0 else: 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( { "acc_repartition_id": repartition.id, "time_slot": slot, - "weight": weight, - "acc_counter_id": counter_id.id, - } - ) - 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, + "weight": slot_result[result], + "acc_counter_id": result, } ) + # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ diff --git a/wizard/acc_repartition_keys_compute_wizard.py b/wizard/acc_repartition_keys_compute_wizard.py index e4e830e..5823704 100644 --- a/wizard/acc_repartition_keys_compute_wizard.py +++ b/wizard/acc_repartition_keys_compute_wizard.py @@ -49,9 +49,21 @@ class AccRepartitionKeysComputeWizard(models.TransientModel): # ------------------------------------------------------ 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() 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 " try: self.operation_id.with_delay( @@ -63,7 +75,14 @@ class AccRepartitionKeysComputeWizard(models.TransientModel): return {"type": "ir.actions.act_window_close"} 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 " + try: self.operation_id.with_delay( description=job_description -- GitLab