diff --git a/odex25_donation/ensan_donation_request/models/donation_recurring.py b/odex25_donation/ensan_donation_request/models/donation_recurring.py
index 4cad2be32..b8933947c 100644
--- a/odex25_donation/ensan_donation_request/models/donation_recurring.py
+++ b/odex25_donation/ensan_donation_request/models/donation_recurring.py
@@ -310,23 +310,19 @@ class DonationRecurring(models.Model):
if not date_ref:
date_ref = fields.Date.context_today(self)
domain = self._get_donations_to_process_domain(date_ref)
-
records = self.search(domain)
- for rec in records:
- try:
- unprocessed_lines = rec.recurring_line_ids.filtered(lambda l: not l.sale_order_id)
- if unprocessed_lines:
- for line in unprocessed_lines:
- rec._create_sale_order(line)
+ try:
+ for rec in records:
new_line = rec._create_donation_line()
+ unprocessed_lines = rec.recurring_line_ids.filtered(lambda l: not l.sale_order_id)
+ for line in unprocessed_lines:
+ rec._create_sale_order(line)
if not new_line:
continue
- rec._create_sale_order(new_line)
rec._advance_next_date()
- except Exception as e:
- rec.message_post(body=_("⛔ Unexpected error:
%s") % str(e)) - continue - + except Exception as e: + self.message_post(body=_("⛔ Unexpected error:
%s") % str(e)) + raise return True @api.model @@ -340,14 +336,16 @@ class DonationRecurring(models.Model): ] def _advance_next_date(self): - for rec in self: - interval = rec.recurring_interval or 1 - if rec.frequency == 'daily': - rec.recurring_next_date += relativedelta(days=interval) - elif rec.frequency == 'weekly': - rec.recurring_next_date += relativedelta(weeks=interval) - elif rec.frequency == 'monthly': - rec.recurring_next_date += relativedelta(months=interval) + self.ensure_one() + interval = self.recurring_interval or 1 + next_date = self.recurring_next_date + if self.frequency == 'daily': + next_date = next_date + relativedelta(days=interval) + elif self.frequency == 'weekly': + next_date = next_date + relativedelta(weeks=interval) + elif self.frequency == 'monthly': + next_date = next_date + relativedelta(months=interval) + self.recurring_next_date = next_date def unlink(self): bot = self.env.ref('base.partner_root').id