Merge pull request #1677 from rmehta/develop

Added title_field and added ignore_permission while creating Event from Lead
diff --git a/erpnext/patches/v4_0/global_defaults_to_system_settings.py b/erpnext/patches/v4_0/global_defaults_to_system_settings.py
index fd6e47b..abd38c6 100644
--- a/erpnext/patches/v4_0/global_defaults_to_system_settings.py
+++ b/erpnext/patches/v4_0/global_defaults_to_system_settings.py
@@ -8,6 +8,7 @@
 from frappe.core.doctype.user.user import STANDARD_USERS
 
 def execute():
+	frappe.reload_doc("core", "doctype", "system_settings")
 	system_settings = frappe.get_doc("System Settings")
 
 	# set values from global_defauls
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index c427546..6951158 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -76,6 +76,7 @@
 
 		frappe.clear_cache()
 		frappe.db.commit()
+
 	except:
 		traceback = frappe.get_traceback()
 		for hook in frappe.get_hooks("setup_wizard_exception"):
@@ -83,6 +84,11 @@
 
 		raise
 
+	else:
+		for hook in frappe.get_hooks("setup_wizard_success"):
+			frappe.get_attr(hook)(args)
+
+
 def update_user_name(args):
 	if args.get("email"):
 		args['name'] = args.get("email")
diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json
index f42f35c..0e12cd2 100644
--- a/erpnext/stock/doctype/item/item.json
+++ b/erpnext/stock/doctype/item/item.json
@@ -277,6 +277,7 @@
    "fieldname": "serial_no_series", 
    "fieldtype": "Data", 
    "label": "Serial Number Series", 
+   "no_copy": 1, 
    "permlevel": 0
   }, 
   {
@@ -728,6 +729,7 @@
    "fieldname": "page_name", 
    "fieldtype": "Data", 
    "label": "Page Name", 
+   "no_copy": 1, 
    "permlevel": 0, 
    "read_only": 1
   }, 
@@ -825,6 +827,7 @@
    "fieldtype": "Link", 
    "ignore_restrictions": 1, 
    "label": "Parent Website Route", 
+   "no_copy": 1, 
    "options": "Website Route", 
    "permlevel": 0
   }
@@ -832,7 +835,7 @@
  "icon": "icon-tag", 
  "idx": 1, 
  "max_attachments": 1, 
- "modified": "2014-05-12 07:54:58.118118", 
+ "modified": "2014-05-21 15:37:30.124881", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Item", 
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 642a429..104f905 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -119,6 +119,10 @@
 		if self.has_serial_no == 'Yes' and self.is_stock_item == 'No':
 			msgprint(_("'Has Serial No' can not be 'Yes' for non-stock item"), raise_exception=1)
 
+		if self.has_serial_no == "No" and self.serial_no_series:
+			self.serial_no_series = None
+
+
 	def check_for_active_boms(self):
 		if self.is_purchase_item != "Yes":
 			bom_mat = frappe.db.sql("""select distinct t1.parent
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index dbbc3ef..ff4d519 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -248,7 +248,8 @@
 				SerialNoRequiredError)
 
 def update_serial_nos(sle, item_det):
-	if sle.is_cancelled == "No" and not sle.serial_no and sle.actual_qty > 0 and item_det.serial_no_series:
+	if sle.is_cancelled == "No" and not sle.serial_no and sle.actual_qty > 0 \
+			and item_det.has_serial_no == "Yes" and item_det.serial_no_series:
 		from frappe.model.naming import make_autoname
 		serial_nos = []
 		for i in xrange(cint(sle.actual_qty)):
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 79eeddf..df3fef4 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -50,10 +50,8 @@
 				frappe.throw(_("{0} is required").format(self.meta.get_label(k)))
 
 	def validate_item(self):
-		item_det = frappe.db.sql("""select name, has_batch_no, docstatus,
-			is_stock_item, has_serial_no, serial_no_series
-			from tabItem where name=%s""",
-			self.item_code, as_dict=True)[0]
+		item_det = frappe.db.sql("""select name, has_batch_no, docstatus, is_stock_item
+			from tabItem where name=%s""", self.item_code, as_dict=True)[0]
 
 		if item_det.is_stock_item != 'Yes':
 			frappe.throw(_("Item {0} must be a stock Item").format(self.item_code))