From 74dbd168c27deb5edf2c901e250047f960402773 Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Fri, 22 Jul 2016 01:17:39 +0530 Subject: [PATCH 1/6] [new Feature] Added guardian master --- erpnext/patches.txt | 3 +- erpnext/patches/v7_0/make_guardian.py | 18 ++ erpnext/schools/doctype/guardian/__init__.py | 0 erpnext/schools/doctype/guardian/guardian.js | 8 + .../schools/doctype/guardian/guardian.json | 211 ++++++++++++++ erpnext/schools/doctype/guardian/guardian.py | 10 + .../schools/doctype/guardian/test_guardian.py | 12 + .../doctype/guardian_interest/__init__.py | 0 .../guardian_interest/guardian_interest.json | 63 +++++ .../guardian_interest/guardian_interest.py | 10 + erpnext/schools/doctype/interest/__init__.py | 0 erpnext/schools/doctype/interest/interest.js | 8 + .../schools/doctype/interest/interest.json | 84 ++++++ erpnext/schools/doctype/interest/interest.py | 10 + .../schools/doctype/interest/test_interest.py | 12 + erpnext/schools/doctype/student/student.json | 262 ++++++------------ .../doctype/student/student_dashboard.py | 2 +- 17 files changed, 530 insertions(+), 183 deletions(-) create mode 100644 erpnext/patches/v7_0/make_guardian.py create mode 100644 erpnext/schools/doctype/guardian/__init__.py create mode 100644 erpnext/schools/doctype/guardian/guardian.js create mode 100644 erpnext/schools/doctype/guardian/guardian.json create mode 100644 erpnext/schools/doctype/guardian/guardian.py create mode 100644 erpnext/schools/doctype/guardian/test_guardian.py create mode 100644 erpnext/schools/doctype/guardian_interest/__init__.py create mode 100644 erpnext/schools/doctype/guardian_interest/guardian_interest.json create mode 100644 erpnext/schools/doctype/guardian_interest/guardian_interest.py create mode 100644 erpnext/schools/doctype/interest/__init__.py create mode 100644 erpnext/schools/doctype/interest/interest.js create mode 100644 erpnext/schools/doctype/interest/interest.json create mode 100644 erpnext/schools/doctype/interest/interest.py create mode 100644 erpnext/schools/doctype/interest/test_interest.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 0e5290faeb..9eb2cccb4b 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -304,4 +304,5 @@ erpnext.patches.v7_0.remove_administrator_role_in_doctypes erpnext.patches.v7_0.rename_fee_amount_to_fee_component erpnext.patches.v7_0.calculate_total_costing_amount erpnext.patches.v7_0.fix_nonwarehouse_ledger_gl_entries_for_transactions -erpnext.patches.v7_0.remove_old_earning_deduction_doctypes \ No newline at end of file +erpnext.patches.v7_0.remove_old_earning_deduction_doctypes +erpnext.patches.v7_0.make_guardian diff --git a/erpnext/patches/v7_0/make_guardian.py b/erpnext/patches/v7_0/make_guardian.py new file mode 100644 index 0000000000..7daad0e011 --- /dev/null +++ b/erpnext/patches/v7_0/make_guardian.py @@ -0,0 +1,18 @@ +from __future__ import unicode_literals +import frappe + +def execute(): + students = frappe.get_list("Student", fields=["name", "father_name", "father_email_id", "mother_name", "mother_email_id"]) + for stud in students: + if stud.father_name: + make_guardian(stud.father_name, stud.name, stud.father_email_id) + if stud.mother_name: + make_guardian(stud.mother_name, stud.name, stud.mother_email_id) + +def make_guardian(name, student, email=None): + frappe.get_doc({ + 'doctype': 'Guardian', + 'guardian_name': name, + 'email': email, + 'student': student + }).insert() diff --git a/erpnext/schools/doctype/guardian/__init__.py b/erpnext/schools/doctype/guardian/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/schools/doctype/guardian/guardian.js b/erpnext/schools/doctype/guardian/guardian.js new file mode 100644 index 0000000000..139193f08e --- /dev/null +++ b/erpnext/schools/doctype/guardian/guardian.js @@ -0,0 +1,8 @@ +// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Guardian', { + refresh: function(frm) { + + } +}); diff --git a/erpnext/schools/doctype/guardian/guardian.json b/erpnext/schools/doctype/guardian/guardian.json new file mode 100644 index 0000000000..89e4bd0309 --- /dev/null +++ b/erpnext/schools/doctype/guardian/guardian.json @@ -0,0 +1,211 @@ +{ + "allow_copy": 0, + "allow_import": 0, + "allow_rename": 0, + "autoname": "GARD.####", + "beta": 0, + "creation": "2016-07-21 15:32:51.163292", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "fields": [ + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "guardian_name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Guardian Name", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "student", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Student", + "length": 0, + "no_copy": 0, + "options": "Student", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "email_address", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Email Address", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "mobile_nuber", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Mobile Nuber", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "section_break_5", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "interests", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Interests", + "length": 0, + "no_copy": 0, + "options": "Guardian Interest", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + } + ], + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2016-07-25 07:20:11.458757", + "modified_by": "Administrator", + "module": "Schools", + "name": "Guardian", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Academics User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "sort_field": "modified", + "sort_order": "DESC", + "title_field": "guardian_name", + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/schools/doctype/guardian/guardian.py b/erpnext/schools/doctype/guardian/guardian.py new file mode 100644 index 0000000000..1388cfe534 --- /dev/null +++ b/erpnext/schools/doctype/guardian/guardian.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document + +class Guardian(Document): + pass diff --git a/erpnext/schools/doctype/guardian/test_guardian.py b/erpnext/schools/doctype/guardian/test_guardian.py new file mode 100644 index 0000000000..61420f6cec --- /dev/null +++ b/erpnext/schools/doctype/guardian/test_guardian.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Guardian') + +class TestGuardian(unittest.TestCase): + pass diff --git a/erpnext/schools/doctype/guardian_interest/__init__.py b/erpnext/schools/doctype/guardian_interest/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/schools/doctype/guardian_interest/guardian_interest.json b/erpnext/schools/doctype/guardian_interest/guardian_interest.json new file mode 100644 index 0000000000..39f005925b --- /dev/null +++ b/erpnext/schools/doctype/guardian_interest/guardian_interest.json @@ -0,0 +1,63 @@ +{ + "allow_copy": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2016-07-25 07:19:55.113871", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "fields": [ + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "interest", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Interest", + "length": 0, + "no_copy": 0, + "options": "Interest", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + } + ], + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 1, + "max_attachments": 0, + "modified": "2016-07-25 07:20:32.837356", + "modified_by": "Administrator", + "module": "Schools", + "name": "Guardian Interest", + "name_case": "", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/schools/doctype/guardian_interest/guardian_interest.py b/erpnext/schools/doctype/guardian_interest/guardian_interest.py new file mode 100644 index 0000000000..f5c4cf1d49 --- /dev/null +++ b/erpnext/schools/doctype/guardian_interest/guardian_interest.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document + +class GuardianInterest(Document): + pass diff --git a/erpnext/schools/doctype/interest/__init__.py b/erpnext/schools/doctype/interest/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/schools/doctype/interest/interest.js b/erpnext/schools/doctype/interest/interest.js new file mode 100644 index 0000000000..70e1b6aaaa --- /dev/null +++ b/erpnext/schools/doctype/interest/interest.js @@ -0,0 +1,8 @@ +// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Interest', { + refresh: function(frm) { + + } +}); diff --git a/erpnext/schools/doctype/interest/interest.json b/erpnext/schools/doctype/interest/interest.json new file mode 100644 index 0000000000..218da15a60 --- /dev/null +++ b/erpnext/schools/doctype/interest/interest.json @@ -0,0 +1,84 @@ +{ + "allow_copy": 0, + "allow_import": 1, + "allow_rename": 0, + "autoname": "field:interest", + "beta": 0, + "creation": "2016-07-25 07:12:33.600702", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "Setup", + "editable_grid": 1, + "fields": [ + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "interest", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Interest", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + } + ], + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "in_dialog": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2016-07-25 07:23:29.174992", + "modified_by": "Administrator", + "module": "Schools", + "name": "Interest", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Academics User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_seen": 0 +} \ No newline at end of file diff --git a/erpnext/schools/doctype/interest/interest.py b/erpnext/schools/doctype/interest/interest.py new file mode 100644 index 0000000000..2a9c19c09d --- /dev/null +++ b/erpnext/schools/doctype/interest/interest.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document + +class Interest(Document): + pass diff --git a/erpnext/schools/doctype/interest/test_interest.py b/erpnext/schools/doctype/interest/test_interest.py new file mode 100644 index 0000000000..a7fe83bccc --- /dev/null +++ b/erpnext/schools/doctype/interest/test_interest.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Interest') + +class TestInterest(unittest.TestCase): + pass diff --git a/erpnext/schools/doctype/student/student.json b/erpnext/schools/doctype/student/student.json index 4901dc4233..22b8c4e76e 100644 --- a/erpnext/schools/doctype/student/student.json +++ b/erpnext/schools/doctype/student/student.json @@ -136,6 +136,31 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "student_email_id", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Student Email ID", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 1 + }, { "allow_on_submit": 0, "bold": 0, @@ -214,182 +239,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "mother_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Mother's Name", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "mother_email_id", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Mother's / Guardian 1 Email ID", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "father_name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Father's Name", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "father_email_id", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Father's/ Guardian 2 Email ID", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "contact", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Contact", - "length": 0, - "no_copy": 0, - "options": "Contact", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "student_applicant", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Student Applicant", - "length": 0, - "no_copy": 0, - "options": "Student Applicant", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "column_break_3", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_on_submit": 0, "bold": 0, @@ -467,6 +316,56 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "column_break_3", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "student_applicant", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Student Applicant", + "length": 0, + "no_copy": 0, + "options": "Student Applicant", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -496,16 +395,17 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "fieldname": "student_email_id", - "fieldtype": "Data", + "fieldname": "contact", + "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Student Email ID", + "label": "Contact", "length": 0, "no_copy": 0, + "options": "Contact", "permlevel": 0, "precision": "", "print_hide": 0, @@ -515,7 +415,7 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, - "unique": 1 + "unique": 0 }, { "allow_on_submit": 0, @@ -556,7 +456,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2016-07-25 06:23:57.581538", + "modified": "2016-07-25 07:22:57.581638", "modified_by": "Administrator", "module": "Schools", "name": "Student", diff --git a/erpnext/schools/doctype/student/student_dashboard.py b/erpnext/schools/doctype/student/student_dashboard.py index 82cb7981ec..da2b9ade92 100644 --- a/erpnext/schools/doctype/student/student_dashboard.py +++ b/erpnext/schools/doctype/student/student_dashboard.py @@ -9,7 +9,7 @@ data = { 'items': ['Student Log', 'Student Group', 'Student Attendance'] }, { - 'items': ['Program Enrollment', 'Fees', 'Examination'] + 'items': ['Program Enrollment', 'Fees', 'Examination', 'Guardian'] } ] } \ No newline at end of file From 3e7855835791ffe5d00789e1972fd5672a20fcdd Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Mon, 1 Aug 2016 15:18:36 +0530 Subject: [PATCH 2/6] Moved Intrest to HR module --- .../doctype/interest/__init__.py | 0 .../doctype/interest/interest.js | 0 .../doctype/interest/interest.json | 64 ++++++++++++++++++- .../doctype/interest/interest.py | 0 .../doctype/interest/test_interest.py | 0 5 files changed, 62 insertions(+), 2 deletions(-) rename erpnext/{schools => hr}/doctype/interest/__init__.py (100%) rename erpnext/{schools => hr}/doctype/interest/interest.js (100%) rename erpnext/{schools => hr}/doctype/interest/interest.json (59%) rename erpnext/{schools => hr}/doctype/interest/interest.py (100%) rename erpnext/{schools => hr}/doctype/interest/test_interest.py (100%) diff --git a/erpnext/schools/doctype/interest/__init__.py b/erpnext/hr/doctype/interest/__init__.py similarity index 100% rename from erpnext/schools/doctype/interest/__init__.py rename to erpnext/hr/doctype/interest/__init__.py diff --git a/erpnext/schools/doctype/interest/interest.js b/erpnext/hr/doctype/interest/interest.js similarity index 100% rename from erpnext/schools/doctype/interest/interest.js rename to erpnext/hr/doctype/interest/interest.js diff --git a/erpnext/schools/doctype/interest/interest.json b/erpnext/hr/doctype/interest/interest.json similarity index 59% rename from erpnext/schools/doctype/interest/interest.json rename to erpnext/hr/doctype/interest/interest.json index 218da15a60..955c40f54d 100644 --- a/erpnext/schools/doctype/interest/interest.json +++ b/erpnext/hr/doctype/interest/interest.json @@ -47,9 +47,9 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-07-25 07:23:29.174992", + "modified": "2016-08-01 05:47:29.479141", "modified_by": "Administrator", - "module": "Schools", + "module": "HR", "name": "Interest", "name_case": "", "owner": "Administrator", @@ -73,6 +73,66 @@ "share": 1, "submit": 0, "write": 1 + }, + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "HR Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "HR User", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Employee", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 0 } ], "quick_entry": 1, diff --git a/erpnext/schools/doctype/interest/interest.py b/erpnext/hr/doctype/interest/interest.py similarity index 100% rename from erpnext/schools/doctype/interest/interest.py rename to erpnext/hr/doctype/interest/interest.py diff --git a/erpnext/schools/doctype/interest/test_interest.py b/erpnext/hr/doctype/interest/test_interest.py similarity index 100% rename from erpnext/schools/doctype/interest/test_interest.py rename to erpnext/hr/doctype/interest/test_interest.py From 5940dc1a8ea63aeaaff600a5e1368b45d622826c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 1 Aug 2016 15:30:38 +0530 Subject: [PATCH 3/6] [patch] Reload RFQ and timesheet before removing customer/supplier roles --- erpnext/patches/v6_20x/remove_customer_supplier_roles.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erpnext/patches/v6_20x/remove_customer_supplier_roles.py b/erpnext/patches/v6_20x/remove_customer_supplier_roles.py index e5e3d3fc71..f4167bfa4f 100644 --- a/erpnext/patches/v6_20x/remove_customer_supplier_roles.py +++ b/erpnext/patches/v6_20x/remove_customer_supplier_roles.py @@ -2,6 +2,10 @@ from __future__ import unicode_literals import frappe def execute(): + frappe.reload_doc("buying", "doctype", "request_for_quotation_supplier") + frappe.reload_doc("buying", "doctype", "request_for_quotation") + frappe.reload_doc("projects", "doctype", "timesheet") + for role in ('Customer', 'Supplier'): frappe.db.sql('''delete from `tabUserRole` where role=%s and parent in ("Administrator", "Guest")''', role) From 3c364dd5b835af47bdb8c97e82ee162578e4997a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 1 Aug 2016 15:52:29 +0530 Subject: [PATCH 4/6] [patch] Update refdoc in Landed Cost Voucher --- erpnext/patches.txt | 1 + .../v7_0/update_refdoc_in_landed_cost_voucher.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 erpnext/patches/v7_0/update_refdoc_in_landed_cost_voucher.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 9eb2cccb4b..97f5bd5468 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -306,3 +306,4 @@ erpnext.patches.v7_0.calculate_total_costing_amount erpnext.patches.v7_0.fix_nonwarehouse_ledger_gl_entries_for_transactions erpnext.patches.v7_0.remove_old_earning_deduction_doctypes erpnext.patches.v7_0.make_guardian +erpnext.patches.v7_0.update_refdoc_in_landed_cost_voucher \ No newline at end of file diff --git a/erpnext/patches/v7_0/update_refdoc_in_landed_cost_voucher.py b/erpnext/patches/v7_0/update_refdoc_in_landed_cost_voucher.py new file mode 100644 index 0000000000..2d562bb40e --- /dev/null +++ b/erpnext/patches/v7_0/update_refdoc_in_landed_cost_voucher.py @@ -0,0 +1,15 @@ +from __future__ import unicode_literals +import frappe + +def execute(): + if "purchase_receipt" not in frappe.db.get_table_columns("Landed Cost Purchase Receipt"): + return + + frappe.reload_doctype("Landed Cost Purchase Receipt") + + frappe.db.sql(""" + update `tabLanded Cost Purchase Receipt` + set receipt_document_type = 'Purchase Receipt', receipt_document = purchase_receipt + where (receipt_document is null or receipt_document = '') + and (purchase_receipt is not null and purchase_receipt != '') + """) \ No newline at end of file From 24f45af27e30a8355a5f0f2eeeffa4dd5ac5eb28 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 1 Aug 2016 16:06:54 +0530 Subject: [PATCH 5/6] [fix] minor dont make lead for invalid email --- erpnext/crm/doctype/opportunity/opportunity.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index 79788822a6..0f4d1f4c26 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import frappe, json -from frappe.utils import cstr, cint, get_fullname +from frappe.utils import cstr, cint, get_fullname, validate_email_add from frappe import msgprint, _ from frappe.model.mapper import get_mapped_doc from erpnext.setup.utils import get_exchange_rate @@ -43,7 +43,7 @@ class Opportunity(TransactionBase): def make_new_lead_if_required(self): """Set lead against new opportunity""" - if not (self.lead or self.customer) and self.contact_email: + if not (self.lead or self.customer) and self.contact_email and validate_email_add(self.contact_email): lead_name = frappe.db.get_value("Lead", {"email_id": self.contact_email}) if not lead_name: sender_name = get_fullname(self.contact_email) @@ -63,6 +63,7 @@ class Opportunity(TransactionBase): "email_id": self.contact_email, "lead_name": sender_name }) + lead.insert(ignore_permissions=True) lead_name = lead.name From cd339b2ecfda96088ba0e2d18a97e4fac915e7dd Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 1 Aug 2016 16:54:53 +0600 Subject: [PATCH 6/6] bumped to version 7.0.13 --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index b689967d5d..8f01c873fe 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals import frappe -__version__ = '7.0.12' +__version__ = '7.0.13' def get_default_company(user=None): '''Get default company for user'''