Fixed merge conflict
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index b54ba59..97ab934 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
 from __future__ import unicode_literals
 import frappe
 
-__version__ = '7.1.22'
+__version__ = '7.1.23'
 
 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 3e10b51..02d2b6b 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -646,7 +646,7 @@
 	if party_amount:
 		grand_total = outstanding_amount = party_amount
 	elif dt in ("Sales Invoice", "Purchase Invoice"):
-		grand_total = doc.grand_total
+		grand_total = doc.base_grand_total if party_account_currency == doc.company_currency else doc.grand_total
 		outstanding_amount = doc.outstanding_amount
 	else:
 		total_field = "base_grand_total" if party_account_currency == doc.company_currency else "grand_total"
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index e66d20e..bc4a220 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -42,9 +42,6 @@
 		if to_date == get_first_day(to_date):
 			# if to_date is the first day, get the last day of previous month
 			to_date = add_days(to_date, -1)
-		else:
-			# to_date should be the last day of the new to_date's month
-			to_date = get_last_day(to_date)
 
 		if to_date <= year_end_date:
 			# the normal case
diff --git a/erpnext/accounts/report/purchase_register/purchase_register.py b/erpnext/accounts/report/purchase_register/purchase_register.py
index 4bba066..47f79f1 100644
--- a/erpnext/accounts/report/purchase_register/purchase_register.py
+++ b/erpnext/accounts/report/purchase_register/purchase_register.py
@@ -185,7 +185,7 @@
 			pr_list = [d.purchase_receipt]
 		elif d.po_detail:
 			pr_list = frappe.db.sql_list("""select distinct parent from `tabPurchase Receipt Item`
-				where docstatus=1 and prevdoc_detail_docname=%s""", d.po_detail)
+				where docstatus=1 and purchase_order_item=%s""", d.po_detail)
 
 		if pr_list:
 			invoice_po_pr_map.setdefault(d.parent, frappe._dict()).setdefault("purchase_receipt", pr_list)
diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
index 03f7a34..f627b4a 100644
--- a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
+++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.py
@@ -3,11 +3,9 @@
 
 from __future__ import unicode_literals
 from erpnext.setup.utils import get_exchange_rate
-
 import frappe
 
 def execute(filters=None):
-	
 	qty_list = get_quantity_list(filters.item)
 	
 	data = get_quote_list(filters.item, qty_list)
@@ -15,12 +13,9 @@
 	columns = get_columns(qty_list)
 	
 	return columns, data
-
 	
 def get_quote_list(item, qty_list):
-	
 	out = []
-	
 	if item:
 		price_data = []
 		suppliers = []
@@ -38,8 +33,11 @@
 			
 		#Add a row for each supplier
 		for root in set(suppliers):
-			supplier_currency = frappe.db.get_value("Supplier",root,"default_currency")
-			exg = get_exchange_rate(supplier_currency, company_currency)
+			supplier_currency = frappe.db.get_value("Supplier", root, "default_currency")
+			if supplier_currency:
+				exchange_rate = get_exchange_rate(supplier_currency, company_currency)
+			else:
+				exchange_rate = 1
 
 			row = frappe._dict({
 				"supplier_name": root
@@ -48,7 +46,7 @@
 				# Get the quantity for this row
 				for item_price in price_data:
 					if str(item_price.qty) == col.key and item_price.supplier == root:
-						row[col.key] = item_price.rate * exg
+						row[col.key] = item_price.rate * exchange_rate
 						row[col.key + "QUOTE"] = item_price.parent
 						break
 					else:
@@ -56,15 +54,11 @@
 						row[col.key + "QUOTE"] = ""
 			out.append(row)
 			
-
-	
 	return out
 	
 def get_quantity_list(item):
-	
 	out = []
 	
-			
 	if item:
 		qty_list = frappe.db.sql("""select distinct qty from `tabSupplier Quotation Item` where ifnull(item_code,'')=%s and docstatus < 2""", item, as_dict=1)
 		qty_list.sort(reverse=False)
@@ -102,5 +96,4 @@
 			"width": 90
 		})
 
-
-	return columns
\ No newline at end of file
+	return columns
diff --git a/erpnext/patches/v6_16/update_billing_status_in_dn_and_pr.py b/erpnext/patches/v6_16/update_billing_status_in_dn_and_pr.py
index b660d39..481f130 100644
--- a/erpnext/patches/v6_16/update_billing_status_in_dn_and_pr.py
+++ b/erpnext/patches/v6_16/update_billing_status_in_dn_and_pr.py
@@ -22,7 +22,7 @@
 
 	# Update billed_amt in DN and PR which are not against any order
 	for d in frappe.db.sql("""select name from `tabPurchase Receipt Item` item
