Merge pull request #5399 from nabinhait/report-graph

Charts on reports / activity page, deprecated financial analytics report
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index a62f0b3..f801959 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '6.27.19'
+__version__ = '6.27.21'
diff --git a/erpnext/crm/doctype/newsletter/newsletter.js b/erpnext/crm/doctype/newsletter/newsletter.js
index 77eecac..9bee9b3 100644
--- a/erpnext/crm/doctype/newsletter/newsletter.js
+++ b/erpnext/crm/doctype/newsletter/newsletter.js
@@ -38,7 +38,7 @@
 		var total = frappe.utils.sum($.map(stat, function(v) { return v; }));
 		if(total) {
 			$.each(stat, function(k, v) {
-				stat[k] = flt(v * 100 / total, 2);
+				stat[k] = flt(v * 100 / total, 2) + '%';
 			});
 
 			cur_frm.dashboard.add_progress("Status", [
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index af0d5e4..fcf2646 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -7,7 +7,7 @@
 app_description = """ERP made simple"""
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "6.27.19"
+app_version = "6.27.21"
 app_email = "info@erpnext.com"
 app_license = "GNU General Public License (v3)"
 source_link = "https://github.com/frappe/erpnext"
diff --git a/erpnext/public/css/erpnext.css b/erpnext/public/css/erpnext.css
index 6777e1e..91e1d6b 100644
--- a/erpnext/public/css/erpnext.css
+++ b/erpnext/public/css/erpnext.css
@@ -124,3 +124,47 @@
 .dashboard-list-item:last-child {
   border-bottom: none;
 }
+.payment-toolbar {
+  margin-left: 35px;
+}
+.payment-mode {
+  cursor: pointer;
+  font-family: sans-serif;
+  font-size: 15px;
+}
+.pos-payment-row .col-xs-6 {
+  padding: 10px;
+}
+.pos-payment-row {
+  border-bottom: 1px solid #d1d8dd;
+  margin: 2px 0px 5px 0px;
+}
+.pos-payment-row:hover,
+.pos-keyboard-key:hover {
+  background-color: #FAFBFC;
+  cursor: pointer;
+}
+.pos-keyboard-key,
+.delete-btn {
+  border: 1px solid #d1d8dd;
+  height: 85px;
+  width: 85px;
+  margin: 10px 10px;
+  font-size: 24px;
+  font-weight: 200;
+  background-color: #FDFDFD;
+  border-color: #e8e8e8;
+}
+.amount {
+  margin-top: 5px;
+}
+.amount-label {
+  font-size: 16px;
+}
+.selected-payment-mode {
+  background-color: #FAFBFC;
+  cursor: pointer;
+}
+.pos-invoice-list {
+  padding: 15px 10px;
+}
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index c8a8d7d..060ed62 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -345,11 +345,6 @@
 	def update_item(source, target, source_parent):
 		target.project = source_parent.project
 
-
-	so = frappe.get_doc("Sales Order", source_name)
-
-	item_table = "Packed Item" if so.packed_items else "Sales Order Item"
-
 	doc = get_mapped_doc("Sales Order", source_name, {
 		"Sales Order": {
 			"doctype": "Material Request",
@@ -357,13 +352,22 @@
 				"docstatus": ["=", 1]
 			}
 		},
-		item_table: {
+		"Packed Item": {
 			"doctype": "Material Request Item",
 			"field_map": {
 				"parent": "sales_order",
 				"stock_uom": "uom"
 			},
 			"postprocess": update_item
+		},
+		"Sales Order Item": {
+			"doctype": "Material Request Item",
+			"field_map": {
+				"parent": "sales_order",
+				"stock_uom": "uom"
+			},
+			"condition": lambda doc: not frappe.db.exists('Product Bundle', doc.item_code),
+			"postprocess": update_item
 		}
 	}, target_doc, postprocess)
 
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index faca7a2..22a33d0 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -109,9 +109,9 @@
 		create_charts(self.chart_of_accounts, self.name, self.flags.ignore_permissions)
 
 		frappe.db.set(self, "default_receivable_account", frappe.db.get_value("Account",
-			{"company": self.name, "account_type": "Receivable"}))
+			{"company": self.name, "account_type": "Receivable", "is_group": 0}))
 		frappe.db.set(self, "default_payable_account", frappe.db.get_value("Account",
-			{"company": self.name, "account_type": "Payable"}))
+			{"company": self.name, "account_type": "Payable", "is_group": 0}))
 
 	def set_default_accounts(self):
 		self._set_default_account("default_cash_account", "Cash")
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index f26452d..a0df8d4 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -20,7 +20,7 @@
 
 	install_fixtures.install(args.get("country"))
 
-	# update_setup_wizard_access()
+	update_setup_wizard_access()
 	create_fiscal_year_and_company(args)
 	create_users(args)
 	set_defaults(args)
diff --git a/setup.py b/setup.py
index 0185f02..a1088bd 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 from pip.req import parse_requirements
 
-version = "6.27.19"
+version = "6.27.21"
 requirements = parse_requirements("requirements.txt", session="")
 
 setup(