Merge pull request #2451 from revant/develop

"From time" cannot be later than "To time" and hours cannot be negative
diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py
index 4a312ad..d0cf6a0 100644
--- a/erpnext/projects/doctype/time_log/test_time_log.py
+++ b/erpnext/projects/doctype/time_log/test_time_log.py
@@ -16,6 +16,15 @@
 		self.assertRaises(OverlapError, ts.insert)
 
 		frappe.db.sql("delete from `tabTime Log`")
+	
+	def test_negative_hours(self):
+		frappe.db.sql("delete from `tabTime Log`")
+		test_time_log = frappe.new_doc("Time Log")
+		test_time_log.activity_type = "Communication"
+		test_time_log.from_time = "2013-01-01 11:00:00.000000"
+		test_time_log.to_time = "2013-01-01 10:00:00.000000"
+		self.assertRaises(frappe.ValidationError, test_time_log.save)
+		frappe.db.sql("delete from `tabTime Log`")
 
 test_records = frappe.get_test_records('Time Log')
 test_ignore = ["Time Log Batch", "Sales Invoice"]
diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py
index eb8afc7..7912ff6 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -19,10 +19,12 @@
 		self.set_status()
 		self.validate_overlap()
 		self.calculate_total_hours()
-
+		
 	def calculate_total_hours(self):
 		from frappe.utils import time_diff_in_hours
 		self.hours = time_diff_in_hours(self.to_time, self.from_time)
+		if self.hours < 0:
+			frappe.throw(_("'From Time' cannot be later than 'To Time'"))
 
 	def set_status(self):
 		self.status = {
diff --git a/erpnext/selling/doctype/lead/lead.json b/erpnext/selling/doctype/lead/lead.json
index 2d3d49c..7a1d6d6 100644
--- a/erpnext/selling/doctype/lead/lead.json
+++ b/erpnext/selling/doctype/lead/lead.json
@@ -160,7 +160,7 @@
    "allow_on_submit": 0, 
    "description": "Add to calendar on this date", 
    "fieldname": "contact_date", 
-   "fieldtype": "Date", 
+   "fieldtype": "Datetime", 
    "in_filter": 1, 
    "label": "Next Contact Date", 
    "no_copy": 1, 
@@ -368,7 +368,7 @@
  ], 
  "icon": "icon-user", 
  "idx": 1, 
- "modified": "2014-08-12 05:22:18.801092", 
+ "modified": "2014-12-01 08:22:23.286314", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Lead", 
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 98bed4d..0fcfc1c 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -45,6 +45,7 @@
 	def add_calendar_event(self, opts=None, force=False):
 		super(Lead, self).add_calendar_event({
 			"owner": self.lead_owner,
+			"starts_on": self.contact_date,
 			"subject": ('Contact ' + cstr(self.lead_name)),
 			"description": ('Contact ' + cstr(self.lead_name)) + \
 				(self.contact_by and ('. By : ' + cstr(self.contact_by)) or '')
diff --git a/erpnext/selling/doctype/opportunity/opportunity.json b/erpnext/selling/doctype/opportunity/opportunity.json
index 513fbc8..17291ad 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.json
+++ b/erpnext/selling/doctype/opportunity/opportunity.json
@@ -372,7 +372,7 @@
   {
    "description": "Your sales person will get a reminder on this date to contact the customer", 
    "fieldname": "contact_date", 
-   "fieldtype": "Date", 
+   "fieldtype": "Datetime", 
    "label": "Next Contact Date", 
    "oldfieldname": "contact_date", 
    "oldfieldtype": "Date", 
@@ -416,7 +416,7 @@
  "icon": "icon-info-sign", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-08-12 05:21:51.282397", 
+ "modified": "2014-12-01 08:46:35.331148", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Opportunity", 
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index ba331f9..4420ad9 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -57,6 +57,7 @@
 			opts = frappe._dict()
 
 		opts.description = ""
+		opts.contact_date = self.contact_date
 
 		if self.customer:
 			if self.contact_person: