Merge branch 'master' of github.com:webnotes/erpnext into edge
diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py
index 2e1bc7e..4f20308 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/accounts/doctype/journal_voucher/journal_voucher.py
@@ -248,22 +248,23 @@
 		from accounts.general_ledger import make_gl_entries
 		gl_map = []
 		for d in self.doclist.get({"parentfield": "entries"}):
-			gl_map.append(
-				self.get_gl_dict({
-					"account": d.account,
-					"against": d.against_account,
-					"debit": d.debit,
-					"credit": d.credit,
-					"against_voucher_type": ((d.against_voucher and "Purchase Invoice") 
-						or (d.against_invoice and "Sales Invoice") 
-						or (d.against_jv and "Journal Voucher")),
-					"against_voucher": d.against_voucher or d.against_invoice or d.against_jv,
-					"remarks": self.doc.remark,
-					"cost_center": d.cost_center
-				}, cancel)
-			)
-			
-		make_gl_entries(gl_map, cancel=cancel, adv_adj=adv_adj)
+			if d.debit or d.credit:
+				gl_map.append(
+					self.get_gl_dict({
+						"account": d.account,
+						"against": d.against_account,
+						"debit": d.debit,
+						"credit": d.credit,
+						"against_voucher_type": ((d.against_voucher and "Purchase Invoice") 
+							or (d.against_invoice and "Sales Invoice") 
+							or (d.against_jv and "Journal Voucher")),
+						"against_voucher": d.against_voucher or d.against_invoice or d.against_jv,
+						"remarks": self.doc.remark,
+						"cost_center": d.cost_center
+					}, cancel)
+				)
+		if gl_map:
+			make_gl_entries(gl_map, cancel=cancel, adv_adj=adv_adj)
 
 	def get_outstanding(self, args):
 		args = eval(args)
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 5f7e848..98bfda5 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -422,16 +422,17 @@
 		abbr = self.get_company_abbr()
 		
 		# parent's gl entry
-		gl_entries.append(
-			self.get_gl_dict({
-				"account": self.doc.credit_to,
-				"against": self.doc.against_expense_account,
-				"credit": self.doc.grand_total,
-				"remarks": self.doc.remarks,
-				"against_voucher": self.doc.name,
-				"against_voucher_type": self.doc.doctype,
-			}, is_cancel)
-		)
+		if self.doc.grand_total:
+			gl_entries.append(
+				self.get_gl_dict({
+					"account": self.doc.credit_to,
+					"against": self.doc.against_expense_account,
+					"credit": self.doc.grand_total,
+					"remarks": self.doc.remarks,
+					"against_voucher": self.doc.name,
+					"against_voucher_type": self.doc.doctype,
+				}, is_cancel)
+			)
 	
 		# tax table gl entries
 		for tax in getlist(self.doclist, "purchase_tax_details"):
@@ -506,7 +507,9 @@
 					"cost_center": self.doc.write_off_cost_center
 				}, is_cancel)
 			)
-		make_gl_entries(gl_entries, cancel=is_cancel)
+		
+		if gl_entries:
+			make_gl_entries(gl_entries, cancel=is_cancel)
 
 
 	def check_next_docstatus(self):
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 7d9a78a..8ffe17d 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -637,16 +637,17 @@
 		abbr = self.get_company_abbr()
 		
 		# parent's gl entry
-		gl_entries.append(
-			self.get_gl_dict({
-				"account": self.doc.debit_to,
-				"against": self.doc.against_income_account,
-				"debit": self.doc.grand_total,
-				"remarks": self.doc.remarks,
-				"against_voucher": self.doc.name,
-				"against_voucher_type": self.doc.doctype,
-			}, is_cancel)
-		)
+		if self.doc.grand_total:
+			gl_entries.append(
+				self.get_gl_dict({
+					"account": self.doc.debit_to,
+					"against": self.doc.against_income_account,
+					"debit": self.doc.grand_total,
+					"remarks": self.doc.remarks,
+					"against_voucher": self.doc.name,
+					"against_voucher_type": self.doc.doctype,
+				}, is_cancel)
+			)
 	
 		# tax table gl entries
 		for tax in self.doclist.get({"parentfield": "other_charges"}):
@@ -745,8 +746,9 @@
 		
 		update_outstanding = self.doc.is_pos and self.doc.write_off_account and 'No' or 'Yes'
 		merge_entries=cint(self.doc.is_pos)!=1 and 1 or 0
-		make_gl_entries(gl_entries, cancel=is_cancel, 
-			update_outstanding=update_outstanding, merge_entries=merge_entries)
+		if gl_entries:
+			make_gl_entries(gl_entries, cancel=is_cancel, 
+				update_outstanding=update_outstanding, merge_entries=merge_entries)
 
 	def update_c_form(self):
 		"""Update amended id in C-form"""