diff --git a/erpnext/hr/doctype/shift_assignment/shift_assignment.py b/erpnext/hr/doctype/shift_assignment/shift_assignment.py index fbbfe3102ab..ace9cb8f264 100644 --- a/erpnext/hr/doctype/shift_assignment/shift_assignment.py +++ b/erpnext/hr/doctype/shift_assignment/shift_assignment.py @@ -12,7 +12,7 @@ class OverlapError(frappe.ValidationError): pass class ShiftAssignment(Document): def validate(self): - self.validate_overlapping_dates(); + self.validate_overlapping_dates() def validate_overlapping_dates(self): if not self.name: diff --git a/erpnext/hr/doctype/shift_assignment/test_shift_assignment.py b/erpnext/hr/doctype/shift_assignment/test_shift_assignment.py index eb51adbebd4..7fe80a236c6 100644 --- a/erpnext/hr/doctype/shift_assignment/test_shift_assignment.py +++ b/erpnext/hr/doctype/shift_assignment/test_shift_assignment.py @@ -5,6 +5,23 @@ from __future__ import unicode_literals import frappe import unittest +from frappe.utils import nowdate + +test_dependencies = ["Shift Type"] class TestShiftAssignment(unittest.TestCase): - pass + + def setUp(self): + frappe.db.sql("delete from `tabShift Assignment`") + + def test_make_shift_assignment(self): + shift_assignment = frappe.get_doc({ + "doctype": "Shift Assignment", + "shift_type": "Day Shift", + "company": "_Test Company", + "employee": "_T-Employee-00001", + "date": nowdate() + }).insert() + shift_assignment.submit() + + self.assertEqual(shift_assignment.docstatus, 1) diff --git a/erpnext/hr/doctype/shift_request/shift_request.py b/erpnext/hr/doctype/shift_request/shift_request.py index 7057d20d73e..ff5de08ee5f 100644 --- a/erpnext/hr/doctype/shift_request/shift_request.py +++ b/erpnext/hr/doctype/shift_request/shift_request.py @@ -12,8 +12,8 @@ class OverlapError(frappe.ValidationError): pass class ShiftRequest(Document): def validate(self): - self.validate_dates(); - self.validate_shift_request_overlap_dates(); + self.validate_dates() + self.validate_shift_request_overlap_dates() def on_submit(self): date_list = self.get_working_days(self.from_date, self.to_date) @@ -27,6 +27,14 @@ class ShiftRequest(Document): assignment_doc.insert() assignment_doc.submit() + def on_cancel(self): + shift_assignment_list = frappe.get_list("Shift Assignment", {'employee': self.employee, 'shift_request': self.name}) + if shift_assignment_list: + for shift in shift_assignment_list: + shift_assignment_doc = frappe.get_doc("Shift Assignment", shift['name']) + shift_assignment_doc.cancel() + + def validate_dates(self): if self.from_date and self.to_date and (getdate(self.to_date) < getdate(self.from_date)): frappe.throw(_("To date cannot be before from date")) diff --git a/erpnext/hr/doctype/shift_request/test_shift_request.py b/erpnext/hr/doctype/shift_request/test_shift_request.py index d32443a9524..1d0cf719c29 100644 --- a/erpnext/hr/doctype/shift_request/test_shift_request.py +++ b/erpnext/hr/doctype/shift_request/test_shift_request.py @@ -8,6 +8,10 @@ import unittest from frappe.utils import nowdate class TestShiftRequest(unittest.TestCase): + def setUp(self): + for doctype in ["Shift Request", "Shift Assignment"]: + frappe.db.sql("delete from `tab{doctype}`".format(doctype=doctype)) + def test_make_shift_request(self): shift_request = frappe.get_doc({ "doctype": "Shift Request", @@ -20,9 +24,14 @@ class TestShiftRequest(unittest.TestCase): }) shift_request.insert() shift_request.submit() - shift_assignment = frappe.db.sql("""select employee - from `tabShift Assignment` - where shift_request = %s""", shift_request.name) - if shift_assignment: - employee = shift_assignment[0][0] - self.assertEqual(shift_request.employee, employee) \ No newline at end of file + shift_assignments = frappe.db.sql(''' + SELECT shift_request, employee + FROM `tabShift Assignment` + WHERE shift_request = '{0}' + '''.format(shift_request.name), as_dict=1) + for d in shift_assignments: + employee = d.get('employee') + self.assertEqual(shift_request.employee, employee) + shift_request.cancel() + shift_assignment_doc = frappe.get_doc("Shift Assignment", {"shift_request": d.get('shift_request')}) + self.assertEqual(shift_assignment_doc.docstatus, 2) \ No newline at end of file diff --git a/erpnext/hr/doctype/shift_type/test_shift_type.py b/erpnext/hr/doctype/shift_type/test_shift_type.py index d5afdf519b3..535072a0358 100644 --- a/erpnext/hr/doctype/shift_type/test_shift_type.py +++ b/erpnext/hr/doctype/shift_type/test_shift_type.py @@ -8,6 +8,8 @@ import unittest class TestShiftType(unittest.TestCase): def test_make_shift_type(self): + if frappe.db.exists("Shift Type", "Day Shift"): + return shift_type = frappe.get_doc({ "doctype": "Shift Type", "name": "Day Shift", @@ -15,3 +17,4 @@ class TestShiftType(unittest.TestCase): "end_time": "18:00:00" }) shift_type.insert() + \ No newline at end of file