Merge branch 'develop'
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index e98ce43..f2ff8cd 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '5.0.13'
+__version__ = '5.0.14'
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 5ff9e5f..3ea92e1 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -4,7 +4,7 @@
 frappe.provide("erpnext.accounts");
 frappe.require("assets/erpnext/js/utils.js");
 
-erpnext.accounts.JournalVoucher = frappe.ui.form.Controller.extend({
+erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({
 	onload: function() {
 		this.load_defaults();
 		this.setup_queries();
@@ -130,10 +130,31 @@
 				cur_frm.cscript.update_totals(me.frm.doc);
 			}
 		});
-	}
+	},
+
+	accounts_add: function(doc, cdt, cdn) {
+		var row = frappe.get_doc(cdt, cdn);
+		$.each(doc.accounts, function(i, d) {
+			if(d.account && d.party && d.party_type) {
+				row.account = d.account;
+				row.party = d.party;
+				row.party_type = d.party_type;
+			}
+		});
+
+		// set difference
+		if(doc.difference) {
+			if(doc.difference > 0) {
+				row.credit = doc.difference;
+			} else {
+				row.debit = -doc.difference;
+			}
+		}
+	},
+
 });
 
-cur_frm.script_manager.make(erpnext.accounts.JournalVoucher);
+cur_frm.script_manager.make(erpnext.accounts.JournalEntry);
 
 cur_frm.cscript.refresh = function(doc) {
 	erpnext.toggle_naming_series();
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 1e2b352..1f296e5 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -81,7 +81,8 @@
 				frappe.throw(_("Row {0}: Party Type and Party is only applicable against Receivable / Payable account").format(d.idx))
 
 	def check_credit_limit(self):
-		customers = list(set([d.party for d in self.get("accounts") if d.party_type=="Customer" and flt(d.debit) > 0]))
+		customers = list(set([d.party for d in self.get("accounts") 
+			if d.party_type=="Customer" and d.party and flt(d.debit) > 0]))
 		if customers:
 			from erpnext.selling.doctype.customer.customer import check_credit_limit
 			for customer in customers:
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 0ed4433..70d6fb9 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -205,9 +205,9 @@
 
 def filter_pricing_rules(args, pricing_rules):
 	# filter for qty
-	if pricing_rules and args.get("qty"):
-		pricing_rules = filter(lambda x: (args.qty>=flt(x.min_qty)
-			and (args.qty<=x.max_qty if x.max_qty else True)), pricing_rules)
+	if pricing_rules:
+		pricing_rules = filter(lambda x: (flt(args.get("qty"))>=flt(x.min_qty)
+			and (flt(args.get("qty"))<=x.max_qty if x.max_qty else True)), pricing_rules)
 
 	# find pricing rule with highest priority
 	if pricing_rules:
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 57e17b6..b35fa8a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -65,7 +65,7 @@
 					});
 
 				if(!from_delivery_note) {
-					cur_frm.page.add_menu_item(__('Make Delivery'), cur_frm.cscript['Make Delivery Note'], "icon-truck")
+					cur_frm.add_custom_button(__('Make Delivery'), cur_frm.cscript['Make Delivery Note'], "icon-truck")
 				}
 			}
 
@@ -75,14 +75,14 @@
 		}
 
 		// Show buttons only when pos view is active
