[multicheck] Select multiple domains in setup (#11709)

* [multicheck] select multiple domains in setup

* use multiple domains in make_sample_data

* revert to setting in domains child table

* domains slide validation

* update setup wizard test
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index ded7cae..71b098e 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -15,11 +15,12 @@
 	{
 		// Domain
 		name: 'domain',
-		domains: ["all"],
-		title: __('Select your Domain'),
+		title: __('Select your Domains'),
 		fields: [
 			{
-				fieldname: 'domain', label: __('Domain'), fieldtype: 'Select',
+				fieldname: 'domains',
+				label: __('Domains'),
+				fieldtype: 'MultiCheck',
 				options: [
 					{ "label": __("Distribution"), "value": "Distribution" },
 					{ "label": __("Manufacturing"), "value": "Manufacturing" },
@@ -32,18 +33,19 @@
 			},
 		],
 		// help: __('Select the nature of your business.'),
-		onload: function (slide) {
-			slide.get_input("domain").on("change", function () {
-				frappe.setup.domain = $(this).val();
-				frappe.wizard.refresh_slides();
-			});
+		validate: function () {
+			if (this.values.domains.length === 0) {
+				frappe.msgprint(__("Please select at least one domain."));
+				return false;
+			}
+			frappe.setup.domains = this.values.domains;
+			return true;
 		},
 	},
 
 	{
 		// Brand
 		name: 'brand',
-		domains: ["all"],
 		icon: "fa fa-bookmark",
 		title: __("The Brand"),
 		// help: __('Upload your letter head and logo. (you can edit them later).'),
@@ -57,14 +59,14 @@
 			},
 			{
 				fieldname: 'company_name',
-				label: frappe.setup.domain === 'Education' ?
+				label: frappe.setup.domains.includes('Education') ?
 					__('Institute Name') : __('Company Name'),
 				fieldtype: 'Data',
 				reqd: 1
 			},
 			{
 				fieldname: 'company_abbr',
-				label: frappe.setup.domain === 'Education' ?
+				label: frappe.setup.domains.includes('Education') ?
 					__('Institute Abbreviation') : __('Company Abbreviation'),
 				fieldtype: 'Data'
 			}
@@ -100,10 +102,9 @@
 	{
 		// Organisation
 		name: 'organisation',
-		domains: ["all"],
 		title: __("Your Organization"),
 		icon: "fa fa-building",
-		// help: (frappe.setup.domain === 'Education' ?
+		// help: frappe.setup.domains.includes('Education') ?
 		// 	__('The name of the institute for which you are setting up this system.') :
 		// 	__('The name of your company for which you are setting up this system.')),
 		fields: [
@@ -111,7 +112,7 @@
 				fieldname: 'company_tagline',
 				label: __('What does it do?'),
 				fieldtype: 'Data',
-				placeholder: frappe.setup.domain === 'Education' ?
+				placeholder: frappe.setup.domains.includes('Education') ?
 					__('e.g. "Primary School" or "University"') :
 					__('e.g. "Build tools for builders"'),
 				reqd: 1
diff --git a/erpnext/setup/setup_wizard/data/test_mfg.json b/erpnext/setup/setup_wizard/data/test_mfg.json
index b6ea665..efc5fa8 100644
--- a/erpnext/setup/setup_wizard/data/test_mfg.json
+++ b/erpnext/setup/setup_wizard/data/test_mfg.json
@@ -8,7 +8,7 @@
  "currency": "INR",
  "customer_1": "Test Customer 1",
  "customer_2": "Test Customer 2",
- "domain": "Manufacturing",
+ "domains": ["Manufacturing"],
  "email": "great@example.com",
  "full_name": "Great Tester",
  "fy_end_date": "2018-03-31",
diff --git a/erpnext/setup/setup_wizard/sample_data.py b/erpnext/setup/setup_wizard/sample_data.py
index 5a2fbd3..c302841 100644
--- a/erpnext/setup/setup_wizard/sample_data.py
+++ b/erpnext/setup/setup_wizard/sample_data.py
@@ -10,7 +10,7 @@
 from frappe import _
 from markdown2 import markdown
 
-def make_sample_data(domain, make_dependent = False):
+def make_sample_data(domains, make_dependent = False):
 	"""Create a few opportunities, quotes, material requests, issues, todos, projects
 	to help the user get started"""
 
@@ -28,7 +28,7 @@
 		if items and warehouses:
 			make_material_request(frappe.get_all("Item"))
 
-	make_projects(domain)
+	make_projects(domains)
 	import_email_alert()
 
 	frappe.db.commit()
@@ -89,7 +89,7 @@
 def make_issue():
 	pass
 
-def make_projects(domain):
+def make_projects(domains):
 	current_date = frappe.utils.nowdate()
 	project = frappe.get_doc({
 		"doctype": "Project",
@@ -104,7 +104,7 @@
 			"file": "explore.md"
 		}]
 
-	if domain == 'Education':
+	if 'Education' in domains:
 		tasks += [
 			{
 				"title": _("Setup your Institute in ERPNext"),
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index ec70c39..e861a96 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -39,8 +39,10 @@
 	create_logo(args)
 
 	frappe.local.message_log = []
+
+	domains = args.get('domains')
 	domain_settings = frappe.get_single('Domain Settings')
-	domain_settings.set_active_domains([args.get('domain')])
+	domain_settings.set_active_domains(domains)
 
 	frappe.db.commit()
 	login_as_first_user(args)
@@ -49,7 +51,7 @@
 	frappe.clear_cache()
 
 	try:
-		make_sample_data(args.get('domain'))
+		make_sample_data(domains)
 		frappe.clear_cache()
 	except:
 		# clear message
@@ -80,7 +82,7 @@
 			'country': args.get('country'),
 			'create_chart_of_accounts_based_on': 'Standard Template',
 			'chart_of_accounts': args.get('chart_of_accounts'),
-			'domain': args.get('domain')
+			'domain': args.get('domains')[0]
 		}).insert()
 
 		#Enable shopping cart
diff --git a/erpnext/setup/setup_wizard/test_setup_wizard.py b/erpnext/setup/setup_wizard/test_setup_wizard.py
index 5e2a303..a489133 100644
--- a/erpnext/setup/setup_wizard/test_setup_wizard.py
+++ b/erpnext/setup/setup_wizard/test_setup_wizard.py
@@ -40,8 +40,7 @@
 	time.sleep(1)
 
 	# domain slide
-	# time.sleep(3)
-	driver.set_select("domain", "Manufacturing")
+	driver.set_multicheck("domains", ["Manufacturing"])
 	time.sleep(1)
 	driver.click(".next-btn")
 
diff --git a/erpnext/utilities/user_progress.py b/erpnext/utilities/user_progress.py
index e84377e..aa93c65 100644
--- a/erpnext/utilities/user_progress.py
+++ b/erpnext/utilities/user_progress.py
@@ -272,10 +272,9 @@
 	slides = []
 	slide_settings = get_slide_settings()
 
-	domain = frappe.db.get_value('Company', erpnext.get_default_company(), 'domain')
-
+	domains = frappe.get_active_domains()
 	for s in slide_settings:
-		if not s.domains or (domain and domain in s.domains):
+		if not s.domains or any(d in domains for d in s.domains):
 			s.mark_as_done_method = "erpnext.setup.doctype.setup_progress.setup_progress.set_action_completed_state"
 			s.done = get_action_completed_state(s.action_name) or 0
 			slides.append(s)