From 07cc872240be98ca4cb007f6c04aa6b93b2742ed Mon Sep 17 00:00:00 2001 From: Abdurrahman Saber Date: Sat, 3 Jan 2026 20:32:37 +0400 Subject: [PATCH] [FIX] ensan_donation_request: error in advance_next_date --- .../models/donation_recurring.py | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) 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