diff --git a/erpnext/accounts/doctype/asset/asset.py b/erpnext/accounts/doctype/asset/asset.py
index b8d0ec8..a99a8cf 100644
--- a/erpnext/accounts/doctype/asset/asset.py
+++ b/erpnext/accounts/doctype/asset/asset.py
@@ -32,7 +32,7 @@
 		self.set_status()
 
 	def validate_item(self):
-		item = frappe.db.get_value("Item", self.item_code, 
+		item = frappe.db.get_value("Item", self.item_code,
 			["is_fixed_asset", "is_stock_item", "disabled"], as_dict=1)
 		if not item:
 			frappe.throw(_("Item {0} does not exist").format(self.item_code))
@@ -42,7 +42,7 @@
 			frappe.throw(_("Item {0} must be a Fixed Asset Item").format(self.item_code))
 		elif item.is_stock_item:
 			frappe.throw(_("Item {0} must be a non-stock item").format(self.item_code))
-			
+
 	def set_missing_values(self):
 		if self.item_code:
 			item_details = get_item_details(self.item_code)
@@ -50,7 +50,7 @@
 				if not self.get(field):
 					self.set(field, value)
 
-		self.value_after_depreciation = (flt(self.gross_purchase_amount) - 
+		self.value_after_depreciation = (flt(self.gross_purchase_amount) -
 			flt(self.opening_accumulated_depreciation))
 
 	def validate_asset_values(self):
@@ -59,7 +59,7 @@
 
 		if not flt(self.gross_purchase_amount):
 			frappe.throw(_("Gross Purchase Amount is mandatory"), frappe.MandatoryError)
-		
+
 		if not self.is_existing_asset:
 			self.opening_accumulated_depreciation = 0
 			self.number_of_depreciations_booked = 0
@@ -70,33 +70,33 @@
 			if flt(self.opening_accumulated_depreciation) > depreciable_amount:
 					frappe.throw(_("Opening Accumulated Depreciation must be less than equal to {0}")
 						.format(depreciable_amount))
-						
+
 			if self.opening_accumulated_depreciation:
 				if not self.number_of_depreciations_booked:
 					frappe.throw(_("Please set Number of Depreciations Booked"))
 			else:
 				self.number_of_depreciations_booked = 0
-				
+
 			if cint(self.number_of_depreciations_booked) > cint(self.total_number_of_depreciations):
 				frappe.throw(_("Number of Depreciations Booked cannot be greater than Total Number of Depreciations"))
-						
+
 		if self.next_depreciation_date and getdate(self.next_depreciation_date) < getdate(nowdate()):
 			frappe.msgprint(_("Next Depreciation Date is entered as past date"), title=_('Warning'), indicator='red')
-		
+
 		if self.next_depreciation_date and getdate(self.next_depreciation_date) < getdate(self.purchase_date):
 			frappe.throw(_("Next Depreciation Date cannot be before Purchase Date"))
-			
-		if (flt(self.value_after_depreciation) > flt(self.expected_value_after_useful_life) 
+
+		if (flt(self.value_after_depreciation) > flt(self.expected_value_after_useful_life)
 			and not self.next_depreciation_date):
 				frappe.throw(_("Please set Next Depreciation Date"))
 
 	def make_depreciation_schedule(self):
 		if self.depreciation_method != 'Manual':
 			self.schedules = []
-			
+
 		if not self.get("schedules") and self.next_depreciation_date:
 			value_after_depreciation = flt(self.value_after_depreciation)
-			
+
 			number_of_pending_depreciations = cint(self.total_number_of_depreciations) - \
 				cint(self.number_of_depreciations_booked)
 			if number_of_pending_depreciations:
@@ -111,7 +111,7 @@
 						"schedule_date": schedule_date,
 						"depreciation_amount": depreciation_amount
 					})
-					
+
 	def set_accumulated_depreciation(self):
 		accumulated_depreciation = flt(self.opening_accumulated_depreciation)
 		for d in self.get("schedules"):
@@ -121,7 +121,7 @@
 	def get_depreciation_amount(self, depreciable_value):
 		if self.depreciation_method in ("Straight Line", "Manual"):
 			depreciation_amount = (flt(self.value_after_depreciation) -
-				flt(self.expected_value_after_useful_life)) / (cint(self.total_number_of_depreciations) - 
+				flt(self.expected_value_after_useful_life)) / (cint(self.total_number_of_depreciations) -
 				cint(self.number_of_depreciations_booked))
 		else:
 			factor = 200.0 /  self.total_number_of_depreciations
@@ -132,14 +132,14 @@
 				depreciation_amount = flt(depreciable_value) - flt(self.expected_value_after_useful_life)
 
 		return depreciation_amount
-		
+
 	def validate_expected_value_after_useful_life(self):
 		accumulated_depreciation_after_full_schedule = \
 			max([d.accumulated_depreciation_amount for d in self.get("schedules")])
-		
-		asset_value_after_full_schedule = (flt(self.gross_purchase_amount) - 
+
+		asset_value_after_full_schedule = (flt(self.gross_purchase_amount) -
 			flt(accumulated_depreciation_after_full_schedule))
-		
+
 		if self.expected_value_after_useful_life < asset_value_after_full_schedule:
 			frappe.throw(_("Expected value after useful life must be greater than or equal to {0}")
 				.format(asset_value_after_full_schedule))
@@ -156,8 +156,8 @@
 			if d.journal_entry:
 				frappe.get_doc("Journal Entry", d.journal_entry).cancel()
 				d.db_set("journal_entry", None)
-		
-		self.db_set("value_after_depreciation", 
+
+		self.db_set("value_after_depreciation",
 			(flt(self.gross_purchase_amount) - flt(self.opening_accumulated_depreciation)))
 
 	def set_status(self, status=None):
@@ -188,6 +188,7 @@
 	pi = frappe.new_doc("Purchase Invoice")
 	pi.company = company
 	pi.currency = frappe.db.get_value("Company", company, "default_currency")
+	pi.set_posting_date = 1
 	pi.posting_date = posting_date
 	pi.append("items", {
 		"item_code": item_code,
@@ -200,7 +201,7 @@
 	})
 	pi.set_missing_values()
 	return pi
-	
+
 @frappe.whitelist()
 def make_sales_invoice(asset, item_code, company):
 	si = frappe.new_doc("Sales Invoice")
@@ -217,7 +218,7 @@
 	})
 	si.set_missing_values()
 	return si
-	
+
 @frappe.whitelist()
 def transfer_asset(args):
 	import json
@@ -226,23 +227,23 @@
 	movement_entry.update(args)
 	movement_entry.insert()
 	movement_entry.submit()
-	
+
 	frappe.db.commit()
-	
+
 	frappe.msgprint(_("Asset Movement record {0} created").format("<a href='#Form/Asset Movement/{0}'>{0}</a>".format(movement_entry.name)))
-	
+
 @frappe.whitelist()
 def get_item_details(item_code):
 	asset_category = frappe.db.get_value("Item", item_code, "asset_category")
-	
+
 	if not asset_category:
 		frappe.throw(_("Please enter Asset Category in Item {0}").format(item_code))
-	
-	ret = frappe.db.get_value("Asset Category", asset_category, 
+
+	ret = frappe.db.get_value("Asset Category", asset_category,
 		["depreciation_method", "total_number_of_depreciations", "frequency_of_depreciation"], as_dict=1)
-		
+
 	ret.update({
 		"asset_category": asset_category
 	})
-		
+
 	return ret
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index e744a3c..7fac377 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -1,5 +1,6 @@
 {
  "allow_copy": 0, 
+ "allow_guest_to_view": 0, 
  "allow_import": 1, 
  "allow_rename": 0, 
  "autoname": "naming_series:", 
@@ -254,7 +255,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "default": "", 
-   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type)", 
+   "depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type) && doc.docstatus==0", 
    "fieldname": "party_type", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -1664,17 +1665,17 @@
    "unique": 0
   }
  ], 
