feat: Demo data creation
diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py
new file mode 100644
index 0000000..95e8a4d
--- /dev/null
+++ b/erpnext/setup/demo.py
@@ -0,0 +1,49 @@
+# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+import json
+import os
+
+import frappe
+
+
+@frappe.whitelist()
+def setup_demo_data():
+ create_demo_company()
+ process_demo_data()
+ make_transactions()
+
+
+def create_demo_company():
+ company = frappe.db.get_value("Company", {"docstatus": 0})
+ company_doc = frappe.get_doc("Company", company)
+
+ # Make a dummy company
+ new_company = frappe.new_doc("Company")
+ new_company.company_name = company_doc.company_name + " (Demo)"
+ new_company.abbr = company_doc.abbr + "D"
+ new_company.enable_perpetual_inventory = 1
+ new_company.default_currency = company_doc.default_currency
+ new_company.country = company_doc.country
+ new_company.chart_of_accounts_based_on = "Standard Template"
+ new_company.chart_of_accounts = company_doc.chart_of_accounts
+ new_company.insert()
+
+
+def process_demo_data():
+ demo_doctypes = frappe.get_hooks("demo_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)
+
+
+def create_demo_record(doctype):
+ frappe.get_doc(doctype).insert(ignore_permissions=True)
+
+
+def make_transactions():
+ pass