change convert_to_recurring() to take recurring_id dynamicaly
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 77c7ea9..6a41bba 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -265,11 +265,11 @@
self.update_against_document_in_jv()
self.update_prevdoc_status()
self.update_billing_status_for_zero_amount_refdoc("Purchase Order")
- convert_to_recurring(self, "RECPI.#####", self.posting_date)
+ convert_to_recurring(self, self.posting_date)
def on_update_after_submit(self):
validate_recurring_document(self)
- convert_to_recurring(self, "RECPI.#####", self.posting_date)
+ convert_to_recurring(self, self.posting_date)
def make_gl_entries(self):
auto_accounting_for_stock = \
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index a20d906..dc38c9a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -103,7 +103,7 @@
self.update_c_form()
self.update_time_log_batch(self.name)
- convert_to_recurring(self, "RECINV.#####", self.posting_date)
+ convert_to_recurring(self, self.posting_date)
def before_cancel(self):
self.update_time_log_batch(None)
@@ -145,7 +145,7 @@
def on_update_after_submit(self):
validate_recurring_document(self)
- convert_to_recurring(self, "RECINV.#####", self.posting_date)
+ convert_to_recurring(self, self.posting_date)
def get_portal_page(self):
return "invoice" if self.docstatus==1 else None
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 66083be..a8a9d0d 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -179,7 +179,7 @@
frappe.db.set(self,'status','Submitted')
- convert_to_recurring(self, "SO/REP/.#####", self.transaction_date)
+ convert_to_recurring(self, self.transaction_date)
def on_cancel(self):
pc_obj = frappe.get_doc('Purchase Common')
@@ -206,7 +206,7 @@
def on_update_after_submit(self):
validate_recurring_document(self)
- convert_to_recurring(self, "SO/REP/.#####", self.transaction_date)
+ convert_to_recurring(self, self.transaction_date)
def set_missing_values(source, target):
target.ignore_pricing_rule = 1
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index c7163ae..7b4310b 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -2,9 +2,14 @@
import frappe
import frappe.utils
import frappe.defaults
-from frappe.utils import cint, cstr, getdate, nowdate, get_first_day, get_last_day
+
+from frappe.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \
+ get_first_day, get_last_day, comma_and
from frappe.model.naming import make_autoname
+
from frappe import _, msgprint, throw
+from erpnext.accounts.party import get_party_account, get_due_date, get_party_details
+from frappe.model.mapper import get_mapped_doc
month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
@@ -46,7 +51,7 @@
frappe.db.begin()
frappe.db.sql("update `tab%s` \
- set is_recurring = 0 where name = %s" % (doctype, '%s'),
+ set is_recurring = 0 where name = %s" % (doctype, '%s'),
(ref_document))
notify_errors(ref_document, doctype, ref_wrapper.customer, ref_wrapper.owner)
frappe.db.commit()
@@ -152,18 +157,18 @@
elif not (doc.from_date and doc.to_date):
throw(_("Period From and Period To dates mandatory for recurring %s") % doc.doctype)
-def convert_to_recurring(doc, autoname, posting_date):
- if doc.is_recurring:
- if not doc.recurring_id:
- frappe.db.set(doc, "recurring_id",
- make_autoname(autoname))
+#
+def convert_to_recurring(doc, posting_date):
+ if doc.is_recurring:
+ if not doc.recurring_id:
+ frappe.db.set(doc, "recurring_id", doc.name)
- set_next_date(doc, posting_date)
+ set_next_date(doc, posting_date)
- elif doc.recurring_id:
- frappe.db.sql("""update `tab%s`
- set is_recurring = 0
- where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id))
+ elif doc.recurring_id:
+ frappe.db.sql("""update `tab%s` set is_recurring = 0
+ where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id))
+#
def validate_notification_email_id(doc):
if doc.notification_email_address:
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index ff14f9d..b1852f1 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -166,7 +166,7 @@
self.update_prevdoc_status('submit')
frappe.db.set(self, 'status', 'Submitted')
- convert_to_recurring(self, "SO/REC/.#####", self.transaction_date)
+ convert_to_recurring(self, self.transaction_date)
def on_cancel(self):
# Cannot cancel stopped SO
@@ -257,7 +257,7 @@
def on_update_after_submit(self):
validate_recurring_document(self)
- convert_to_recurring(self, "SO/REC/.#####", self.transaction_date)
+ convert_to_recurring(self, self.transaction_date)
@frappe.whitelist()