Sélectionner une révision Git
queue_job_batch.py 1,83 Kio
from odoo import fields, models
class QueueJobBatch(models.Model):
_inherit = ["queue.job.batch"]
acc_operation_id = fields.Many2one("acc.operation", string="Opération liée")
batch_type = fields.Selection(
[("monthly_curves", "Récupération automatique des courbes")]
)
start_date = fields.Date("Date de début des données")
end_date = fields.Date("Date de fin des données (exclue)")
def write(self, vals):
res = super().write(vals)
if self.acc_operation_id and self.state == "finished":
self.post_finished_action()
return res
def post_finished_action(self):
if self.acc_operation_id and self.batch_type == "monthly_curves":
if (
not self.acc_operation_id.is_cdc_data_exists
and self.finished_job_count > 0
):
self.acc_operation_id.is_cdc_data_exists = True
# Update partner_id for retrieved cdc
self.env["acc.counter.period"]._get_periods_from_interval(
[("acc_operation_id", "=", self.acc_operation_id.id)],
self.start_date,
self.end_date,
).update_cdc_partner_id(date_start=self.start_date, date_end=self.end_date)
# Compute by-day aggregated curves
self.env["acc.enedis.cdc.day"].populate_daily_aggregated_data(
acc_operation_id=self.acc_operation_id.id,
start_date=self.start_date,
end_date=self.end_date,
)
self.env["acc.enedis.cdc.prorata"].populate_daily_prorata(
acc_operation_id=self.acc_operation_id.id,
start_date=self.start_date,
end_date=self.end_date,
)
# Recompute static datas for last month
self.acc_operation_id.set_static_data()