diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index a16794b..e852de2 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -5,7 +5,7 @@
 from erpnext.hooks import regional_overrides
 from frappe.utils import getdate
 
-__version__ = '10.0.23'
+__version__ = '10.1.0'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 913aa6e..3f7c9d9 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -59,16 +59,21 @@
 		if self.difference_amount:
 			frappe.throw(_("Difference Amount must be zero"))
 		self.make_gl_entries()
+		self.update_outstanding_amounts()
 		self.update_advance_paid()
 		self.update_expense_claim()
 
 	def on_cancel(self):
 		self.setup_party_account_field()
 		self.make_gl_entries(cancel=1)
+		self.update_outstanding_amounts()
 		self.update_advance_paid()
 		self.update_expense_claim()
 		self.delink_advance_entry_references()
 
+	def update_outstanding_amounts(self):
+		self.set_missing_ref_details(force=True)
+
 	def validate_duplicate_entry(self):
 		reference_names = []
 		for d in self.get("references"):
@@ -130,14 +135,14 @@
 
 		self.set_missing_ref_details()
 
-	def set_missing_ref_details(self):
+	def set_missing_ref_details(self, force=False):
 		for d in self.get("references"):
 			if d.allocated_amount:
 				ref_details = get_reference_details(d.reference_doctype,
 					d.reference_name, self.party_account_currency)
 
 				for field, value in ref_details.items():
-					if not d.get(field):
+					if not d.get(field) or force:
 						d.set(field, value)
 
 	def validate_payment_type(self):
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index ebd9439..0901046 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -3,9 +3,26 @@
 
 frappe.provide("erpnext.accounts");
 
