From 83db3e3ddb5c5f0013e78dbe545cf45ba4e739f9 Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Mon, 1 Dec 2014 16:53:29 +0530 Subject: [PATCH 1/4] "From time" cannot be later than "To time" and hours cannot be negative --- erpnext/projects/doctype/time_log/test_time_log.py | 9 +++++++++ erpnext/projects/doctype/time_log/time_log.py | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py index 4a312adb41..d0cf6a0328 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 @@ class TestTimeLog(unittest.TestCase): 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 eb8afc7729..b925114ceb 100644 --- a/erpnext/projects/doctype/time_log/time_log.py +++ b/erpnext/projects/doctype/time_log/time_log.py @@ -19,10 +19,12 @@ class TimeLog(Document): 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 = { From d0a44ca85c8cb30b2a507d0675611def890cea33 Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Mon, 1 Dec 2014 23:31:53 +0530 Subject: [PATCH 2/4] Changed contact_date to Datetime so appointment or call with time can be scheduled --- erpnext/selling/doctype/lead/lead.json | 4 ++-- erpnext/selling/doctype/lead/lead.py | 1 + erpnext/selling/doctype/opportunity/opportunity.json | 4 ++-- erpnext/selling/doctype/opportunity/opportunity.py | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/erpnext/selling/doctype/lead/lead.json b/erpnext/selling/doctype/lead/lead.json index 2d3d49c8f8..7a1d6d6940 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 98bed4dfc2..0fcfc1c306 100644 --- a/erpnext/selling/doctype/lead/lead.py +++ b/erpnext/selling/doctype/lead/lead.py @@ -45,6 +45,7 @@ class Lead(SellingController): 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 513fbc8bdb..17291ad13f 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 ba331f9052..4420ad9e47 100644 --- a/erpnext/selling/doctype/opportunity/opportunity.py +++ b/erpnext/selling/doctype/opportunity/opportunity.py @@ -57,6 +57,7 @@ class Opportunity(TransactionBase): opts = frappe._dict() opts.description = "" + opts.contact_date = self.contact_date if self.customer: if self.contact_person: From 185af03fb2ee290feab48ab3c47464e4443cfc33 Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Tue, 2 Dec 2014 14:18:10 +0530 Subject: [PATCH 3/4] Update time_log.py --- erpnext/projects/doctype/time_log/time_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py index b925114ceb..7912ff65f9 100644 --- a/erpnext/projects/doctype/time_log/time_log.py +++ b/erpnext/projects/doctype/time_log/time_log.py @@ -24,7 +24,7 @@ class TimeLog(Document): 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\'")) + frappe.throw(_("'From Time' cannot be later than 'To Time'")) def set_status(self): self.status = { From b80d892eab56717fdf94d88029892d1fda27fef1 Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Tue, 2 Dec 2014 14:19:29 +0530 Subject: [PATCH 4/4] removed unecessary backslash --- erpnext/projects/doctype/time_log/time_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py index b925114ceb..7912ff65f9 100644 --- a/erpnext/projects/doctype/time_log/time_log.py +++ b/erpnext/projects/doctype/time_log/time_log.py @@ -24,7 +24,7 @@ class TimeLog(Document): 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\'")) + frappe.throw(_("'From Time' cannot be later than 'To Time'")) def set_status(self): self.status = {