[fix] use get_domains to prevent mutation of nested dictionary
diff --git a/erpnext/setup/setup_wizard/domainify.py b/erpnext/setup/setup_wizard/domainify.py
index f4cc35a..8bba119 100644
--- a/erpnext/setup/setup_wizard/domainify.py
+++ b/erpnext/setup/setup_wizard/domainify.py
@@ -4,58 +4,62 @@
 from __future__ import unicode_literals
 import frappe
 
-domains = {
-	'Manufacturing': {
-		'desktop_icons': ['Item', 'BOM', 'Customer', 'Supplier', 'Sales Order',
-			'Production Order',  'Stock Entry', 'Purchase Order', 'Task', 'Buying', 'Selling',
-			 'Accounts', 'HR', 'ToDo'],
-		'properties': [
-			{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'collapsible_depends_on', 'value': 'is_stock_item'},
-		],
-		'set_value': [
-			['Stock Settings', None, 'show_barcode_field', 1]
-		]
-	},
+def get_domains():
+	'''Written as a function to prevent data mutation effects'''
+	return {
+		'Manufacturing': {
+			'desktop_icons': ['Item', 'BOM', 'Customer', 'Supplier', 'Sales Order',
+				'Production Order',  'Stock Entry', 'Purchase Order', 'Task', 'Buying', 'Selling',
+				 'Accounts', 'HR', 'ToDo'],
+			'properties': [
+				{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'collapsible_depends_on', 'value': 'is_stock_item'},
+			],
+			'set_value': [
+				['Stock Settings', None, 'show_barcode_field', 1]
+			]
+		},
 
-	'Retail': {
-		'desktop_icons': ['POS', 'Item', 'Customer', 'Sales Invoice',  'Purchase Order', 'Warranty Claim',
-		'Accounts', 'Buying', 'ToDo'],
-		'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
-		'properties': [
-			{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
-			{'doctype': 'Customer', 'fieldname': 'credit_limit_section', 'property': 'hidden', 'value': 1},
-		],
-		'set_value': [
-			['Stock Settings', None, 'show_barcode_field', 1]
-		]
-	},
+		'Retail': {
+			'desktop_icons': ['POS', 'Item', 'Customer', 'Sales Invoice',  'Purchase Order', 'Warranty Claim',
+			'Accounts', 'Buying', 'ToDo'],
+			'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
+			'properties': [
+				{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
+				{'doctype': 'Customer', 'fieldname': 'credit_limit_section', 'property': 'hidden', 'value': 1},
+			],
+			'set_value': [
+				['Stock Settings', None, 'show_barcode_field', 1]
+			]
+		},
 
-	'Distribution': {
-		'desktop_icons': ['Item', 'Customer', 'Supplier', 'Lead', 'Sales Order',
-			 'Sales Invoice', 'CRM', 'Selling', 'Buying', 'Stock', 'Accounts', 'HR', 'ToDo'],
-		'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
-		'properties': [
-			{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
-		],
-		'set_value': [
-			['Stock Settings', None, 'show_barcode_field', 1]
-		]
-	},
+		'Distribution': {
+			'desktop_icons': ['Item', 'Customer', 'Supplier', 'Lead', 'Sales Order',
+				 'Sales Invoice', 'CRM', 'Selling', 'Buying', 'Stock', 'Accounts', 'HR', 'ToDo'],
+			'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
+			'properties': [
+				{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
+			],
+			'set_value': [
+				['Stock Settings', None, 'show_barcode_field', 1]
+			]
+		},
 
-	'Services': {
-		'desktop_icons': ['Project', 'Time Sheet', 'Customer', 'Sales Order', 'Sales Invoice', 'Lead', 'Opportunity',
-			'Expense Claim', 'Employee', 'HR', 'ToDo'],
-		'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
-		'properties': [
-			{'doctype': 'Item', 'fieldname': 'is_stock_item', 'property': 'default', 'value': 0},
-		],
-		'set_value': [
-			['Stock Settings', None, 'show_barcode_field', 0]
-		]
+		'Services': {
+			'desktop_icons': ['Project', 'Time Sheet', 'Customer', 'Sales Order', 'Sales Invoice', 'Lead', 'Opportunity',
+				'Expense Claim', 'Employee', 'HR', 'ToDo'],
+			'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
+			'properties': [
+				{'doctype': 'Item', 'fieldname': 'is_stock_item', 'property': 'default', 'value': 0},
+			],
+			'set_value': [
+				['Stock Settings', None, 'show_barcode_field', 0]
+			]
+		}
 	}
-}
 
 def setup_domain(domain):
+	domains = get_domains()
+
 	if not domain in domains:
 		return
 
@@ -85,4 +89,4 @@
 	from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
 	add_all_roles_to('Administrator')
 
-	frappe.db.sql('delete from `tabProperty Setter`')
\ No newline at end of file
+	frappe.db.sql('delete from `tabProperty Setter`')