diff --git a/erpnext/patches.txt b/erpnext/patches.txt index da52ae9aff8..f3660b3c51c 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -747,3 +747,4 @@ erpnext.patches.v13_0.update_project_template_tasks 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 00000000000..79b67533ed6 --- /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()