diff --git a/education_attendances/static/description/index.html b/education_attendances/static/description/index.html index 996639c5..74e8d0d8 100644 --- a/education_attendances/static/description/index.html +++ b/education_attendances/static/description/index.html @@ -537,7 +537,6 @@

Contact Us

www.cybrosys.com - Suggested Products
diff --git a/education_core/__manifest__.py b/education_core/__manifest__.py index 6201b467..e763d8ee 100755 --- a/education_core/__manifest__.py +++ b/education_core/__manifest__.py @@ -22,7 +22,7 @@ ############################################################################### { 'name': 'Educational ERP Core', - 'version': '14.0.1.0.1', + 'version': '14.0.1.0.2', 'summary': """Core Module of Educational ERP""", 'description': 'Core Module of Educational ERP', 'category': 'Educational', diff --git a/education_core/models/education_class_division.py b/education_core/models/education_class_division.py index 3607fd5b..b1e4aa12 100755 --- a/education_core/models/education_class_division.py +++ b/education_core/models/education_class_division.py @@ -108,6 +108,7 @@ def _get_student_count(self): string='Amenities') student_count = fields.Integer(string='Students Count', compute='_get_student_count') + active = fields.Boolean(string="Active", default=True) @api.constrains('actual_strength') def validate_strength(self): diff --git a/education_core/static/description/index.html b/education_core/static/description/index.html index 7fd865d5..b977345f 100755 --- a/education_core/static/description/index.html +++ b/education_core/static/description/index.html @@ -757,7 +757,6 @@

Contact Us

