Merge branch 'develop' into project-naming-series-patch
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index da52ae9..f3660b3 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -747,3 +747,4 @@
 erpnext.patches.v13_0.set_company_in_leave_ledger_entry
 erpnext.patches.v13_0.convert_qi_parameter_to_link_field
 erpnext.patches.v13_0.setup_patient_history_settings_for_standard_doctypes
+erpnext.patches.v13_0.add_naming_series_to_old_projects
diff --git a/erpnext/patches/v13_0/add_naming_series_to_old_projects.py b/erpnext/patches/v13_0/add_naming_series_to_old_projects.py
new file mode 100644
index 0000000..79b6753
--- /dev/null
+++ b/erpnext/patches/v13_0/add_naming_series_to_old_projects.py
@@ -0,0 +1,26 @@
+from __future__ import unicode_literals
+import frappe
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter, delete_property_setter
+
+def execute():
+	frappe.reload_doc("projects", "doctype", "project")
+	projects = frappe.db.get_all("Project",
+		fields=["name", "naming_series", "modified"],
+		filters={
+			"naming_series": ["is", "not set"]
+		},
+		order_by="timestamp(modified) asc")
+
+	# disable set only once as the old docs must be saved
+	# (to bypass 'Cant change naming series' validation on save)
+	make_property_setter("Project", "naming_series", "set_only_once", 0, "Check")
+
+	for entry in projects:
+		# need to save the doc so that users can edit old projects
+		doc = frappe.get_doc("Project", entry.name)
+		if not doc.naming_series:
+			doc.naming_series = "PROJ-.####"
+			doc.save()
+
+	delete_property_setter("Project", "set_only_once", "naming_series")
+	frappe.db.commit()