Merge pull request #32091 from nabinhait/lead-notes-patch
fix: Migrate old lead notes as per the new format
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index d780213..2a0ca8c 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -307,6 +307,7 @@
erpnext.patches.v14_0.copy_is_subcontracted_value_to_is_old_subcontracting_flow
erpnext.patches.v14_0.migrate_gl_to_payment_ledger
erpnext.patches.v14_0.crm_ux_cleanup
+erpnext.patches.v14_0.migrate_existing_lead_notes_as_per_the_new_format
erpnext.patches.v14_0.remove_india_localisation # 14-07-2022
erpnext.patches.v13_0.fix_number_and_frequency_for_monthly_depreciation
erpnext.patches.v14_0.remove_hr_and_payroll_modules # 20-07-2022
diff --git a/erpnext/patches/v14_0/migrate_existing_lead_notes_as_per_the_new_format.py b/erpnext/patches/v14_0/migrate_existing_lead_notes_as_per_the_new_format.py
new file mode 100644
index 0000000..032aecc
--- /dev/null
+++ b/erpnext/patches/v14_0/migrate_existing_lead_notes_as_per_the_new_format.py
@@ -0,0 +1,23 @@
+import frappe
+from frappe.utils import cstr, strip_html
+
+
+def execute():
+ for doctype in ("Lead", "Prospect", "Opportunity"):
+ if not frappe.db.has_column(doctype, "notes"):
+ continue
+
+ dt = frappe.qb.DocType(doctype)
+ records = (
+ frappe.qb.from_(dt)
+ .select(dt.name, dt.notes, dt.modified_by, dt.modified)
+ .where(dt.notes.isnotnull() & dt.notes != "")
+ ).run()
+
+ for d in records:
+ if strip_html(cstr(d.notes)).strip():
+ doc = frappe.get_doc(doctype, d.name)
+ doc.append("notes", {"note": d.notes, "added_by": d.modified_by, "added_on": d.modified})
+ doc.update_child_table("notes")
+
+ frappe.db.sql_ddl(f"alter table `tab{doctype}` drop column `notes`")