www.cybrosys.com - Suggested Products
diff --git a/education_exam/__manifest__.py b/education_exam/__manifest__.py index eaf1f99a..1fb7ff5a 100644 --- a/education_exam/__manifest__.py +++ b/education_exam/__manifest__.py @@ -23,7 +23,7 @@ { 'name': 'Educational Exam Management', - 'version': '14.0.1.0.0', + 'version': '14.0.1.0.1', 'summary': """Sneak the Examination management in Educational ERP""", 'description': 'An easy way to handle the examinations in an educational ' 'system with better reports and exam valuation and exam result ' diff --git a/education_exam/models/examination.py b/education_exam/models/examination.py index b76a824e..bc28cfc2 100644 --- a/education_exam/models/examination.py +++ b/education_exam/models/examination.py @@ -52,7 +52,6 @@ class EducationExam(models.Model): default='draft') academic_year = fields.Many2one('education.academic.year', string='Academic Year', - related='division_id.academic_year_id', store=True) company_id = fields.Many2one( 'res.company', string='Company', diff --git a/education_exam/security/ir.model.access.csv b/education_exam/security/ir.model.access.csv index b54f8ae6..d30bc97b 100644 --- a/education_exam/security/ir.model.access.csv +++ b/education_exam/security/ir.model.access.csv @@ -4,5 +4,6 @@ access_results_subject_line,access.results.subject.line,education_exam.model_res access_education_exam_valuation,access.education.exam.valuation,education_exam.model_education_exam_valuation,education_core.group_education_faculty,1,1,1,0 access_exam_valuation_line,access.exam.valuation.line,education_exam.model_exam_valuation_line,education_core.group_education_faculty,1,1,1,0 access_education_exam,access.education.exam,education_exam.model_education_exam,education_core.group_education_faculty,1,1,1,0 +access_education_exam_principal,access.education.exam.principal,education_exam.model_education_exam,education_core.group_education_principal,1,1,1,1 access_education_subject_line,access.education.subject.line,education_exam.model_education_subject_line,education_core.group_education_faculty,1,1,1,0 access_education_exam_type,access.education.exam.type,education_exam.model_education_exam_type,education_core.group_education_faculty,1,1,1,0 diff --git a/education_exam/static/description/index.html b/education_exam/static/description/index.html index 6913fe81..8a9d65c7 100644 --- a/education_exam/static/description/index.html +++ b/education_exam/static/description/index.html @@ -569,7 +569,6 @@

Contact Us

www.cybrosys.com - Suggested Products
diff --git a/education_exam/views/exam_results.xml b/education_exam/views/exam_results.xml index aebf66d6..67a2b434 100644 --- a/education_exam/views/exam_results.xml +++ b/education_exam/views/exam_results.xml @@ -74,6 +74,7 @@ + diff --git a/education_exam/views/examination.xml b/education_exam/views/examination.xml index d3b79ea1..3ce0efaf 100644 --- a/education_exam/views/examination.xml +++ b/education_exam/views/examination.xml @@ -29,7 +29,7 @@ + attrs="{'readonly': [('state', '!=', 'draft')], 'invisible': [('exam_type', '=', False)], 'required': [('division_id', '=', False)]}"/> diff --git a/education_promotion/README.md b/education_promotion/README.md new file mode 100644 index 00000000..ed0a6219 --- /dev/null +++ b/education_promotion/README.md @@ -0,0 +1,51 @@ +Educational Promotion V14 +========================= + +Promotion of students after each academic year. + +Contacts +======== +* EducationalERP +* Cybrosys Techno Solutions + +Depends +======= +[education_exam] addon Cybrosys + +Tech +==== +* [Python] - Models +* [XML] - Odoo views + +Installation +============ +- www.odoo.com/documentation/14.0/setup/install.html +- Install our custom addon + +License +======= +GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3) +(http://www.gnu.org/licenses/agpl.html) + +Bug Tracker +=========== +Bugs are tracked on GitHub Issues. In case of trouble, +please check there if your issue has already been reported. + Contact odoo@cybrosys.com + +Credits +======= +* Cybrosys Techno Solutions + +Author +------ + +Developers: Hajaj Roshan + + +Maintainer +---------- + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com. diff --git a/education_promotion/__init__.py b/education_promotion/__init__.py new file mode 100644 index 00000000..238c390c --- /dev/null +++ b/education_promotion/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################### +# A part of Educational ERP Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies () +# Author: Hajaj Roshan(hajaj@cybrosys.in) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from . import models diff --git a/education_promotion/__manifest__.py b/education_promotion/__manifest__.py new file mode 100644 index 00000000..9c05d4d9 --- /dev/null +++ b/education_promotion/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################### +# A part of Educational ERP Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies () +# Author: Hajaj Roshan(hajaj@cybrosys.in) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### +{ + 'name': 'Educational Promotion', + 'version': '14.0.1.0.0', + 'summary': 'Promotion of students after each Academic year', + 'description': 'Promotion of students after each Academic year', + 'category': 'Industries', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.educationalerp.com", + 'depends': ['education_exam'], + 'data': [ + 'security/ir.model.access.csv', + 'views/education_promotion.xml', + 'views/academic_year_closing.xml', + 'views/student_history.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'demo': [], + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/education_promotion/doc/RELEASE_NOTES.md b/education_promotion/doc/RELEASE_NOTES.md new file mode 100644 index 00000000..1db4fbea --- /dev/null +++ b/education_promotion/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module education_promotion + +#### 31.05.2021 +#### Version 14.0.1.0.0 +##### ADD +- Initial commit for Educational ERP Project diff --git a/education_promotion/models/__init__.py b/education_promotion/models/__init__.py new file mode 100644 index 00000000..b4164cc8 --- /dev/null +++ b/education_promotion/models/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +############################################################################### +# A part of Educational ERP Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies () +# Author: Hajaj Roshan(hajaj@cybrosys.in) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from . import education_promotion +from . import academic_year_closing diff --git a/education_promotion/models/academic_year_closing.py b/education_promotion/models/academic_year_closing.py new file mode 100644 index 00000000..c40017c2 --- /dev/null +++ b/education_promotion/models/academic_year_closing.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +############################################################################### +# A part of Educational ERP Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies () +# Author: Hajaj Roshan(hajaj@cybrosys.in) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from odoo import models, fields, api, _ +from odoo.exceptions import UserError + + +class AcademicYearClosing(models.Model): + _inherit = 'education.class.division' + + is_last_class = fields.Boolean( + string="Is Last Class", + help="Enable this option to set this class as last class") + promote_class = fields.Many2one('education.class', string='Promotion Class') + promote_division = fields.Many2one('education.division', + string='Promotion Division') + students_details = fields.One2many('education.student.final.result', + 'division_id', + string='Student Final Result') + + @api.model + def create(self, vals): + """Return the name as a str of class + division""" + try: + if vals['class_id']: + class_id = self.env['education.class'].browse(vals['class_id']) + division_id = self.env['education.division'].browse( + vals['division_id']) + elif vals['promote_class']: + class_id = self.env['education.class'].browse(vals['promote_class']) + division_id = self.env['education.division'].browse( + vals['promote_division']) + name = str(class_id.name + '-' + division_id.name) + vals['name'] = name + except: + raise UserError(_('Something Went Wrong. Contact Your' + 'System Administrator')) + return super(AcademicYearClosing, self).create(vals) + + +class EducationStudentFinalResult(models.Model): + _name = 'education.student.final.result' + + student_id = fields.Many2one('education.student', string="Student") + final_result = fields.Selection([ + ('na', 'Not Applicable'), + ('pass', 'Pass'), + ('fail', 'Fail'), ], + string="Final Result", default='na') + division_id = fields.Many2one('education.class.division', string="Class") + academic_year = fields.Many2one('education.academic.year', + string='Academic Year') + closing_id = fields.Many2one('education.promotion', string='Academic Year') + + +class StudentPromotion(models.Model): + _inherit = 'education.student' + + final_result = fields.Selection([ + ('na', 'Not Applicable'), + ('pass', 'Pass'), + ('fail', 'Fail'), ], + string="Final Result", default='na') diff --git a/education_promotion/models/education_promotion.py b/education_promotion/models/education_promotion.py new file mode 100644 index 00000000..2e3bf3b5 --- /dev/null +++ b/education_promotion/models/education_promotion.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +############################################################################### +# A part of Educational ERP Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies () +# Author: Hajaj Roshan(hajaj@cybrosys.in) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from dateutil import relativedelta +from odoo import models, fields, _ +from odoo.exceptions import UserError + + +class EducationPromotion(models.Model): + _name = 'education.promotion' + _description = 'Promotion' + + name = fields.Many2one('education.academic.year', string="Academic Year", + required=True) + academic_result = fields.One2many( + 'education.student.final.result', + 'closing_id', string="Results") + state = fields.Selection( + [('draft', 'Draft'), + ('result_computed', 'Result Computed'), + ('close', 'Closed')], default='draft') + company_id = fields.Many2one( + 'res.company', string='Company', + default=lambda self: self.env['res.company']._company_default_get()) + + def compute_final_result(self): + self.state = 'result_computed' + exam_result_env = self.env['education.exam.results'] + for result in exam_result_env.search( + [('academic_year', '=', self.name.id)]): + for student in result.division_id.students_details: + student.unlink() + for i in exam_result_env.search( + [('academic_year', '=', self.name.id)]).filtered( + lambda l: l.exam_id.exam_type.school_class_division_wise == 'final'): + self.env['education.student.final.result'].create({ + 'student_id': i.student_id.id, + 'final_result': 'pass' if i.overall_pass else 'fail', + 'division_id': i.division_id.id, + 'academic_year': i.division_id.academic_year_id.id, + 'closing_id': self.id, + }) + + def close_academic_year(self): + self.state = 'close' + division_obj = self.env['education.class.division'] + new_academic_year = self.env['education.academic.year'].create( + {'name': str( + fields.Date.from_string(self.name.ay_end_date).year) + "-" + + str(fields.Date.from_string( + self.name.ay_end_date).year + 1), + 'ay_code': str( + fields.Date.from_string(self.name.ay_end_date).year) + "-" + + str(fields.Date.from_string( + self.name.ay_end_date).year + 1), + 'sequence': self.name.sequence + 1, + 'ay_start_date': self.name.ay_end_date, + 'ay_end_date': str( + fields.Date.from_string(self.name.ay_end_date) + + relativedelta.relativedelta(months=+12))[:10], + + }) + + for div in division_obj.search( + [('academic_year_id', '=', self.name.id)]): + division_obj.create({ + 'name': div.name, + 'actual_strength': div.actual_strength, + 'academic_year_id': new_academic_year.id, + 'class_id': div.class_id.id, + 'division_id': div.division_id.id, + 'is_last_class': div.is_last_class, + }) + + for new_div in division_obj.search( + [('academic_year_id', '=', new_academic_year.id)]): + if not new_div.is_last_class: + promote = division_obj.search( + [('academic_year_id', '=', new_academic_year.id), + ('name', '=', str(new_div.class_id.name) + "-" + str( + new_div.promote_division.name))]) + if not promote: + division_obj.create({ + 'name': new_div.class_id.name + "-" + new_div.division_id.name, + 'actual_strength': new_div.actual_strength, + 'academic_year_id': new_academic_year.id, + 'class_id': new_div.class_id.id, + 'is_last_class': new_div.is_last_class, + 'division_id': new_div.division_id.id, + 'promote_class': new_div.class_id.id, + 'promote_division': new_div.division_id.id, + }) + for div in division_obj.search( + [('academic_year_id', '=', self.name.id)]): + current_class = division_obj.search([ + ('name', '=', div.name), + ('academic_year_id', '=', new_academic_year.id)]) + if div.is_last_class: + promotion_class = False + else: + if div.promote_class and div.promote_division: + promotion_class = division_obj.search([ + ('name', '=', + div.promote_class.name + "-" + div.promote_division.name), + ('academic_year_id', '=', new_academic_year.id)]) + else: + raise UserError(_( + 'There is no promotion class is set for the class %s.' + '\nIf it is the last class, Please mark the Check box ' + 'in the Class Division', div.name)) + + for k in div.students_details: + if k.final_result == 'pass': + if not promotion_class: + k.student_id.active = False + elif promotion_class: + k.student_id.class_id = promotion_class + self.env['education.student.final.result'].create({ + 'student_id': k.student_id.id, + 'final_result': 'na', + 'division_id': promotion_class.id, + 'academic_year': promotion_class.academic_year_id.id, + }) + + elif k.final_result == 'fail': + k.student_id.class_id = current_class.id + self.env['education.student.final.result'].create({ + 'student_id': k.student_id.id, + 'final_result': 'na', + 'division_id': current_class.id, + 'academic_year': current_class.academic_year_id.id, + + }) + if div.academic_year_id != new_academic_year: + div.active = False + self.name.active = False diff --git a/education_promotion/security/ir.model.access.csv b/education_promotion/security/ir.model.access.csv new file mode 100644 index 00000000..8f7c2e82 --- /dev/null +++ b/education_promotion/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_education_promotion,access.education.promotion,education_promotion.model_education_promotion,education_core.group_education_faculty,1,1,1,0 +access_education_student_final_result,access.education.student.final.result,education_promotion.model_education_student_final_result,education_core.group_education_faculty,1,1,1,0 +access_education_promotion_principal,access.education.promotion.principal,education_promotion.model_education_promotion,education_core.group_education_principal,1,1,1,1 +access_education_student_final_result_principal,access.education.student.final.result.principal,education_promotion.model_education_student_final_result,education_core.group_education_principal,1,1,1,1 diff --git a/education_promotion/static/description/banner.png b/education_promotion/static/description/banner.png new file mode 100644 index 00000000..6c2985bf Binary files /dev/null and b/education_promotion/static/description/banner.png differ diff --git a/education_promotion/static/description/cybro_logo.png b/education_promotion/static/description/cybro_logo.png new file mode 100644 index 00000000..bb309114 Binary files /dev/null and b/education_promotion/static/description/cybro_logo.png differ diff --git a/education_promotion/static/description/icon.png b/education_promotion/static/description/icon.png new file mode 100644 index 00000000..a39aaa10 Binary files /dev/null and b/education_promotion/static/description/icon.png differ diff --git a/education_promotion/static/description/images/after_closing.png b/education_promotion/static/description/images/after_closing.png new file mode 100644 index 00000000..a260c807 Binary files /dev/null and b/education_promotion/static/description/images/after_closing.png differ diff --git a/education_promotion/static/description/images/attendance_image.png b/education_promotion/static/description/images/attendance_image.png new file mode 100644 index 00000000..45730d26 Binary files /dev/null and b/education_promotion/static/description/images/attendance_image.png differ diff --git a/education_promotion/static/description/images/close_ay.png b/education_promotion/static/description/images/close_ay.png new file mode 100644 index 00000000..cdaf712b Binary files /dev/null and b/education_promotion/static/description/images/close_ay.png differ diff --git a/education_promotion/static/description/images/close_ay_btn.png b/education_promotion/static/description/images/close_ay_btn.png new file mode 100644 index 00000000..f9c39e3c Binary files /dev/null and b/education_promotion/static/description/images/close_ay_btn.png differ diff --git a/education_promotion/static/description/images/compute_result.png b/education_promotion/static/description/images/compute_result.png new file mode 100644 index 00000000..afa1b871 Binary files /dev/null and b/education_promotion/static/description/images/compute_result.png differ diff --git a/education_promotion/static/description/images/core_image.png b/education_promotion/static/description/images/core_image.png new file mode 100644 index 00000000..cf7a401a Binary files /dev/null and b/education_promotion/static/description/images/core_image.png differ diff --git a/education_promotion/static/description/images/cybro-service.png b/education_promotion/static/description/images/cybro-service.png new file mode 100644 index 00000000..ae68daed Binary files /dev/null and b/education_promotion/static/description/images/cybro-service.png differ diff --git a/education_promotion/static/description/images/eerp.png b/education_promotion/static/description/images/eerp.png new file mode 100644 index 00000000..30138207 Binary files /dev/null and b/education_promotion/static/description/images/eerp.png differ diff --git a/education_promotion/static/description/images/exam_image.png b/education_promotion/static/description/images/exam_image.png new file mode 100644 index 00000000..01344a93 Binary files /dev/null and b/education_promotion/static/description/images/exam_image.png differ diff --git a/education_promotion/static/description/images/history.png b/education_promotion/static/description/images/history.png new file mode 100644 index 00000000..77064973 Binary files /dev/null and b/education_promotion/static/description/images/history.png differ diff --git a/education_promotion/static/description/images/promoted.png b/education_promotion/static/description/images/promoted.png new file mode 100644 index 00000000..674045ad Binary files /dev/null and b/education_promotion/static/description/images/promoted.png differ diff --git a/education_promotion/static/description/images/promotion_result.png b/education_promotion/static/description/images/promotion_result.png new file mode 100644 index 00000000..339d0d38 Binary files /dev/null and b/education_promotion/static/description/images/promotion_result.png differ diff --git a/education_promotion/static/description/images/result.png b/education_promotion/static/description/images/result.png new file mode 100644 index 00000000..e4fba67d Binary files /dev/null and b/education_promotion/static/description/images/result.png differ diff --git a/education_promotion/static/description/images/student_history.png b/education_promotion/static/description/images/student_history.png new file mode 100644 index 00000000..b430ed4f Binary files /dev/null and b/education_promotion/static/description/images/student_history.png differ diff --git a/education_promotion/static/description/images/theme.png b/education_promotion/static/description/images/theme.png new file mode 100644 index 00000000..672eaf1f Binary files /dev/null and b/education_promotion/static/description/images/theme.png differ diff --git a/education_promotion/static/description/images/time_image.png b/education_promotion/static/description/images/time_image.png new file mode 100644 index 00000000..2049483a Binary files /dev/null and b/education_promotion/static/description/images/time_image.png differ diff --git a/education_promotion/static/description/index.html b/education_promotion/static/description/index.html new file mode 100755 index 00000000..64b3d55b --- /dev/null +++ b/education_promotion/static/description/index.html @@ -0,0 +1,640 @@ +
+ cybrosys-logo +
+
+
+
+

Educational Promotion

+

The Ultimate Educational Management Software

+
+

Key Highlights

+
    +
  • + + Student Promotion to Higher Class +
  • +
  • + + Student History +
  • +
  • + + Academic Year Closing +
  • +
  • + + Academic Results +
  • +
  • + + Promotion Results +
  • +
  • + + New Academic Year +
  • +
+
+
+
+
+
+
+
+ +
+
+ +

Overview

+
+

+ Educational ERP is the new venture of Cybrosys Technologies initiating a hassle free management of schools and related management functions. + Educational ERP encompass different modules like Student Admission, Student Attendance, Staff payroll, Exam Management and many more. + Each module is comprehensive and effectively manages the embedded tasks within. Educational Promotion management software is a comprehensive suite + of application providing the facility of academic transitions, enabling the promotion of students to respective higher classes without hassle. + The module manages every activities encompassing the promotion requisites like closure of current academic year, automating new academic year, + creation of new classes for coming year, conversely shifting the students to next level class and also the viewing the student history. + With Educational promotion management module, one can easily maintain and manage the list of students who got promoted to higher degree of education. +

+
+
+ +

Configuration

+
+

+ No additional configuration is required. +

+
+
+ +

Educational Promotion

+
+ +

+ + Student Promotion to Higher Class +

+

+ + Student History +

+

+ + Academic Year Closing +

+

+ + Academic Results +

+

+ + Promotion Results +

+

+ + New Academic Year +

+
+ +
+
+

Screenshots

+
+
+
+ +
+
+
+
+ +
+
    +
+
+
+
+
+
+
+

Suggested Products

+
+ +
+
+
+

Our Services

+
+
+ + + + + + + +
+
+
+
+

Our Industries

+
+ +
+
+
+
+ Odoo Industry +
+
+
+

+ + Trading +

+

+ Easily procure and sell your products. +

+
+
+
+
+
+ Odoo Industry + +
+
+
+

+ + Manufacturing +

+

+ Plan, track and schedule your operations. +

+
+
+
+
+
+ + Odoo Industry +
+
+
+

+ + Restaurant +

+

+ Run your bar or restaurant methodical. +

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + POS +

+

+ Easy configuring and convivial selling. +

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + E-commerce & Website +

+

+ Mobile friendly, awe-inspiring product pages. +

+
+
+
+
+
+ + Odoo Industry +
+
+
+

+ + Hotel Management +

+

+ An all-inclusive hotel management application. +

+
+
+
+
+
+ + Odoo Industry +
+
+
+

+ + Education +

+

+ A Collaborative platform for educational management. +

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Service Management +

+

+ Keep track of services and invoice accordingly. +

+
+
+
+
+
+
+
+
+

Need Any Help?

+
+

If you have anything to share with us based on your use of this module, please + let us know. We are ready to offer our support. +

+
+

Email us

+

odoo@cybrosys.com / info@cybrosys.com

+
+
+

Contact Us

+ www.cybrosys.com +
+
+
+
+
+
+
+
+
+ +
+ + + + + + + +
+
+
+ diff --git a/education_promotion/static/description/line_bottom.png b/education_promotion/static/description/line_bottom.png new file mode 100644 index 00000000..8bcd254f Binary files /dev/null and b/education_promotion/static/description/line_bottom.png differ diff --git a/education_promotion/static/description/line_upper.png b/education_promotion/static/description/line_upper.png new file mode 100644 index 00000000..90e7d7ef Binary files /dev/null and b/education_promotion/static/description/line_upper.png differ diff --git a/education_promotion/views/academic_year_closing.xml b/education_promotion/views/academic_year_closing.xml new file mode 100644 index 00000000..ef7e4c07 --- /dev/null +++ b/education_promotion/views/academic_year_closing.xml @@ -0,0 +1,101 @@ + + + + + education.division.promotion.form + education.class.division + + + + + + + + + + + + education.class.division.promotion.result.tree + education.class.division + + + + + + + + + + + education.division.promotion.result.form + education.class.division + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + education.division.promotion.result.search + education.class.division + + + + + + + + + + + Promotion Results + education.class.division + tree,form + {'search_default_group_academic_year': 1} + + + + + + tree + + + + + + + form + + + + + +
+
\ No newline at end of file diff --git a/education_promotion/views/education_promotion.xml b/education_promotion/views/education_promotion.xml new file mode 100644 index 00000000..f8d0ef37 --- /dev/null +++ b/education_promotion/views/education_promotion.xml @@ -0,0 +1,78 @@ + + + + + education.promotion.form + education.promotion + +
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+ + + education.promotion.tree + education.promotion + + + + + + + + + + + Education Promotion + education.promotion + tree,form + +

+ You have'nt created any promotion yet. +

+
+
+ + + + +
+
\ No newline at end of file diff --git a/education_promotion/views/student_history.xml b/education_promotion/views/student_history.xml new file mode 100644 index 00000000..38e5321e --- /dev/null +++ b/education_promotion/views/student_history.xml @@ -0,0 +1,37 @@ + + + + + + education.promotion.student.history.tree + education.student.final.result + + + + + + + + + + + + Education Promotion + education.student.final.result + tree + [('student_id','=',active_id)] + + + + + student.history.smart.button.form + education.student + + + +