diff --git a/frappe/desk/doctype/auto_repeat/auto_repeat.py b/frappe/desk/doctype/auto_repeat/auto_repeat.py index c2d04e4fce..8a90b011d8 100644 --- a/frappe/desk/doctype/auto_repeat/auto_repeat.py +++ b/frappe/desk/doctype/auto_repeat/auto_repeat.py @@ -34,9 +34,15 @@ class AutoRepeat(Document): validate_template(self.message or "") def before_submit(self): + start_date_copy = self.start_date + today_copy = add_days(today(), -1) + + if start_date_copy <= today_copy: + start_date_copy = today_copy + if not self.next_schedule_date: self.next_schedule_date = get_next_schedule_date( - self.start_date, self.frequency, self.repeat_on_day) + start_date_copy, self.frequency, self.repeat_on_day) def on_submit(self): self.update_auto_repeat_id() @@ -116,14 +122,15 @@ class AutoRepeat(Document): days = 60 if self.frequency in ['Daily', 'Weekly'] else 365 end_date_copy = add_days(today_copy, days) + start_date_copy = get_next_schedule_date(start_date_copy, self.frequency, self.repeat_on_day) while (getdate(start_date_copy) < getdate(end_date_copy)): - start_date_copy = get_next_schedule_date(start_date_copy, self.frequency, self.repeat_on_day) row = { "reference_document" : self.reference_document, "frequency" : self.frequency, "next_scheduled_date" : start_date_copy } schedule_details.append(row) + start_date_copy = get_next_schedule_date(start_date_copy, self.frequency, self.repeat_on_day) return schedule_details diff --git a/frappe/desk/doctype/auto_repeat/test_auto_repeat.py b/frappe/desk/doctype/auto_repeat/test_auto_repeat.py index 19cf039759..cf8ff610d5 100644 --- a/frappe/desk/doctype/auto_repeat/test_auto_repeat.py +++ b/frappe/desk/doctype/auto_repeat/test_auto_repeat.py @@ -8,7 +8,7 @@ import unittest import frappe from frappe.custom.doctype.custom_field.custom_field import create_custom_field from frappe.desk.doctype.auto_repeat.auto_repeat import get_auto_repeat_entries, create_repeated_entries, disable_auto_repeat -from frappe.utils import today, add_days, getdate +from frappe.utils import today, add_days, getdate, add_months def add_custom_fields(): @@ -44,8 +44,8 @@ class TestAutoRepeat(unittest.TestCase): self.assertEqual(todo.get('description'), new_todo.get('description')) def test_monthly_auto_repeat(self): - start_date = '2018-01-01' - end_date = '2018-12-31' + start_date = today() + end_date = add_months(start_date, 12) todo = frappe.get_doc( dict(doctype='ToDo', description='test recurring todo', assigned_by='Administrator')).insert() @@ -103,7 +103,7 @@ def make_auto_repeat(**args): 'reference_document': args.reference_document or frappe.db.get_value('ToDo', {'docstatus': 1}, 'name'), 'frequency': args.frequency or 'Daily', 'start_date': args.start_date or add_days(today(), -1), - 'end_date': args.end_date or add_days(today(), 1), + 'end_date': args.end_date or add_days(today(), 2), 'submit_on_creation': args.submit_on_creation or 0, 'notify_by_email': args.notify or 0, 'recipients': args.recipients or "",