Skip to content

Commit

Permalink
feat: add Closed On field
Browse files Browse the repository at this point in the history
  • Loading branch information
krantheman committed Aug 23, 2023
1 parent 63efc2f commit ffa97ee
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 9 deletions.
10 changes: 8 additions & 2 deletions hrms/hr/doctype/job_opening/job_opening.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"status",
"posted_on",
"closes_on",
"closed_on",
"section_break_nngy",
"company",
"department",
Expand Down Expand Up @@ -190,7 +191,6 @@
},
{
"default": "Today",
"depends_on": "eval:doc.status == 'Open'",
"fieldname": "posted_on",
"fieldtype": "Date",
"label": "Posted On"
Expand Down Expand Up @@ -225,12 +225,18 @@
{
"fieldname": "job_details_section",
"fieldtype": "Section Break"
},
{
"depends_on": "eval:doc.status == 'Closed'",
"fieldname": "closed_on",
"fieldtype": "Date",
"label": "Closed On"
}
],
"icon": "fa fa-bookmark",
"idx": 1,
"links": [],
"modified": "2023-08-22 16:53:41.910984",
"modified": "2023-08-23 11:48:22.678542",
"modified_by": "Administrator",
"module": "HR",
"name": "Job Opening",
Expand Down
39 changes: 32 additions & 7 deletions hrms/hr/doctype/job_opening/job_opening.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,40 @@ def validate(self):
self.validate_current_vacancies()
self.update_job_requisition_status()

def on_update(self):
old_doc = self.get_doc_before_save()
if not old_doc:
return

if old_doc.status == "Open" and self.status == "Closed":
today = getdate()
self.closes_on = None
if not self.closed_on:
self.closed_on = today
self.save()

elif old_doc.status == "Closed" and self.status == "Open":
self.closed_on = None
self.save()

def validate_dates(self):
self.validate_from_to_dates("posted_on", "closes_on")
self.validate_past_future("posted_on", True)
if self.status == "Open":
self.validate_past_future("closes_on", False)
if self.status == "Closed":
self.validate_from_to_dates("posted_on", "closed_on")
self.validate_past_future("closed_on", True)

def validate_past_future(self, field, is_past):
date = self.get(field)
label = self.meta.get_label(field)
today = getdate()
posted_on = getdate(self.posted_on)
if posted_on > today:
frappe.throw(_(f"{frappe.bold('Posted On')} cannot be a future date"))
closes_on = getdate(self.closes_on)
if closes_on < today:
frappe.throw(_(f"{frappe.bold('Closes On')} cannot be a past date"))
if is_past:
if getdate(date) > today:
frappe.throw(_(f"{frappe.bold(label)} cannot be a future date"))
else:
if getdate(date) < today:
frappe.throw(_(f"{frappe.bold(label)} cannot be a past date"))

def validate_current_vacancies(self):
if not self.staffing_plan:
Expand Down

0 comments on commit ffa97ee

Please sign in to comment.