diff --git a/models/acc_operation.py b/models/acc_operation.py index 2bd2454a7c177a5e01d23479edd5eb0c925aeba2..1b699411cd5b8c1b3dacdc219f6e906fe65c6bab 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -100,8 +100,8 @@ class AccOperation(models.Model): repartition = self.env["acc.repartition.keys"].create({"operation_id": self.id}) data = None - for piority in self.acc_priority_group_ids: - data = piority.compute(data) + for priority in self.acc_priority_group_ids: + data = priority.compute(data) if not data: raise ValidationError( @@ -115,36 +115,36 @@ class AccOperation(models.Model): total_affecte = sum(affect.values()) slot_result = {} - for counter in affect: - counter_id = self.env["acc.counter"].search( - [("name", "=", counter)] - ) + for counter_id in affect: if total_affecte == 0: weight = 0.0 else: - weight = round((affect.get(counter) * 100) / total_affecte, 8) + weight = round( + (affect.get(counter_id) * 100) / total_affecte, 8 + ) - slot_result[counter_id.id] = weight + slot_result[counter_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: + slot_line = [] + for counter 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( + if slot_result[counter] == max_value: + slot_result[counter] -= 0.0000001 + slot_line.append( { "acc_repartition_id": repartition.id, "time_slot": slot, - "weight": slot_result[result], - "acc_counter_id": result, + "weight": slot_result[counter], + "acc_counter_id": counter.id, } ) + self.env["acc.repartition.counter"].create(slot_line) # ------------------------------------------------------ # Computed fields / Search Fields diff --git a/models/acc_priority_group.py b/models/acc_priority_group.py index 4aeec6f8456135608694f0053b7564c428129aa8..7f8b139761e7dd3ef363072207abca982006c6eb 100644 --- a/models/acc_priority_group.py +++ b/models/acc_priority_group.py @@ -158,13 +158,11 @@ class AccPriorityGroup(models.Model): if not data.get(slot).get("affect"): data[slot]["affect"] = {} - for counter in self.acc_priority_group_counter_ids.acc_counter_id.mapped( - "name" - ): + for counter in self.acc_priority_group_counter_ids.acc_counter_id: if prod == 0 or priority_counters_conso_sum == 0: part_a_affecter = 0.0 else: - conso_k = data.get(slot).get("conso").get(counter) + conso_k = data.get(slot).get("conso").get(counter.name) part_a_affecter = min( conso_k, prod * (conso_k / priority_counters_conso_sum) ) diff --git a/models/acc_repartition_counter.py b/models/acc_repartition_counter.py index e88844c81e8d3d8860784ce63e25944bbb6474ee..dd316bf1f4e639d304bace7b2035b912695f9f9d 100644 --- a/models/acc_repartition_counter.py +++ b/models/acc_repartition_counter.py @@ -7,7 +7,7 @@ class AccRepartitionCounter(models.Model): acc_repartition_id = fields.Many2one("acc.repartition.keys", "Clé", required=True) weight = fields.Float(string="Répartition en pourcentage", required=False) - time_slot = fields.Datetime("Horodatage de la clé") + time_slot = fields.Datetime("Horodatage de la clé", required=True) acc_counter_id = fields.Many2one("acc.counter", string="Compteur", required=True) acc_operation_id = fields.Many2one( comodel_name="acc.operation", compute="_compute_operation_id", store=True diff --git a/wizard/acc_repartition_keys_compute_wizard.py b/wizard/acc_repartition_keys_compute_wizard.py index 58237040a08ca55badb84eb1f22e56205e98280e..eb7a3fefc257512afda96153e35836cf8df62561 100644 --- a/wizard/acc_repartition_keys_compute_wizard.py +++ b/wizard/acc_repartition_keys_compute_wizard.py @@ -49,7 +49,6 @@ 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.") @@ -58,13 +57,13 @@ class AccRepartitionKeysComputeWizard(models.TransientModel): 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( description=job_description @@ -75,7 +74,6 @@ 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.")