diff --git a/models/acc_operation.py b/models/acc_operation.py index 7647c3095269435973b022cbb5d957c72ac818a9..46566db151ac432ec80c581700e6a10d67e4d2f0 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -162,11 +162,20 @@ class AccOperation(models.Model): months=int(account_move_periodicity) - 1 ) - # Récupération des données agrégées par jour pour cette opération + # si pluesieurs compteurs d injection on calcule le prorata de consommation par + # horodate, sinon par jours + operation_inj_counters = self._get_inj_counter_by_period(start_date=start_date, end_date=end_date) + if len(operation_inj_counters) == 1: + groupby_date_slot = "day" + else: + groupby_date_slot = "minute" + + # Récupération des données agrégées par horodatage pour cette opération energy_dict = self.env["acc.enedis.cdc"]._get_group_by_energy( acc_operation_id=self.id, start_date=start_date, end_date=end_date, + groupby_date_slot=groupby_date_slot, filter_date=True, ) @@ -197,6 +206,17 @@ class AccOperation(models.Model): return self.action_view_account_move() + def _get_inj_counter_by_period(self, start_date, end_date): + return self.env["acc.counter.period"]._get_periods_from_interval( + [ + ("prm_type", "=", "injection"), + ("acc_operation_id", "=", self.id), + ], + start_date, + end_date, + ).mapped("acc_counter_id") + + def _open_x2m_matrix(self, view_xmlid): """ Fonction qui appelle le wizard matrix 2D pour la défintion des prix diff --git a/models/account_payment_order.py b/models/account_payment_order.py index 81d4a19ad214902e5cafdf6754fd3a2b749f792e..09a8a2d8e0a006f3d867b4c326614a7d2db92367 100644 --- a/models/account_payment_order.py +++ b/models/account_payment_order.py @@ -12,3 +12,6 @@ class AccountPaymentOrder(models.Model): Re-generate the account payments. """ return super(AccountPaymentOrder, self.with_user(SUPERUSER_ID)).draft2open() + + def action_cancel(self): + return super(AccountPaymentOrder, self.with_user(SUPERUSER_ID)).action_cancel()