[fix] provision to convert group to ledger and vice versa
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index 9364b59..c3a01b9 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -63,7 +63,7 @@
 			frappe.set_route("query-report", "General Ledger");
 		}, __("View"));
 
-		cur_frm.add_custom_button(__('Group to Group'),
+		cur_frm.add_custom_button(__('Non-Group to Group'),
 			function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet', 'btn-default')
 	}
 }
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 0af9713..bcbe2da 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -281,3 +281,4 @@
 erpnext.patches.v7_0.convert_timelog_to_timesheet
 erpnext.patches.v7_0.move_timelogbatch_from_salesinvoiceitem_to_salesinvoicetimesheet
 erpnext.patches.v7_0.remove_doctypes_and_reports
+erpnext.patches.v7_0.set_is_group_for_warehouse
diff --git a/erpnext/patches/v7_0/set_is_group_for_warehouse.py b/erpnext/patches/v7_0/set_is_group_for_warehouse.py
new file mode 100644
index 0000000..d74b97b
--- /dev/null
+++ b/erpnext/patches/v7_0/set_is_group_for_warehouse.py
@@ -0,0 +1,6 @@
+import frappe
+
+def execute():
+	frappe.reload_doc("stock", "doctype", "warehouse")
+	
+	frappe.db.sql("""update tabWarehouse set is_group = if (is_group="Yes", 1, 0)""")
\ No newline at end of file
diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js
index b7a3a34..5983014 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.js
+++ b/erpnext/stock/doctype/warehouse/warehouse.js
@@ -9,29 +9,35 @@
 		frm.add_custom_button(__("Stock Balance"), function() {
 			frappe.set_route("query-report", "Stock Balance", {"warehouse": frm.doc.name});
 		});
- 		if(frm.doc.__onload && frm.doc.__onload.account) {
-	 		frm.add_custom_button(__("General Ledger"), function() {
-				frappe.route_options = {
-					"account": frm.doc.__onload.account,
-					"company": frm.doc.company
-				}
-				frappe.set_route("query-report", "General Ledger");
-			});
- 		}
-		
+
+		if (cint(frm.doc.is_group) == 1) {
+			frm.add_custom_button(__('Group to Non-Group'),
+				function() { convert_to_group_or_ledger(frm); }, 'icon-retweet', 'btn-default')
+		} else if (cint(frm.doc.is_group) == 0) {
+			if(frm.doc.__onload && frm.doc.__onload.account) {
+				frm.add_custom_button(__("General Ledger"), function() {
+					frappe.route_options = {
+						"account": frm.doc.__onload.account,
+						"company": frm.doc.company
+					}
+					frappe.set_route("query-report", "General Ledger");
+				});
+			}
+
+			frm.add_custom_button(__('Non-Group to Group'),
+				function() { convert_to_group_or_ledger(frm); }, 'icon-retweet', 'btn-default')
+		}
+
 		frm.fields_dict['parent_warehouse'].get_query = function(doc) {
 			return {
 				filters: {
-					"is_group": "Yes",
+					"is_group": 1,
 				}
 			}
 		}
 	}
 });
 
-
-
-
 cur_frm.set_query("create_account_under", function() {
 	return {
 		filters: {
@@ -40,3 +46,17 @@
 		}
 	}
 })
