Merge branch 'master' into edge
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 4c71cb3..050a490 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -558,13 +558,15 @@
 		"""Validate values with reference document with previous document"""
 		for d in self.doclist.get({"parentfield": "entries"}):
 			if d.so_detail:
-				self.check_value("Sales Order", d.so_detail, d.export_rate, d.item_code)
+				self.check_value("Sales Order", d.sales_order, d.so_detail, 
+					d.export_rate, d.item_code)
 			if d.dn_detail:
-				self.check_value("Delivery Note", d.dn_detail, d.export_rate, d.item_code)
+				self.check_value("Delivery Note", d.delivery_note, d.dn_detail, 
+					d.export_rate, d.item_code)
 				
-	def check_value(self, ref_dt, ref_dn, val, item_code):
-		ref_val = webnotes.conn.get_value(ref_dt + "Item", ref_dn, "export_rate")
-		if flt(ref_val) != val:
+	def check_value(self, ref_dt, ref_dn, ref_item_dn, val, item_code):
+		ref_val = webnotes.conn.get_value(ref_dt + " Item", ref_item_dn, "export_rate")
+		if flt(ref_val) != flt(val):
 			msgprint(_("Rate is not matching with ") + ref_dt + ": " + ref_dn + 
 				_(" for item: ") + item_code, raise_exception=True)
 
diff --git a/patches/may_2013/p05_update_cancelled_gl_entries.py b/patches/may_2013/p05_update_cancelled_gl_entries.py
new file mode 100644
index 0000000..59eed7e
--- /dev/null
+++ b/patches/may_2013/p05_update_cancelled_gl_entries.py
@@ -0,0 +1,29 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import cint
+
+def execute():
+	aii_enabled = cint(webnotes.conn.get_value("Global Defaults", None, 
+		"auto_inventory_accounting"))
+	
+	if aii_enabled:
+		webnotes.conn.sql("""update `tabGL Entry` gle set is_cancelled = 'Yes' 
+			where voucher_type = 'Delivery Note'
+			and exists(select name from `tabDelivery Note` 
+				where name = gle.voucher_no and docstatus = 2)""")
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 89f48e5..ea61a04 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -251,4 +251,5 @@
 	"patches.may_2013.p02_update_valuation_rate",
 	"patches.may_2013.p03_update_support_ticket",
 	"patches.may_2013.p04_reorder_level",
+	"patches.may_2013.p05_update_cancelled_gl_entries",
 ]
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 15e24ef..6ffd960 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -419,4 +419,4 @@
 				
 		if gl_entries:
 			from accounts.general_ledger import make_gl_entries
-			make_gl_entries(gl_entries)
\ No newline at end of file
+			make_gl_entries(gl_entries, cancel=(self.doc.docstatus == 2))
\ No newline at end of file
diff --git a/stock/stock_ledger.py b/stock/stock_ledger.py
index 2480263..10e490c 100644
--- a/stock/stock_ledger.py
+++ b/stock/stock_ledger.py
@@ -35,6 +35,9 @@
 			"posting_time": "12:00"
 		}
 	"""
+	global _exceptions
+	_exceptions = []
+	
 	previous_sle = get_sle_before_datetime(args)
 	
 	qty_after_transaction = flt(previous_sle.get("qty_after_transaction"))