+frappe.ui.form.on("Payment Reconciliation Payment", {
+	invoice_number: function(frm, cdt, cdn) {
+		var row = locals[cdt][cdn];
+		if(row.invoice_number) {
+			var parts = row.invoice_number.split(' | ');
+			var invoice_type = parts[0];
+			var invoice_number = parts[1];
+
+			var invoice_amount = frm.doc.invoices.filter(function(d) {
+				return d.invoice_type === invoice_type && d.invoice_number === invoice_number;
+			})[0].outstanding_amount;
+
+			frappe.model.set_value(cdt, cdn, "allocated_amount", Math.min(invoice_amount, row.amount));
+		}
+	}
+});
+
 erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.extend({
 	onload: function() {
-		var me = this
+		var me = this;
 		this.frm.set_query("party_type", function() {
 			return{
 				query: "erpnext.setup.doctype.party_type.party_type.get_party_type"
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index 5910a24..3c87fe5 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -55,6 +55,7 @@
 					THEN 1=1
 					ELSE {bank_account_condition}
 				END)
+			order by t1.posting_date
 			""".format(**{
 				"dr_or_cr": dr_or_cr,
 				"bank_account_condition": bank_account_condition,
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py
index 0bce49c..20a90f4 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py
@@ -32,7 +32,7 @@
 					.format(res[0][0], row.user), raise_exception=1)
 			elif not row.default and not res:
 				msgprint(_("User {0} doesn't have any default POS Profile. Check Default at Row {1} for this User.")
-					.format(row.user, row.idx), raise_exception=1)
+					.format(row.user, row.idx))
 
 	def validate_all_link_fields(self):
 		accounts = {"Account": [self.income_account,
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 754fc6b..93c2206 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -106,6 +106,10 @@
 	on_submit: function(doc, dt, dn) {
 		var me = this;
 
+		if (frappe.get_route()[0] != 'Sales Invoice') {
+			return
+		}
+
 		$.each(doc["items"], function(i, row) {
 			if(row.delivery_note) frappe.model.clear_doc("Delivery Note", row.delivery_note)
 		})
diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
index 8917c9f..a39b831 100644
--- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
+++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py
@@ -50,10 +50,12 @@
 		row += [
 			d.customer_group, d.debit_to, ", ".join(mode_of_payments.get(d.parent, [])),
 			d.territory, d.project, d.company, d.sales_order,
-			delivery_note, d.income_account, d.cost_center, d.stock_qty, d.stock_uom,
-			d.base_net_rate, d.base_net_amount
+			delivery_note, d.income_account, d.cost_center, d.stock_qty, d.stock_uom
 		]
 
+		row += [d.base_net_rate/d.stock_qty, d.base_net_amount] \
+			if d.stock_uom != d.uom else [d.base_net_rate, d.base_net_amount]
+
 		total_tax = 0
 		for tax in tax_columns:
 			item_tax = itemised_tax.get(d.name, {}).get(tax, {})
@@ -131,7 +133,7 @@
 			`tabSales Invoice Item`.stock_uom, `tabSales Invoice Item`.base_net_rate,
 			`tabSales Invoice Item`.base_net_amount, `tabSales Invoice`.customer_name,
 			`tabSales Invoice`.customer_group, `tabSales Invoice Item`.so_detail,
-			`tabSales Invoice`.update_stock {0}
+			`tabSales Invoice`.update_stock, `tabSales Invoice Item`.uom {0}
 		from `tabSales Invoice`, `tabSales Invoice Item`
 		where `tabSales Invoice`.name = `tabSales Invoice Item`.parent
 			and `tabSales Invoice`.docstatus = 1 %s %s
diff --git a/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.json b/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.json
index f167d06..dfae780 100644
--- a/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.json
+++ b/erpnext/accounts/report/purchase_invoice_trends/purchase_invoice_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-13 18:46:55", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:16:25.027061", 
+ "modified": "2018-02-21 01:28:31.261299", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Purchase Invoice Trends", 
diff --git a/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.json b/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.json
index d7837e3..7437550 100644
--- a/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.json
+++ b/erpnext/accounts/report/sales_invoice_trends/sales_invoice_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-13 18:44:21", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:15:12.885723", 
+ "modified": "2018-02-21 01:28:03.622485", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Sales Invoice Trends", 
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index eae8241..21629f9 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -3101,6 +3101,37 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "collapsible_depends_on": "supplied_items", 
+   "columns": 0, 
+   "fieldname": "raw_material_details", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Raw Materials Supplied", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "columns": 0, 
    "depends_on": "eval:doc.is_subcontracted", 
    "fieldname": "supplied_items_section", 
@@ -3324,7 +3355,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-01-11 14:39:36.869688", 
+ "modified": "2018-02-17 11:00:05.037716", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Purchase Order", 
diff --git a/erpnext/buying/report/purchase_order_trends/purchase_order_trends.json b/erpnext/buying/report/purchase_order_trends/purchase_order_trends.json
index aabb5b6..ca58c4e 100644
--- a/erpnext/buying/report/purchase_order_trends/purchase_order_trends.json
+++ b/erpnext/buying/report/purchase_order_trends/purchase_order_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-13 18:45:01", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:16:13.121638", 
+ "modified": "2018-02-21 01:28:37.416562", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Purchase Order Trends", 
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 1425160..1720b1a 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -883,6 +883,7 @@
 				t1.name = t2.parent and t1.{0} = %s and t1.payment_type = %s
 				and t1.party_type = %s and t1.party = %s and t1.docstatus = 1
 				and t2.reference_doctype = %s {1}
+			order by t1.posting_date
 		""".format(party_account_field, reference_condition),
 		[party_account, payment_type, party_type, party, order_doctype] + order_list, as_dict=1)
 
@@ -894,6 +895,7 @@
 				where
 					{0} = %s and party_type = %s and party = %s and payment_type = %s
 					and docstatus = 1 and unallocated_amount > 0
+				order by posting_date
 			""".format(party_account_field), (party_account, party_type, party, payment_type), as_dict=1)
 
 	return list(payment_entries_against_order) + list(unallocated_payment_entries)
diff --git a/erpnext/docs/user/manual/en/accounts/pricing-rule.md b/erpnext/docs/user/manual/en/accounts/pricing-rule.md
index ad68b0f..c4a3eb9 100644
--- a/erpnext/docs/user/manual/en/accounts/pricing-rule.md
+++ b/erpnext/docs/user/manual/en/accounts/pricing-rule.md
@@ -52,7 +52,6 @@
 Rate or Discount specified in the Pricing Rule will be applied only if above applicability rules are matched with values in the transaction. Rate mentioned in Pricing Rule will be given priority over item's Price List rate.
 
 <img alt="Applicable Rate" class="screenshot" src="/docs/assets/img/articles/pricing-rule-price.png">
->>>>>>> Renamed price to rate in pricing rule
 
 #### 2.2 Discount Percentage
 
diff --git a/erpnext/healthcare/page/medical_record/medical_record.css b/erpnext/healthcare/page/medical_record/medical_record.css
index e76df0f..70014da 100644
--- a/erpnext/healthcare/page/medical_record/medical_record.css
+++ b/erpnext/healthcare/page/medical_record/medical_record.css
@@ -14,6 +14,10 @@
 	margin-bottom: -4px;
 }
 
+.medical_record-row > * {
+	z-index: -999;
+}
+
 .date-indicator {
     background:none;
     font-size:12px;
@@ -48,7 +52,6 @@
 .medical_record-date {
 	padding: 15px;
 	padding-right: 0px;
-	z-index: 1;
 }
 
 #page-medical_record .plot-wrapper {
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index f7f1720..a2f7e56 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -11,7 +11,7 @@
 app_license = "GNU General Public License (v3)"
 source_link = "https://github.com/frappe/erpnext"
 
-develop_version = '9.x.x-develop'
+develop_version = '10.x.x-develop'
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.py b/erpnext/hub_node/doctype/hub_settings/hub_settings.py
index 50b8e01..5980753 100644
--- a/erpnext/hub_node/doctype/hub_settings/hub_settings.py
+++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.py
@@ -10,9 +10,7 @@
 from erpnext.utilities.product import get_price, get_qty_in_stock
 from six import string_types
 
-# hub_url = "http://erpnext.hub:8000"
-hub_url = "https://hub.erpnext.org"
-# hub_url = "http://192.168.29.145:3000"
+hub_url = "https://hubmarket.org"
 
 class HubSetupError(frappe.ValidationError): pass
 
@@ -102,4 +100,4 @@
 @frappe.whitelist()
 def sync():
 	hub_settings = frappe.get_doc('Hub Settings')
-	hub_settings.sync()
\ No newline at end of file
+	hub_settings.sync()
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 8fa6517..953b4bc 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -202,6 +202,14 @@
 		if not from_child_bom:
 			frappe.msgprint(_("Cost Updated"))
 
+	def update_parent_cost(self):
+		if self.total_cost:
+			cost = self.total_cost / self.quantity
+
+			frappe.db.sql("""update `tabBOM Item` set rate=%s, amount=stock_qty*%s
+				where bom_no = %s and docstatus < 2 and parenttype='BOM'""",
+				(cost, cost, self.name))
+
 	def get_bom_unitcost(self, bom_no):
 		bom = frappe.db.sql("""select name, base_total_cost/quantity as unit_cost from `tabBOM`
 			where is_active = 1 and name = %s""", bom_no, as_dict=1)
diff --git a/erpnext/manufacturing/doctype/bom/bom_tree.js b/erpnext/manufacturing/doctype/bom/bom_tree.js
index 6cbd7a2..4ec9bef 100644
--- a/erpnext/manufacturing/doctype/bom/bom_tree.js
+++ b/erpnext/manufacturing/doctype/bom/bom_tree.js
@@ -13,6 +13,7 @@
 	disable_add_node: true,
 	root_label: "BOM", //fieldname from filters
 	get_tree_root: false,
+	show_expand_all: false,
 	get_label: function(node) {
 		if(node.data.qty) {
 			return node.data.qty + " x " + node.data.item_code;
diff --git a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
index 3b6c3a1..ec948eb 100644
--- a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
+++ b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py
@@ -13,11 +13,14 @@
 	def replace_bom(self):
 		self.validate_bom()
 		self.update_new_bom()
-		bom_list = self.get_parent_boms()
+		bom_list = self.get_parent_boms(self.new_bom)
 		updated_bom = []
 		for bom in bom_list:
 			bom_obj = frappe.get_doc("BOM", bom)
 			updated_bom = bom_obj.update_cost_and_exploded_items(updated_bom)
+			bom_obj.calculate_cost()
+			bom_obj.update_parent_cost()
+			bom_obj.db_update()
 
 		frappe.msgprint(_("BOM replaced"))
 
@@ -38,10 +41,18 @@
 			rate=%s, amount=stock_qty*%s where bom_no = %s and docstatus < 2 and parenttype='BOM'""",
 			(self.new_bom, new_bom_unitcost, new_bom_unitcost, self.current_bom))
 
-	def get_parent_boms(self):
-		return [d[0] for d in frappe.db.sql("""select distinct parent
-			from `tabBOM Item` where ifnull(bom_no, '') = %s and docstatus < 2 and parenttype='BOM'""",
-			self.new_bom)]
+	def get_parent_boms(self, bom, bom_list=None):
+		if not bom_list:
+			bom_list = []
+
+		data = frappe.db.sql(""" select distinct parent from `tabBOM Item`
+			where ifnull(bom_no, '') = %s and docstatus < 2 and parenttype='BOM'""", bom)
+
+		for d in data:
+			bom_list.append(d[0])
+			self.get_parent_boms(d[0], bom_list)
+
+		return bom_list
 
 @frappe.whitelist()
 def enqueue_update_cost():
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index c4e3949..bbba837 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -504,4 +504,4 @@
 erpnext.patches.v10_0.migrate_daily_work_summary_settings_to_daily_work_summary_group
 erpnext.patches.v10_0.add_default_cash_flow_mappers
 erpnext.patches.v11_0.make_quality_inspection_template
-erpnext.patches.v10_0.update_territory_and_customer_group
+erpnext.patches.v10_0.update_territory_and_customer_group
\ No newline at end of file
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index c1b020b..f00b84f 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -92,7 +92,7 @@
 				item.amount = flt(item.rate * item.qty, precision("amount", item));
 				item.net_amount = item.amount;
 				item.item_tax_amount = 0.0;
-				item.total_weight = flt(item.weight_per_unit * item.qty);
+				item.total_weight = flt(item.weight_per_unit * item.stock_qty);
 
 				me.set_in_company_currency(item, ["price_list_rate", "rate", "amount", "net_rate", "net_amount"]);
 			});
diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py
index 8dc3bb1..e66f142 100644
--- a/erpnext/regional/report/gstr_1/gstr_1.py
+++ b/erpnext/regional/report/gstr_1/gstr_1.py
@@ -121,7 +121,6 @@
 			conditions += """ and SUBSTR(place_of_supply, 1, 2) != SUBSTR(company_gstin, 1, 2)
 				and grand_total > {0} and is_return != 1 and customer in ('{1}')""".\
 					format(flt(b2c_limit), "', '".join([frappe.db.escape(c.name) for c in customers]))
-
 		elif self.filters.get("type_of_business") ==  "B2C Small":
 			conditions += """ and (
 				SUBSTR(place_of_supply, 1, 2) = SUBSTR(company_gstin, 1, 2)
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js
index 72250c2..fccebd4 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.js
@@ -258,17 +258,22 @@
 		if (field == 'qty' && value < 0) {
 			frappe.msgprint(__("Quantity must be positive"));
 			value = item.qty;
+		} else {
+			item[field] = value;
+			if (field == "serial_no" && value) {
+				let serial_nos = value.split("\n");
+				item["qty"] = serial_nos.filter(d => {
+					return d!=="";
+				}).length;
+			}
 		}
 
-		if (field) {
-			return frappe.model.set_value(item.doctype, item.name, field, value)
-				.then(() => this.frm.script_manager.trigger('qty', item.doctype, item.name))
-				.then(() => {
-					if (field === 'qty' && item.qty === 0) {
-						frappe.model.clear_doc(item.doctype, item.name);
-					}
-				})
-		}
+		return this.frm.script_manager.trigger('qty', item.doctype, item.name)
+			.then(() => {
+				if (field === 'qty' && item.qty === 0) {
+					frappe.model.clear_doc(item.doctype, item.name);
+				}
+			})
 
 		return Promise.resolve();
 	}
@@ -285,24 +290,13 @@
 	}
 
 	submit_sales_invoice() {
-		var is_saved = 0;
-		if(!this.frm.doc.__islocal){
-			is_saved = 1;
-		}
-		frappe.confirm(__("Permanently Submit {0}?", [this.frm.doc.name]), () => {
-			frappe.call({
-				method: 'erpnext.selling.page.point_of_sale.point_of_sale.submit_invoice',
-				freeze: true,
-				args: {
-					doc: this.frm.doc,
-					is_saved: is_saved
-				}
-			}).then(r => {
-				if(r.message) {
-					this.frm.doc = r.message;
+		this.frm.savesubmit()
+			.then((r) => {
+				if (r && r.doc) {
+					this.frm.doc.docstatus = r.doc.docstatus;
 					frappe.show_alert({
 						indicator: 'green',
-						message: __(`Sales invoice ${r.message.name} created succesfully`)
+						message: __(`Sales invoice ${r.doc.name} created succesfully`)
 					});
 
 					this.toggle_editing();
@@ -310,21 +304,22 @@
 					this.set_primary_action_in_modal();
 				}
 			});
-		});
 	}
 
 	set_primary_action_in_modal() {
-		this.frm.msgbox = frappe.msgprint(
-			`<a class="btn btn-primary" onclick="cur_frm.print_preview.printit(true)" style="margin-right: 5px;">
-				${__('Print')}</a>
-			<a class="btn btn-default">
-				${__('New')}</a>`
-		);
+		if (!this.frm.msgbox) {
+			this.frm.msgbox = frappe.msgprint(
+				`<a class="btn btn-primary" onclick="cur_frm.print_preview.printit(true)" style="margin-right: 5px;">
+					${__('Print')}</a>
+				<a class="btn btn-default">
+					${__('New')}</a>`
+			);
 
-		$(this.frm.msgbox.body).find('.btn-default').on('click', () => {
-			this.frm.msgbox.hide();
-			this.make_new_invoice();
-		})
+			$(this.frm.msgbox.body).find('.btn-default').on('click', () => {
+				this.frm.msgbox.hide();
+				this.make_new_invoice();
+			})
+		}
 	}
 
 	change_pos_profile() {
@@ -493,11 +488,6 @@
 		//
 		// }).addClass('visible-xs');
 
-		this.page.add_menu_item(__("Form View"), function () {
-			frappe.model.sync(me.frm.doc);
-			frappe.set_route("Form", me.frm.doc.doctype, me.frm.doc.name);
-		});
-
 		this.page.add_menu_item(__("POS Profile"), function () {
 			frappe.set_route('List', 'POS Profile');
 		});
@@ -606,6 +596,7 @@
 		this.$taxes_and_totals.html(this.get_taxes_and_totals());
 		this.numpad && this.numpad.reset_value();
 		this.customer_field.set_value("");
+		this.frm.msgbox = "";
 
 		this.$discount_amount.find('input:text').val('');
 		this.wrapper.find('.grand-total-value').text(
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py
index bbfb5ad..fe13432 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -90,23 +90,6 @@
 
 	return '%%%s%%'%(frappe.db.escape(item_code)), condition
 
-@frappe.whitelist()
-def submit_invoice(doc,is_saved):
-	if isinstance(doc, string_types):
-		args = json.loads(doc)
-
-	if(cint(is_saved) == 1):
-		doc = frappe.get_doc('Sales Invoice',args["name"])
-	else:
-		doc = frappe.new_doc('Sales Invoice')
-
-	doc.update(args)
-	doc.run_method("set_missing_values")
-	doc.run_method("calculate_taxes_and_totals")
-	doc.submit()
-
-	return doc
-
 def get_item_group_condition(pos_profile):
 	cond = "and 1=1"
 	item_groups = get_item_groups(pos_profile)
diff --git a/erpnext/selling/report/quotation_trends/quotation_trends.json b/erpnext/selling/report/quotation_trends/quotation_trends.json
index 0dae26b..5587cc6 100644
--- a/erpnext/selling/report/quotation_trends/quotation_trends.json
+++ b/erpnext/selling/report/quotation_trends/quotation_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-07 16:01:16", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:15:33.967044", 
+ "modified": "2018-02-21 01:28:14.928929", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Quotation Trends", 
diff --git a/erpnext/selling/report/sales_order_trends/sales_order_trends.json b/erpnext/selling/report/sales_order_trends/sales_order_trends.json
index 1ae8957..9dfc7d0 100644
--- a/erpnext/selling/report/sales_order_trends/sales_order_trends.json
+++ b/erpnext/selling/report/sales_order_trends/sales_order_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-13 18:43:30", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:15:01.634392", 
+ "modified": "2018-02-20 08:05:46.191588", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Sales Order Trends", 
diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py
index 558a9af..025e740 100644
--- a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py
+++ b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py
@@ -13,10 +13,8 @@
 	entries = get_entries(filters)
 	item_details = get_item_details()
 	data = []
-	total_contribution_amount = 0
-	for d in entries:
-		total_contribution_amount += flt(d.contribution_amt)
 
+	for d in entries:
 		data.append([
 			d.name, d.customer, d.territory, d.posting_date, d.item_code,
 			item_details.get(d.item_code, {}).get("item_group"), item_details.get(d.item_code, {}).get("brand"),
@@ -25,8 +23,6 @@
 
 	if data:
 		total_row = [""]*len(data[0])
-		total_row[0] = _("Total")
-		total_row[-1] = total_contribution_amount
 		data.append(total_row)
 
 	return columns, data
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.py b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
index 7599cd2..45de5e7 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
@@ -163,9 +163,9 @@
 
 		if delivery_stop_info.delivery_notes:
 			delivery_notes = (delivery_stop_info.delivery_notes).split(",")
+			default_print_format = frappe.get_meta('Delivery Note').default_print_format
 			attachments = []
 			for delivery_note in delivery_notes:
-				default_print_format = frappe.get_value('Delivery Note', delivery_note, 'default_print_format')
 				attachments.append(
 					frappe.attach_print('Delivery Note',
 	 					 delivery_note,
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index f51652c..d36b6cf 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -109,9 +109,9 @@
 			# set valuation amount in pr item
 			doc.update_valuation_rate("items")
 
-			# save will update landed_cost_voucher_amount and voucher_amount in PR,
-			# as those fields are allowed to edit after submit
-			doc.save()
+			# db_update will update and save landed_cost_voucher_amount and voucher_amount in PR
+			for item in doc.get("items"):
+				item.db_update()
 
 			# update latest valuation rate in serial no
 			self.update_rate_in_serial_no(doc)
diff --git a/erpnext/stock/report/delivery_note_trends/delivery_note_trends.json b/erpnext/stock/report/delivery_note_trends/delivery_note_trends.json
index 29aeab1..fe133e9 100644
--- a/erpnext/stock/report/delivery_note_trends/delivery_note_trends.json
+++ b/erpnext/stock/report/delivery_note_trends/delivery_note_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-13 18:42:11", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:18:32.793637", 
+ "modified": "2018-02-21 01:28:47.049042", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Delivery Note Trends", 
diff --git a/erpnext/stock/report/item_balance/__init__.py b/erpnext/stock/report/item_balance/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/stock/report/item_balance/__init__.py
diff --git a/erpnext/stock/report/item_balance/item_balance.json b/erpnext/stock/report/item_balance/item_balance.json
new file mode 100644
index 0000000..af58fb2
--- /dev/null
+++ b/erpnext/stock/report/item_balance/item_balance.json
@@ -0,0 +1,30 @@
+{
+ "add_total_row": 0, 
+ "apply_user_permissions": 1, 
+ "creation": "2018-02-17 19:52:16.370979", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 0, 
+ "is_standard": "Yes", 
+ "modified": "2018-02-19 12:03:53.902167", 
+ "modified_by": "Administrator", 
+ "module": "Stock", 
+ "name": "Item Balance (Simple)", 
+ "owner": "Administrator", 
+ "query": "select a.item_code as \"Item:Link/Item:120\",\n\t  a.item_name as \"Item Name::150\",\n\t  a.item_group as \"Item Group:Link/Item Group:120\",\n\t  a.brand as \"Brand:Link/Brand:120\",\n\t  a.description as \"Description::150\",\n\t  b.warehouse as \"Warehouse:Link/Warehouse:120\",\n\t  b.actual_qty as \"Balance Qty:Float:140\"\n from `tabItem` a left join `tabBin` b\n ON a.item_code = b.item_code", 
+ "ref_doctype": "Bin", 
+ "report_name": "Item Balance (Simple)", 
+ "report_type": "Query Report", 
+ "roles": [
+  {
+   "role": "Sales User"
+  }, 
+  {
+   "role": "Purchase User"
+  }, 
+  {
+   "role": "Stock User"
+  }
+ ]
+}
diff --git a/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.json b/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.json
index 3a09b43..696f816 100644
--- a/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.json
+++ b/erpnext/stock/report/purchase_receipt_trends/purchase_receipt_trends.json
@@ -1,5 +1,5 @@
 {
- "add_total_row": 0, 
+ "add_total_row": 1, 
  "apply_user_permissions": 1, 
  "creation": "2013-06-13 18:45:44", 
  "disabled": 0, 
@@ -7,7 +7,7 @@
  "doctype": "Report", 
  "idx": 3, 
  "is_standard": "Yes", 
- "modified": "2017-02-24 20:16:00.211762", 
+ "modified": "2018-02-21 01:28:22.682161", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Purchase Receipt Trends", 
diff --git a/erpnext/templates/emails/reorder_item.html b/erpnext/templates/emails/reorder_item.html
index c4039e3..c1aa897 100644
--- a/erpnext/templates/emails/reorder_item.html
+++ b/erpnext/templates/emails/reorder_item.html
@@ -7,8 +7,9 @@
 			<tr>
 				<th style="border: 1px solid #d1d8dd; width: 35%; text-align: left; padding: 5px;">{{ _("Item") }}</th>
 				<th style="border: 1px solid #d1d8dd; width: 35%; text-align: left; padding: 5px;">{{ _("Warehouse") }}</th>
-				<th style="border: 1px solid #d1d8dd; width: 20%; text-align: right; padding: 5px;">{{ _("Quantity") }}</th>
+				<th style="border: 1px solid #d1d8dd; width: 10%; text-align: right; padding: 5px;">{{ _("Quantity") }}</th>
 				<th style="border: 1px solid #d1d8dd; width: 10%; text-align: left; padding: 5px;">{{ _("UOM") }}</th>
+				<th style="border: 1px solid #d1d8dd; width: 10%; text-align: left; padding: 5px;">{{ _("Balance Qty") }}</th>
 			</tr>
 		</thead>
 		<tbody>
@@ -21,6 +22,7 @@
 				<td style="border: 1px solid #d1d8dd; text-align: left; padding: 5px;">{{ item.warehouse }}</td>
 				<td style="border: 1px solid #d1d8dd; text-align: right; padding: 5px;">{{ item.qty }}</td>
 				<td style="border: 1px solid #d1d8dd; text-align: left; padding: 5px;">{{ item.uom }}</td>
+				<td style="border: 1px solid #d1d8dd; text-align: left; padding: 5px;">{{ item.balance_qty }}</td>
 			</tr>
 			{%- endfor %}
 		</tbody>
diff --git a/erpnext/utilities/doctype/rename_tool/rename_tool.js b/erpnext/utilities/doctype/rename_tool/rename_tool.js
index 77d2ba3..7823055 100644
--- a/erpnext/utilities/doctype/rename_tool/rename_tool.js
+++ b/erpnext/utilities/doctype/rename_tool/rename_tool.js
@@ -13,6 +13,9 @@
 	},
 	refresh: function(frm) {
 		frm.disable_save();
+		if (!frm.doc.file_to_rename) {
+			frm.get_field("rename_log").$wrapper.html("");
+		}
 		frm.page.set_primary_action(__("Rename"), function() {
 			frm.get_field("rename_log").$wrapper.html("<p>Renaming...</p>");
 			frappe.call({
diff --git a/erpnext/utilities/page/leaderboard/leaderboard.js b/erpnext/utilities/page/leaderboard/leaderboard.js
index 7e70f76..746ac79 100644
--- a/erpnext/utilities/page/leaderboard/leaderboard.js
+++ b/erpnext/utilities/page/leaderboard/leaderboard.js
@@ -17,14 +17,15 @@
 		this.$sidebar_list = this.page.sidebar.find('ul');
 
 		// const list of doctypes
-		this.doctypes = ["Customer", "Item", "Supplier", "Sales Partner"];
+		this.doctypes = ["Customer", "Item", "Supplier", "Sales Partner","Sales Person"];
 		this.timespans = ["Week", "Month", "Quarter", "Year"];
-		this.desc_fields = ["total_amount", "total_request", "annual_billing", "commission_rate"];
 		this.filters = {
-			"Customer": ["total_amount", "total_item_purchased"],
-			"Item": ["total_request", "total_purchase", "avg_price"],
-			"Supplier": ["annual_billing", "total_unpaid"],
-			"Sales Partner": ["commission_rate", "target_qty", "target_amount"],
+			"Customer": ["total_sales_amount", "total_qty_sold", "outstanding_amount", ],
+			"Item": ["total_sales_amount", "total_qty_sold", "total_purchase_amount",
+				"total_qty_purchased", "available_stock_qty", "available_stock_value"],
+			"Supplier": ["total_purchase_amount", "total_qty_purchased", "outstanding_amount"],
+			"Sales Partner": ["total_sales_amount", "total_commision"],
+			"Sales Person": ["total_sales_amount"],
 		};
 
 		// for saving current selected filters
@@ -58,14 +59,24 @@
 			this.get_sidebar_item(doctype).appendTo(this.$sidebar_list);
 		});
 
+		this.company_select = this.page.add_field({
+			fieldname: 'company',
+			label: __('Company'),
+			fieldtype:'Link',
+			options:'Company',
+			default:frappe.defaults.get_default('company'),
+			reqd: 1,
+			change: function() {
+				me.options.selected_company = this.value;
+				me.make_request($container);
+			}
+		});
 		this.timespan_select = this.page.add_select(__("Timespan"),
 			this.timespans.map(d => {
 				return {"label": __(d), value: d }
 			})
 		);
 
-		// this.timespan_select.val(this.timespans[1]);
-
 		this.type_select = this.page.add_select(__("Type"),
 			me.options.selected_filter.map(d => {
 				return {"label": __(frappe.model.unscrub(d)), value: d }
@@ -76,6 +87,7 @@
 			let $li = $(this);
 			let doctype = $li.find('span').html();
 
+			me.options.selected_company = frappe.defaults.get_default('company');
 			me.options.selected_doctype = doctype;
 			me.options.selected_filter = me.filters[doctype];
 			me.options.selected_filter_item = me.filters[doctype][0];
@@ -114,16 +126,18 @@
 		});
 	},
 
-	get_leaderboard: function (notify, $container, start=0) {
+	get_leaderboard: function (notify, $container) {
 		var me = this;
-
+		if(!me.options.selected_company) {
+			frappe.throw(__("Please select Company"));
+		}
 		frappe.call({
 			method: "erpnext.utilities.page.leaderboard.leaderboard.get_leaderboard",
 			args: {
 				doctype: me.options.selected_doctype,
 				timespan: me.options.selected_timespan,
+				company: me.options.selected_company,
 				field: me.options.selected_filter_item,
-				start: start
 			},
 			callback: function (r) {
 				let results = r.message || [];
@@ -256,28 +270,27 @@
 
 	get_item_html: function (item) {
 		var me = this;
-		const _selected_filter = me.options.selected_filter
-			.map(i => frappe.model.unscrub(i));
-		const fields = ['name', me.options.selected_filter_item];
+		const company = me.options.selected_company;
+		const currency = frappe.get_doc(":Company", company).default_currency;
+		const fields = ['name','value'];
 
 		const html =
 			`<div class="list-item">
 				${
-			fields.map(filter => {
-					const col = frappe.model.unscrub(filter);
-					let val = item[filter];
-					if (col === "Modified") {
-						val = comment_when(val);
+			fields.map(col => {
+					let val = item[col];
+					if(col=="name") {
+						var formatted_value = `<a class="grey list-id ellipsis" 
+							href="#Form/${me.options.selected_doctype}/${item["name"]}"> ${val} </a>`
+					} else {
+						var formatted_value = `<span class="text-muted ellipsis">
+							${(me.options.selected_filter_item.indexOf('qty') == -1) ? format_currency(val, currency) : val}</span>`
 					}
+
 					return (
 						`<div class="list-item_content ellipsis list-item__content--flex-2
-							${(col !== "Name" && col !== "Modified") ? "hidden-xs" : ""}
-							${(col && _selected_filter.indexOf(col) !== -1) ? "text-right" : ""}">
-							${
-								col === "Name"
-									? `<a class="grey list-id ellipsis" href="${item["href"]}"> ${val} </a>`
-									: `<span class="text-muted ellipsis"> ${val}</span>`
-							}
+							${(col == "value") ? "text-right" : ""}">
+							${formatted_value}
 						</div>`);
 					}).join("")
 				}
diff --git a/erpnext/utilities/page/leaderboard/leaderboard.py b/erpnext/utilities/page/leaderboard/leaderboard.py
index 58d480e..87cf2a4 100644
--- a/erpnext/utilities/page/leaderboard/leaderboard.py
+++ b/erpnext/utilities/page/leaderboard/leaderboard.py
@@ -3,148 +3,141 @@
 
 from __future__ import unicode_literals, print_function
 import frappe
-import json
-from operator import itemgetter
-from frappe.utils import add_to_date, fmt_money
-from erpnext.accounts.party import get_dashboard_info
-from erpnext.accounts.utils import get_currency_precision
+from frappe.utils import add_to_date
 
 @frappe.whitelist()
-def get_leaderboard(doctype, timespan, field, start=0):
+def get_leaderboard(doctype, timespan, company, field):
 	"""return top 10 items for that doctype based on conditions"""
-
-	filters = {"modified":(">=", get_date_from_string(timespan))}
-	items = []
+	from_date = get_from_date(timespan)
+	records = []
 	if doctype == "Customer":
-		items = get_all_customers(doctype, filters, [], field)
+		records = get_all_customers(from_date, company, field)
 	elif  doctype == "Item":
-		items = get_all_items(doctype, filters, [], field)
+		records = get_all_items(from_date, company, field)
 	elif  doctype == "Supplier":
-		items = get_all_suppliers(doctype, filters, [], field)
+		records = get_all_suppliers(from_date, company, field)
 	elif  doctype == "Sales Partner":
-		items = get_all_sales_partner(doctype, filters, [], field)
+		records = get_all_sales_partner(from_date, company, field)
+	elif doctype == "Sales Person":
+		records = get_all_sales_person(from_date, company)
 
-	if len(items) > 0:
-		return items
-	return []
+	return records
 
-def get_all_customers(doctype, filters, items, field, start=0, limit=20):
-	"""return all customers"""
+def get_all_customers(from_date, company, field):
+	if field == "outstanding_amount":
+		return frappe.db.sql("""
+			select customer as name, sum(outstanding_amount) as value
+			FROM `tabSales Invoice`
+			where docstatus = 1 and posting_date >= %s and company = %s
+			group by customer
+			order by value DESC
+			limit 20
+		""", (from_date, company), as_dict=1)
+	else:
+		if field == "total_sales_amount":
+			select_field = "sum(so_item.base_net_amount)"
+		elif field == "total_qty_sold":
+			select_field = "sum(so_item.stock_qty)"
 
-	x = frappe.get_list(doctype, filters=filters, limit_start=start, limit_page_length=limit)
+		return frappe.db.sql("""
+			select so.customer as name, {0} as value
+			FROM `tabSales Order` as so JOIN `tabSales Order Item` as so_item
+				ON so.name = so_item.parent
+			where so.docstatus = 1 and so.transaction_date >= %s and so.company = %s
+			group by so.customer
+			order by value DESC
+			limit 20
+		""".format(select_field), (from_date, company), as_dict=1)
 
-	for val in x:
-		y = dict(frappe.db.sql('''select name, grand_total from `tabSales Invoice`\
-			where customer = %s and docstatus != 2''', (val.name)))
-		invoice_list = y.keys()
-		if len(invoice_list) > 0:
-			item_count = frappe.db.sql('''select count(name) from `tabSales Invoice Item` where parent in (%s)''' % ", ".join(
-				['%s'] * len(invoice_list)), tuple(invoice_list))
+def get_all_items(from_date, company, field):
+	if field in ("available_stock_qty", "available_stock_value"):
+		return frappe.db.sql("""
+			select item_code as name, {0} as value
+			from tabBin
+			group by item_code
+			order by value desc
+			limit 20
+		""".format("sum(actual_qty)" if field=="available_stock_qty" else "sum(stock_value)"), as_dict=1)
+	else:
+		if field == "total_sales_amount":
+			select_field = "sum(order_item.base_net_amount)"
+			select_doctype = "Sales Order"
+		elif field == "total_purchase_amount":
+			select_field = "sum(order_item.base_net_amount)"
+			select_doctype = "Purchase Order"
+		elif field == "total_qty_sold":
+			select_field = "sum(order_item.stock_qty)"
+			select_doctype = "Sales Order"
+		elif field == "total_qty_purchased":
+			select_field = "sum(order_item.stock_qty)"
+			select_doctype = "Purchase Order"
 
-			value = 0
-			if(field=="total_amount"):
-				value = sum(y.values())
-			elif(field=="total_item_purchased"):
-				value = sum(destructure_tuple_of_tuples(item_count))
+		return frappe.db.sql("""
+			select order_item.item_code as name, {0} as value
+			from `tab{1}` sales_order join `tab{1} Item` as order_item
+				on sales_order.name = order_item.parent
+			where sales_order.docstatus = 1
+				and sales_order.company = %s and sales_order.transaction_date >= %s
+			group by order_item.item_code
+			order by value desc
+			limit 20
+		""".format(select_field, select_doctype), (company, from_date), as_dict=1)
 
-			item_obj = {"name": val.name,
-				"total_amount": get_formatted_value(sum(y.values())),
-				"total_item_purchased": sum(destructure_tuple_of_tuples(item_count)),
-				"href":"#Form/Customer/" + val.name,
-				"value": value}
-			items.append(item_obj)
+def get_all_suppliers(from_date, company, field):
+	if field == "outstanding_amount":
+		return frappe.db.sql("""
+			select supplier as name, sum(outstanding_amount) as value
+			FROM `tabPurchase Invoice`
+			where docstatus = 1 and posting_date >= %s and company = %s
+			group by supplier
+			order by value DESC
+			limit 20""", (from_date, company), as_dict=1)
+	else:
+		if field == "total_purchase_amount":
+			select_field = "sum(purchase_order_item.base_net_amount)"
+		elif field == "total_qty_purchased":
+			select_field = "sum(purchase_order_item.stock_qty)"
 
-	items.sort(key=lambda k: k['value'], reverse=True)
-	return items
+		return frappe.db.sql("""
+			select purchase_order.supplier as name, {0} as value
+			FROM `tabPurchase Order` as purchase_order LEFT JOIN `tabPurchase Order Item`
+				as purchase_order_item ON purchase_order.name = purchase_order_item.parent
+			where purchase_order.docstatus = 1 and  purchase_order.modified >= %s
+				and  purchase_order.company = %s
+			group by purchase_order.supplier
+			order by value DESC
+			limit 20""".format(select_field), (from_date, company), as_dict=1)
 
-def get_all_items(doctype, filters, items, field, start=0, limit=20):
-	"""return all items"""
+def get_all_sales_partner(from_date, company, field):
+	if field == "total_sales_amount":
+		select_field = "sum(base_net_total)"
+	elif field == "total_commission":
+		select_field = "sum(total_commission)"
 
-	x = frappe.get_list(doctype, filters=filters, limit_start=start, limit_page_length=limit)
-	for val in x:
-		data = frappe.db.sql('''select item_code from `tabMaterial Request Item` where item_code = %s''', (val.name), as_list=1)
-		requests = destructure_tuple_of_tuples(data)
-		data = frappe.db.sql('''select price_list_rate from `tabItem Price` where item_code = %s''', (val.name), as_list=1)
-		avg_price = get_avg(destructure_tuple_of_tuples(data))
-		data = frappe.db.sql('''select item_code from `tabPurchase Invoice Item` where item_code = %s''', (val.name), as_list=1)
-		purchases = destructure_tuple_of_tuples(data)
+	return frappe.db.sql("""
+		select sales_partner as name, {0} as value
+		from `tabSales Order`
+	 	where ifnull(sales_partner, '') != '' and docstatus = 1
+			and transaction_date >= %s and company = %s
+	 	group by sales_partner
+	 	order by value DESC
+	 	limit 20
+	""".format(select_field), (from_date, company), as_dict=1)
 
-		value = 0
-		if(field=="total_request"):
-			value = len(requests)
-		elif(field=="total_purchase"):
-			value = len(purchases)
-		elif(field=="avg_price"):
-			value=avg_price
-		item_obj = {"name": val.name,
-			"total_request":len(requests),
-			"total_purchase": len(purchases),
-			"avg_price": get_formatted_value(avg_price),
-			"href":"#Form/Item/" + val.name,
-			"value": value}
-		items.append(item_obj)
+def get_all_sales_person(from_date, company):
+	return frappe.db.sql("""
+		select sales_team.sales_person as name, sum(sales_order.base_net_total) as value
+		from `tabSales Order` as sales_order join `tabSales Team` as sales_team
+			on sales_order.name = sales_team.parent and sales_team.parenttype = 'Sales Order'
+	 	where sales_order.docstatus = 1
+			and sales_order.transaction_date >= %s
+			and sales_order.company = %s
+	 	group by sales_team.sales_person
+	 	order by value DESC
+	 	limit 20
+	""", (from_date, company), as_dict=1)
 
-	items.sort(key=lambda k: k['value'], reverse=True)
-	return items
-
-def get_all_suppliers(doctype, filters, items, field, start=0, limit=20):
-	"""return all suppliers"""
-
-	x = frappe.get_list(doctype, filters=filters, limit_start=start, limit_page_length=limit)
-
-	for val in x:
-
-		info = get_dashboard_info(doctype, val.name)
-		value = 0
-		if(field=="annual_billing"):
-			value = info["billing_this_year"]
-		elif(field=="total_unpaid"):
-			value = abs(info["total_unpaid"])
-
-		item_obj = {"name": val.name,
-			"annual_billing":  get_formatted_value(info["billing_this_year"]),
-			"total_unpaid": get_formatted_value(abs(info["total_unpaid"])),
-			"href":"#Form/Supplier/" + val.name,
-			"value": value}
-		items.append(item_obj)
-
-	items.sort(key=lambda k: k['value'], reverse=True)
-	return items
-
-def get_all_sales_partner(doctype, filters, items, field, start=0, limit=20):
-	"""return all sales partner"""
-
-	x = frappe.get_list(doctype, fields=["name", "commission_rate", "modified"], filters=filters, limit_start=start, limit_page_length=limit)
-	for val in x:
-		y = frappe.db.sql('''select target_qty, target_amount from `tabTarget Detail` where parent = %s''', (val.name), as_dict=1)
-		target_qty = sum([f["target_qty"] for f in y])
-		target_amount = sum([f["target_amount"] for f in y])
-
-		value = 0
-		if(field=="commission_rate"):
-			value = val.commission_rate
-		elif(field=="target_qty"):
-			value = target_qty
-		elif(field=="target_amount"):
-			value = target_qty
-
-		item_obj = {"name": val.name,
-			"commission_rate": get_formatted_value(val.commission_rate, False),
-			"target_qty": target_qty,
-			"target_amount": get_formatted_value(target_qty),
-			"href":"#Form/Sales Partner/" + val.name,
-			"value": value}
-		items.append(item_obj)
-
-	items.sort(key=lambda k: k['value'], reverse=True)
-	return items
-
-
-def destructure_tuple_of_tuples(tup_of_tup):
-	"""return tuple(tuples) as list"""
-	return [y for x in tup_of_tup for y in x]
-
-def get_date_from_string(seleted_timespan):
+def get_from_date(seleted_timespan):
 	"""return string for ex:this week as date:string"""
 	days = months = years = 0
 	if "month" == seleted_timespan.lower():
@@ -156,24 +149,5 @@
 	else:
 		days = -7
 
-	return add_to_date(None, years=years, months=months, days=days, as_string=True, as_datetime=True)
-
-def get_filter_list(selected_filter):
-	"""return list of keys"""
-	return map((lambda y : y["field"]), filter(lambda x : not (x["field"] == "name" or x["field"] == "modified"), selected_filter))
-
-def get_avg(items):
-	"""return avg of list items"""
-	length = len(items)
-	if length > 0:
-		return sum(items) / length
-	return 0
-
-def get_formatted_value(value, add_symbol=True):
-	"""return formatted value"""
-	if not add_symbol:
-		return '{:.{pre}f}'.format(value, pre=(get_currency_precision() or 2))
-	currency_precision = get_currency_precision() or 2
-	company = frappe.db.get_default("company")
-	currency = frappe.get_doc("Company", company).default_currency or frappe.boot.sysdefaults.currency
-	return fmt_money(value, currency_precision, currency)
+	return add_to_date(None, years=years, months=months, days=days,
+		as_string=True, as_datetime=True)
\ No newline at end of file
diff --git a/erpnext/utilities/user_progress.py b/erpnext/utilities/user_progress.py
index 3873213..cdb0e14 100644
--- a/erpnext/utilities/user_progress.py
+++ b/erpnext/utilities/user_progress.py
@@ -45,7 +45,7 @@
 			help=_("Set a sales goal you'd like to achieve for your company."),
 			fields=[
 				{"fieldtype":"Currency", "fieldname":"monthly_sales_target",
-					"label":_("Monthly Sales Target (" + currency + ")")},
+					"label":_("Monthly Sales Target (" + currency + ")"), "reqd":1},
 			],
 			submit_method="erpnext.utilities.user_progress_utils.set_sales_target",
 			done_state_title=_("Go to " + company),