+ "has_web_view": 0, 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
  "idx": 0, 
  "image_view": 0, 
  "in_create": 0, 
- "in_dialog": 0, 
  "is_submittable": 1, 
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-02-17 16:15:52.917533", 
+ "modified": "2017-03-14 17:12:48.816644", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Entry", 
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index f3d311b..cb4a087 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -1046,6 +1046,8 @@
 def create_sales_invoice(**args):
 	si = frappe.new_doc("Sales Invoice")
 	args = frappe._dict(args)
+	if si.posting_date:
+		si.set_posting_date = 1
 	si.posting_date = args.posting_date or nowdate()
 
 	si.company = args.company or "_Test Company"
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index a036760..713e9ba 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -93,6 +93,9 @@
 		"next_date": get_next_date(reference_doc.next_date, mcount,cint(reference_doc.repeat_on_day_of_month))
 	})
 
+	if new_document.meta.get_field('set_posting_time'):
+		new_document.set('set_posting_time', 1)
+
 	# copy document fields
 	for fieldname in ("owner", "recurring_type", "repeat_on_day_of_month",
 		"recurring_id", "notification_email_address", "is_recurring", "end_date",
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index f10b981..fce11dc 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -328,7 +328,7 @@
 
 	def test_delivery_of_bundled_items_to_target_warehouse(self):
 		set_perpetual_inventory()
-		
+
 		set_valuation_method("_Test Item", "FIFO")
 		set_valuation_method("_Test Item Home Desktop 100", "FIFO")
 
@@ -337,7 +337,7 @@
 				qty=100, rate=100)
 			create_stock_reconciliation(item_code="_Test Item Home Desktop 100",
 				target=warehouse, qty=100, rate=100)
