Merge branch 'staging-fixes' of https://github.com/frappe/erpnext.git into Item-Tax-Template

# Conflicts:
#	erpnext/patches.txt
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index bfdf451..d28dc93 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -206,6 +206,10 @@
 			stock_not_billed_account = self.get_company_default("stock_received_but_not_billed")
 			stock_items = self.get_stock_items()
 
+		asset_items = [d.is_fixed_asset for d in self.items if d.is_fixed_asset]
+		if len(asset_items) > 0:
+			asset_received_but_not_billed = self.get_company_default("asset_received_but_not_billed")
+
 		if self.update_stock:
 			self.validate_item_code()
 			self.validate_warehouse()
@@ -226,7 +230,8 @@
 					item.expense_account = warehouse_account[item.warehouse]["account"]
 				else:
 					item.expense_account = stock_not_billed_account
-
+			elif item.is_fixed_asset and d.pr_detail:
+				item.expense_account = asset_received_but_not_billed
 			elif not item.expense_account and for_validate:
 				throw(_("Expense account is mandatory for item {0}").format(item.item_code or item.item_name))
 
@@ -360,7 +365,10 @@
 
 	def get_gl_entries(self, warehouse_account=None):
 		self.auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
-		self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed")
+		if self.auto_accounting_for_stock:
+			self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed")
+		else:
+			self.stock_received_but_not_billed = None
 		self.expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation")
 		self.negative_expense_to_be_booked = 0.0
 		gl_entries = []
diff --git a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
index 1ec0abc..13424db 100644
--- a/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
+++ b/erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py
@@ -35,16 +35,22 @@
 
 def get_entries(filters):
 	conditions = get_conditions(filters)
-	journal_entries =  frappe.db.sql("""select "Journal Entry", jv.name, jv.posting_date,
-		jv.cheque_no, jv.clearance_date, jvd.against_account, (jvd.debit - jvd.credit)
-		from `tabJournal Entry Account` jvd, `tabJournal Entry` jv
-		where jvd.parent = jv.name and jv.docstatus=1 and jvd.account = %(account)s {0}
-		order by posting_date DESC, jv.name DESC""".format(conditions), filters, as_list=1)
+	journal_entries =  frappe.db.sql("""SELECT
+			"Journal Entry", jv.name, jv.posting_date, jv.cheque_no, jv.clearance_date, jvd.against_account,
+			if((jvd.debit - jvd.credit) < 0, (jvd.debit - jvd.credit) * -1, (jvd.debit - jvd.credit))
+		FROM 
+			`tabJournal Entry Account` jvd, `tabJournal Entry` jv
+		WHERE 
+			jvd.parent = jv.name and jv.docstatus=1 and jvd.account = %(account)s {0}
+			order by posting_date DESC, jv.name DESC""".format(conditions), filters, as_list=1)
 
-	payment_entries =  frappe.db.sql("""select "Payment Entry", name, posting_date,
-		reference_no, clearance_date, party, if(paid_from=%(account)s, paid_amount, received_amount)
-		from `tabPayment Entry`
-		where docstatus=1 and (paid_from = %(account)s or paid_to = %(account)s) {0}
-		order by posting_date DESC, name DESC""".format(conditions), filters, as_list=1)
+	payment_entries =  frappe.db.sql("""SELECT
+			"Payment Entry", name, posting_date, reference_no, clearance_date, party, 
+			if(paid_from=%(account)s, paid_amount, received_amount)
+		FROM 
+			`tabPayment Entry`
+		WHERE 
+			docstatus=1 and (paid_from = %(account)s or paid_to = %(account)s) {0}
+			order by posting_date DESC, name DESC""".format(conditions), filters, as_list=1)
 
 	return sorted(journal_entries + payment_entries, key=lambda k: k[2] or getdate(nowdate()))
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index d855873..65629d2 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -9,6 +9,7 @@
 from erpnext.assets.doctype.asset.depreciation import post_depreciation_entries, scrap_asset, restore_asset
 from erpnext.assets.doctype.asset.asset import make_sales_invoice, make_purchase_invoice
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
+from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice as make_invoice
 
 class TestAsset(unittest.TestCase):
 	def setUp(self):
@@ -494,6 +495,15 @@
 
 		self.assertEqual(gle, expected_gle)
 
