Merge pull request #3068 from neilLasrado/leaves
Bug Fixes
diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index 4353733..608e1bb 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -47,6 +47,11 @@
"name": "Job Opening",
"description": _("Opening for a Job."),
},
+ {
+ "type": "doctype",
+ "name": "Offer Letter",
+ "description": _("Offer candidate a Job."),
+ },
]
},
{
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.js b/erpnext/hr/doctype/job_applicant/job_applicant.js
index ee0acc5..1ca750a 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.js
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.js
@@ -5,7 +5,25 @@
// for communication
cur_frm.email_field = "email_id";
-cur_frm.cscript = {
- refresh: function(doc) {
- },
-}
+
+frappe.ui.form.on("Job Applicant", {
+ refresh: function(frm) {
+ if (!frm.doc.__islocal) {
+ if (frm.doc.__onload && frm.doc.__onload.offer_letter) {
+ frm.add_custom_button(__("View Offer Letter"), function() {
+ frappe.set_route("Form", "Offer Letter", frm.doc.__onload.offer_letter);
+ });
+ } else {
+ frm.add_custom_button(__("Make Offer Letter"), function() {
+ frappe.route_options = {
+ "job_applicant": frm.doc.name,
+ "applicant_name": frm.doc.applicant_name,
+ "designation": frm.doc.job_opening,
+ };
+ new_doc("Offer Letter");
+ });
+ }
+ }
+
+ }
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.json b/erpnext/hr/doctype/job_applicant/job_applicant.json
index fbedc1f..f35cacd 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.json
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.json
@@ -1,5 +1,5 @@
{
- "autoname": "",
+ "autoname": "JA-.######",
"creation": "2013-01-29 19:25:37",
"description": "Applicant for a Job",
"docstatus": 0,
@@ -85,5 +85,7 @@
"share": 1,
"write": 1
}
- ]
+ ],
+ "search_fields": "applicant_name",
+ "title_field": "applicant_name"
}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.py b/erpnext/hr/doctype/job_applicant/job_applicant.py
index 1bdd8fc..90b0ec9 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.py
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.py
@@ -10,6 +10,11 @@
from frappe.utils import comma_and
class JobApplicant(Document):
+ def onload(self):
+ offer_letter = frappe.get_all("Offer Letter", filters={"job_applicant": self.name})
+ if offer_letter:
+ self.__onload.offer_letter = offer_letter[0].name
+
def autoname(self):
keys = filter(None, (self.applicant_name, self.email_id))
if not keys:
diff --git a/erpnext/hr/doctype/offer_letter/__init__.py b/erpnext/hr/doctype/offer_letter/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter/__init__.py
diff --git a/erpnext/hr/doctype/offer_letter/offer_letter.js b/erpnext/hr/doctype/offer_letter/offer_letter.js
new file mode 100644
index 0000000..62cfc83
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter/offer_letter.js
@@ -0,0 +1,10 @@
+// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+// License: GNU General Public License v3. See license.txt
+
+frappe.ui.form.on("Offer Letter", {
+ select_terms: function(frm) {
+ frappe.model.get_value("Terms and Conditions", frm.doc.select_terms, "terms", function(value) {
+ frm.set_value("terms", value.terms);
+ });
+ }
+});
diff --git a/erpnext/hr/doctype/offer_letter/offer_letter.json b/erpnext/hr/doctype/offer_letter/offer_letter.json
new file mode 100644
index 0000000..ec93bb0
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter/offer_letter.json
@@ -0,0 +1,193 @@
+{
+ "allow_copy": 0,
+ "allow_import": 1,
+ "allow_rename": 0,
+ "autoname": "Offer-.#####",
+ "creation": "2015-03-04 14:20:17.662207",
+ "custom": 0,
+ "default_print_format": "Offer Letter",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Transaction",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "fieldname": "job_applicant",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Job Applicant",
+ "no_copy": 0,
+ "options": "Job Applicant",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "fieldname": "applicant_name",
+ "fieldtype": "Data",
+ "label": "Applicant Name",
+ "options": "job_applicant.applicant_name",
+ "permlevel": 0,
+ "precision": "",
+ "read_only": 1,
+ "reqd": 1
+ },
+ {
+ "fieldname": "column_break_3",
+ "fieldtype": "Column Break",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "allow_on_submit": 1,
+ "fieldname": "status",
+ "fieldtype": "Select",
+ "label": "Status",
+ "options": "Awaiting Response\nAccepted\nRejected ",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1
+ },
+ {
+ "default": "",
+ "fieldname": "offer_date",
+ "fieldtype": "Date",
+ "label": "Offer Date",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "allow_on_submit": 0,
+ "fieldname": "designation",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Designation",
+ "no_copy": 0,
+ "options": "Designation",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "fieldname": "company",
+ "fieldtype": "Link",
+ "label": "Company",
+ "options": "Company",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "reqd": 1
+ },
+ {
+ "fieldname": "section_break_4",
+ "fieldtype": "Section Break",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "fieldname": "offer_terms",
+ "fieldtype": "Table",
+ "label": "Offer Letter Terms",
+ "options": "Offer Letter Term",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "fieldname": "section_break_14",
+ "fieldtype": "Section Break",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "allow_on_submit": 0,
+ "fieldname": "select_terms",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Select Terms and Conditions",
+ "no_copy": 0,
+ "options": "Terms and Conditions",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "fieldname": "terms",
+ "fieldtype": "Text Editor",
+ "label": "Terms and Conditions",
+ "options": "",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "fieldname": "amended_from",
+ "fieldtype": "Link",
+ "label": "Amended From",
+ "no_copy": 1,
+ "options": "Offer Letter",
+ "permlevel": 0,
+ "print_hide": 1,
+ "read_only": 1
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 1,
+ "issingle": 0,
+ "istable": 0,
+ "modified": "2015-04-01 05:51:39.841591",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Offer Letter",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 1,
+ "cancel": 1,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "import": 1,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "HR User",
+ "share": 1,
+ "submit": 1,
+ "write": 1
+ }
+ ],
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "title_field": "applicant_name"
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/offer_letter/offer_letter.py b/erpnext/hr/doctype/offer_letter/offer_letter.py
new file mode 100644
index 0000000..b3eb865
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter/offer_letter.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class OfferLetter(Document):
+ pass
diff --git a/erpnext/hr/doctype/offer_letter/test_offer_letter.py b/erpnext/hr/doctype/offer_letter/test_offer_letter.py
new file mode 100644
index 0000000..69d2df6
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter/test_offer_letter.py
@@ -0,0 +1,11 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+# test_records = frappe.get_test_records('Offer Letter')
+
+class TestOfferLetter(unittest.TestCase):
+ pass
diff --git a/erpnext/hr/doctype/offer_letter_term/__init__.py b/erpnext/hr/doctype/offer_letter_term/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter_term/__init__.py
diff --git a/erpnext/hr/doctype/offer_letter_term/offer_letter_term.json b/erpnext/hr/doctype/offer_letter_term/offer_letter_term.json
new file mode 100644
index 0000000..4ab1911
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter_term/offer_letter_term.json
@@ -0,0 +1,75 @@
+{
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "creation": "2015-03-05 12:53:45.342292",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "fieldname": "offer_term",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Offer Term",
+ "no_copy": 0,
+ "options": "Offer Term",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0
+ },
+ {
+ "fieldname": "column_break_2",
+ "fieldtype": "Column Break",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "allow_on_submit": 0,
+ "fieldname": "value",
+ "fieldtype": "Small Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Value / Description",
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 1,
+ "modified": "2015-04-01 03:46:49.530328",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Offer Letter Term",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [],
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC"
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/offer_letter_term/offer_letter_term.py b/erpnext/hr/doctype/offer_letter_term/offer_letter_term.py
new file mode 100644
index 0000000..3396a9d
--- /dev/null
+++ b/erpnext/hr/doctype/offer_letter_term/offer_letter_term.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class OfferLetterTerm(Document):
+ pass
diff --git a/erpnext/hr/doctype/offer_term/__init__.py b/erpnext/hr/doctype/offer_term/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/offer_term/__init__.py
diff --git a/erpnext/hr/doctype/offer_term/offer_term.json b/erpnext/hr/doctype/offer_term/offer_term.json
new file mode 100644
index 0000000..61e45a4
--- /dev/null
+++ b/erpnext/hr/doctype/offer_term/offer_term.json
@@ -0,0 +1,70 @@
+{
+ "allow_copy": 0,
+ "allow_import": 1,
+ "allow_rename": 0,
+ "autoname": "field:offer_term",
+ "creation": "2015-03-05 13:00:30.900471",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Master",
+ "fields": [
+ {
+ "allow_on_submit": 0,
+ "fieldname": "offer_term",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Offer Term",
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0
+ }
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "modified": "2015-03-10 18:19:23.032194",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "Offer Term",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 0,
+ "export": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 0,
+ "read": 1,
+ "report": 0,
+ "role": "HR User",
+ "set_user_permissions": 0,
+ "share": 0,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC"
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/offer_term/offer_term.py b/erpnext/hr/doctype/offer_term/offer_term.py
new file mode 100644
index 0000000..6a63201
--- /dev/null
+++ b/erpnext/hr/doctype/offer_term/offer_term.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class OfferTerm(Document):
+ pass
diff --git a/erpnext/hr/doctype/offer_term/test_offer_term.py b/erpnext/hr/doctype/offer_term/test_offer_term.py
new file mode 100644
index 0000000..d0dd14d
--- /dev/null
+++ b/erpnext/hr/doctype/offer_term/test_offer_term.py
@@ -0,0 +1,11 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+# test_records = frappe.get_test_records('Offer Term')
+
+class TestOfferTerm(unittest.TestCase):
+ pass
diff --git a/erpnext/hr/print_format/__init__.py b/erpnext/hr/print_format/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/print_format/__init__.py
diff --git a/erpnext/hr/print_format/offer_letter/__init__.py b/erpnext/hr/print_format/offer_letter/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/print_format/offer_letter/__init__.py
diff --git a/erpnext/hr/print_format/offer_letter/offer_letter.json b/erpnext/hr/print_format/offer_letter/offer_letter.json
new file mode 100644
index 0000000..d480159
--- /dev/null
+++ b/erpnext/hr/print_format/offer_letter/offer_letter.json
@@ -0,0 +1,16 @@
+{
+ "creation": "2015-03-05 14:34:26.751210",
+ "custom_format": 1,
+ "disabled": 0,
+ "doc_type": "Offer Letter",
+ "docstatus": 0,
+ "doctype": "Print Format",
+ "html": "{% if letter_head and not no_letterhead -%}\n <div class=\"letter-head\">{{ letter_head }}</div>\n <hr>\n{%- endif %}\n\n<div class=\"page-break\">\n<p>\n\n<!-- offer letter content starts here, <br> is used to create new lines -->\nDate: {{ doc.offer_date }}\n<br><br>\n\nDear {{ doc.applicant_name }}, \n\n<br><br>\n\nWe are pleased to appoint you in the services of {{ doc.company }} on the terms and conditions detailed in this letter.\n\n<br><br>\n\nYour designation shall be <b>{{ doc.designation }}</b>.\n\n<br><br>\n\n<!-- offer letter terms and description from the table -->\n\n{%- if doc.offer_terms -%}\n {%- for row in doc.offer_terms -%}\n <b>{{ row.offer_term }}:</b> {{ row.value }}\n\n <br>\n {%- endfor -%}\n{%- endif -%}\n\n<br>\n\n<!-- offer letter content continues -->\n\n\nPlease read the detailed terms as below. If you have any queries, feel free to get in touch with us.\nWe look forward to your long and fruitful career association with our organisation.\nIf you decide to join us, 'Welcome to {{ doc.company }} !'\n\n<br><br>\n\n<p class=\"strong\">\n\nYours truly,\n\n<br><br><br><br>\n\nAuthorized Signatory\n\n<br>\n\n{{ doc.company }}\n\n<!-- offer letter content ends here -->\n\n</p>\n</div>\n\n<!-- offer letter terms and conditions -->\n<div> {{ doc.terms }} </div>",
+ "modified": "2015-04-01 05:22:51.345050",
+ "modified_by": "Administrator",
+ "name": "Offer Letter",
+ "owner": "Administrator",
+ "print_format_builder": 0,
+ "print_format_type": "Server",
+ "standard": "Yes"
+}
\ No newline at end of file
diff --git a/erpnext/setup/page/setup_wizard/install_fixtures.py b/erpnext/setup/page/setup_wizard/install_fixtures.py
index 7bbe139..f6de099 100644
--- a/erpnext/setup/page/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/page/setup_wizard/install_fixtures.py
@@ -153,7 +153,21 @@
{'doctype': "Email Account", "email_id": "sales@example.com", "append_to": "Opportunity"},
{'doctype': "Email Account", "email_id": "support@example.com", "append_to": "Issue"},
- {'doctype': "Email Account", "email_id": "jobs@example.com", "append_to": "Job Applicant"}
+ {'doctype': "Email Account", "email_id": "jobs@example.com", "append_to": "Job Applicant"},
+
+ {"doctype": "Offer Term", "offer_term": _("Date of Joining")},
+ {"doctype": "Offer Term", "offer_term": _("Annual Salary")},
+ {"doctype": "Offer Term", "offer_term": _("Probationary Period")},
+ {"doctype": "Offer Term", "offer_term": _("Employee Benefits")},
+ {"doctype": "Offer Term", "offer_term": _("Working Hours")},
+ {"doctype": "Offer Term", "offer_term": _("Stock Options")},
+ {"doctype": "Offer Term", "offer_term": _("Department")},
+ {"doctype": "Offer Term", "offer_term": _("Job Description")},
+ {"doctype": "Offer Term", "offer_term": _("Responsibilities")},
+ {"doctype": "Offer Term", "offer_term": _("Leaves per Year")},
+ {"doctype": "Offer Term", "offer_term": _("Notice Period")},
+ {"doctype": "Offer Term", "offer_term": _("Incentives")},
+
]
from erpnext.setup.page.setup_wizard.fixtures import industry_type