-				
+
 		opening_qty_test_warehouse_1 = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
 
 		dn = create_delivery_note(item_code="_Test Product Bundle Item",
@@ -354,28 +354,28 @@
 
 		# stock value diff for source warehouse
 		# for "_Test Item"
-		stock_value_difference = frappe.db.get_value("Stock Ledger Entry", 
-			{"voucher_type": "Delivery Note", "voucher_no": dn.name, 
+		stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
+			{"voucher_type": "Delivery Note", "voucher_no": dn.name,
 				"item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"},
 			"stock_value_difference")
 
 		# stock value diff for target warehouse
-		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", 
-			{"voucher_type": "Delivery Note", "voucher_no": dn.name, 
+		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry",
+			{"voucher_type": "Delivery Note", "voucher_no": dn.name,
 				"item_code": "_Test Item", "warehouse": "_Test Warehouse 1 - _TC"},
 			"stock_value_difference")
 
 		self.assertEquals(abs(stock_value_difference), stock_value_difference1)
 
 		# for "_Test Item Home Desktop 100"
-		stock_value_difference = frappe.db.get_value("Stock Ledger Entry", 
-			{"voucher_type": "Delivery Note", "voucher_no": dn.name, 
+		stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
+			{"voucher_type": "Delivery Note", "voucher_no": dn.name,
 				"item_code": "_Test Item Home Desktop 100", "warehouse": "_Test Warehouse - _TC"},
 			"stock_value_difference")
 
 		# stock value diff for target warehouse
-		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", 
-			{"voucher_type": "Delivery Note", "voucher_no": dn.name, 
+		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry",
+			{"voucher_type": "Delivery Note", "voucher_no": dn.name,
 				"item_code": "_Test Item Home Desktop 100", "warehouse": "_Test Warehouse 1 - _TC"},
 			"stock_value_difference")
 
@@ -397,118 +397,120 @@
 			self.assertEquals([gle.debit, gle.credit], expected_values.get(gle.account))
 
 		set_perpetual_inventory(0)
-		
+
 	def test_closed_delivery_note(self):
 		from erpnext.stock.doctype.delivery_note.delivery_note import update_delivery_note_status
-		
+
 		dn = create_delivery_note(do_not_submit=True)
 		dn.submit()
-		
+
 		update_delivery_note_status(dn.name, "Closed")
 		self.assertEquals(frappe.db.get_value("Delivery Note", dn.name, "Status"), "Closed")
-		
+
 	def test_dn_billing_status_case1(self):
 		# SO -> DN -> SI
 		so = make_sales_order()
 		dn = create_dn_against_so(so.name, delivered_qty=2)
-		
+
 		self.assertEqual(dn.status, "To Bill")
 		self.assertEqual(dn.per_billed, 0)
-		
+
 		si = make_sales_invoice(dn.name)
 		si.submit()
-		
+
 		dn.load_from_db()
 		self.assertEqual(dn.get("items")[0].billed_amt, 200)
 		self.assertEqual(dn.per_billed, 100)
 		self.assertEqual(dn.status, "Completed")
-		
+
 	def test_dn_billing_status_case2(self):
 		# SO -> SI and SO -> DN1, DN2
 		from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note, make_sales_invoice
-		
+
 		so = make_sales_order()
-		
+
 		si = make_sales_invoice(so.name)
 		si.get("items")[0].qty = 5
 		si.insert()
 		si.submit()
-		
+
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
-		
+
 		dn1 = make_delivery_note(so.name)
+		dn1.set_posting_time = 1
 		dn1.posting_time = "10:00"
 		dn1.get("items")[0].qty = 2
 		dn1.submit()
-		
+
 		self.assertEqual(dn1.get("items")[0].billed_amt, 200)
 		self.assertEqual(dn1.per_billed, 100)
 		self.assertEqual(dn1.status, "Completed")
-		
+
 		dn2 = make_delivery_note(so.name)
 		dn2.posting_time = "08:00"
 		dn2.get("items")[0].qty = 4
 		dn2.submit()
-		
+
 		dn1.load_from_db()
 		self.assertEqual(dn1.get("items")[0].billed_amt, 100)
 		self.assertEqual(dn1.per_billed, 50)
 		self.assertEqual(dn1.status, "To Bill")
-		
+
 		self.assertEqual(dn2.get("items")[0].billed_amt, 400)
 		self.assertEqual(dn2.per_billed, 100)
 		self.assertEqual(dn2.status, "Completed")
-		
+
 	def test_dn_billing_status_case3(self):
 		# SO -> DN1 -> SI and SO -> SI and SO -> DN2
 		from erpnext.selling.doctype.sales_order.sales_order \
 			import make_delivery_note, make_sales_invoice as make_sales_invoice_from_so
 		frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
-		
+
 		so = make_sales_order()
-		
+
 		dn1 = make_delivery_note(so.name)
+		dn1.set_posting_time = 1
 		dn1.posting_time = "10:00"
 		dn1.get("items")[0].qty = 2
 		dn1.submit()
 
 		si1 = make_sales_invoice(dn1.name)
 		si1.submit()
-		
+
 		dn1.load_from_db()
 		self.assertEqual(dn1.per_billed, 100)
-		
+
 		si2 = make_sales_invoice_from_so(so.name)
 		si2.get("items")[0].qty = 4
 		si2.submit()
-		
+
 		dn2 = make_delivery_note(so.name)
 		dn2.posting_time = "08:00"
 		dn2.get("items")[0].qty = 5
 		dn2.submit()
-		
+
 		dn1.load_from_db()
 		self.assertEqual(dn1.get("items")[0].billed_amt, 200)
 		self.assertEqual(dn1.per_billed, 100)
 		self.assertEqual(dn1.status, "Completed")
-		
+
 		self.assertEqual(dn2.get("items")[0].billed_amt, 400)
 		self.assertEqual(dn2.per_billed, 80)
 		self.assertEqual(dn2.status, "To Bill")
-		
+
 	def test_dn_billing_status_case4(self):
 		# SO -> SI -> DN
 		from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
 		from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_delivery_note
-		
+
 		so = make_sales_order()
-		
+
 		si = make_sales_invoice(so.name)
 		si.submit()
-		
+
 		dn = make_delivery_note(si.name)
 		dn.submit()
-		
+
 		self.assertEqual(dn.get("items")[0].billed_amt, 1000)
 		self.assertEqual(dn.per_billed, 100)
 		self.assertEqual(dn.status, "Completed")
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 30f2a06..79df591 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -79,10 +79,10 @@
 
 	def test_auto_material_request_for_variant(self):
 		self._test_auto_material_request("_Test Variant Item-S")
-	
+
 	def test_auto_material_request_for_warehouse_group(self):
 		self._test_auto_material_request("_Test Item Warehouse Group Wise Reorder", warehouse="_Test Warehouse Group-C1 - _TC")
-		
+
 	def _test_auto_material_request(self, item_code, material_request_type="Purchase", warehouse="_Test Warehouse - _TC"):
 		item = frappe.get_doc("Item", item_code)
 
@@ -126,7 +126,7 @@
 
 		mr = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
 			qty=50, basic_rate=100, expense_account="Stock Adjustment - _TC")
-					
+
 		stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Stock",
 			"warehouse": mr.get("items")[0].t_warehouse})
 
