From 859e8fd5d428dc1ebcc9624840e5601814ddca3c Mon Sep 17 00:00:00 2001 From: MahmoudSalahEXP Date: Tue, 7 Oct 2025 20:39:34 +0300 Subject: [PATCH] education notes tasks 2 and 3 => odex_benefit --- odex25_ensan/odex_benefit/__manifest__.py | 3 +- odex25_ensan/odex_benefit/i18n/ar_001.po | 134 ++++++++++++++++-- odex25_ensan/odex_benefit/models/__init__.py | 2 + .../odex_benefit/models/benefit_config.py | 2 +- .../odex_benefit/models/education_period.py | 13 ++ .../odex_benefit/models/education_settings.py | 7 + .../odex_benefit/models/education_status.py | 83 ++++++----- .../odex_benefit/models/family_member_exam.py | 14 ++ .../odex_benefit/models/family_members.py | 1 + .../odex_benefit/security/ir.model.access.csv | 3 + .../odex_benefit/views/actions_and_menus.xml | 19 ++- .../odex_benefit/views/benefit_view.xml | 14 ++ .../odex_benefit/views/education_period.xml | 60 ++++++++ .../odex_benefit/views/education_settings.xml | 28 ++++ .../views/education_status_views.xml | 6 +- .../odex_benefit/views/family_members.xml | 15 ++ 16 files changed, 348 insertions(+), 56 deletions(-) create mode 100644 odex25_ensan/odex_benefit/models/education_period.py create mode 100644 odex25_ensan/odex_benefit/models/family_member_exam.py create mode 100644 odex25_ensan/odex_benefit/views/education_period.xml diff --git a/odex25_ensan/odex_benefit/__manifest__.py b/odex25_ensan/odex_benefit/__manifest__.py index 1c4db1baa..2df4120e0 100644 --- a/odex25_ensan/odex_benefit/__manifest__.py +++ b/odex25_ensan/odex_benefit/__manifest__.py @@ -24,6 +24,7 @@ 'views/family_members.xml', 'views/family_complaints.xml', 'views/education_status_views.xml', + 'views/education_period.xml', 'views/seasonal_service_view.xml', 'wizards/researcher_wizard.xml', @@ -65,7 +66,7 @@ 'wizards/visit_location_refused_wizard_view.xml', 'views/visit_survey.xml', 'views/actions_and_menus.xml', - ], +], 'external_dependencies': { 'python': ['num2words'], }, diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po index cf8c55a56..1aab21eea 100644 --- a/odex25_ensan/odex_benefit/i18n/ar_001.po +++ b/odex25_ensan/odex_benefit/i18n/ar_001.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-07 13:07+0000\n" -"PO-Revision-Date: 2025-10-07 13:07+0000\n" +"POT-Creation-Date: 2025-10-07 16:59+0000\n" +"PO-Revision-Date: 2025-10-07 16:59+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -2317,8 +2317,10 @@ msgstr "اسم المرفق" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__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_exam_type__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_period__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_education_result__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_education_status__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__attachment_ids @@ -2331,6 +2333,7 @@ msgstr "اسم المرفق" #: model:ir.model.fields,field_description:odex_benefit.field_external_request__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__attachment_ids +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__attachment_ids #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__attachment_ids @@ -4230,6 +4233,11 @@ msgstr "" msgid "Create the receive food basket" msgstr "" +#. module: odex_benefit +#: model_terms:ir.actions.act_window,help:odex_benefit.education_period_action +msgid "Create your first education period!" +msgstr "قم بإنشاء أول فترة تعليمية" + #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_age_category__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_appliances_furniture__create_uid @@ -4278,8 +4286,10 @@ msgstr "" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__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_exam_type__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_period__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_education_result__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_education_status__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__create_uid @@ -4298,6 +4308,7 @@ msgstr "" #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_family_member__create_uid +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__create_uid #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__create_uid @@ -4431,8 +4442,10 @@ msgstr "انشئ بواسطة" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__create_date #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__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_exam_type__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_period__create_date #: model:ir.model.fields,field_description:odex_benefit.field_education_result__create_date #: model:ir.model.fields,field_description:odex_benefit.field_education_status__create_date #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__create_date @@ -4451,6 +4464,7 @@ msgstr "انشئ بواسطة" #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__create_date #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__create_date #: model:ir.model.fields,field_description:odex_benefit.field_family_member__create_date +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__create_date #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__create_date #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__create_date #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__create_date @@ -5048,8 +5062,10 @@ msgstr "نوع المرض" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__display_name #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__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_exam_type__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_period__display_name #: model:ir.model.fields,field_description:odex_benefit.field_education_result__display_name #: model:ir.model.fields,field_description:odex_benefit.field_education_status__display_name #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__display_name @@ -5068,6 +5084,7 @@ msgstr "نوع المرض" #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__display_name #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__display_name #: model:ir.model.fields,field_description:odex_benefit.field_family_member__display_name +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__display_name #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__display_name #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__display_name #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__display_name @@ -5362,7 +5379,7 @@ msgstr "الصفوف الدراسية" #: model:ir.model,name:odex_benefit.model_education_delay_reason #: model:ir.ui.menu,name:odex_benefit.delay_reason_menu msgid "Education Delay Reason" -msgstr "" +msgstr "أسباب تأخر التعليم" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_education_status__education_end_date @@ -5374,6 +5391,7 @@ msgstr "تاريخ نهاية المرحلة التعليمية" #. module: odex_benefit #: 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 @@ -5413,12 +5431,7 @@ msgid "Education Level" msgstr "المراحل التعليمية" #. module: odex_benefit -#: 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 -msgid "Education Level" -msgstr "المرحلة التعليمية" - -#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_education_period__education_level_ids #: model:ir.model.fields,field_description:odex_benefit.field_education_status__education_levels #: model:ir.model.fields,field_description:odex_benefit.field_family_member__education_levels #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__education_levels @@ -5426,6 +5439,20 @@ msgstr "المرحلة التعليمية" msgid "Education Levels" msgstr "المرحلة التعليمية" +#. module: odex_benefit +#: model:ir.model,name:odex_benefit.model_education_period +#: model:ir.model.fields,field_description:odex_benefit.field_education_status__education_period_id +msgid "Education Period" +msgstr "الفترة التعليمية" + +#. module: odex_benefit +#: model:ir.actions.act_window,name:odex_benefit.education_period_action +#: model:ir.ui.menu,name:odex_benefit.education_period_menu +#: model_terms:ir.ui.view,arch_db:odex_benefit.education_period_view_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.education_period_view_list +msgid "Education Periods" +msgstr "الفترات التعليمية" + #. module: odex_benefit #: model:ir.actions.act_window,name:odex_benefit.education_result_action #: model:ir.ui.menu,name:odex_benefit.education_result_menu @@ -5732,6 +5759,52 @@ msgstr "استمارة التقييم" msgid "Every Period" msgstr "مرة كل فترة" +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_family_member__exam_ids +msgid "Exam" +msgstr "" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__exam_attachment +msgid "Exam Attachment" +msgstr "المرفق" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__exam_date +msgid "Exam Date" +msgstr "تاريخ الإختبار" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__exam_degree +msgid "Exam Degree" +msgstr "درجة الإختبار" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__exam_id +msgid "Exam Type" +msgstr "نوع الإختبار" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/benefit_config.py:0 +#: model:ir.model.fields.selection,name:odex_benefit.selection__attachments_settings__attach_type__exams_attach +#, python-format +msgid "Exams Attach" +msgstr "مرفقات الإختبارات" + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form +msgid "Exams Degrees" +msgstr "درجات الإختبارات" + +#. module: odex_benefit +#: model:ir.actions.act_window,name:odex_benefit.education_exam_type_action +#: model:ir.ui.menu,name:odex_benefit.education_exam_type_menu +#: model_terms:ir.ui.view,arch_db:odex_benefit.education_exam_type_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.education_exam_type_tree +msgid "Exams Type" +msgstr "أنواع الإختبارات" + #. module: odex_benefit #: model:ir.model.fields.selection,name:odex_benefit.selection__benefit_housing__housing_cat__excellent #: model:ir.model.fields.selection,name:odex_benefit.selection__grant_benefit__housing_cat__excellent @@ -6161,10 +6234,16 @@ msgid "Family Loans" msgstr "ديون الأسرة" #. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__member_id #: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_form #: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form msgid "Family Member" -msgstr "" +msgstr "الفرد" + +#. module: odex_benefit +#: model:ir.model,name:odex_benefit.model_family_member_exam +msgid "Family Member Exam" +msgstr "إختبارات الفرد" #. module: odex_benefit #: code:addons/odex_benefit/models/benefit.py:0 @@ -7324,8 +7403,10 @@ msgstr "مرفق الآيبان مطلوب." #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__id #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__id #: model:ir.model.fields,field_description:odex_benefit.field_education_entities__id +#: model:ir.model.fields,field_description:odex_benefit.field_education_exam_type__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_period__id #: model:ir.model.fields,field_description:odex_benefit.field_education_result__id #: model:ir.model.fields,field_description:odex_benefit.field_education_status__id #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__id @@ -7344,6 +7425,7 @@ msgstr "مرفق الآيبان مطلوب." #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__id #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__id #: model:ir.model.fields,field_description:odex_benefit.field_family_member__id +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__id #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__id #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__id #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__id @@ -8576,8 +8658,10 @@ msgstr "الجهة التعليمية السابقة" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom____last_update #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason____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_exam_type____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_period____last_update #: model:ir.model.fields,field_description:odex_benefit.field_education_result____last_update #: model:ir.model.fields,field_description:odex_benefit.field_education_status____last_update #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices____last_update @@ -8596,6 +8680,7 @@ msgstr "الجهة التعليمية السابقة" #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints____last_update #: model:ir.model.fields,field_description:odex_benefit.field_family_debits____last_update #: model:ir.model.fields,field_description:odex_benefit.field_family_member____last_update +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam____last_update #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting____last_update #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line____last_update #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line____last_update @@ -8754,8 +8839,10 @@ msgstr "التخصص السابق" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__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_exam_type__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_period__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_education_result__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_education_status__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__write_uid @@ -8774,6 +8861,7 @@ msgstr "التخصص السابق" #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_family_member__write_uid +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__write_uid #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__write_uid @@ -8907,8 +8995,10 @@ msgstr "آخر تحديث بواسطة" #: model:ir.model.fields,field_description:odex_benefit.field_education_classroom__write_date #: model:ir.model.fields,field_description:odex_benefit.field_education_delay_reason__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_exam_type__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_period__write_date #: model:ir.model.fields,field_description:odex_benefit.field_education_result__write_date #: model:ir.model.fields,field_description:odex_benefit.field_education_status__write_date #: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__write_date @@ -8927,6 +9017,7 @@ msgstr "آخر تحديث بواسطة" #: model:ir.model.fields,field_description:odex_benefit.field_family_complaints__write_date #: model:ir.model.fields,field_description:odex_benefit.field_family_debits__write_date #: model:ir.model.fields,field_description:odex_benefit.field_family_member__write_date +#: model:ir.model.fields,field_description:odex_benefit.field_family_member_exam__write_date #: model:ir.model.fields,field_description:odex_benefit.field_family_validation_setting__write_date #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_benefits_line__write_date #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__write_date @@ -9567,7 +9658,6 @@ msgstr "الاجتماعات" #: model:ir.model.fields,field_description:odex_benefit.field_researcher_member_wizard__member_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__member_id #: model:ir.model.fields,field_description:odex_benefit.field_suspend_reason_wizard__member_id -#: model:ir.model.fields.selection,name:odex_benefit.selection__location_settings__location_type__member #: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__benefit_type__member #: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__benefit_type__member #, python-format @@ -10123,7 +10213,9 @@ msgstr "" #: 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_exam_type__name #: model:ir.model.fields,field_description:odex_benefit.field_education_level__name +#: model:ir.model.fields,field_description:odex_benefit.field_education_period__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 #: model:ir.model.fields,field_description:odex_benefit.field_expenses_type__name @@ -11179,6 +11271,16 @@ msgstr "النسبة" msgid "Period" msgstr "" +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_education_period__end_date +msgid "Period End Date" +msgstr "تاريخ النهاية" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_education_period__start_date +msgid "Period Start Date" +msgstr "تاريخ البداية" + #. module: odex_benefit #: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__service_category__permanent msgid "Permanent" @@ -16187,6 +16289,11 @@ msgstr "" msgid "education.entities" msgstr "الجهات التعليمية" +#. module: odex_benefit +#: model:ir.model,name:odex_benefit.model_education_exam_type +msgid "education.exam.type" +msgstr "" + #. module: odex_benefit #: model:ir.model,name:odex_benefit.model_education_level msgid "education.level" @@ -17426,6 +17533,11 @@ msgstr "" msgid "الرجاء استخدام هذه المفاتيح لاستخدام في القالب :" msgstr "" +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__location_settings__location_type__member +msgid "الفرد" +msgstr "" + #. module: odex_benefit #: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_kanban msgid "الكود:" diff --git a/odex25_ensan/odex_benefit/models/__init__.py b/odex25_ensan/odex_benefit/models/__init__.py index 14af3085d..5ea198061 100644 --- a/odex25_ensan/odex_benefit/models/__init__.py +++ b/odex25_ensan/odex_benefit/models/__init__.py @@ -21,6 +21,8 @@ from . import family_validation_setting from . import expenses_type from . import changes_requests from . import education_settings +from . import education_period +from . import family_member_exam from . import hr_department from . import account_move_line from . import family_expense diff --git a/odex25_ensan/odex_benefit/models/benefit_config.py b/odex25_ensan/odex_benefit/models/benefit_config.py index b48e6bb92..d964716a9 100644 --- a/odex25_ensan/odex_benefit/models/benefit_config.py +++ b/odex25_ensan/odex_benefit/models/benefit_config.py @@ -757,7 +757,7 @@ class AttachmentsSettings(models.Model): disabilities_id = fields.Many2one('disabilities.settings',string='Disabilities') attach_type = fields.Selection( [('family_attach', _('Family Attach')), ('member_attach', _('Member Attach')), ('hobbies_attach', _('Hobbies Attach')), - ('diseases_attach', _('Diseases Attach')), ('disabilities_attach', _('Disabilities Attach')), ('income_attach', _('Income Attach'))]) + ('diseases_attach', _('Diseases Attach')), ('disabilities_attach', _('Disabilities Attach')), ('income_attach', _('Income Attach')), ('exams_attach', _('Exams Attach'))]) is_required = fields.Boolean(string='Is Required?') is_default = fields.Boolean(string='Is Default?') show_in_portal = fields.Boolean(default=True) diff --git a/odex25_ensan/odex_benefit/models/education_period.py b/odex25_ensan/odex_benefit/models/education_period.py new file mode 100644 index 000000000..2764011d3 --- /dev/null +++ b/odex25_ensan/odex_benefit/models/education_period.py @@ -0,0 +1,13 @@ +from odoo import fields, models,api + + +class EducationPeriod(models.Model): + _name = 'education.period' + _description = 'Education Period' + _order = 'id desc' + + name = fields.Char(string="Name", required=True) + 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 diff --git a/odex25_ensan/odex_benefit/models/education_settings.py b/odex25_ensan/odex_benefit/models/education_settings.py index edf2411b8..e3bdcc8ed 100644 --- a/odex25_ensan/odex_benefit/models/education_settings.py +++ b/odex25_ensan/odex_benefit/models/education_settings.py @@ -40,7 +40,14 @@ class EducationResults(models.Model): rec.name = rec.evaluation + " " + str(rec.min_degree) + "-" + str(rec.max_degree) else: rec.name="" + class StudyMaterial(models.Model): _name = 'study.material' name = fields.Char(string='Name') + + +class EducationExamType(models.Model): + _name = 'education.exam.type' + + name = fields.Char(string='Name', required=True) \ No newline at end of file diff --git a/odex25_ensan/odex_benefit/models/education_status.py b/odex25_ensan/odex_benefit/models/education_status.py index 536f06271..b3970ea30 100644 --- a/odex25_ensan/odex_benefit/models/education_status.py +++ b/odex25_ensan/odex_benefit/models/education_status.py @@ -14,12 +14,12 @@ class EducationStatus(models.Model): name = fields.Char( string="Sequence", - default="/", - readonly=True, - copy=False, + default="/", + readonly=True, + copy=False, index=True ) - + education_status_type = fields.Selection( selection=[ ('current', 'Current'), @@ -30,8 +30,8 @@ class EducationStatus(models.Model): education_status = fields.Selection( string='Education Status', selection=[ - ('educated', 'Educated'), - ('illiterate', 'Illiterate'), + ('educated', 'Educated'), + ('illiterate', 'Illiterate'), ('under_study_age', 'Under Study Age') ], compute="_compute_education_status", @@ -39,8 +39,8 @@ class EducationStatus(models.Model): ) case_study = fields.Selection( string='Case Study', - selection=[('continuous', 'Continuous'), - ('intermittent', 'Intermittent'), + selection=[('continuous', 'Continuous'), + ('intermittent', 'Intermittent'), ('graduate', 'Graduate')] ) education_entity = fields.Selection( @@ -50,7 +50,7 @@ class EducationStatus(models.Model): ) education_start_date = fields.Date(string='Education Start Date') education_end_date = fields.Date(string='Education End Date') - + educational_certificate = fields.Many2many( 'ir.attachment', 'rel_education_status_educational_certificate_attachment', @@ -59,8 +59,11 @@ 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)]") - classroom = fields.Many2one('education.classroom', string='Classroom', domain="[('education_level_id', '=', education_levels)]") + entities = fields.Many2one("education.entities", string='Entity', + domain="[('education_level_id', '=', 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)]") rate_type = fields.Selection([ ('from_4', 'From 4'), ('from_5', 'From 5'), @@ -69,27 +72,27 @@ class EducationStatus(models.Model): degree = fields.Many2one('education.result', string='Degree') percentage = fields.Float(string="Percentage%") specialization_ids = fields.Many2one('specialization.specialization', string='Specialization') - intermittent_reason_id = fields.Many2one('education.illiterate.reason',string='Intermittent Reason') + intermittent_reason_id = fields.Many2one('education.illiterate.reason', string='Intermittent Reason') intermittent_date = fields.Date(string='Intermittent Date') - family_member_age = fields.Integer(string="Age At Level Beginning", compute='_compute_family_member_age', store=True) + family_member_age = fields.Integer(string="Age At Level Beginning", compute='_compute_family_member_age', + store=True) family_member_delay = fields.Boolean(string="Member Delay", compute='_compute_family_member_delay', store=True) delay_reason_id = fields.Many2one('education.delay.reason', string='Delay Reason') weak_course_ids = fields.One2many('weak.course', 'education_status_id') - @api.depends( - 'mother_grant_benefit_id', - 'mother_grant_benefit_id.education_status', - 'replacement_grant_benefit_id', - 'replacement_grant_benefit_id.replacement_education_status', + 'mother_grant_benefit_id', + 'mother_grant_benefit_id.education_status', + 'replacement_grant_benefit_id', + 'replacement_grant_benefit_id.replacement_education_status', 'family_member_id', 'family_member_id.education_status', ) def _compute_education_status(self): for record in self: - record.education_status = record.mother_grant_benefit_id.education_status or\ - record.replacement_grant_benefit_id.replacement_education_status or\ - record.family_member_id.education_status + record.education_status = record.mother_grant_benefit_id.education_status or \ + record.replacement_grant_benefit_id.replacement_education_status or \ + record.family_member_id.education_status @api.depends("case_study") def _compute_education_status_type(self): @@ -123,29 +126,37 @@ class EducationStatus(models.Model): else: rec.family_member_delay = False - - @api.onchange('education_status_type') def _onchange_education_status_type(self): - relation_id = self.mother_grant_benefit_id or\ - self.replacement_grant_benefit_id or\ - self.family_member_id + relation_id = self.mother_grant_benefit_id or \ + self.replacement_grant_benefit_id or \ + self.family_member_id if self.education_status_type == 'current' and relation_id: existing_current = self.search([ ('education_status_type', '=', 'current'), '|', '|', - ('mother_grant_benefit_id', '=', relation_id._origin.id), - ('replacement_grant_benefit_id', '=', relation_id._origin.id), - ('family_member_id', '=', relation_id._origin.id) + ('mother_grant_benefit_id', '=', relation_id._origin.id), + ('replacement_grant_benefit_id', '=', relation_id._origin.id), + ('family_member_id', '=', relation_id._origin.id) ], limit=1) if existing_current: return { "warning": { 'title': _('Current Education Status Already Exists'), - 'message': _("There is already an education status marked as Current.\nIf you save this, %s will be marked as Previous!") % existing_current.name + 'message': _( + "There is already an education status marked as Current.\nIf you save this, %s will be marked as Previous!") % existing_current.name } } + @api.onchange('education_period_id', 'education_period_id.start_date', 'education_period_id.end_date') + def _onchange_field_name(self): + self.ensure_one() + if self.education_period_id: + if self.education_period_id.start_date: + self.education_start_date = self.education_period_id.start_date + if self.education_period_id.end_date: + self.education_end_date = self.education_period_id.end_date + @api.model def create(self, vals): # Determine the prefix based on the related field @@ -175,14 +186,16 @@ class EducationStatus(models.Model): vals['name'] = f"{prefix}{formatted_number}" # Ensure only one 'current' education status exists - relation_id = vals.get('mother_grant_benefit_id', vals.get('replacement_grant_benefit_id', vals.get('family_member_id', False))) - if not self.env.context.get('skip_current_check') and vals.get('education_status_type') == 'current' and relation_id: + relation_id = vals.get('mother_grant_benefit_id', + vals.get('replacement_grant_benefit_id', vals.get('family_member_id', False))) + if not self.env.context.get('skip_current_check') and vals.get( + 'education_status_type') == 'current' and relation_id: existing_current = self.search([ ('education_status_type', '=', 'current'), '|', '|', - ('mother_grant_benefit_id', '=', relation_id), - ('replacement_grant_benefit_id', '=', relation_id), - ('family_member_id', '=', relation_id) + ('mother_grant_benefit_id', '=', relation_id), + ('replacement_grant_benefit_id', '=', relation_id), + ('family_member_id', '=', relation_id) ], limit=1) if existing_current: diff --git a/odex25_ensan/odex_benefit/models/family_member_exam.py b/odex25_ensan/odex_benefit/models/family_member_exam.py new file mode 100644 index 000000000..f46a12024 --- /dev/null +++ b/odex25_ensan/odex_benefit/models/family_member_exam.py @@ -0,0 +1,14 @@ +from odoo import fields, models,api + + +class FamilyMemberExam(models.Model): + _name = 'family.member.exam' + _description = 'Family Member Exam' + _order = 'id desc' + + member_id = fields.Many2one('family.member', string='Family Member') + exam_id = fields.Many2one('education.exam.type', string='Exam Type', required=True) + exam_degree = fields.Float(string='Exam Degree') + exam_date = fields.Date(string='Exam Date') + exam_attachment = fields.Binary(string='Exam Attachment', attachment=True) + exam_attachment_file_name = fields.Char(required=False) diff --git a/odex25_ensan/odex_benefit/models/family_members.py b/odex25_ensan/odex_benefit/models/family_members.py index 76881c6b3..5134b1619 100644 --- a/odex25_ensan/odex_benefit/models/family_members.py +++ b/odex25_ensan/odex_benefit/models/family_members.py @@ -96,6 +96,7 @@ class FamilyMemberProfile(models.Model): hobbies_ids = fields.One2many("member.hobbies", 'member_id') diseases_ids = fields.One2many("member.diseases", 'member_id') disabilities_ids = fields.One2many("member.disabilities", 'member_id') + exam_ids = fields.One2many("family.member.exam", 'member_id') is_scientific_specialty = fields.Boolean('Is Scientific Specialty?', related="specialization_ids.is_scientific_specialty") is_medical_specialty = fields.Boolean('Is Medical Specialty?', related="specialization_ids.is_medical_specialty") diff --git a/odex25_ensan/odex_benefit/security/ir.model.access.csv b/odex25_ensan/odex_benefit/security/ir.model.access.csv index 7ae7059b3..90e4f0e53 100644 --- a/odex25_ensan/odex_benefit/security/ir.model.access.csv +++ b/odex25_ensan/odex_benefit/security/ir.model.access.csv @@ -106,6 +106,9 @@ 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 +access_family_member_exam,access_family_member_exam,model_family_member_exam,,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 access_study_material,access_study_material,model_study_material,,1,1,1,1 diff --git a/odex25_ensan/odex_benefit/views/actions_and_menus.xml b/odex25_ensan/odex_benefit/views/actions_and_menus.xml index d08a2dce1..89691efae 100644 --- a/odex25_ensan/odex_benefit/views/actions_and_menus.xml +++ b/odex25_ensan/odex_benefit/views/actions_and_menus.xml @@ -1016,18 +1016,25 @@ parent="education_main_menu" action="education_entities_action" sequence="0"/> + + parent="education_main_menu" action="specialization_action" sequence="3"/> + parent="education_main_menu" action="education_classroom_action" sequence="4"/> + parent="education_main_menu" action="education_result_action" sequence="5"/> + parent="education_main_menu" action="study_material_action" sequence="6"/> + parent="education_main_menu" action="education_illiterate_reason_action" sequence="7"/> + parent="education_main_menu" action="education_delay_reason_action" sequence="8"/> + + + + + + + + + + + + + + diff --git a/odex25_ensan/odex_benefit/views/education_period.xml b/odex25_ensan/odex_benefit/views/education_period.xml new file mode 100644 index 000000000..36d5974a5 --- /dev/null +++ b/odex25_ensan/odex_benefit/views/education_period.xml @@ -0,0 +1,60 @@ + + + + + education.period.view.form + education.period + +
+ +
+
+ + + + + + + + +
+
+
+
+ + + + education.period.view.list + education.period + + + + + + + + + + + + + + Education Periods + education.period + tree,form + +

