diff --git a/models/acc_operation.py b/models/acc_operation.py index bd62b8161ca432d163cd12934515a5f26dfa6dcb..4c203b27e6a0af90508a1f10f0f971305820b4c4 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -90,11 +90,14 @@ class AccOperation(models.Model): - date de début opération """ self._check_access_api() + # TODO: Update to get curves only for existing periods # Si pas de PRM sélectionnés if not usage_point_cons_ids and not usage_point_prod_ids: - usage_point_cons_ids = self.acc_delivery_ids - usage_point_prod_ids = self.acc_injection_ids + usage_point_cons_ids = self.acc_delivery_period_ids.mapped("acc_counter_id") + usage_point_prod_ids = self.acc_injection_period_ids.mapped( + "acc_counter_id" + ) message = "" message += ( @@ -236,6 +239,7 @@ class AccOperation(models.Model): de mois entre la date de début de contrat et la date du jour. Puis récupération des données de tous les mois """ + # TODO: Update to get curves only for existing periods nb_months = (date.today().year - self.date_start_contract.year) * 12 + ( date.today().month - self.date_start_contract.month ) @@ -258,6 +262,7 @@ class AccOperation(models.Model): - liste des PRM - date de début opération """ + # TODO : refactor, too complex self._check_access_api() message = "" message += ( @@ -282,12 +287,11 @@ class AccOperation(models.Model): if usage_point["end"] != "9999-12-31" else False ) - usage_id = self.env["acc.counter"].search( - [ - ("acc_operation_id", "=", self.id), - ("name", "=", usage_point["usage_point_id"]), - ] - ) + usage_point_prm_type = False + if usage_point["type"] == "CONS": + usage_point_prm_type = "delivery" + elif usage_point["type"] == "PROD": + usage_point_prm_type = "injection" message += ( "<br/>PRM " + usage_point["usage_point_id"] @@ -297,50 +301,50 @@ class AccOperation(models.Model): + usage_point["end"] + "<br/>" ) - if usage_id and len(usage_id) == 1: + counter_id = self.env["acc.counter"].search( + [ + ("acc_operation_id", "=", self.id), + ("name", "=", usage_point["usage_point_id"]), + ] + ) + if counter_id and len(counter_id) == 1: message += "PRM existe dans Odoo<br/>" - if not usage_id.date_start_contract: - usage_id.date_start_contract = usage_point_start + counter_period_ids = counter_id.period_ids + if counter_period_ids.filtered( + lambda p: p.date_start == usage_point_start + and p.date_end == usage_point_end + ): message += ( - "mise à jour date de début " + usage_point["start"] + "<br/>" + "période existante avec les mêmes dates, pas de modif<br/>" ) - elif usage_id.date_start_contract != usage_point_start: + elif counter_period_ids.filtered( + lambda p: p.date_start == usage_point_start + ): + counter_period_ids.filtered( + lambda p: p.date_start == usage_point_start + ).date_end = usage_point_end message += ( - "date de début ne correspond pas, " - "merci de vérifier manuellement ce PRM : " - "date de début Odoo : " - + fields.Date.to_string(usage_id.date_start_contract) - + "<br/>" + "période existante avec la même date de début, mais date de " + "fin différente, mise à jour date de fin<br/>" ) - if usage_point_end and not usage_id.date_end_contract: - usage_id.date_end_contract = usage_point_end - message += ( - "mise à jour date de fin : " + usage_point["end"] + "<br/>" + else: + self.env["acc.counter.period"].create( + { + "acc_counter_id": counter_id.id, + "prm_type": usage_point_prm_type, + "acc_operation_id": self.id, + "date_start": usage_point_start, + "date_end": usage_point_end, + } ) - elif usage_id.date_end_contract != usage_point_end: message += ( - "date de fin ne correspond pas" - ", merci de vérifier manuellement ce PRM : " - "date de fin Odoo : " - + fields.Date.to_string(usage_id.date_end_contract) - + "<br/>" + "période inexistante avec les mêmes dates : création<br/>" ) - if usage_point["type"] == "CONS" and not usage_id.is_delivery: - usage_id.is_delivery = True - message += "PRM configuré comme point de soutirage <br/>" - if usage_point["type"] == "PROD" and not usage_id.is_injection: - usage_id.is_injection = True - message += "PRM configuré comme point d'injection <br/>" - elif len(usage_id) > 1: + elif len(counter_id) > 1: message += "Plusieurs PRMs trouvés avec ce numéro - pas de modif<br/>" else: message += "PRM n'existe pas : Création ...<br/>" - is_delivery = False - is_injection = False - if usage_point["type"] == "CONS": - is_delivery = True - if usage_point["type"] == "PROD": - is_injection = True + if usage_point_prm_type == "injection": # Si la date de l'opération n'est pas renseignée ou # après la date de démarrage du point d'injection # alors on force la date à celle du point d'injection @@ -349,25 +353,29 @@ class AccOperation(models.Model): or self.date_start_contract > usage_point_start ): self.date_start_contract = usage_point_start - usage_id = self.env["acc.counter"].create( + counter_id = self.env["acc.counter"].create( { "name": usage_point["usage_point_id"], - "is_delivery": is_delivery, - "is_injection": is_injection, + } + ) + self.env["acc.counter.period"].create( + { + "acc_counter_id": counter_id.id, + "prm_type": usage_point_prm_type, "acc_operation_id": self.id, - "date_start_contract": usage_point_start, - "date_end_contract": usage_point_end, + "date_start": usage_point_start, + "date_end": usage_point_end, } ) message += "Fin de la création du PRM<br/>" - if usage_point["type"] == "PROD": + if usage_point_prm_type == "injection": if usage_point["usage_point_id"] not in list_injection: list_injection.append(usage_point["usage_point_id"]) - if usage_point["type"] == "CONS": + if usage_point_prm_type == "delivery": if usage_point["usage_point_id"] not in list_soutirage: list_soutirage.append(usage_point["usage_point_id"]) - message += "<p>LISTE TOTAL DE PRMs: </br>" "PRM Injection </br>" + message += "<p>LISTE TOTAL DE PRMs: </br>PRM Injection</br>" i = 1 for inj in list_injection: @@ -375,7 +383,7 @@ class AccOperation(models.Model): i += 1 message += "Total: " + str(len(list_injection)) + "</br>" - message += "<br/>PRM Soutirage <br/>" + message += "<br/>PRM Soutirage<br/>" i = 1 for inj in list_soutirage: message += str(i) + " - " + inj + "<br/>" diff --git a/wizards/acc_operation_wizard.py b/wizards/acc_operation_wizard.py index 8f5ed7de8de0da9db9ed5096a3fa6575506143fe..087685419d2a044ba714ff217c424b70f8d42bf1 100644 --- a/wizards/acc_operation_wizard.py +++ b/wizards/acc_operation_wizard.py @@ -30,7 +30,8 @@ class AccOperationWizard(models.TransientModel): relation="acc_counter_cons_rel", column1="cons_id", column2="op_id", - domain=[("is_delivery", "=", True)], + # TODO: rework domain ? + # domain=[("prm_type", "=", "injection")], string="PRM de soutirage", ) prm_prod_ids = fields.Many2many( @@ -38,7 +39,8 @@ class AccOperationWizard(models.TransientModel): relation="acc_counter_prod_rel", column1="prod_id", column2="op_id", - domain=[("is_injection", "=", True)], + # TODO: rework domain ? + # domain=[("is_injection", "=", True)], string="PRM d'injection", ) diff --git a/wizards/acc_operation_wizard_confirm.py b/wizards/acc_operation_wizard_confirm.py index 463d401f1a77373384bb1e4033534b6795ae0994..b9754d18f5945a64f3450dc1ab1f3531eb1b560b 100644 --- a/wizards/acc_operation_wizard_confirm.py +++ b/wizards/acc_operation_wizard_confirm.py @@ -19,7 +19,8 @@ class AccOperationWizardConfirm(models.TransientModel): relation="acc_counter_cons_confirm_rel", column1="cons_id", column2="op_id", - domain=[("is_delivery", "=", True)], + # TODO: rework domain ? + # domain=[("is_delivery", "=", True)], string="PRM de soutirage", ) prm_prod_ids = fields.Many2many( @@ -27,7 +28,8 @@ class AccOperationWizardConfirm(models.TransientModel): relation="acc_counter_prod_confirm_rel", column1="prod_id", column2="op_id", - domain=[("is_injection", "=", True)], + # TODO: rework domain ? + # domain=[("is_injection", "=", True)], string="PRM d'injection", ) rec_ids = fields.Many2many("acc.enedis.cdc", string="Records") diff --git a/wizards/acc_operation_wizard_views.xml b/wizards/acc_operation_wizard_views.xml index 043337130bff3268a5b6c54c2872492a1085e372..793ac05c075aa61efaa46e8deae13c0e0ab36435 100644 --- a/wizards/acc_operation_wizard_views.xml +++ b/wizards/acc_operation_wizard_views.xml @@ -11,15 +11,16 @@ <field name="prm_cons_ids" widget="many2many_tags" - domain="[('is_delivery', '=', True), ('acc_operation_id', '=', operation_id)]" options="{'no_create_edit': True, 'no_create': True}" /> + <!-- TODO rework domain="[('prm_type', '=', 'delivery'), ('acc_operation_id', '=', operation_id)]" --> + <field name="prm_prod_ids" widget="many2many_tags" options="{'no_create_edit': True, 'no_create': True}" - domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]" /> + <!-- TODO rework domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]" --> </group> <group name="period" string="Période" col="2"> <field name="date_start" />