brotherton-erpnext/erpnext/patches/v11_0/merge_land_unit_with_location.py
2022-03-28 18:52:46 +05:30

63 lines
2.3 KiB
Python

# Copyright (c) 2018, Frappe and Contributors
# License: GNU General Public License v3. See license.txt
import frappe
from frappe.model.utils.rename_field import rename_field
def execute():
# Rename and reload the Land Unit and Linked Land Unit doctypes
if frappe.db.table_exists("Land Unit") and not frappe.db.table_exists("Location"):
frappe.rename_doc("DocType", "Land Unit", "Location", force=True)
frappe.reload_doc("assets", "doctype", "location")
if frappe.db.table_exists("Linked Land Unit") and not frappe.db.table_exists("Linked Location"):
frappe.rename_doc("DocType", "Linked Land Unit", "Linked Location", force=True)
frappe.reload_doc("assets", "doctype", "linked_location")
if not frappe.db.table_exists("Crop Cycle"):
frappe.reload_doc("agriculture", "doctype", "crop_cycle")
# Rename the fields in related doctypes
if "linked_land_unit" in frappe.db.get_table_columns("Crop Cycle"):
rename_field("Crop Cycle", "linked_land_unit", "linked_location")
if "land_unit" in frappe.db.get_table_columns("Linked Location"):
rename_field("Linked Location", "land_unit", "location")
if not frappe.db.exists("Location", "All Land Units"):
frappe.get_doc(
{"doctype": "Location", "is_group": True, "location_name": "All Land Units"}
).insert(ignore_permissions=True)
if frappe.db.table_exists("Land Unit"):
land_units = frappe.get_all("Land Unit", fields=["*"], order_by="lft")
for land_unit in land_units:
if not frappe.db.exists("Location", land_unit.get("land_unit_name")):
frappe.get_doc(
{
"doctype": "Location",
"location_name": land_unit.get("land_unit_name"),
"parent_location": land_unit.get("parent_land_unit") or "All Land Units",
"is_container": land_unit.get("is_container"),
"is_group": land_unit.get("is_group"),
"latitude": land_unit.get("latitude"),
"longitude": land_unit.get("longitude"),
"area": land_unit.get("area"),
"location": land_unit.get("location"),
"lft": land_unit.get("lft"),
"rgt": land_unit.get("rgt"),
}
).insert(ignore_permissions=True)
# Delete the Land Unit and Linked Land Unit doctypes
if frappe.db.table_exists("Land Unit"):
frappe.delete_doc("DocType", "Land Unit", force=1)
if frappe.db.table_exists("Linked Land Unit"):
frappe.delete_doc("DocType", "Linked Land Unit", force=1)