+ Create your first education period! +

+
+
+ +
\ No newline at end of file diff --git a/odex25_ensan/odex_benefit/views/education_settings.xml b/odex25_ensan/odex_benefit/views/education_settings.xml index 13c06a152..86c518023 100644 --- a/odex25_ensan/odex_benefit/views/education_settings.xml +++ b/odex25_ensan/odex_benefit/views/education_settings.xml @@ -156,6 +156,28 @@
+ + education.exam.type.form + education.exam.type + +
+ + + + + +
+
+
+ + education.exam.type.tree + education.exam.type + + + + + + Study Material @@ -173,5 +195,11 @@ education.delay.reason tree,form + + + Exams Type + education.exam.type + tree,form + diff --git a/odex25_ensan/odex_benefit/views/education_status_views.xml b/odex25_ensan/odex_benefit/views/education_status_views.xml index 4ba541143..6346820f5 100644 --- a/odex25_ensan/odex_benefit/views/education_status_views.xml +++ b/odex25_ensan/odex_benefit/views/education_status_views.xml @@ -25,6 +25,7 @@ + @@ -73,13 +74,14 @@ + - - + + diff --git a/odex25_ensan/odex_benefit/views/family_members.xml b/odex25_ensan/odex_benefit/views/family_members.xml index f528df557..f57d138a9 100644 --- a/odex25_ensan/odex_benefit/views/family_members.xml +++ b/odex25_ensan/odex_benefit/views/family_members.xml @@ -211,6 +211,20 @@ attrs="{'invisible': [('education_status', '!=', 'educated')]}">
+ + + + + + + + + + + + + @@ -239,6 +253,7 @@ +