+
+function convert_to_group_or_ledger(frm){
+	frappe.call({
+		method:"erpnext.stock.doctype.warehouse.warehouse.convert_to_group_or_ledger",
+		args: {
+			docname: frm.doc.name,
+			is_group: frm.doc.is_group
+		},
+		callback: function(){
+			frm.refresh();
+		}
+		
+	})
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json
index 1a3a97f..a32ec1f 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.json
+++ b/erpnext/stock/doctype/warehouse/warehouse.json
@@ -39,6 +39,33 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "default": "1", 
+   "fieldname": "is_group", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "Is Group", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "warehouse_name", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -477,32 +504,6 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "is_group", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Has Child Node", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "\nYes\nNo", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
    "fieldname": "lft", 
    "fieldtype": "Int", 
    "hidden": 1, 
@@ -587,8 +588,8 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-06-25 18:21:05.175172", 
- "modified_by": "Administrator", 
+ "modified": "2016-06-26 17:39:16.856800", 
+ "modified_by": "s@s.com", 
  "module": "Stock", 
  "name": "Warehouse", 
  "owner": "Administrator", 
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index ed68065..0ceaeda 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -60,7 +60,7 @@
 						'account_name': self.warehouse_name,
 						'parent_account': self.parent_warehouse if self.parent_warehouse \
 							else self.create_account_under,
-						'is_group': 1 if self.is_group=="Yes" else 0 ,
+						'is_group': self.is_group,
 						'company':self.company,
 						"account_type": "Stock",
 						"warehouse": self.name,
@@ -113,14 +113,21 @@
 		if warehouse_account:
 			frappe.delete_doc("Account", warehouse_account)
 
-		if frappe.db.sql("""select name from `tabStock Ledger Entry`
-				where warehouse = %s""", self.name):
+		if self.check_sle_exists():
 			throw(_("Warehouse can not be deleted as stock ledger entry exists for this warehouse."))
 
-		if frappe.db.sql("""select name from `tabWarehouse` where parent_warehouse = %s""", self.name):
+		if self.check_if_child_exists():
 			throw(_("Child warehouse exists for this warehouse. You can not delete this warehouse."))
 
 		self.update_nsm_model()
+	
+	def check_if_sle_exists(self):
+		return frappe.db.sql("""select name from `tabStock Ledger Entry`
+			where warehouse = %s""", self.name)
+	
+	def check_if_child_exists(self):
+		return frappe.db.sql("""select name from `tabWarehouse`
+			where parent_warehouse = %s""", self.name)
 
 	def before_rename(self, olddn, newdn, merge=False):
 		# Add company abbr if not provided
@@ -159,9 +166,19 @@
 		from erpnext.setup.doctype.company.company import get_name_with_abbr
 		return get_name_with_abbr(dn, self.company)
 
-	def get_account(self, warehouse):
-		return frappe.db.get_value("Account", {"account_type": "Stock",
-			"warehouse": warehouse, "company": self.company, "is_group": 0})
+	def get_account(self, warehouse=None):
+		filters = {
+			"account_type": "Warehouse",
+			"company": self.company,
+			"is_group": self.is_group
+		}
+
+		if warehouse:
+			filters.update({"warehouse": warehouse})
+		else:
+			filters.update({"account_name": self.warehouse_name})
+
+		return frappe.db.get_value("Account", filters)
 
 	def after_rename(self, olddn, newdn, merge=False):
 		if merge:
@@ -181,6 +198,38 @@
 
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock)
 		frappe.db.auto_commit_on_many_writes = 0
+	
+	def convert_to_group_or_ledger(self):
+		if self.is_group:
+			self.convert_to_ledger()
+		else:
+			self.convert_to_group()
+
+	def convert_to_ledger(self):
+		if self.check_if_child_exists():
+			frappe.throw(_("Warehouses with child nodes cannot be converted to ledger"))
+		elif self.check_if_sle_exists():
+			throw(_("Warehouses with existing transaction can not be converted to ledger."))
+		else:
+			account_name = self.get_account()
+			if account_name:
+				frappe.get_doc("Account", account_name).convert_group_to_ledger()
+			
+			self.is_group = 0
+			self.save()
+			return 1
+	
+	def convert_to_group(self):
+		if self.check_if_sle_exists():
+			throw(_("Warehouses with existing transaction can not be converted to group."))
+		else:
+			account_name = self.get_account(self.name)
+			if account_name:
+				frappe.get_doc("Account", account_name).convert_ledger_to_group()
+			
+			self.is_group = 1
+			self.save()
+			return 1
 
 @frappe.whitelist()
 def get_children():
@@ -195,7 +244,7 @@
 		parent = ""
 
 	warehouses = frappe.db.sql("""select name as value,
-		if(is_group='Yes', 1, 0) as expandable
+		is_group as expandable
 		from `tab{doctype}`
 		where docstatus < 2
 		and ifnull(`{parent_field}`,'') = %s and `company` = %s
@@ -229,3 +278,9 @@
 	})
 
 	doc.save()
+
+@frappe.whitelist()
+def convert_to_group_or_ledger():
+	args = frappe.form_dict
+	return frappe.get_doc("Warehouse", args.docname).convert_to_group_or_ledger()
+	
\ No newline at end of file