diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index 7a833f7..825a8dd 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -310,22 +310,19 @@
 		self.total_amount_in_words = money_in_words(amt, company_currency)
 
 	def check_credit_days(self):
-		date_diff = 0
 		if self.cheque_date:
-			date_diff = (getdate(self.cheque_date)-getdate(self.posting_date)).days
-
-		if date_diff <= 0: return
-
-		# Get List of Customer Account
-		acc_list = filter(lambda d: frappe.db.get_value("Account", d.account,
-		 	"master_type")=='Customer', self.get('entries'))
-
-		for d in acc_list:
-			credit_days = self.get_credit_days_for(d.account)
-			# Check credit days
-			if credit_days > 0 and not self.get_authorized_user() and cint(date_diff) > credit_days:
-				msgprint(_("Maximum allowed credit is {0} days after posting date").format(credit_days),
-					raise_exception=1)
+			for d in self.get("entries"):
+				if flt(d.credit) > 0 and d.against_invoice \
+					and frappe.db.get_value("Account", d.account, "master_type")=='Customer':
+						posting_date = frappe.db.get_value("Sales Invoice", d.against_invoice, "posting_date")
+						credit_days = self.get_credit_days_for(d.account)
+						if credit_days:
+							date_diff = (getdate(self.cheque_date) - getdate(posting_date)).days
+							if date_diff > flt(credit_days):
+								msgprint(_("Note: Reference Date exceeds allowed credit days by {0} days for {1}")
+									.format(date_diff - flt(credit_days), d.account))
+								if not self.get_authorized_user():
+									raise frappe.ValidationError
 
 	def get_credit_days_for(self, ac):
 		if not self.credit_days_for.has_key(ac):
@@ -333,8 +330,7 @@
 
 		if not self.credit_days_for[ac]:
 			if self.credit_days_global==-1:
-				self.credit_days_global = cint(frappe.db.get_value("Company",
-					self.company, "credit_days"))
+				self.credit_days_global = cint(frappe.db.get_value("Company", self.company, "credit_days"))
 
 			return self.credit_days_global
 		else:
@@ -343,10 +339,7 @@
 	def get_authorized_user(self):
 		if self.is_approving_authority==-1:
 			self.is_approving_authority = 0
-
-			# Fetch credit controller role
-			approving_authority = frappe.db.get_value("Accounts Settings", None,
-				"credit_controller")
+			approving_authority = frappe.db.get_value("Accounts Settings", None, "credit_controller")
 
 			# Check logged-in user is authorized
 			if approving_authority in frappe.user.get_roles():