@@ -154,7 +154,7 @@
 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
 			qty=50, basic_rate=100, expense_account="Stock Adjustment - _TC")
 
-		mi = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC", 
+		mi = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
 			qty=40, expense_account="Stock Adjustment - _TC")
 
 		self.check_stock_ledger_entries("Stock Entry", mi.name,
@@ -512,6 +512,7 @@
 		# test freeze_stocks_upto_days
 		frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 7)
 		se = frappe.copy_doc(test_records[0])
+		se.set_posting_time = 1
 		se.posting_date = add_days(nowdate(), -15)
 		se.insert()
 		self.assertRaises(StockFreezeError, se.submit)
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index f9629a1..212bb51 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -37,7 +37,7 @@
 
 		for d in input_data:
 			set_valuation_method("_Test Item", valuation_method)
-			
+
 			last_sle = get_previous_sle({
 				"item_code": "_Test Item",
 				"warehouse": "_Test Warehouse - _TC",
@@ -96,6 +96,7 @@
 	sr = frappe.new_doc("Stock Reconciliation")
 	sr.posting_date = args.posting_date or nowdate()
 	sr.posting_time = args.posting_time or nowtime()
+	sr.set_posting_time = 1
 	sr.company = args.company or "_Test Company"
 	sr.expense_account = args.expense_account or \
 		("Stock Adjustment - _TC" if frappe.get_all("Stock Ledger Entry") else "Temporary Opening - _TC")