-		if (doc.docstatus===0 && !cur_frm.page.current_view_name!=="pos") {
+		if (cint(doc.docstatus==0) && cur_frm.page.current_view_name!=="pos") {
 			cur_frm.cscript.sales_order_btn();
 			cur_frm.cscript.delivery_note_btn();
 		}
 	},
 
 	sales_order_btn: function() {
-		this.$sales_order_btn = cur_frm.page.add_menu_item(__('From Sales Order'),
+		this.$sales_order_btn = cur_frm.add_custom_button(__('From Sales Order'),
 			function() {
 				frappe.model.map_current_doc({
 					method: "erpnext.selling.doctype.sales_order.sales_order.make_sales_invoice",
@@ -99,7 +99,7 @@
 	},
 
 	delivery_note_btn: function() {
-		this.$delivery_note_btn = cur_frm.page.add_menu_item(__('From Delivery Note'),
+		this.$delivery_note_btn = cur_frm.add_custom_button(__('From Delivery Note'),
 			function() {
 				frappe.model.map_current_doc({
 					method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice",
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index 76b5309..75dcbbf 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -101,7 +101,6 @@
 		debit_credit_diff += entry.debit - entry.credit
 	
 	debit_credit_diff = flt(debit_credit_diff, precision)
-	print debit_credit_diff, 1.0 / (10**precision)
 	if abs(debit_credit_diff) >= (2.0 / (10**precision)):
 		frappe.throw(_("Debit and Credit not equal for {0} #{1}. Difference is {2}.")
 			.format(gl_map[0].voucher_type, gl_map[0].voucher_no, debit_credit_diff))
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index 98a121a..dd7def8 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -183,8 +183,6 @@
 				my_sle = self.sle.get((item_code, row.warehouse))
 				for i, sle in enumerate(my_sle):
 					# find the stock valution rate from stock ledger entry
-					print sle.voucher_type, row.parenttype, sle.voucher_no, row.parent, \
-						sle.voucher_detail_no, row.item_row
 					if sle.voucher_type == row.parenttype and row.parent == sle.voucher_no and \
 						sle.voucher_detail_no == row.item_row:
 							previous_stock_value = len(my_sle) > i+1 and \
diff --git a/erpnext/config/learn.py b/erpnext/config/learn.py
index 146bb21..ffcd76e 100644
--- a/erpnext/config/learn.py
+++ b/erpnext/config/learn.py
@@ -31,7 +31,7 @@
 				{
 					"type": "help",
 					"label": _("Opening Stock Balance"),
-					"youtube_id": "yPgrtfeCTs"
+					"youtube_id": "0yPgrtfeCTs"
 				},
 				{
 					"type": "help",
@@ -106,7 +106,7 @@
 				{
 					"type": "help",
 					"label": _("Opening Stock Balance"),
-					"youtube_id": "yPgrtfeCTs"
+					"youtube_id": "0yPgrtfeCTs"
 				},
 				{
 					"type": "help",
diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py
index 86ec458..70bb258 100644
--- a/erpnext/config/stock.py
+++ b/erpnext/config/stock.py
@@ -266,7 +266,7 @@
 				{
 					"type": "help",
 					"label": _("Opening Stock Balance"),
-					"youtube_id": "yPgrtfeCTs"
+					"youtube_id": "0yPgrtfeCTs"
 				},
 				{
 					"type": "help",
diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.py b/erpnext/crm/doctype/newsletter_list/newsletter_list.py
index 1eb95ea..3a580d3 100644
--- a/erpnext/crm/doctype/newsletter_list/newsletter_list.py
+++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.py
@@ -44,11 +44,14 @@
 		return self.update_total_subscribers()
 
 	def update_total_subscribers(self):
-		self.total_subscribers = frappe.db.sql("""select count(*) from `tabNewsletter List Subscriber`
-			where newsletter_list=%s""", self.name)[0][0]
+		self.total_subscribers = self.get_total_subscribers()
 		self.db_update()
 		return self.total_subscribers
 
+	def get_total_subscribers(self):
+		return frappe.db.sql("""select count(*) from `tabNewsletter List Subscriber`
+			where newsletter_list=%s""", self.name)[0][0]
+
 	def on_trash(self):
 		for d in frappe.get_all("Newsletter List Subscriber", "name", {"newsletter_list": self.name}):
 			frappe.delete_doc("Newsletter List Subscriber", d.name)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 47ea8f5..0d75a53 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -5,7 +5,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "5.0.13"
+app_version = "5.0.14"
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index 272ec39..4e74b28 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -23,9 +23,6 @@
 	def on_update(self):
 		self.get_total_allocated_leaves()
 
-	def on_cancel(self):
-		self.check_for_leave_application()
-
 	def validate_new_leaves_allocated_value(self):
 		"""validate that leave allocation is in multiples of 0.5"""
 		if flt(self.new_leaves_allocated) % 0.5:
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index 1b98682..5105fcd 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -12,7 +12,6 @@
 class NamingSeriesNotSetError(frappe.ValidationError): pass
 
 class NamingSeries(Document):
-
 	def get_transactions(self, arg=None):
 		doctypes = list(set(frappe.db.sql_list("""select parent
 				from `tabDocField` where fieldname='naming_series'""")
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 3f73932..399946b 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -163,8 +163,8 @@
 		"uom": item.stock_uom,
 		"min_order_qty": flt(item.min_order_qty) if args.parenttype == "Material Request" else "",
 		"conversion_factor": 1.0,
-		"qty": args.qty or 0.0,
-		"stock_qty": 0.0,
+		"qty": args.qty or 1.0,
+		"stock_qty": 1.0,
 		"price_list_rate": 0.0,
 		"base_price_list_rate": 0.0,
 		"rate": 0.0,
diff --git a/erpnext/templates/print_formats/includes/item_table_description.html b/erpnext/templates/print_formats/includes/item_table_description.html
index 34f95b9..107abe0 100644
--- a/erpnext/templates/print_formats/includes/item_table_description.html
+++ b/erpnext/templates/print_formats/includes/item_table_description.html
@@ -7,8 +7,8 @@
     {% if doc.in_format_data("item_code") and not doc.is_print_hide("item_code") -%}
     	<div class="primary">{{ doc.item_code }}</div>
     {%- endif %}
-    {% if (doc.in_format_data("item_name") and
-    	(not doc.in_format_data("item_code") or doc.is_print_hide("item_code")
+    {% if (doc.in_format_data("item_name") and not doc.is_print_hide("item_name") and
+    	(not doc.in_format_data("item_code") or doc.is_print_hide("item_code") 
 			or doc.item_code != doc.item_name)) -%}
     	<div class="primary">{{ doc.get_formatted("item_name") }}</div>
     {%- endif %}
diff --git a/setup.py b/setup.py
index b2079d6..255951a 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 from setuptools import setup, find_packages
 
-version = "5.0.13"
+version = "5.0.14"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()