-		where (prevdoc_detail_docname is null or prevdoc_detail_docname = '') and docstatus=1""", as_dict=1):
+		where (purchase_order_item is null or purchase_order_item = '') and docstatus=1""", as_dict=1):
 
 		billed_amt = frappe.db.sql("""select sum(amount) from `tabPurchase Invoice Item`
 			where pr_detail=%s and docstatus=1""", d.name)
diff --git a/erpnext/patches/v7_0/update_status_of_po_so.py b/erpnext/patches/v7_0/update_status_of_po_so.py
index 0e2dd74..c0b6f59 100644
--- a/erpnext/patches/v7_0/update_status_of_po_so.py
+++ b/erpnext/patches/v7_0/update_status_of_po_so.py
@@ -18,9 +18,9 @@
 			`tabPurchase Order`.per_received = round((select sum(if(qty > ifnull(received_qty, 0),
 					ifnull(received_qty, 0), qty)) / sum(qty) *100 from `tabPurchase Order Item`
 					where parent = `tabPurchase Order`.name), 2),
-			`tabPurchase Order`.per_billed = round((select sum( if(amount > ifnull(billed_amt, 0),
+			`tabPurchase Order`.per_billed = ifnull(round((select sum( if(amount > ifnull(billed_amt, 0),
 					ifnull(billed_amt, 0), amount)) / sum(amount) *100 from `tabPurchase Order Item`
-					where parent = `tabPurchase Order`.name), 2)""")
+					where parent = `tabPurchase Order`.name), 2), 0)""")
 
 def update_so_per_delivered_per_billed():
 	frappe.db.sql(""" 
@@ -30,9 +30,9 @@
 			`tabSales Order`.per_delivered = round((select sum( if(qty > ifnull(delivered_qty, 0),
 					ifnull(delivered_qty, 0), qty)) / sum(qty) *100 from `tabSales Order Item` 
 					where parent = `tabSales Order`.name), 2), 
-			`tabSales Order`.per_billed = round((select sum( if(amount > ifnull(billed_amt, 0),
+			`tabSales Order`.per_billed = ifnull(round((select sum( if(amount > ifnull(billed_amt, 0),
 					ifnull(billed_amt, 0), amount)) / sum(amount) *100 from `tabSales Order Item`
-					where parent = `tabSales Order`.name), 2)""")
+					where parent = `tabSales Order`.name), 2), 0)""")
 
 def update_status():
 	frappe.db.sql("""
diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.py b/erpnext/stock/doctype/quality_inspection/quality_inspection.py
index 3ba3056..c3808f7 100644
--- a/erpnext/stock/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.py
@@ -33,12 +33,11 @@
 				
 	def on_cancel(self):
 		if self.reference_type and self.reference_name:
-			frappe.db.sql("""update `tab{doctype} Item` t1, `tab{doctype}` t2
-				set t1.quality_inspection = null, t2.modified = %s
-				where t1.parent = %s and t1.item_code = %s and t1.parent = t2.name"""
-				.format(doctype=self.reference_type),
-				(self.modified, self.reference_name, self.item_code))
-
+			frappe.db.sql("""update `tab{doctype} Item` 
+				set quality_inspection = null, modified=%s 
+				where quality_inspection = %s"""
+				.format(doctype=self.reference_type), (self.modified, self.name))
+				
 def item_query(doctype, txt, searchfield, start, page_len, filters):
 	if filters.get("from"):
 		from frappe.desk.reportview import get_match_cond