test: verify that all patches exist in patches.txt (#31371)
* chore: delete orphaned patches
* test: orphan/missing entries in patches.txt
[skip ci]
diff --git a/erpnext/patches/v12_0/update_healthcare_refactored_changes.py b/erpnext/patches/v12_0/update_healthcare_refactored_changes.py
deleted file mode 100644
index 5ca0d5d..0000000
--- a/erpnext/patches/v12_0/update_healthcare_refactored_changes.py
+++ /dev/null
@@ -1,131 +0,0 @@
-import frappe
-from frappe.model.utils.rename_field import rename_field
-from frappe.modules import get_doctype_module, scrub
-
-field_rename_map = {
- "Healthcare Settings": [
- ["patient_master_name", "patient_name_by"],
- ["max_visit", "max_visits"],
- ["reg_sms", "send_registration_msg"],
- ["reg_msg", "registration_msg"],
- ["app_con", "send_appointment_confirmation"],
- ["app_con_msg", "appointment_confirmation_msg"],
- ["no_con", "avoid_confirmation"],
- ["app_rem", "send_appointment_reminder"],
- ["app_rem_msg", "appointment_reminder_msg"],
- ["rem_before", "remind_before"],
- ["manage_customer", "link_customer_to_patient"],
- ["create_test_on_si_submit", "create_lab_test_on_si_submit"],
- ["require_sample_collection", "create_sample_collection_for_lab_test"],
- ["require_test_result_approval", "lab_test_approval_required"],
- ["manage_appointment_invoice_automatically", "automate_appointment_invoicing"],
- ],
- "Drug Prescription": [["use_interval", "usage_interval"], ["in_every", "interval_uom"]],
- "Lab Test Template": [
- ["sample_quantity", "sample_qty"],
- ["sample_collection_details", "sample_details"],
- ],
- "Sample Collection": [
- ["sample_quantity", "sample_qty"],
- ["sample_collection_details", "sample_details"],
- ],
- "Fee Validity": [["max_visit", "max_visits"]],
-}
-
-
-def execute():
- for dn in field_rename_map:
- if frappe.db.exists("DocType", dn):
- if dn == "Healthcare Settings":
- frappe.reload_doctype("Healthcare Settings")
- else:
- frappe.reload_doc(get_doctype_module(dn), "doctype", scrub(dn))
-
- for dt, field_list in field_rename_map.items():
- if frappe.db.exists("DocType", dt):
- for field in field_list:
- if dt == "Healthcare Settings":
- rename_field(dt, field[0], field[1])
- elif frappe.db.has_column(dt, field[0]):
- rename_field(dt, field[0], field[1])
-
- # first name mandatory in Patient
- if frappe.db.exists("DocType", "Patient"):
- patients = frappe.db.sql("select name, patient_name from `tabPatient`", as_dict=1)
- frappe.reload_doc("healthcare", "doctype", "patient")
- for entry in patients:
- name = entry.patient_name.split(" ")
- frappe.db.set_value("Patient", entry.name, "first_name", name[0])
-
- # mark Healthcare Practitioner status as Disabled
- if frappe.db.exists("DocType", "Healthcare Practitioner"):
- practitioners = frappe.db.sql(
- "select name from `tabHealthcare Practitioner` where 'active'= 0", as_dict=1
- )
- practitioners_lst = [p.name for p in practitioners]
- frappe.reload_doc("healthcare", "doctype", "healthcare_practitioner")
- if practitioners_lst:
- frappe.db.sql(
- "update `tabHealthcare Practitioner` set status = 'Disabled' where name IN %(practitioners)s"
- "",
- {"practitioners": practitioners_lst},
- )
-
- # set Clinical Procedure status
- if frappe.db.exists("DocType", "Clinical Procedure"):
- frappe.reload_doc("healthcare", "doctype", "clinical_procedure")
- frappe.db.sql(
- """
- UPDATE
- `tabClinical Procedure`
- SET
- docstatus = (CASE WHEN status = 'Cancelled' THEN 2
- WHEN status = 'Draft' THEN 0
- ELSE 1
- END)
- """
- )
-
- # set complaints and diagnosis in table multiselect in Patient Encounter
- if frappe.db.exists("DocType", "Patient Encounter"):
- field_list = [["visit_department", "medical_department"], ["type", "appointment_type"]]
- encounter_details = frappe.db.sql(
- """select symptoms, diagnosis, name from `tabPatient Encounter`""", as_dict=True
- )
- frappe.reload_doc("healthcare", "doctype", "patient_encounter")
- frappe.reload_doc("healthcare", "doctype", "patient_encounter_symptom")
- frappe.reload_doc("healthcare", "doctype", "patient_encounter_diagnosis")
-
- for field in field_list:
- if frappe.db.has_column(dt, field[0]):
- rename_field(dt, field[0], field[1])
-
- for entry in encounter_details:
- doc = frappe.get_doc("Patient Encounter", entry.name)
- symptoms = entry.symptoms.split("\n") if entry.symptoms else []
- for symptom in symptoms:
- if not frappe.db.exists("Complaint", symptom):
- frappe.get_doc({"doctype": "Complaint", "complaints": symptom}).insert()
- row = doc.append("symptoms", {"complaint": symptom})
- row.db_update()
-
- diagnosis = entry.diagnosis.split("\n") if entry.diagnosis else []
- for d in diagnosis:
- if not frappe.db.exists("Diagnosis", d):
- frappe.get_doc({"doctype": "Diagnosis", "diagnosis": d}).insert()
- row = doc.append("diagnosis", {"diagnosis": d})
- row.db_update()
- doc.db_update()
-
- if frappe.db.exists("DocType", "Fee Validity"):
- # update fee validity status
- frappe.db.sql(
- """
- UPDATE
- `tabFee Validity`
- SET
- status = (CASE WHEN visited >= max_visits THEN 'Completed'
- ELSE 'Pending'
- END)
- """
- )
diff --git a/erpnext/patches/v13_0/healthcare_lab_module_rename_doctypes.py b/erpnext/patches/v13_0/healthcare_lab_module_rename_doctypes.py
deleted file mode 100644
index 30b84ac..0000000
--- a/erpnext/patches/v13_0/healthcare_lab_module_rename_doctypes.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import frappe
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
- if frappe.db.exists("DocType", "Lab Test") and frappe.db.exists("DocType", "Lab Test Template"):
- # rename child doctypes
- doctypes = {
- "Lab Test Groups": "Lab Test Group Template",
- "Normal Test Items": "Normal Test Result",
- "Sensitivity Test Items": "Sensitivity Test Result",
- "Special Test Items": "Descriptive Test Result",
- "Special Test Template": "Descriptive Test Template",
- }
-
- frappe.reload_doc("healthcare", "doctype", "lab_test")
- frappe.reload_doc("healthcare", "doctype", "lab_test_template")
-
- for old_dt, new_dt in doctypes.items():
- frappe.flags.link_fields = {}
- should_rename = frappe.db.table_exists(old_dt) and not frappe.db.table_exists(new_dt)
- if should_rename:
- frappe.reload_doc("healthcare", "doctype", frappe.scrub(old_dt))
- frappe.rename_doc("DocType", old_dt, new_dt, force=True)
- frappe.reload_doc("healthcare", "doctype", frappe.scrub(new_dt))
- frappe.delete_doc_if_exists("DocType", old_dt)
-
- parent_fields = {
- "Lab Test Group Template": "lab_test_groups",
- "Descriptive Test Template": "descriptive_test_templates",
- "Normal Test Result": "normal_test_items",
- "Sensitivity Test Result": "sensitivity_test_items",
- "Descriptive Test Result": "descriptive_test_items",
- }
-
- for doctype, parentfield in parent_fields.items():
- frappe.db.sql(
- """
- UPDATE `tab{0}`
- SET parentfield = %(parentfield)s
- """.format(
- doctype
- ),
- {"parentfield": parentfield},
- )
-
- # copy renamed child table fields (fields were already renamed in old doctype json, hence sql)
- rename_fields = {
- "lab_test_name": "test_name",
- "lab_test_event": "test_event",
- "lab_test_uom": "test_uom",
- "lab_test_comment": "test_comment",
- }
-
- for new, old in rename_fields.items():
- if frappe.db.has_column("Normal Test Result", old):
- frappe.db.sql("""UPDATE `tabNormal Test Result` SET {} = {}""".format(new, old))
-
- if frappe.db.has_column("Normal Test Template", "test_event"):
- frappe.db.sql("""UPDATE `tabNormal Test Template` SET lab_test_event = test_event""")
-
- if frappe.db.has_column("Normal Test Template", "test_uom"):
- frappe.db.sql("""UPDATE `tabNormal Test Template` SET lab_test_uom = test_uom""")
-
- if frappe.db.has_column("Descriptive Test Result", "test_particulars"):
- frappe.db.sql(
- """UPDATE `tabDescriptive Test Result` SET lab_test_particulars = test_particulars"""
- )
-
- rename_fields = {
- "lab_test_template": "test_template",
- "lab_test_description": "test_description",
- "lab_test_rate": "test_rate",
- }
-
- for new, old in rename_fields.items():
- if frappe.db.has_column("Lab Test Group Template", old):
- frappe.db.sql("""UPDATE `tabLab Test Group Template` SET {} = {}""".format(new, old))
-
- # rename field
- frappe.reload_doc("healthcare", "doctype", "lab_test")
- if frappe.db.has_column("Lab Test", "special_toggle"):
- rename_field("Lab Test", "special_toggle", "descriptive_toggle")
-
- if frappe.db.exists("DocType", "Lab Test Group Template"):
- # fix select field option
- frappe.reload_doc("healthcare", "doctype", "lab_test_group_template")
- frappe.db.sql(
- """
- UPDATE `tabLab Test Group Template`
- SET template_or_new_line = 'Add New Line'
- WHERE template_or_new_line = 'Add new line'
- """
- )
diff --git a/erpnext/patches/v13_0/print_uom_after_quantity_patch.py b/erpnext/patches/v13_0/print_uom_after_quantity_patch.py
deleted file mode 100644
index a16f909..0000000
--- a/erpnext/patches/v13_0/print_uom_after_quantity_patch.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-from erpnext.setup.install import create_print_uom_after_qty_custom_field
-
-
-def execute():
- create_print_uom_after_qty_custom_field()
diff --git a/erpnext/patches/v13_0/rename_discharge_date_in_ip_record.py b/erpnext/patches/v13_0/rename_discharge_date_in_ip_record.py
deleted file mode 100644
index 3bd717d..0000000
--- a/erpnext/patches/v13_0/rename_discharge_date_in_ip_record.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import frappe
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
- frappe.reload_doc("Healthcare", "doctype", "Inpatient Record")
- if frappe.db.has_column("Inpatient Record", "discharge_date"):
- rename_field("Inpatient Record", "discharge_date", "discharge_datetime")
diff --git a/erpnext/patches/v13_0/set_company_field_in_healthcare_doctypes.py b/erpnext/patches/v13_0/set_company_field_in_healthcare_doctypes.py
deleted file mode 100644
index bc2d1b9..0000000
--- a/erpnext/patches/v13_0/set_company_field_in_healthcare_doctypes.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import frappe
-
-
-def execute():
- company = frappe.db.get_single_value("Global Defaults", "default_company")
- doctypes = [
- "Clinical Procedure",
- "Inpatient Record",
- "Lab Test",
- "Sample Collection",
- "Patient Appointment",
- "Patient Encounter",
- "Vital Signs",
- "Therapy Session",
- "Therapy Plan",
- "Patient Assessment",
- ]
- for entry in doctypes:
- if frappe.db.exists("DocType", entry):
- frappe.reload_doc("Healthcare", "doctype", entry)
- frappe.db.sql(
- "update `tab{dt}` set company = {company} where ifnull(company, '') = ''".format(
- dt=entry, company=frappe.db.escape(company)
- )
- )
diff --git a/erpnext/tests/test_init.py b/erpnext/tests/test_init.py
index 4d5fced..18ce93a 100644
--- a/erpnext/tests/test_init.py
+++ b/erpnext/tests/test_init.py
@@ -45,3 +45,8 @@
from frappe.tests.test_translate import verify_translation_files
verify_translation_files("erpnext")
+
+ def test_patches(self):
+ from frappe.tests.test_patches import check_patch_files
+
+ check_patch_files("erpnext")