Merge pull request #2089 from neilLasrado/item_group

Item group
diff --git a/erpnext/accounts/doctype/cost_center/test_records.json b/erpnext/accounts/doctype/cost_center/test_records.json
index 9e3e011..7ffc687 100644
--- a/erpnext/accounts/doctype/cost_center/test_records.json
+++ b/erpnext/accounts/doctype/cost_center/test_records.json
@@ -15,5 +15,12 @@
   "doctype": "Cost Center", 
   "group_or_ledger": "Ledger", 
   "parent_cost_center": "_Test Company - _TC"
+ },
+ {
+  "company": "_Test Company",
+  "cost_center_name": "_Test Cost Center 2", 
+  "doctype": "Cost Center",
+  "group_or_ledger": "Ledger",
+  "parent_cost_center": "_Test Company - _TC"
  }
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/item_group/item_group.json b/erpnext/setup/doctype/item_group/item_group.json
index 45176aa..af5a5c3 100644
--- a/erpnext/setup/doctype/item_group/item_group.json
+++ b/erpnext/setup/doctype/item_group/item_group.json
@@ -21,9 +21,10 @@
    "search_index": 0
   }, 
   {
-   "fieldname": "cb0", 
-   "fieldtype": "Column Break", 
+   "fieldname": "gs", 
+   "fieldtype": "Section Break", 
    "in_list_view": 0, 
+   "label": "General Settings", 
    "permlevel": 0
   }, 
   {
@@ -56,6 +57,32 @@
    "search_index": 0
   }, 
   {
+   "fieldname": "column_break_5", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "default_income_account", 
+   "fieldtype": "Link", 
+   "label": "Default Income Account", 
+   "options": "Account", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "default_expense_account", 
+   "fieldtype": "Link", 
+   "label": "Default Expense Account", 
+   "options": "Account", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "default_cost_center", 
+   "fieldtype": "Link", 
+   "label": "Default Cost Center", 
+   "options": "Cost Center", 
+   "permlevel": 0
+  }, 
+  {
    "fieldname": "sb9", 
    "fieldtype": "Section Break", 
    "label": "Website Settings", 
@@ -163,7 +190,7 @@
  "in_create": 1, 
  "issingle": 0, 
  "max_attachments": 3, 
- "modified": "2014-08-19 06:42:03.262273", 
+ "modified": "2014-08-20 17:48:34.489750", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Item Group", 
diff --git a/erpnext/setup/doctype/item_group/test_records.json b/erpnext/setup/doctype/item_group/test_records.json
index d85fa22..60336f0 100644
--- a/erpnext/setup/doctype/item_group/test_records.json
+++ b/erpnext/setup/doctype/item_group/test_records.json
@@ -3,7 +3,8 @@
   "doctype": "Item Group", 
   "is_group": "No", 
   "item_group_name": "_Test Item Group", 
-  "parent_item_group": "All Item Groups"
+  "parent_item_group": "All Item Groups",
+  "default_cost_center": "_Test Cost Center 2 - _TC"
  }, 
  {
   "doctype": "Item Group", 
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 7ab93eb..56150ca 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -27,7 +27,7 @@
 			"warehouse": "_Test Warehouse - _TC",
 			"income_account": "Sales - _TC",
 			"expense_account": "_Test Account Cost for Goods Sold - _TC",
-			"cost_center": "_Test Cost Center - _TC",
+			"cost_center": "_Test Cost Center 2 - _TC",
 			"qty": 1.0,
 			"price_list_rate": 100.0,
 			"base_price_list_rate": 0.0,
diff --git a/erpnext/stock/doctype/item/test_records.json b/erpnext/stock/doctype/item/test_records.json
index 761d4f2..a256149 100644
--- a/erpnext/stock/doctype/item/test_records.json
+++ b/erpnext/stock/doctype/item/test_records.json
@@ -28,7 +28,6 @@
     "warehouse_reorder_qty": 20
    }
   ],
-  "selling_cost_center": "_Test Cost Center - _TC",
   "stock_uom": "_Test UOM",
   "show_in_website": 1,
   "website_warehouse": "_Test Warehouse - _TC"
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 82b396f..efb793d 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -35,6 +35,7 @@
 	item_doc = frappe.get_doc("Item", args.item_code)
 	item = item_doc
 
+
 	validate_item_details(args, item)
 
 	out = get_basic_details(args, item_doc)
@@ -135,16 +136,22 @@
 		if len(user_default_warehouse_list)==1 else ""
 
 	out = frappe._dict({
+
 		"item_code": item.name,
 		"item_name": item.item_name,
 		"description": item.description_html or item.description,
 		"warehouse": user_default_warehouse or args.warehouse or item.default_warehouse,
-		"income_account": item.income_account or args.income_account \
-			or frappe.db.get_value("Company", args.company, "default_income_account"),
-		"expense_account": item.expense_account or args.expense_account \
-			or frappe.db.get_value("Company", args.company, "default_expense_account"),
-		"cost_center": item.selling_cost_center \
-			if args.transaction_type == "selling" else item.buying_cost_center,
+		"income_account": (item.income_account
+			or args.income_account
+			or frappe.db.get_value("Item Group", item.item_group, "default_income_account")
+			or frappe.db.get_value("Company", args.company, "default_income_account")),
+		"expense_account": (item.expense_account
+			or args.expense_account
+			or frappe.db.get_value("Item Group", item.item_group, "default_expense_account")
+			or frappe.db.get_value("Company", args.company, "default_expense_account")),
+		"cost_center": ((item.selling_cost_center if args.transaction_type == "selling" else item.buying_cost_center)
+			or frappe.db.get_value("Item Group", item.item_group, "default_cost_center")
+			or frappe.db.get_value("Company", args.company, "cost_center")),
 		"batch_no": None,
 		"item_tax_rate": json.dumps(dict(([d.tax_type, d.tax_rate] for d in
 			item_doc.get("item_tax")))),
@@ -174,6 +181,7 @@
 		validate_price_list(args)
 		validate_conversion_rate(args, meta)
 
+
 		price_list_rate = frappe.db.get_value("Item Price",
 			{"price_list": args.price_list, "item_code": args.item_code}, "price_list_rate")