Merge branch 'develop'
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 38f5230..85c4e14 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1 +1 @@
-__version__ = '4.15.1'
+__version__ = '4.15.2'
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 076dad6..52e001c 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -4,7 +4,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "4.15.1"
+app_version = "4.15.2"
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/patches/v4_1/fix_jv_remarks.py b/erpnext/patches/v4_1/fix_jv_remarks.py
index 3b2f342..99797e1 100644
--- a/erpnext/patches/v4_1/fix_jv_remarks.py
+++ b/erpnext/patches/v4_1/fix_jv_remarks.py
@@ -6,6 +6,7 @@
 
 def execute():
 	reference_date = guess_reference_date()
+	frappe.reload_doc('accounts', 'doctype', 'journal_voucher_detail')
 	for name in frappe.db.sql_list("""select name from `tabJournal Voucher`
 		where date(creation)>=%s""", reference_date):
 		jv = frappe.get_doc("Journal Voucher", name)
diff --git a/erpnext/patches/v4_2/recalculate_bom_costs.py b/erpnext/patches/v4_2/recalculate_bom_costs.py
index c05fd03..37f0413 100644
--- a/erpnext/patches/v4_2/recalculate_bom_costs.py
+++ b/erpnext/patches/v4_2/recalculate_bom_costs.py
@@ -5,6 +5,7 @@
 import frappe
 
 def execute():
+	frappe.reload_doc('manufacturing', 'doctype', 'bom_operation')
 	for d in frappe.db.sql("""select bom.name from `tabBOM` bom where bom.docstatus < 2 and
 		exists(select bom_op.name from `tabBOM Operation` bom_op where
 		bom.name = bom_op.parent and bom_op.fixed_cycle_cost IS NOT NULL)""", as_dict=1):
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json
index ec50b95..98e7748 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.json
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.json
@@ -180,7 +180,7 @@
    "fieldtype": "Data", 
    "hidden": 0, 
    "label": "Customer's Purchase Order No", 
-   "no_copy": 1, 
+   "no_copy": 0, 
    "oldfieldname": "po_no", 
    "oldfieldtype": "Data", 
    "permlevel": 0, 
@@ -1013,7 +1013,7 @@
  "idx": 1, 
  "in_create": 0, 
  "is_submittable": 1, 
- "modified": "2014-12-16 10:37:08.934881", 
+ "modified": "2014-12-22 14:58:19.575566", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Delivery Note", 
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 7fdd440..6202e94 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -39,8 +39,8 @@
 				(self.warehouse, self.item_code, self.batch_no))[0][0])
 
 			if batch_bal_after_transaction < 0:
-				frappe.throw(_("Negative balance in Batch {0} for Item {1} at Warehouse {2} on {3} {4}").format(\
-					batch_bal_after_transaction - self.actual_qty, self.item_code, self.warehouse,
+				frappe.throw(_("Negative balance {0} in Batch {1} for Item {2} at Warehouse {3} on {4} {5}")
+					.format(batch_bal_after_transaction - self.actual_qty, self.batch_no, self.item_code, self.warehouse,
 						formatdate(self.posting_date), self.posting_time))
 
 	def validate_mandatory(self):
diff --git a/setup.py b/setup.py
index 731141e..64e7b4d 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 import os
 
-version = "4.15.1"
+version = "4.15.2"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()