diff --git a/models/acc_operation.py b/models/acc_operation.py index 88a759ee129de440a2ad0b1f7b3ca7968d6abb30..4d6a74d4ba888d296516e0a351c4454a873d461d 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -118,7 +118,7 @@ class AccOperation(models.Model): ) # message += self.with_delay(description=desc).get_definitive_load_curves( self.with_delay(description=desc).get_definitive_load_curves( - date_end, date_start, ["cons,autocons,complement"], usage_point_id, "cons" + date_end, date_start, usage_point_id, "cons" ) if usage_point_prod_ids: @@ -137,7 +137,6 @@ class AccOperation(models.Model): # message += self.with_delay(description=desc).get_definitive_load_curves( date_end, date_start, - ["surplus,prod"], usage_point_id, "prod" ) @@ -162,7 +161,7 @@ class AccOperation(models.Model): ) def get_definitive_load_curves( - self, date_end, date_start, type_curve, usage_point_id, type_prm + self, date_end, date_start, usage_point_id, type_prm ): message = str() @@ -172,7 +171,6 @@ class AccOperation(models.Model): self.name, date_end, date_start, - type_curve, usage_point_id.name, self.client_id, self.secret_id, @@ -210,20 +208,23 @@ class AccOperation(models.Model): message += "Fin du traitement des données\n" return message - def get_curves_all(self, date_start): - # Calcul du nombre de mois entre la date de début de contrat - # de l'opération et la date du jour pour lancer la récupération des données - num_months = (date.today().year - date_start.year) * 12 + ( - date.today().month - date_start.month + def get_curves_all(self): + """ + Récupère les données de l'opération depuis le début de la mise en place + de l'opération. A partir de la date de début de contrat, calcul du nombre + 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 + """ + nb_months = (date.today().year - self.date_start_contract.year) * 12 + ( + date.today().month - self.date_start_contract.month ) - date_start_it = date_start - date_end_it = date_start + relativedelta(months=1, days=-1) + date_start_it = self.date_start_contract + date_end_it = self.date_start_contract + relativedelta(months=1, days=-1) - token = self.access_token() i = 1 - while i < num_months: - self.get_curves(date_start_it, date_end_it, token) + while i < nb_months: + self.curves(date_start_it, date_end_it) date_start_it = date_start_it + relativedelta(months=1) date_end_it = date_start_it + relativedelta(months=1, days=-1) i += 1 diff --git a/wizards/acc_operation_wizard.py b/wizards/acc_operation_wizard.py index 533bde7fcd648a85570e0421bbc9ea4d7493fcad..73b569b565ac692ee6948c18f29026aa80265583 100644 --- a/wizards/acc_operation_wizard.py +++ b/wizards/acc_operation_wizard.py @@ -124,22 +124,39 @@ class AccOperationWizard(models.TransientModel): ) return {"type": "ir.actions.act_window_close"} - # def get_curves_all(self): - # context = dict(self._context or {}) - # if context.get("active_ids", False): - # op = self.env["acc.operation"].browse(context.get("active_ids")) - # if not op.date_start_contract: - # raise UserError( - # _( - # "Renseigner une date de début de contrat pour" - # " pouvoir récupérer les courbes à partie de cette date." - # ) - # ) - # date_start = op.date_start_contract - # self.env["acc.operation"].browse(context.get("active_ids")).get_curves_all( - # date_start - # ) - # return {"type": "ir.actions.act_window_close"} + def get_curves_all(self): + if not self.operation_id.date_start_contract: + raise UserError( + _( + "Renseigner une date de début de contrat pour" + " pouvoir récupérer les courbes à partir de cette date." + ) + ) + + rec_ids = self.env["acc.enedis.cdc"].search([ + ("acc_operation_id", "=", self.operation_id.id)]) + if rec_ids: + wizard = self.env["acc.operation.wizard.confirm"].create( + { + "operation_id": self.operation_id.id, + "rec_ids": rec_ids, + "mess": _( + "Des données existent pour cette période. Etes-vous" + " sûr de vouloir écraser toutes les données existantes?" + ), + } + ) + return { + "name": "Confirmation récupération des données", + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "acc.operation.wizard.confirm", + "res_id": wizard.id, + "target": "new", + } + else: + self.operation_id.get_curves_all() + return {"type": "ir.actions.act_window_close"} # ------------------------------------------------------ # Business methods diff --git a/wizards/acc_operation_wizard_confirm.py b/wizards/acc_operation_wizard_confirm.py index bf4d3cb8fb048c96fb49229681e50919ab98d2a4..39152c01333b53b5cb2b3ef521183d8dfad0c4d8 100644 --- a/wizards/acc_operation_wizard_confirm.py +++ b/wizards/acc_operation_wizard_confirm.py @@ -61,10 +61,16 @@ class AccOperationWizardConfirm(models.TransientModel): # Suppression des enregistrements existants self.rec_ids.unlink() - # Appel API - self.operation_id.curves( - self.date_start, self.date_end, self.prm_cons_ids, self.prm_prod_ids - ) + # Appels API + + # Si date présente, appel pour la période + if not self.date_start: + self.operation_id.curves( + self.date_start, self.date_end, self.prm_cons_ids, self.prm_prod_ids + ) + else: + # Pas de date renseignée, récupération de toutes les données + self.operation_id.get_curves_all() return {"type": "ir.actions.act_window_close"} # ------------------------------------------------------ diff --git a/wizards/acc_operation_wizard_views.xml b/wizards/acc_operation_wizard_views.xml index d94ddbc7840f545c6fe75c4b567fb1740df542c8..043337130bff3268a5b6c54c2872492a1085e372 100644 --- a/wizards/acc_operation_wizard_views.xml +++ b/wizards/acc_operation_wizard_views.xml @@ -32,12 +32,12 @@ string="Récupérer" type="object" /> -<!-- <button--> -<!-- class="btn btn-sm btn-primary"--> -<!-- name="get_curves_all"--> -<!-- string="Récupérer depuis le début"--> -<!-- type="object"--> -<!-- />--> + <button + class="btn btn-sm btn-primary" + name="get_curves_all" + string="Récupérer depuis le début" + type="object" + /> <button class="btn btn-sm btn-default" special="cancel"