From 3029e053db99379ae5f55c92cb681054b4f02761 Mon Sep 17 00:00:00 2001
From: younes
Date: Sun, 7 Dec 2025 12:06:21 +0100
Subject: [PATCH] [IMP] odex_benefit: IMP benefit
---
odex25_benefit/odex_benefit/__manifest__.py | 1 +
odex25_benefit/odex_benefit/i18n/ar_001.po | 17 ----
odex25_benefit/odex_benefit/models/benefit.py | 8 +-
.../odex_benefit/models/education_period.py | 2 +-
.../odex_benefit/models/education_settings.py | 8 --
.../odex_benefit/models/education_status.py | 18 +++-
.../odex_benefit/models/family_members.py | 5 +-
.../odex_benefit/models/res_partner.py | 12 ++-
.../odex_benefit/security/ir.model.access.csv | 1 -
.../odex_benefit/views/actions_and_menus.xml | 7 ++
.../odex_benefit/views/education_settings.xml | 31 -------
.../views/education_status_views.xml | 85 ++++++++++++-------
.../odex_benefit/views/res_partner_view.xml | 19 +++++
.../security/ir.model.access.csv | 1 -
.../takaful_core/views/res_city_view.xml | 2 +-
15 files changed, 114 insertions(+), 103 deletions(-)
create mode 100644 odex25_benefit/odex_benefit/views/res_partner_view.xml
diff --git a/odex25_benefit/odex_benefit/__manifest__.py b/odex25_benefit/odex_benefit/__manifest__.py
index 6abce9800..69012d6b4 100644
--- a/odex25_benefit/odex_benefit/__manifest__.py
+++ b/odex25_benefit/odex_benefit/__manifest__.py
@@ -66,6 +66,7 @@
'wizards/visit_location_refused_wizard_view.xml',
'wizards/family_bank_report_wizard.xml',
'views/visit_survey.xml',
+ 'views/res_partner_view.xml',
'views/actions_and_menus.xml',
'reports/family_bank_report.xml',
],
diff --git a/odex25_benefit/odex_benefit/i18n/ar_001.po b/odex25_benefit/odex_benefit/i18n/ar_001.po
index faf3f0b4d..bcd589fb8 100644
--- a/odex25_benefit/odex_benefit/i18n/ar_001.po
+++ b/odex25_benefit/odex_benefit/i18n/ar_001.po
@@ -1793,7 +1793,6 @@ msgstr "اسم المرفق"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__attachment_ids
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__attachment_ids
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__attachment_ids
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__attachment_ids
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__attachment_ids
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__attachment_ids
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__attachment_ids
@@ -3606,7 +3605,6 @@ msgstr ""
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__create_uid
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__create_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__create_uid
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__create_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__create_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__create_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__create_uid
@@ -3733,7 +3731,6 @@ msgstr "هل تم إنشاءه من البوابة؟"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__create_date
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__create_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__create_date
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__create_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__create_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__create_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__create_date
@@ -4356,7 +4353,6 @@ msgstr "نوع المرض"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__display_name
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__display_name
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__display_name
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__display_name
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__display_name
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__display_name
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__display_name
@@ -4635,8 +4631,6 @@ msgstr "تاريخ نهاية المرحلة التعليمية"
#: model:ir.actions.act_window,name:odex_benefit.education_entities_action
#: model:ir.model.fields,field_description:odex_benefit.field_education_period__education_entity_ids
#: model:ir.ui.menu,name:odex_benefit.education_entities_menu
-#: model_terms:ir.ui.view,arch_db:odex_benefit.education_entities_form
-#: model_terms:ir.ui.view,arch_db:odex_benefit.education_entities_tree
msgid "Education Entities"
msgstr "الجهات التعليمية"
@@ -4665,7 +4659,6 @@ msgstr "اسم الجهة التعليمية"
#. module: odex_benefit
#: model:ir.actions.act_window,name:odex_benefit.education_level_action
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__education_level_id
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__education_level_id
#: model:ir.ui.menu,name:odex_benefit.education_level_menu
#: model_terms:ir.ui.view,arch_db:odex_benefit.education_level_form
#: model_terms:ir.ui.view,arch_db:odex_benefit.education_level_tree
@@ -6065,7 +6058,6 @@ msgstr "رقم الآي بان"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__id
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__id
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__id
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__id
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__id
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__id
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__id
@@ -7164,7 +7156,6 @@ msgstr "الجهة التعليمية السابقة"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor____last_update
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type____last_update
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom____last_update
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities____last_update
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason____last_update
#: model:ir.model.fields,field_description:odex_benefit.field_education_level____last_update
#: model:ir.model.fields,field_description:odex_benefit.field_education_result____last_update
@@ -7311,7 +7302,6 @@ msgstr "التخصص السابق"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__write_uid
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__write_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__write_uid
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__write_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__write_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__write_uid
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__write_uid
@@ -7433,7 +7423,6 @@ msgstr "آخر تحديث بواسطة"
#: model:ir.model.fields,field_description:odex_benefit.field_domestic_labor__write_date
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__write_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__write_date
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__write_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_illiterate_reason__write_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__write_date
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__write_date
@@ -8358,7 +8347,6 @@ msgstr "نهاية الوقت المعين للنشاط"
#: model:ir.model.fields,field_description:odex_benefit.field_diseases_settings__name
#: model:ir.model.fields,field_description:odex_benefit.field_donations_type__name
#: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__name
-#: model:ir.model.fields,field_description:odex_benefit.field_education_entities__name
#: model:ir.model.fields,field_description:odex_benefit.field_education_level__name
#: model:ir.model.fields,field_description:odex_benefit.field_education_result__name
#: model:ir.model.fields,field_description:odex_benefit.field_exception_reason__name
@@ -12791,11 +12779,6 @@ msgstr "متعلم"
msgid "education.classroom"
msgstr ""
-#. module: odex_benefit
-#: model:ir.model,name:odex_benefit.model_education_entities
-msgid "education.entities"
-msgstr "الجهات التعليمية"
-
#. module: odex_benefit
#: model:ir.model,name:odex_benefit.model_education_level
msgid "education.level"
diff --git a/odex25_benefit/odex_benefit/models/benefit.py b/odex25_benefit/odex_benefit/models/benefit.py
index 98aebe0d1..823b805de 100644
--- a/odex25_benefit/odex_benefit/models/benefit.py
+++ b/odex25_benefit/odex_benefit/models/benefit.py
@@ -257,8 +257,8 @@ class GrantBenefitProfile(models.Model):
last_education_entity = fields.Selection(string='Last Education Entity',
selection=[('governmental', 'Governmental'),
('special', 'Special')])
- entities = fields.Many2one("education.entities", string='Entity')
- last_entities = fields.Many2one("education.entities", string='Last Entity')
+ entities = fields.Many2one("res.partner", string='Entity')
+ last_entities = fields.Many2one("res.partner", string='Last Entity')
education_levels = fields.Many2one("education.level", string='Education Levels')
last_education_levels = fields.Many2one("education.level", string='Last Education Levels')
nearest_literacy_school = fields.Char(string='The Nearest Literacy School', required=False)
@@ -560,7 +560,7 @@ class GrantBenefitProfile(models.Model):
replacement_intermittent_reason = fields.Many2one('education.illiterate.reason', string='Intermittent Reason')
replacement_education_entity = fields.Selection(string='Education Entity', selection=[('governmental', 'Governmental'),
('special', 'Special')])
- replacement_entities = fields.Many2one("education.entities", string='Entity')
+ replacement_entities = fields.Many2one("res.partner", string='Entity')
replacement_specialization_ids = fields.Many2one('specialization.specialization', string='specialization')
replacement_classroom = fields.Many2one('education.classroom', string='Classroom')
replacement_degree = fields.Many2one('education.result', string='Degree')
@@ -571,7 +571,7 @@ class GrantBenefitProfile(models.Model):
replacement_last_education_entity = fields.Selection(string='Last Education Entity',
selection=[('governmental', 'Governmental'),
('special', 'Special')])
- replacement_last_entities = fields.Many2one("education.entities", string='Last Entity')
+ replacement_last_entities = fields.Many2one("res.partner", string='Last Entity')
replacement_education_levels = fields.Many2one("education.level", string='Education Levels')
replacement_last_education_levels = fields.Many2one("education.level", string='Last Education Levels')
replacement_last_specialization_ids = fields.Many2one('specialization.specialization', string='Last Specialization')
diff --git a/odex25_benefit/odex_benefit/models/education_period.py b/odex25_benefit/odex_benefit/models/education_period.py
index 2764011d3..be39b95ec 100644
--- a/odex25_benefit/odex_benefit/models/education_period.py
+++ b/odex25_benefit/odex_benefit/models/education_period.py
@@ -10,4 +10,4 @@ class EducationPeriod(models.Model):
start_date = fields.Date(string='Period Start Date', required=True)
end_date = fields.Date(string='Period End Date', required=True)
education_level_ids = fields.Many2many('education.level', string='Education Levels')
- education_entity_ids = fields.Many2many("education.entities", string='Education Entities')
\ No newline at end of file
+ education_entity_ids = fields.Many2many("res.partner", string='Education Entities')
\ No newline at end of file
diff --git a/odex25_benefit/odex_benefit/models/education_settings.py b/odex25_benefit/odex_benefit/models/education_settings.py
index e3bdcc8ed..a19b63721 100644
--- a/odex25_benefit/odex_benefit/models/education_settings.py
+++ b/odex25_benefit/odex_benefit/models/education_settings.py
@@ -1,13 +1,5 @@
from odoo import fields, models,api
-
-class EducationEntities(models.Model):
- _name = 'education.entities'
-
- name = fields.Char(string='Name')
- education_level_id = fields.Many2one('education.level', string='Education Level')
-
-
class EducationLevel(models.Model):
_name = 'education.level'
diff --git a/odex25_benefit/odex_benefit/models/education_status.py b/odex25_benefit/odex_benefit/models/education_status.py
index b3970ea30..a43f83266 100644
--- a/odex25_benefit/odex_benefit/models/education_status.py
+++ b/odex25_benefit/odex_benefit/models/education_status.py
@@ -59,8 +59,8 @@ class EducationStatus(models.Model):
string='Educational Certificate'
)
education_levels = fields.Many2one("education.level", string='Education Levels')
- entities = fields.Many2one("education.entities", string='Entity',
- domain="[('education_level_id', '=', education_levels)]")
+ entities = fields.Many2one("res.partner", string='Entity',
+ domain="[('education_level_ids', 'in', education_levels)]")
education_period_id = fields.Many2one("education.period", string='Education Period', domain="['|', '|', ('education_level_ids', 'in', education_levels), ('education_level_ids', '=', False),'|',('education_entity_ids', 'in', entities), ('education_entity_ids', '=', False)]")
classroom = fields.Many2one('education.classroom', string='Classroom',
domain="[('education_level_id', '=', education_levels)]")
@@ -80,6 +80,20 @@ class EducationStatus(models.Model):
delay_reason_id = fields.Many2one('education.delay.reason', string='Delay Reason')
weak_course_ids = fields.One2many('weak.course', 'education_status_id')
+ @api.onchange('percentage', 'rate_type')
+ def _onchange_percentage_rate_type(self):
+ for rec in self:
+ rec.degree = False
+
+ if rec.percentage and rec.rate_type:
+ degree_rec = self.env['education.result'].search([
+ ('rate_type', '=', rec.rate_type),
+ ('min_degree', '<=', rec.percentage),
+ ('max_degree', '>=', rec.percentage),
+ ], limit=1)
+
+ rec.degree = degree_rec.id if degree_rec else False
+
@api.depends(
'mother_grant_benefit_id',
'mother_grant_benefit_id.education_status',
diff --git a/odex25_benefit/odex_benefit/models/family_members.py b/odex25_benefit/odex_benefit/models/family_members.py
index ed6315b9f..573e33f78 100644
--- a/odex25_benefit/odex_benefit/models/family_members.py
+++ b/odex25_benefit/odex_benefit/models/family_members.py
@@ -120,8 +120,8 @@ class FamilyMemberProfile(models.Model):
last_education_entity = fields.Selection(string='Last Education Entity',
selection=[('governmental', 'Governmental'),
('special', 'Special')])
- entities = fields.Many2one("education.entities", string='Entity')
- last_entities = fields.Many2one("education.entities", string='Last Entity')
+ entities = fields.Many2one("res.partner", string='Entity')
+ last_entities = fields.Many2one("res.partner", string='Last Entity')
education_levels = fields.Many2one("education.level", string='Education Levels')
last_education_levels = fields.Many2one("education.level", string='Last Education Levels')
nearest_literacy_school = fields.Char(string='The Nearest Literacy School', required=False)
@@ -181,7 +181,6 @@ class FamilyMemberProfile(models.Model):
# replacement_education_entity = fields.Selection(string='Education Entity',
# selection=[('governmental', 'Governmental'),
# ('special', 'Special')])
- # replacement_entities = fields.Many2one("education.entities", string='Entity')
# replacement_specialization_ids = fields.Many2one('specialization.specialization', string='specialization')
# replacement_classroom = fields.Many2one('education.classroom', string='Classroom')
# replacement_degree = fields.Many2one('education.result', string='Degree')
diff --git a/odex25_benefit/odex_benefit/models/res_partner.py b/odex25_benefit/odex_benefit/models/res_partner.py
index 89a992279..0b827a030 100644
--- a/odex25_benefit/odex_benefit/models/res_partner.py
+++ b/odex25_benefit/odex_benefit/models/res_partner.py
@@ -5,9 +5,15 @@ import logging
_logger = logging.getLogger(__name__)
+
class ResPartner(models.Model):
_inherit = "res.partner"
+ is_education_entity = fields.Boolean(string="Is Education Entity", default=False, )
+ education_level_ids = fields.Many2many(
+ comodel_name='education.level', relation='res_partner_education_level_rel',
+ column1='partner_id', column2='level_id', string='Education Levels', )
+
def unlink(self):
env = self.env
@@ -17,8 +23,10 @@ class ResPartner(models.Model):
('state', 'not in', ['draft', 'new'])
])
if grants:
- grant_info = ', '.join('[%s: %s]' % (g.code or g.name or g.id, dict(g._fields['state'].selection).get(g.state)) for g in grants)
+ grant_info = ', '.join(
+ '[%s: %s]' % (g.code or g.name or g.id, dict(g._fields['state'].selection).get(g.state)) for g in
+ grants)
raise ValidationError(
_("Cannot delete partner '%s': linked to Benefits - Profiles %s") % (partner.name, grant_info)
)
- return super().unlink()
\ No newline at end of file
+ return super().unlink()
diff --git a/odex25_benefit/odex_benefit/security/ir.model.access.csv b/odex25_benefit/odex_benefit/security/ir.model.access.csv
index d5036e1ec..af52f06f8 100644
--- a/odex25_benefit/odex_benefit/security/ir.model.access.csv
+++ b/odex25_benefit/odex_benefit/security/ir.model.access.csv
@@ -104,7 +104,6 @@ access_expenses_type,access_expenses_type,model_expenses_type,base.group_user,1,
access_survey_setting,access_survey_setting,model_survey_setting,,1,1,1,1
access_changes_requests,access_changes_requests,model_changes_requests,,1,1,1,1
access_entity_black_list_wizard,access_entity_black_list_wizard,model_entity_black_list_wizard,,1,1,1,1
-access_education_entities,access_education_entities,model_education_entities,,1,1,1,1
access_education_level,access_education_level,model_education_level,,1,1,1,1
access_education_period,access_education_period,model_education_period,,1,1,1,1
access_education_exam_type,access_education_exam_type,model_education_exam_type,,1,1,1,1
diff --git a/odex25_benefit/odex_benefit/views/actions_and_menus.xml b/odex25_benefit/odex_benefit/views/actions_and_menus.xml
index 2596295b4..f2b584924 100644
--- a/odex25_benefit/odex_benefit/views/actions_and_menus.xml
+++ b/odex25_benefit/odex_benefit/views/actions_and_menus.xml
@@ -745,6 +745,13 @@
+
+ Education Entities
+ res.partner
+ kanban,form,tree
+ [('is_education_entity','=', True)]
+ {'default_is_company':True,'default_is_education_entity':True}
+
diff --git a/odex25_benefit/odex_benefit/views/education_settings.xml b/odex25_benefit/odex_benefit/views/education_settings.xml
index 86c518023..0b3b6a6bb 100644
--- a/odex25_benefit/odex_benefit/views/education_settings.xml
+++ b/odex25_benefit/odex_benefit/views/education_settings.xml
@@ -1,36 +1,5 @@
-
-
- education.entities.form
- education.entities
-
-
-
-
-
- education.entities.tree
- education.entities
-
-
-
-
-
-
-
-
-
- Education Entities
- education.entities
- tree,form
-
education.level.form
diff --git a/odex25_benefit/odex_benefit/views/education_status_views.xml b/odex25_benefit/odex_benefit/views/education_status_views.xml
index 1c90c10d0..6b1604395 100644
--- a/odex25_benefit/odex_benefit/views/education_status_views.xml
+++ b/odex25_benefit/odex_benefit/views/education_status_views.xml
@@ -7,17 +7,21 @@
-
-
-
+
+
@@ -30,7 +34,8 @@
-
+
@@ -59,12 +64,33 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/odex25_benefit/odex_benefit/views/res_partner_view.xml b/odex25_benefit/odex_benefit/views/res_partner_view.xml
new file mode 100644
index 000000000..4ab9d88f6
--- /dev/null
+++ b/odex25_benefit/odex_benefit/views/res_partner_view.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ res.partner
+ res.partner
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_benefit/odex_benefit_project/security/ir.model.access.csv b/odex25_benefit/odex_benefit_project/security/ir.model.access.csv
index 8bb54bafe..8c1b24812 100644
--- a/odex25_benefit/odex_benefit_project/security/ir.model.access.csv
+++ b/odex25_benefit/odex_benefit_project/security/ir.model.access.csv
@@ -100,7 +100,6 @@ access_expenses_type,access_expenses_type,model_expenses_type,base.group_user,1,
access_survey_setting,access_survey_setting,model_survey_setting,,1,1,1,1
access_changes_requests,access_changes_requests,model_changes_requests,,1,1,1,1
access_entity_black_list_wizard,access_entity_black_list_wizard,model_entity_black_list_wizard,,1,1,1,1
-access_education_entities,access_education_entities,model_education_entities,,1,1,1,1
access_education_level,access_education_level,model_education_level,,1,1,1,1
access_education_classroom,access_education_classroom,model_education_classroom,,1,1,1,1
access_education_result,access_education_result,model_education_result,,1,1,1,1
diff --git a/odex25_benefit/takaful_core/views/res_city_view.xml b/odex25_benefit/takaful_core/views/res_city_view.xml
index a99f02453..0bb131406 100644
--- a/odex25_benefit/takaful_core/views/res_city_view.xml
+++ b/odex25_benefit/takaful_core/views/res_city_view.xml
@@ -17,7 +17,7 @@
-
+