+	def test_expense_head(self):
+		pr = make_purchase_receipt(item_code="Macbook Pro",
+			qty=2, rate=200000.0, location="Test Location")
+
+		doc = make_invoice(pr.name)
+
+		self.assertEquals('Asset Received But Not Billed - _TC', doc.items[0].expense_account)
+
+
 def create_asset_data():
 	if not frappe.db.exists("Asset Category", "Computers"):
 		create_asset_category()
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 513270f..e26d9fb 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -604,13 +604,14 @@
 								advance.account_currency)
 
 			if advance.account_currency == self.currency:
-				order_total = self.grand_total
-				formatted_order_total = fmt_money(order_total, precision=self.precision("grand_total"),
-												  currency=advance.account_currency)
+				order_total = self.get("rounded_total") or self.grand_total
+				precision = "rounded_total" if self.get("rounded_total") else "grand_total"
 			else:
-				order_total = self.base_grand_total
-				formatted_order_total = fmt_money(order_total, precision=self.precision("base_grand_total"),
-												  currency=advance.account_currency)
+				order_total = self.get("base_rounded_total") or self.base_grand_total
+				precision = "base_rounded_total" if self.get("base_rounded_total") else "base_grand_total"
+
+			formatted_order_total = fmt_money(order_total, precision=self.precision(precision),
+											  currency=advance.account_currency)
 
 			if self.currency == self.company_currency and advance_paid > order_total:
 				frappe.throw(_("Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2})")
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 3ab6752..bf7e32a 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -12,7 +12,7 @@
 source_link = "https://github.com/frappe/erpnext"
 
 develop_version = '12.x.x-develop'
-staging_version = '11.0.3-beta.33'
+staging_version = '11.0.3-beta.34'
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py
index f35eb59..0226201 100644
--- a/erpnext/hr/utils.py
+++ b/erpnext/hr/utils.py
@@ -54,6 +54,9 @@
 					where parenttype='User' and role=%s''', activity.role)
 				users = users + user_list
 
+				if "Administrator" in users:
+					users.remove("Administrator")
+
 			# assign the task the users
 			if users:
 				self.assign_task_to_users(task, set(users))
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
old mode 100755
new mode 100644
index 917176a..bd4ed3e
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -581,3 +581,4 @@
 erpnext.patches.v11_0.set_missing_gst_hsn_code
 erpnext.patches.v11_0.rename_bom_wo_fields
 erpnext.patches.v11_0.move_item_tax_to_item_tax_template
+erpnext.patches.v11_0.rename_additional_salary_component_additional_salary
diff --git a/erpnext/patches/v11_0/rename_additional_salary_component_additional_salary.py b/erpnext/patches/v11_0/rename_additional_salary_component_additional_salary.py
new file mode 100644
index 0000000..8fa876d
--- /dev/null
+++ b/erpnext/patches/v11_0/rename_additional_salary_component_additional_salary.py
@@ -0,0 +1,10 @@
+import frappe
+
+# this patch should have been included with this PR https://github.com/frappe/erpnext/pull/14302
+
+def execute():
+	if frappe.db.table_exists("Additional Salary Component"):
+		if not frappe.db.table_exists("Additional Salary"):
+			frappe.rename_doc("DocType", "Additional Salary Component", "Additional Salary")
+
+		frappe.delete_doc('DocType', "Additional Salary Component")
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 04b270f..f86be14 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -283,7 +283,7 @@
 		out.conversion_factor = 1.0
 	else:
 		out.conversion_factor = args.conversion_factor or \
-			get_conversion_factor(item.item_code, args.uom).get("conversion_factor") or 1.0
+			get_conversion_factor(item.item_code, args.uom).get("conversion_factor")
 
 	args.conversion_factor = out.conversion_factor
 	out.stock_qty = out.qty * out.conversion_factor
@@ -706,7 +706,7 @@
 	if not conversion_factor:
 		stock_uom = frappe.db.get_value("Item", item_code, "stock_uom")
 		conversion_factor = get_uom_conv_factor(uom, stock_uom)
-	return {"conversion_factor": conversion_factor}
+	return {"conversion_factor": conversion_factor or 1.0}
 
 @frappe.whitelist()
 def get_projected_qty(item_code, warehouse):