From 5b6a9fcca97a0283a7d517a904b835a26ffa388e Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Sat, 17 Jun 2023 13:08:18 +0530 Subject: [PATCH] feat: Clear demo data --- erpnext/accounts/party.py | 2 +- erpnext/setup/demo.py | 66 +++++++++++++------ erpnext/setup/demo_data/customer.json | 3 + erpnext/setup/demo_data/item.json | 1 + .../global_defaults/global_defaults.json | 8 +-- 5 files changed, 56 insertions(+), 24 deletions(-) diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 933c70d5e1..4ec5c95c76 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -669,7 +669,7 @@ def get_payment_terms_template(party_name, party_type, company=None): if party_type not in ("Customer", "Supplier"): return template = None - print(party_type, party_name) + if party_type == "Customer": customer = frappe.get_cached_value( "Customer", party_name, fieldname=["payment_terms", "customer_group"], as_dict=1 diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py index 1256b0e623..41faff2c81 100644 --- a/erpnext/setup/demo.py +++ b/erpnext/setup/demo.py @@ -18,12 +18,14 @@ def setup_demo_data(): @frappe.whitelist() def clear_demo_data(): - company = frappe.db.get_single_value("Global Defaults", "demo_company") + company = erpnext.get_default_company() create_transaction_deletion_record(company) + clear_masters() + delete_company(company) def create_demo_company(): - company = frappe.db.get_value("Company", {"docstatus": 0}) + company = erpnext.get_default_company() company_doc = frappe.get_doc("Company", company) # Make a dummy company @@ -37,19 +39,19 @@ def create_demo_company(): new_company.chart_of_accounts = company_doc.chart_of_accounts new_company.insert() - frappe.db.set_single_value("Global Defaults", "demo_company", new_company.name) + frappe.db.set_single_value("Global Defaults", "original_default_company", company) + + # Set Demo Company as default to + frappe.db.set_single_value("Global Defaults", "default_company", new_company.name) return new_company.name def process_masters(): - demo_doctypes = frappe.get_hooks("demo_master_doctypes") or [] - path = os.path.join(os.path.dirname(__file__), "demo_data") - for doctype in demo_doctypes: - with open(os.path.join(path, doctype + ".json"), "r") as f: - data = f.read() - if data: - for item in json.loads(data): - create_demo_record(item) + for doctype in frappe.get_hooks("demo_master_doctypes"): + data = read_data_file_using_hooks(doctype) + if data: + for item in json.loads(data): + create_demo_record(item) def create_demo_record(doctype): @@ -57,14 +59,11 @@ def create_demo_record(doctype): def make_transactions(company): - transaction_doctypes = frappe.get_hooks("demo_transaction_doctypes") or [] - path = os.path.join(os.path.dirname(__file__), "demo_data") - for transaction in transaction_doctypes: - with open(os.path.join(path, transaction + ".json"), "r") as f: - data = f.read() - if data: - for item in json.loads(data): - create_transaction(item, company) + for doctype in frappe.get_hooks("demo_transaction_doctypes"): + data = read_data_file_using_hooks(doctype) + if data: + for item in json.loads(data): + create_transaction(item, company) def create_transaction(doctype, company): @@ -93,3 +92,32 @@ def create_transaction_deletion_record(company): transaction_deletion_record.company = company transaction_deletion_record.save(ignore_permissions=True) transaction_deletion_record.submit() + + +def clear_masters(): + for doctype in frappe.get_hooks("demo_master_doctypes")[::-1]: + data = read_data_file_using_hooks(doctype) + if data: + for item in json.loads(data): + clear_demo_record(item) + + +def clear_demo_record(doctype): + doc_type = doctype.get("doctype") + del doctype["doctype"] + doc = frappe.get_doc(doc_type, doctype) + frappe.delete_doc(doc.doctype, doc.name, ignore_permissions=True) + + +def delete_company(company): + original_company = frappe.db.get_single_value("Global Defaults", "original_default_company") + frappe.db.set_single_value("Global Defaults", "default_company", original_company) + frappe.delete_doc("Company", company, ignore_permissions=True) + + +def read_data_file_using_hooks(doctype): + path = os.path.join(os.path.dirname(__file__), "demo_data") + with open(os.path.join(path, doctype + ".json"), "r") as f: + data = f.read() + + return data diff --git a/erpnext/setup/demo_data/customer.json b/erpnext/setup/demo_data/customer.json index 08e0e13743..ed952922ee 100644 --- a/erpnext/setup/demo_data/customer.json +++ b/erpnext/setup/demo_data/customer.json @@ -2,16 +2,19 @@ { "doctype": "Customer", "customer_group": "Demo Customer Group", + "territory": "All Territories", "customer_name": "ABC Enterprises" }, { "doctype": "Customer", "customer_group": "Demo Customer Group", + "territory": "All Territories", "customer_name": "XYZ Corporation" }, { "doctype": "Customer", "customer_group": "Demo Customer Group", + "territory": "All Territories", "customer_name": "KJPR Pvt Ltd" } ] \ No newline at end of file diff --git a/erpnext/setup/demo_data/item.json b/erpnext/setup/demo_data/item.json index 37822233cc..a24133725f 100644 --- a/erpnext/setup/demo_data/item.json +++ b/erpnext/setup/demo_data/item.json @@ -36,6 +36,7 @@ }, { "doctype": "Item", + "item_group": "Demo Item Group", "item_code": "SKU006", "item_name": "Coffee Mug", "image": "https://media.istockphoto.com/id/821282266/photo/white-mug-isolated.jpg?s=612x612&w=0&k=20&c=LJCMPk0D83OKmJHahkiLzAB3OsKr83nMbL7KxSgfpfM=" diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.json b/erpnext/setup/doctype/global_defaults/global_defaults.json index 0f57476503..6d912ce79c 100644 --- a/erpnext/setup/doctype/global_defaults/global_defaults.json +++ b/erpnext/setup/doctype/global_defaults/global_defaults.json @@ -14,7 +14,7 @@ "hide_currency_symbol", "disable_rounded_total", "disable_in_words", - "demo_company" + "original_default_company" ], "fields": [ { @@ -82,10 +82,10 @@ "label": "Disable In Words" }, { - "fieldname": "demo_company", + "fieldname": "original_default_company", "fieldtype": "Link", "hidden": 1, - "label": "Demo Company", + "label": "Original Default Company", "options": "Company", "read_only": 1 } @@ -95,7 +95,7 @@ "in_create": 1, "issingle": 1, "links": [], - "modified": "2023-06-16 13:03:45.016191", + "modified": "2023-06-17 13:07:40.074663", "modified_by": "Administrator", "module": "Setup", "name": "Global Defaults",