[fix] Reset recurring id on amendment
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index bcaa9fb..d6ad022 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -48,9 +48,12 @@
self.validate_party()
self.validate_currency()
- if self.meta.get_field("is_recurring") and not self.get("__islocal"):
- validate_recurring_document(self)
- convert_to_recurring(self, self.get("posting_date") or self.get("transaction_date"))
+ if self.meta.get_field("is_recurring"):
+ if self.amended_from and self.recurring_id:
+ self.recurring_id = None
+ if not self.get("__islocal"):
+ validate_recurring_document(self)
+ convert_to_recurring(self, self.get("posting_date") or self.get("transaction_date"))
def on_update_after_submit(self):
if self.meta.get_field("is_recurring"):
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index 2df7352..42b847e 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -181,14 +181,13 @@
doc.db_set("recurring_id", doc.name)
set_next_date(doc, posting_date)
-
+
+ if doc.next_date:
+ validate_recurring_next_date(doc)
+
elif doc.recurring_id:
- frappe.db.sql("""update `tab%s` set is_recurring = 0
- where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id))
-
- if doc.next_date:
- validate_recurring_next_date(doc)
-
+ doc.db_set("recurring_id", None)
+
def validate_notification_email_id(doc):
if doc.notify_by_email:
if doc.notification_email_address: