empowerment_management

This commit is contained in:
blackbelts 2025-07-29 12:38:49 +03:00
parent a4f945469d
commit bc8d45ce27
13 changed files with 1095 additions and 1694 deletions

View File

@ -6,10 +6,11 @@
'category': 'Odex25-Ensan activity',
'depends': ['base','mail','odex_takaful'],
'data': [
'security/security.xml',
# 'security/security.xml',
'security/ir.model.access.csv',
'data/ir_sequence_data.xml',
'views/service_settings.xml',
'views/empowerment_management.xml',

View File

@ -1,52 +1,13 @@
<odoo>
<record id="seq_pa_program_level" model="ir.sequence">
<record id="seq_empowerment_request" model="ir.sequence">
<field name="name">Level Code</field>
<field name="code">pa.program.level</field>
<field name="prefix">LVL/</field>
<field name="code">empowerment.request</field>
<field name="prefix">REQ/</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="padding">4</field>
</record>
<record id="seq_pa_program_track" model="ir.sequence">
<field name="name">Track Code</field>
<field name="code">pa.program.track</field>
<field name="prefix">TRK/</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="padding">4</field>
</record>
<record id="seq_pa_program" model="ir.sequence">
<field name="name">Program Code</field>
<field name="code">pa.program</field>
<field name="prefix">PRG/</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="padding">4</field>
</record>
<record id="seq_pa_program_activity" model="ir.sequence">
<field name="name">Activity Code</field>
<field name="code">pa.program.activity</field>
<field name="prefix">ACT/</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="padding">4</field>
</record>
<record id="seq_pa_program_medad" model="ir.sequence">
<field name="name">Medad Code</field>
<field name="code">pa.program.medad</field>
<field name="prefix">MD/</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="padding">4</field>
</record>
<record id="seq_pa_program_registration" model="ir.sequence">
<field name="name">Registration Code</field>
<field name="code">pa.program.registration</field>
<field name="prefix">PA/</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="padding">4</field>
</record>
</odoo>

View File

@ -1,569 +1,233 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * ensan_real_estate
# * odex25_empowermentmanagement
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-22 12:14+0000\n"
"PO-Revision-Date: 2024-10-22 15:14+0300\n"
"POT-Creation-Date: 2024-11-03 00:50+0000\n"
"PO-Revision-Date: 2024-11-03 00:50+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Generator: Poedit 3.5\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_kanban_inherit
msgid ""
"<b>\n"
" Evaluation:\n"
" </b>"
msgstr ""
"<b>\n"
" التقييم:\n"
" </b>"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "<span class=\"oe_inline\">( On</span>"
msgstr "<span class=\"oe_inline\"> ( التاريخ </span>"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "<span>: Lat :</span>"
msgstr "<span> : خط العرض : </span>"
#. module: odex25_empowermentmanagement
#: model:ir.model,name:odex25_empowermentmanagement.model_hr_qualification_req
msgid "HR Qualification"
msgstr "المؤهلات العلمية"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "<span>; Long:</span>"
msgstr "<span> ; خط الطول : </span>"
#. module: odex25_empowermentmanagement
#: model:ir.model,name:odex25_empowermentmanagement.model_qualification_specification_req
msgid "Qualification Specification"
msgstr "تخصص المؤهل"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_needaction
msgid "Action Needed"
msgstr "إجراء مطلوب"
#. module: odex25_empowermentmanagement
#: model:ir.model,name:odex25_empowermentmanagement.model_hr_qualification_name_req
msgid "HR Qualification Name"
msgstr "اسم المؤهل العلمي"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_ids
msgid "Activities"
msgstr "الأنشطة"
#. module: odex25_empowermentmanagement
#: model:ir.model,name:odex25_empowermentmanagement.model_hr_employee_history_req
msgid "HR Employee History"
msgstr "تاريخ الموظف"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr "زخرفة استثناء النشاط"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__uni_name
msgid "University Name"
msgstr "اسم الجامعة"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_state
msgid "Activity State"
msgstr "حالة النشاط"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__prg_status
msgid "Program Status"
msgstr "حالة البرنامج"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_type_icon
msgid "Activity Type Icon"
msgstr "أيقونة نوع النشاط"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__comp_date
msgid "Completion Date"
msgstr "تاريخ الانتهاء"
#. module: ensan_real_estate
#: model:res.groups,name:ensan_real_estate.group_real_estate_evaluation_admin
msgid "Admin"
msgstr "مدير"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__contact_name
msgid "Contact Name"
msgstr "اسم جهة الاتصال"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__account_asset_id
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "Asset"
msgstr " الأصل الثابت"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__contact_phn
msgid "Contact Phone No"
msgstr "رقم هاتف جهة الاتصال"
#. module: ensan_real_estate
#: model:ir.model,name:ensan_real_estate.model_account_asset
msgid "Asset/Revenue Recognition"
msgstr "إثبات الأصل/الربح"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__contact_email
msgid "Contact Email"
msgstr "البريد الإلكتروني لجهة الاتصال"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__attach_nbr
msgid "Attach Nbr"
msgstr "عدد المرفقات"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_attachment_count
msgid "Attachment Count"
msgstr "عدد المرفقات"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
msgid "Close"
msgstr "إغلاق"
#. module: ensan_real_estate
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__internal_property__last_evaluation_state__closed
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__property_evaluation__state__closed
msgid "Closed"
msgstr "مغلق"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__conditional_percentage_owner
msgid "Conditional Percentage Owner"
msgstr "النسبة المشروطة من الواقف"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__country_id
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__country_name
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__country
msgid "Country"
msgstr "البلد"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__create_uid
msgid "Created by"
msgstr "أنشأ من قبل"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__create_date
msgid "Created on"
msgstr "تاريخ الإنشاء"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_kanban_inherit
msgid "Date:"
msgstr "تاريخ التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__display_name
msgid "Display Name"
msgstr "الاسم المعروض"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "Documents"
msgstr "الوثائق"
#. module: ensan_real_estate
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__internal_property__last_evaluation_state__draft
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__property_evaluation__state__draft
msgid "Draft"
msgstr "مسودة"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
msgid "Evaluate"
msgstr "تقييم"
#. module: ensan_real_estate
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__internal_property__last_evaluation_state__evaluated
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__property_evaluation__state__evaluated
msgid "Evaluated"
msgstr "تم التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__evaluated_value
msgid "Evaluated Value"
msgstr "القيمة بعد التقييم"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.view_account_asset_form_inherits
msgid "Evaluation"
msgstr "نتائج التقييم العقاري"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__date
msgid "Evaluation Date"
msgstr "تاريخ التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_account_asset__evaluation_nbr
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__evaluation_nbr
msgid "Evaluation Nbr"
msgstr "رقم التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_follower_ids
msgid "Followers"
msgstr "المتابعون"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_channel_ids
msgid "Followers (Channels)"
msgstr "المتابعون (القنوات)"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_partner_ids
msgid "Followers (Partners)"
msgstr "المتابعون (الشركاء)"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr "رمز الخط الرائع ، على سبيل المثال FA- المهام"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__building_latitude
msgid "Geo Latitude"
msgstr "خط العرض الجغرافي"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__building_longitude
msgid "Geo Longitude"
msgstr "خط الطول الجغرافي"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "Geolocate"
msgstr "الموقع الجغرافي"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
msgid "Geolocation"
msgstr "إحداثيات العقار"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__date_localization
msgid "Geolocation Date"
msgstr "تاريخ الحصول على الإحداثيات"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__id
msgid "ID"
msgstr "المُعرف"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_exception_icon
msgid "Icon"
msgstr "الأيقونة"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr "الأيقونة للإشارة إلى استثناء النشاط"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_needaction
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_unread
msgid "If checked, new messages require your attention."
msgstr "إذا كان محددًا، فهناك رسائل جديدة تحتاج لرؤيتها."
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_has_error
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr "إذا كان محددًا، فقد حدث خطأ في تسليم بعض الرسائل."
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_is_follower
msgid "Is Follower"
msgstr "متابع"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_account_asset__is_property
msgid "Is Property"
msgstr "هل هو عقار؟"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_benefits_representative__is_property_evaluator
#: model:ir.model.fields,field_description:ensan_real_estate.field_external_benefits__is_property_evaluator
#: model:ir.model.fields,field_description:ensan_real_estate.field_grant_benefit__is_property_evaluator
#: model:ir.model.fields,field_description:ensan_real_estate.field_res_partner__is_property_evaluator
#: model:ir.model.fields,field_description:ensan_real_estate.field_res_users__is_property_evaluator
#: model:ir.model.fields,field_description:ensan_real_estate.field_takaful_sponsor__is_property_evaluator
msgid "Is Property Evaluator"
msgstr "مقيّم العقار"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__is_waqf
msgid "Is Waqf"
msgstr "هل وقف"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_benefits_representative__is_waqf_owner
#: model:ir.model.fields,field_description:ensan_real_estate.field_external_benefits__is_waqf_owner
#: model:ir.model.fields,field_description:ensan_real_estate.field_grant_benefit__is_waqf_owner
#: model:ir.model.fields,field_description:ensan_real_estate.field_res_partner__is_waqf_owner
#: model:ir.model.fields,field_description:ensan_real_estate.field_res_users__is_waqf_owner
#: model:ir.model.fields,field_description:ensan_real_estate.field_takaful_sponsor__is_waqf_owner
msgid "Is Waqf Owner"
msgstr "مالك وقف؟"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__last_evaluation_date
msgid "Last Evaluation Date"
msgstr "تاريخ آخر تقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__last_evaluation_state
msgid "Last Evaluation State"
msgstr "حالة آخر تقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__last_evaluation_pric
msgid "Last Evaluation Price"
msgstr "سعر آخر تقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation____last_update
msgid "Last Modified on"
msgstr "آخر تعديل في"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__write_uid
msgid "Last Updated by"
msgstr "آخر تحديث من قبل"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__write_date
msgid "Last Updated on"
msgstr "آخر تحديث في"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_main_attachment_id
msgid "Main Attachment"
msgstr "المرفق الرئيسي"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_has_error
msgid "Message Delivery error"
msgstr "خطأ في تسليم الرسائل"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_ids
msgid "Messages"
msgstr "الرسائل"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr "نهاية الوقت المعين للنشاط"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__name
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
msgid "Name"
msgstr "الاسم"
#. module: ensan_real_estate
#: code:addons/ensan_real_estate/models/property_evaluation.py:0
#, python-format
msgid "New"
msgstr ""
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_date_deadline
msgid "Next Activity Deadline"
msgstr "الموعد النهائي للنشاط التالي"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_summary
msgid "Next Activity Summary"
msgstr "ملخص النشاط التالي"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_type_id
msgid "Next Activity Type"
msgstr "نوع النشاط التالي"
#. module: ensan_real_estate
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__internal_property__stamping_state__not_updated
msgid "Not Updated"
msgstr "لم يتم التحديث"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_needaction_counter
msgid "Number of Actions"
msgstr "عدد الإجراءات"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_has_error_counter
msgid "Number of errors"
msgstr "عدد الاخطاء"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_needaction_counter
msgid "Number of messages which requires an action"
msgstr "عدد الرسائل التي تتطلب إجراء"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "عدد الرسائل الحادث بها خطأ في التسليم"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__message_unread_counter
msgid "Number of unread messages"
msgstr "عدد الرسائل الجديدة"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__price_per_meter
msgid "Price Per Meter"
msgstr "سعر المتر"
#. module: ensan_real_estate
#: model:ir.model,name:ensan_real_estate.model_internal_property
#: model:ir.model.fields,field_description:ensan_real_estate.field_account_asset__property_id
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__property_id
msgid "Property"
msgstr "العقار"
#. module: ensan_real_estate
#: model:ir.actions.act_window,name:ensan_real_estate.property_evaluation_act_window
#: model:ir.model,name:ensan_real_estate.model_property_evaluation
#: model:ir.model.fields,field_description:ensan_real_estate.field_account_asset__property_evaluation_id
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__property_evaluation_ids
#: model:ir.ui.menu,name:ensan_real_estate.property_evaluation_main_menu
#: model:ir.ui.menu,name:ensan_real_estate.property_evaluation_menu
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_tree_view
msgid "Property Evaluation"
msgstr "تقييم العقار"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_form_inherit
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.view_account_asset_form_inherits
msgid "Property Evaluation(s)"
msgstr "تقييمات العقار"
#. module: ensan_real_estate
#: model:ir.actions.act_window,name:ensan_real_estate.property_evaluator_act_window
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__property_evaluator
msgid "Property Evaluator"
msgstr "مقيّم العقار"
#. module: ensan_real_estate
#: model:ir.ui.menu,name:ensan_real_estate.property_evaluator_menu
msgid "Property Evaluators"
msgstr "مقيّمي العقار"
#. module: ensan_real_estate
#: code:addons/ensan_real_estate/models/property_evaluation.py:0
#, python-format
msgid "Property Evalutation for %s already exist in %s"
msgstr "تقييم العقار %s موجودة بالفعل في سنة %s"
#. module: ensan_real_estate
#: model:ir.module.category,name:ensan_real_estate.real_estate_evaluation_category
msgid "Real State/Evaluation"
msgstr "العقارات/التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__reason
msgid "Reason/Justification"
msgstr "السببظ المبرر"
#. module: ensan_real_estate
#: model:ir.model,name:ensan_real_estate.model_res_partner
msgid "Renter"
msgstr ""
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
msgid "Reset To Draft"
msgstr "إعادة التقييم إلى مبدئ"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_user_id
msgid "Responsible User"
msgstr "المستخدم المسؤول"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_has_sms_error
msgid "SMS Delivery error"
msgstr "خطأ في تسليم الرسائل القصيرة"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__stamping_state
msgid "Stamping State"
msgstr "حالة الصك"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__state_id
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__state
msgid "State"
msgstr "المحافظة"
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.internal_property_kanban_inherit
msgid "State:"
msgstr "حالة التقييم:"
#. module: ensan_real_estate
#: model:ir.actions.act_window,name:ensan_real_estate.action_country_state_real_estate
#: model:ir.ui.menu,name:ensan_real_estate.menu_country_state_real_estate
msgid "States"
msgstr "المحافظات"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
"الحالة على أساس الأنشطة\n"
"المتأخرة: تاريخ الاستحقاق مر\n"
"اليوم: تاريخ النشاط هو اليوم\n"
"المخطط: الأنشطة المستقبلية."
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr "نوع النشاط الاستثنائي المسجل."
#. module: ensan_real_estate
#: model_terms:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
msgid "Under Evaluation"
msgstr "تحت التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__internal_property__last_evaluation_state__under_evaluation
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__property_evaluation__state__under_evaluation
msgid "Under evaluation"
msgstr "تحت التقييم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_unread
msgid "Unread Messages"
msgstr "الرسائل الجديدة"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_unread_counter
msgid "Unread Messages Counter"
msgstr "عدد الرسائل الجديدة"
#. module: ensan_real_estate
#: model:ir.model.fields.selection,name:ensan_real_estate.selection__internal_property__stamping_state__updated
msgid "Updated"
msgstr "تم التحديث"
#. module: ensan_real_estate
#: model:res.groups,name:ensan_real_estate.group_real_estate_evaluation_user
msgid "User"
msgstr "مستخدم"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_internal_property__waqf_owner
msgid "Waqf Owner"
msgstr "مالك الوقف"
#. module: ensan_real_estate
#: model:ir.actions.act_window,name:ensan_real_estate.waqf_owners_act_window
#: model:ir.ui.menu,name:ensan_real_estate.waqf_owners_menu
msgid "Waqf Owners"
msgstr "أصحاب الوقف"
#. module: ensan_real_estate
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__website_message_ids
msgid "Website Messages"
msgstr "رسائل الموقع"
#. module: ensan_real_estate
#: model:ir.model.fields,help:ensan_real_estate.field_property_evaluation__website_message_ids
msgid "Website communication history"
msgstr "سجل تواصل الموقع"
#. module: ensan_real_estate
#: model:ir.ui.view,arch_db:ensan_real_estate.property_evaluation_form_view
msgid "Are you sure you want to reset the request to draft?"
msgstr "هل أنت متأكد من إعادة الطلب إلى مبدئي؟"
msgstr "الدولة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_name_req__name
msgid "Qualification"
msgstr "المؤهل العلمي"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_name_req__sequence
msgid "Sequence"
msgstr "التسلسل"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_name_req__parent_id
msgid "Upper Qualification"
msgstr "المؤهل الأعلى"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__qualification_id
msgid "Qualification Name"
msgstr "اسم المؤهل"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__qualification_degree
msgid "Qualification Degree"
msgstr "درجة المؤهل"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__qualification_specification_id
msgid "Qualification Specification"
msgstr "تخصص المؤهل"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_qualification_req__attachment
msgid "Attachment"
msgstr "المرفق"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__employement_history
msgid "Employment History"
msgstr "تاريخ التوظيف"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__position
msgid "Position"
msgstr "الوظيفة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__employeer
msgid "Employeer"
msgstr "صاحب العمل"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__salary
msgid "Salary"
msgstr "الراتب"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__address
msgid "Address"
msgstr "العنوان"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__date_from
msgid "Date From"
msgstr "من تاريخ"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_hr_employee_history_req__date_to
msgid "Date To"
msgstr "إلى تاريخ"
#. module: odex25_empowermentmanagement
#: model:ir.model,name:odex25_empowermentmanagement.model_empowerment_study_specialization
msgid "Study Specialization"
msgstr "تخصص الدراسة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_study_specialization__type
msgid "Study Type"
msgstr "تخصص الدراسة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:empowerment.study.specialization.type_bachelor
msgid "Bachelor"
msgstr "بكالريوس"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:empowerment.study.specialization.type_diploma
msgid "Diploma"
msgstr "دبلوم"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_study_specialization__universities_colleges
msgid "Universities / Colleges"
msgstr "الجامعات / الكليات"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_study_specialization__institutes_schools
msgid "Institute / School Name"
msgstr "اسم المعهد / المدرسة"
#. module: odex25_empowermentmanagement
#: model:ir.model,name:odex25_empowermentmanagement.model_empowerment_education_entity
msgid "Education Entity"
msgstr "vvالجهات التعليمية"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_education_entity__name
msgid "Entity Name"
msgstr "اسم الجهة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_education_entity__entity_type
msgid "Entity Type"
msgstr "نوع الجهة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:odex25_empowermentmanagement.selection__empowerment_education_entity__entity_type__university
msgid "University"
msgstr "جامعة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:odex25_empowermentmanagement.selection__empowerment_education_entity__entity_type__college
msgid "College"
msgstr "كلية"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:odex25_empowermentmanagement.selection__empowerment_education_entity__entity_type__institute
msgid "Institute"
msgstr "معهد"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:odex25_empowermentmanagement.selection__empowerment_education_entity__entity_type__school
msgid "School"
msgstr "مدرسة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_education_entity__study_specialization
msgid "Study Specialization"
msgstr "تخصص الدراسة"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:odex25_empowermentmanagement.selection__empowerment_education_entity__study_specialization__bachelor
msgid "Bachelor"
msgstr "بكالريوس"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields.selection,name:odex25_empowermentmanagement.selection__empowerment_education_entity__study_specialization__diploma
msgid "Diploma"
msgstr "دبلوم"
#. module: odex25_empowermentmanagement
#: model:ir.model.fields,field_description:odex25_empowermentmanagement.field_empowerment_education_entity__specialization_id
msgid "Study Specialization"
msgstr "تخصص الدراسة"

View File

@ -1,5 +1,4 @@
from . import empowerment_management
# from . import empowerment_request
from . import service_settings
from . import education_entity

View File

@ -0,0 +1,74 @@
from datetime import datetime, timedelta, date
from dateutil import relativedelta
from hijri_converter import convert
from num2words import num2words
from odoo import api, exceptions, fields, models, _
from odoo.exceptions import ValidationError, Warning
from odoo.tools.translate import _
class Qualification(models.Model):
_name = "hr.qualification.req"
_description = "HR Qualification"
_rec_name = "uni_name"
uni_name = fields.Many2one(
comodel_name="empowerment.education.entity", string="University Name", required=True
)
# col_name = fields.Many2one(comodel_name="hr.college", string="College Name")
prg_status = fields.Char(string="Program Status")
comp_date = fields.Date(string="Completion Date")
contact_name = fields.Char(string="Contact Name")
contact_phn = fields.Char(string="Contact Phone No")
contact_email = fields.Char(string="Contact Email")
country_name = fields.Many2one(comodel_name="res.country",string="Country")
qualification_degree = fields.Selection(
[
("weak", _("Weak")),
("good", _("Good")),
("very_good", _("Very Good")),
("excellent", _("Excellent")),
]
)
qualification_specification_id = fields.Many2one(
comodel_name="qualification.specification.req",
domain=[("type", "=", "qualification")],
)
# relation field
qualification_relation_name = fields.Many2one(comodel_name="hr.employee")
qualification_id = fields.Many2one(comodel_name="hr.qualification.name.req", string="Qualification Name")
attachment = fields.Binary(string="Attachment")
class QualificationSpecification(models.Model):
_name = "qualification.specification.req"
_description = "Qualification Specification"
name = fields.Char(string="Name")
type = fields.Selection(
selection=[("qualification", "Qualification"), ("certificate", "Certificate")],
string="Type")
class HrQualificationName(models.Model):
_name = "hr.qualification.name.req"
_description = "HR Qualification Name"
name = fields.Char(string="Qualification")
sequence = fields.Integer(string="Sequence")
parent_id = fields.Many2one(comodel_name="hr.qualification.name.req", string="Upper Qualification")
class HrEmployeeHistory(models.Model):
_name = "hr.employee.history.req"
_description = "HR Employee History"
employement_history = fields.Many2one(comodel_name="hr.employee")
name = fields.Char(string="Name",required=True)
position = fields.Char(string="Position",required=True)
employeer = fields.Char(string="Employeer",required=True)
salary = fields.Float(string="Salary",required=True)
address = fields.Char(string="Address",required=True)
date_from = fields.Date(string="Date From",)
date_to = fields.Date(string="Date To",)
country = fields.Many2one(string="Country",comodel_name="res.country")

View File

@ -1,449 +1,194 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
from datetime import datetime
class PaProgramLevel(models.Model):
_name = 'pa.program.level'
_description = 'شاشة المستويات (Levels)'
_rec_name = 'name'
_order = 'code'
code = fields.Char(
string='كود المستوى',
required=True,
copy=False,
readonly=True,
index=True,
default=lambda self: self.env['ir.sequence'].next_by_code('pa.program.level') or _('New'),
)
name = fields.Char(
string='اسم المستوى',
required=True,
default=lambda self: _('مسارات تقنية'),
help='اكتب اسم المستوى مثل: ثقافية، معرفية، دينية، تنموية، وقائية، علاجية',
)
type = fields.Selection([
('route', 'مسارات'),
('activity', 'أنشطة'),
('medad', 'مداد'),
], string='نوع المستوى', required=True, help='حدد نوع المستوى')
description = fields.Text(string='وصف المستوى')
active = fields.Boolean(string='حالة المستوى', default=True)
track_ids = fields.One2many(
'pa.program.track', # Related model
'level_id', # Many2one field on pa.program.track
string='المسارات المرتبطة',
help='المسارات التي تنتمي إلى هذا المستوى',
)
# Optional: enforce unique code at Python level
@api.model
def create(self, vals):
if 'code' in vals:
existing = self.search([('code', '=', vals['code'])])
if existing:
raise ValidationError(_('كود المستوى يجب أن يكون فريدًا'))
return super(PaProgramLevel, self).create(vals)
class PaProgramTrack(models.Model):
_name = 'pa.program.track'
_description = 'شاشة المسارات (Tracks)'
_rec_name = 'name'
_order = 'code'
code = fields.Char(
string='كود المسار',
required=True,
copy=False,
readonly=True,
index=True,
default=lambda self: self.env['ir.sequence'].next_by_code('pa.program.track') or _('New'),
)
name = fields.Char(string='اسم المسار', required=True)
description = fields.Text(string='وصف المسار')
branch = fields.Char(string='الفرع') # link to branch model if available
gender = fields.Selection(
[('male', 'ذكر'), ('female', 'انثى')],
string='الجنس',
)
age_category = fields.Many2one(
'age.category', # replace with your actual age category model
string='الفئة العمرية',
help='تصفية المسار على حسب الفئة العمرية',
)
study_category = fields.Char(string='الفئة الدراسية')
hobby = fields.Char(string='الهواية')
study_status = fields.Char(string='الحالة الدراسية')
health_status = fields.Char(string='الحالة الصحية')
education_status = fields.Char(string='الحالة التعليمية')
partner_id = fields.Many2one(
'res.partner',
string='الشريك المرتبط',
help='الشريك المرتبط بالمسار'
)
active = fields.Boolean(string='حالة المسار', default=True)
level_id = fields.Many2one(
'pa.program.level',
string='المستوى المرتبط',
required=True,
ondelete='cascade'
)
class PaProgram(models.Model):
_name = 'pa.program'
_description = 'شاشة البرامج (Programs)'
_rec_name = 'name'
_order = 'code'
code = fields.Char(
string='كود البرنامج',
required=True,
copy=False,
readonly=True,
index=True,
default=lambda self: self.env['ir.sequence'].next_by_code('pa.program') or _('New'),
)
name = fields.Char(string='اسم البرنامج', required=True)
program_type_id = fields.Many2one(
'pa.program.type',
string='نوع البرنامج',
required=True,
help='نوع البرنامج المسجل في إعدادات أنواع البرامج'
)
payment_type = fields.Selection([
('paid', 'مدفوع'),
('unpaid', 'غير مدفوع')
], string='نوع الدفع', required=True)
sponsor_id = fields.Many2one('takaful.sponsorship', string='الكافل المرتبط',
help='الكافل المسجل ويتم اظهاره فقط في حالة الدفع مدفوع')
sponsor_support_amount = fields.Float(
string='المبلغ المخصص للدعم',
related='sponsor_id.total_sponsorship_amount',
readonly=True,
help='المبلغ المخصص للدعم حسب بيانات الكافل'
)
budget = fields.Float(
string='الموازنة المخصصة للبرنامج',
help='تستخدم في حالة نوع الدفع = غير مدفوع'
)
location = fields.Selection([
('inside', 'داخلي'),
('outside', 'خارجي')
], string='موقع البرنامج', required=True)
description = fields.Text(string='وصف البرنامج')
track_id = fields.Many2one(
'pa.program.track',
string='المسار المرتبط بالبرنامج',
help='كل برنامج مرتبط بمسار واحد يحتوي على عدة أنشطة'
)
analytic_account_id = fields.Many2one(
'account.analytic.account',
string='الحساب التحليلي المرتبط',
readonly=True,
help='ينشأ تلقائياً بحساب تحليلي بنفس اسم البرنامج ولا يمكن حذفه'
)
estimated_budget = fields.Float(
string='الموازنة التقديرية المرتبطة',
help='الموازنة المرتبطة بالحساب التحليلي'
)
active = fields.Boolean(string='حالة البرنامج', default=True)
@api.constrains('payment_type', 'sponsor_id')
def _check_sponsor_if_paid(self):
for record in self:
if record.payment_type == 'paid' and not record.sponsor_id:
raise ValidationError(_('يجب اختيار الكافل في حالة نوع الدفع مدفوع'))
if record.payment_type == 'unpaid' and record.sponsor_id:
raise ValidationError(_('لا يجب اختيار كافل في حالة نوع الدفع غير مدفوع'))
@api.model
def create(self, vals):
# You can add logic here to create analytic account automatically if needed
res = super(PaProgram, self).create(vals)
if not res.analytic_account_id:
account = self.env['account.analytic.account'].create({
'name': res.name,
'active': True,
})
res.analytic_account_id = account.id
return res
def write(self, vals):
res = super(PaProgram, self).write(vals)
for record in self:
# Ensure analytic account exists
if not record.analytic_account_id:
account = self.env['account.analytic.account'].create({
'name': record.name,
'active': True,
})
record.analytic_account_id = account.id
return res
class PaProgramActivity(models.Model):
_name = 'pa.program.activity'
_description = 'Program Activity'
_rec_name = 'name'
code = fields.Char("كود النشاط", required=True, copy=False, default=lambda self: self.env['ir.sequence'].next_by_code('pa.program.activity'))
name = fields.Char("اسم النشاط", required=True)
description = fields.Text("وصف النشاط")
program_id = fields.Many2one('pa.program', string="البرنامج المرتبط")
location = fields.Selection([('inside','داخلي'), ('outside','خارجي')], required=True, string="موقع النشاط")
date_start = fields.Datetime("تاريخ بداية النشاط")
date_end = fields.Datetime("تاريخ انتهاء النشاط")
analytic_account_id = fields.Many2one('account.analytic.account', string="الحساب التحليلي المرتبط")
estimated_budget = fields.Float("الموازنة التقديرية المرتبطة")
active = fields.Boolean("نشط", default=True)
class PaProgramMedad(models.Model):
_name = 'pa.program.medad'
_description = 'Medad'
_rec_name = 'name'
code = fields.Char("كود مداد", required=True, copy=False, default=lambda self: self.env['ir.sequence'].next_by_code('pa.program.medad'))
name = fields.Char("اسم المداد", required=True)
description = fields.Text("وصف المداد")
medad_type = fields.Selection([('skills','مهارات'),('training','تدريب'),('innovation','دعم ابتكار')], string="نوع مداد", required=True)
activity_id = fields.Many2one('pa.program.activity', string="النشاط المرتبط")
analytic_account_id = fields.Many2one('account.analytic.account', string="الحساب التحليلي المرتبط")
estimated_budget = fields.Float("الموازنة التقديرية المرتبطة")
active = fields.Boolean("نشط", default=True)
# Example family/beneficiary for demo: you should replace with your actual model
class Family(models.Model):
_name = 'pa.family'
_description = 'Family'
code = fields.Char("كود الأسرة", required=True)
mobile = fields.Char("رقم الجوال")
category = fields.Char("فئة الأسرة")
branch = fields.Char("الفرع")
gender = fields.Selection([('male', 'ذكر'), ('female', 'انثى')], string="جنس الأسرة")
age_category = fields.Char("الفئة العمرية")
study_category = fields.Char("الفئة الدراسية")
hobby = fields.Char("الهواية")
study_status = fields.Char("الحالة الدراسية")
health_status = fields.Char("الحالة الصحية")
education_status = fields.Char("الحالة التعليمية")
widow = fields.Boolean("الأم أرملة؟")
sons = fields.Integer("عدد الأولاد")
daughters = fields.Integer("عدد البنات")
mother_name = fields.Char("اسم الأم")
mother_alive = fields.Boolean("هل الأم على قيد الحياة")
mother_residence = fields.Char("سكن الأم")
mother_education = fields.Char("الحالة التعليمية للأم")
mother_employed = fields.Boolean("هل الأم تعمل")
residence_type = fields.Char("نوع السكن")
child_education = fields.Char("الحالة التعليمية للابن/الابنة")
child_health = fields.Char("الحالة الصحية للابن/الابنة")
need_transport = fields.Boolean("هل يحتاج إلى مواصلات؟")
has_disability = fields.Boolean("هل لديه اعاقة؟")
takes_medicine = fields.Boolean("هل يتناول ادوية؟")
has_psych_issues = fields.Boolean("هل يوجد اضطرابات نفسية؟")
class PaProgramActivityRegistration(models.Model):
_name = 'pa.program.activity.registration'
_description = 'تسجيل الأنشطة'
_inherit = ['mail.thread']
name = fields.Char(string='رقم الطلب', readonly=True, index=True,
default=lambda self: self.env['ir.sequence'].next_by_code('pa.program.activity.registration') or 'New')
request_date = fields.Datetime(string='تاريخ الطلب', default=fields.Datetime.now, readonly=True)
creator_id = fields.Many2one('res.users', string='المنشئ', default=lambda self: self.env.user, readonly=True)
class EmpowermentRequest(models.Model):
_name = 'empowerment.request'
_description = 'طلب تمكين'
_inherit = ['mail.thread', 'mail.activity.mixin']
name = fields.Char(string='رقم الطلب', readonly=True, default='New')
request_date = fields.Datetime(string='تاريخ الطلب', readonly=True, default=fields.Datetime.now)
creator_id = fields.Many2one('res.users', string='المُنشئ', default=lambda self: self.env.user, readonly=True)
date_from = fields.Datetime(string='التاريخ من')
date_to = fields.Datetime(string='التاريخ الى')
branch_id = fields.Many2one("branch.settings", string='الفرع', domain="[('name','=','الرياض')]")
family_id = fields.Many2one('pa.family', string='الأسرة')
# أسرة المستفيد
familye_id = fields.Many2one('grant.benefit', string='الأسرة')
member_ids = fields.One2many(
'family.member',
'benefit_id',
compute='_compute_family_members',
string='عضو الأسرة',
)
benefit_category_id = fields.Many2one(related='familye_id.benefit_category_id', string='فئة الاسرة' ,readonly=True)
relationship = fields.Char(string='صفة المستفيد', readonly=True)
identity_number = fields.Char(related='familye_id.id_number',string='رقم الهوية', readonly=True)
sms_phone = fields.Char(related='familye_id.sms_phone',string='رقم الجوال', readonly=True)
email = fields.Char(related='familye_id.email',string='البريد الالكترونى', readonly=True)
nationality = fields.Many2one(relates='familye_id.nationality_id',string='الجنسية', readonly=True)
education_status = fields.Selection(related='familye_id.education_status',string='الحالة التعليمية', readonly=True)
has_car = fields.Boolean(related='familye_id.has_car',string='الأسرة لديها سيارة؟', readonly=True)
health_status = fields.Selection(related='familye_id.health_status', string='الحالة الصحية')
branch_custom_id = fields.Many2one(string='الفرع', related='familye_id.branch_custom_id', readonly=True)
gender = fields.Selection(related='familye_id.gender', readonly=True)
# age_category = fields.Char(string='الفئة العمرية', related='familye_id.age_category', readonly=True)
# study_category = fields.Char(string='الفئة الدراسية', related='familye_id.study_category', readonly=True)
nationality_id = fields.Many2one(string='الهواية', related='familye_id.nationality_id', readonly=True)
graduation_status = fields.Selection(string='الحالة الدراسية', related='familye_id.graduation_status', readonly=True)
health_status = fields.Selection(string='الحالة الصحية', related='familye_id.health_status', readonly=True)
education_status = fields.Selection(string='الحالة التعليمية', related='familye_id.education_status', readonly=True)
# معلومات الخدمة
service_id = fields.Many2one('services.settings', string='بند الخدمة')
service_type = fields.Selection(related='service_id.service_type', store=True)
service_item = fields.Char(string="عنصر الخدمة")
# تعليمية
study_specialization = fields.Selection([
('bachelor', 'بكالريوس'),
('diploma', 'دبلوم')
], string='تخصص الدراسة')
university_id = fields.Many2one('empowerment.education.entity', string='اسم الجامعة / الكلية', domain="[('study_specialization','=','bachelor')]")
institute_id = fields.Many2one('empowerment.education.entity', string='اسم المعهد / المدرسة', domain="[('study_specialization','=','diploma')]")
# sons_count = fields.Integer(string='عدد الأولاد في الأسرة', related='familye_id.sons_count', readonly=True)
# daughters_count = fields.Integer(string='عدد البنات في الأسرة', related='familye_id.daughters_count', readonly=True)
intercession_type = fields.Selection([
('transfer', 'تحويل'),
('move', 'نقل'),
('discount', 'خصم'),
('exemption', 'اعفاء'),
], string='نوع الشفاعة')
request_entity_id = fields.Many2one('empowerment.education.entity', string='اسم جهة الطلب')
# تدريبية
training_type = fields.Selection([
('skill', 'مهاري'),
('entrepreneurship', 'ريادي'),
('professional', 'مهني')
], string='نوع التدريب')
mother_is_life = fields.Boolean(string='هل الأم على قيد الحياة', related='familye_id.mother_is_life', readonly=True)
mother_location_conf = fields.Many2one(string='سكن الأم', related='familye_id.mother_location_conf', readonly=True)
# mother_education_status_ids = fields.Many2many(string='الحالة التعليمية للأم',
# related='familye_id.mother_education_status_ids', readonly=True)
is_mother_work = fields.Boolean(string='هل الأم تعمل', related='familye_id.is_mother_work', readonly=True)
# create model
housing_type = fields.Selection(string='نوع السكن', related='familye_id.housing_type', readonly=True)
# training_course_id = fields.Many2one('training.course', string='دورة التأهيل')
# training_entity_id = fields.Many2one('training.entity', string='جهة التدريب')
training_intercession_type = fields.Selection([
('new_acceptance', 'قبول جديد'),
('transfer', 'تحويل'),
('relocation', 'نقل'),
('discount', 'خصم'),
('exemption', 'اعفاء')
], string="نوع شفاعة التدريب")
beneficiary_relation = fields.Selection([('mother', 'أم'), ('son', 'ابن'), ('daughter', 'ابنه')], string='الجهة المستفيدة')
beneficiary_ids = fields.Many2many('res.partner', string='اسم المستفيد')
mobile = fields.Char(string='رقم الجوال', related='family_id.mobile', readonly=True)
# تمويل
# project_funding_type_id = fields.Many2one('project.funding.type', string='نوع تمويل المشروع')
sponsor_id = fields.Many2one('takaful.sponsor', string='اسم الكافل')
sponsor_mobile = fields.Char(related='sponsor_id.mobile', readonly=True)
# commint
# sponsor_identity = fields.Char(related='sponsor_id.identity_number', readonly=True)
sponsor_email = fields.Char(related='sponsor_id.email', readonly=True)
# familye_member = fields.Many2one(
# 'family.member',
# string='عضو الأسرة',
# domain="[('member_status', '=', 'benefit'), ('benfit_id', '=', familye_id)]"
# )
#
# sponsor_communication_method = fields.Selection(related='sponsor_id.communication_method', readonly=True)
widow = fields.Boolean(string="الأم أرملة؟", related='family_id.widow', readonly=True)
finance_request_entity_id = fields.Many2one('education.entity', string="جهة الطلب")
sons = fields.Integer(
string="عدد الأولاد",
compute='_compute_sons_daughters',
store=False
)
daughters = fields.Integer(
string="عدد البنات",
compute='_compute_sons_daughters',
store=False
)
# جهة الاستلام
request_receiver_id = fields.Many2one('res.partner', string='الشخص المرسل اليه الطلب',
)
# domain="[('is_empowerment_receiver', '=', True)]"
@api.depends('familye_id', 'familye_id.member_ids', 'familye_id.member_ids.relationn',
'familye_id.member_ids.relationn.relation_type')
def _compute_sons_daughters(self):
for rec in self:
sons = 0
daughters = 0
members = rec.familye_id.member_ids.filtered(lambda m: m.relationn)
for member in members:
if member.relationn.relation_type == 'son':
sons += 1
elif member.relationn.relation_type == 'daughter':
daughters += 1
rec.sons = sons
rec.daughters = daughters
description = fields.Text(string='الشرح', )
# حالة الطلب
level_id = fields.Many2one('pa.program.level', string='مستويات البرامج', required=True)
track_id = fields.Many2one('pa.program.track', string='مسارات البرامج')
program_id = fields.Many2one('pa.program', string='البرامج')
activity_id = fields.Many2one('pa.program.activity', string='الانشطة')
medad_id = fields.Many2one('pa.program.medad', string='مداد')
want_transport = fields.Selection([('yes', 'نعم'), ('no', 'لا')], string='هل يرغب المستفيد في مواصلات')
state = fields.Selection([
('draft', 'مسودة'),
('social_specialist', 'اخصائي اجتماعي'),
('operation_manager', 'رئيس العمليات'),
('social_worker', 'اخصائى اجتماعى (بإنتظار تنفيذ الطلب)'),
('head_of_department', 'رئيس القسم'),
('branch_manager', 'مدير الفرع'),
('activity_head', 'رئيس الأنشطة'),
('finance_manager', 'إدارة المالية'),
('finance', 'ادارة المالية'),
('approved', 'معتمد'),
('refused', 'مرفوض')
], default='draft', tracking=True)
('rejected', 'مرفوض'),
], default='draft', string='الحالة', tracking=True)
rejection_reason = fields.Text('سبب الارجاع') # To hold the last rejection note
reject_reason = fields.Text(string='سبب الرفض/الارجاع')
return_reason = fields.Text(string='سبب الارجاع')
employment_history_ids = fields.One2many(comodel_name="hr.employee.history.req", inverse_name="employement_history")
qualifiction_id = fields.One2many("hr.qualification.req", "qualification_relation_name", string="Qualifications")
@api.onchange('familye_id')
def _onchange_familye_id(self):
if self.familye_id:
# Set member_ids to the current members of the selected familye_id
# This links existing family.member records (no create)
self.member_ids = [(6, 0, self.familye_id.member_ids.ids)]
else:
self.member_ids = [(5, 0, 0)] # Clear if no familye_id
@api.model
def create(self, vals):
if vals.get('name', 'New') == 'New':
vals['name'] = self.env['ir.sequence'].next_by_code('empowerment.request') or 'New'
return super(EmpowermentRequest, self).create(vals)
# Validation of required fields based on level type
@api.constrains('level_id', 'track_id', 'program_id', 'activity_id', 'medad_id')
def _check_required_fields_based_on_level(self):
def action_approve_social_worker(self):
for rec in self:
if not rec.level_id:
continue
lvl_type = rec.level_id.type
if lvl_type == 'route': # مسارات
if not rec.track_id or not rec.program_id:
raise ValidationError(_('لحالة المستوى "مسارات"، الحقول "المسار" و "البرنامج" مطلوبان'))
elif lvl_type == 'activity': # أنشطة
if not rec.track_id or not rec.program_id or not rec.activity_id:
raise ValidationError(_('لحالة المستوى "أنشطة"، الحقول "المسار" و "البرنامج" و "النشاط" مطلوبة'))
elif lvl_type == 'medad': # مداد
if not rec.track_id or not rec.program_id or not rec.activity_id or not rec.medad_id:
raise ValidationError(_('لحالة المستوى "مداد"، جميع الحقول "المسار"، "البرنامج"، "النشاط"، "المداد" مطلوبة'))
rec.state = 'social_worker'
def action_to_social_specialist(self):
self.ensure_one()
self.state = 'social_specialist'
def action_approve_head(self):
for rec in self:
rec.state = 'head_of_department'
def action_approve(self):
self.ensure_one()
transition_map = {
'social_specialist': 'operation_manager',
'operation_manager': 'branch_manager',
'branch_manager': 'activity_head',
'activity_head': 'finance_manager',
'finance_manager': 'approved',
def action_return_to_social_worker(self):
for rec in self:
rec.state = 'social_worker'
def action_approve_branch(self):
for rec in self:
rec.state = 'branch_manager'
def action_approve_finance(self):
for rec in self:
rec.state = 'finance'
def action_approve_final(self):
for rec in self:
rec.state = 'approved'
def action_reject(self):
for rec in self:
rec.state = 'rejected'
def action_return_to_draft(self):
# Open wizard to collect return reason - opens form view on 'empowerment.return.reason.wizard'
return {
'type': 'ir.actions.act_window',
'name': _('سبب الإرجاع'),
'view_mode': 'form',
'res_model': 'empowerment.return.reason.wizard',
'target': 'new',
'context': {'default_request_id': self.id}
}
next_state = transition_map.get(self.state)
if next_state:
self.state = next_state
def action_refuse(self):
@api.depends('familye_id')
def _compute_family_members(self):
for rec in self:
rec.member_ids = rec.familye_id.member_ids.ids if rec.familye_id else False
class ResPartner(models.Model):
_inherit = 'res.partner'
is_empowerment_receiver = fields.Boolean(string='شريك تمكين')
class EmpowermentReturnReasonWizard(models.TransientModel):
_name = 'empowerment.return.reason.wizard'
_description = 'سبب الإرجاع'
request_id = fields.Many2one('empowerment.request', string='الطلب')
reason = fields.Text(string='السبب', required=True)
def action_return(self):
self.ensure_one()
self.state = 'refused'
def action_reset_to_draft(self):
self.ensure_one()
self.state = 'draft'
def action_return_to_specialist(self):
self.ensure_one()
self.state = 'social_specialist'
class PaReturnReasonWizard(models.TransientModel):
_name = 'pa.return.reason.wizard'
_description = 'معالج سبب الارجاع'
reason = fields.Text(string='سبب الارجاع', required=True)
registration_id = fields.Many2one('pa.program.activity.registration', string='طلب التسجيل')
def action_confirm_return(self):
if self.registration_id:
self.registration_id.rejection_reason = self.reason
# move back to draft or social_specialist depending on the context/state
if self.registration_id.state == 'operation_manager':
self.registration_id.state = 'social_specialist'
else:
self.registration_id.state = 'draft'
if self.request_id:
self.request_id.write({
'state': 'draft',
'return_reason': self.reason
})
# Close wizard window after saving
return {'type': 'ir.actions.act_window_close'}

View File

@ -1,113 +1,167 @@
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
class ServicesSettings(models.Model):
_name = 'services.settings'
_description = 'Empowerment Services Settings'
_rec_name = 'service_name'
_inherit = 'services.settings' # Inherit existing model
service_name = fields.Char('Service Name', required=True)
parent_service_id = fields.Many2one('services.settings', string='Parent Service')
is_main_service = fields.Boolean('Is Main Service?')
hr_department_id = fields.Many2one('hr.department', string='Linked Department', readonly=True)
linked_to_department = fields.Boolean('Linked to Department?')
service_type = fields.Selection([
('education_care', 'خدمة الرعاية التعليمية'),
('bachelor', 'خدمة البكالريوس'),
('diploma', 'خدمة الدبلوم'),
('shafaa_bachelor', 'خدمة شفاعة البكالريوس'),
('shafaa_diploma', 'خدمة شفاعة الدبلوم'),
('training', 'خدمة التدريب'),
('shafaa_training', 'خدمة شفاعة التدريب'),
('finance', 'خدمة التمويل'),
('shafaa_finance', 'خدمة شفاعة التمويل'),
('employment', 'خدمة التوظيف'),
('shafaa_employment', 'خدمة شفاعة التوظيف'),
], string='Service Type')
expense_account_id = fields.Many2one(
'account.account', 'Expense Account', domain="[('user_type_id.type', '=', 'expense')]"
linked_to_department = fields.Boolean(string='مرتبط بقسم', help='ربط الخدمة بقسم في الموارد البشرية')
hr_department_id = fields.Many2one(
'hr.department', string='القسم المرتبط', readonly=True
)
manager_id = fields.Many2one(
'hr.employee', string='المدير', readonly=True
)
accountant_id = fields.Many2one('res.users', 'Accountant')
has_supplier = fields.Boolean('Has Supplier?')
allow_family_request = fields.Boolean('Allow Family Member to Submit Request')
create_project = fields.Boolean('Create Project for Service')
required_files = fields.Text('Required Files')
allowed_family_categories = fields.Many2many('empowerment.family.category', 'emp_service_family_rel', 'service_id',
'family_id',
string='Allowed Family Categories')
service_type = fields.Selection(selection_add=[
('educational_care', 'خدمة الرعاية التعليمية'),
('bachelor_service', 'خدمة البكالريوس'),
('diploma_service', 'خدمة الدبلوم'),
('bachelor_intercession', 'خدمة شفاعة البكالريوس'),
('diploma_intercession', 'خدمة شفاعة الدبلوم'),
('training_service', 'خدمة التدريب'),
('training_intercession', 'خدمة شفاعة التدريب'),
('funding_service', 'خدمة التمويل'),
('project_funding_intercession', 'خدمة شفاعة تمويل المشاريع'),
('employment_service', 'خدمة التوظيف')
])
@api.model
def create(self, vals):
record = super().create(vals)
if record.linked_to_department:
# Auto-create HR Department if not exists
dept = self.env['hr.department'].search([('name', '=', record.service_name)], limit=1)
service = super().create(vals)
if service.linked_to_department:
dept = self.env['hr.department'].search([('name', '=', service.service_name)], limit=1)
if not dept:
dept = self.env['hr.department'].create({
'name': record.service_name,
'service_link_id': record.id
'name': service.service_name,
'department_type': 'unit',
'manager_id': service.manager_id.id,
'service_link_id': service.id
})
record.hr_department_id = dept.id
return record
service.hr_department_id = dept.id
return service
def write(self, vals):
res = super().write(vals)
for rec in self:
for service in self:
# If linked_to_department field updated
if 'linked_to_department' in vals:
if rec.linked_to_department and not rec.hr_department_id:
dept = self.env['hr.department'].search([('name', '=', rec.service_name)], limit=1)
if service.linked_to_department and not service.hr_department_id:
# Create department if missing
dept = self.env['hr.department'].search([('name', '=', service.service_name)], limit=1)
if not dept:
dept = self.env['hr.department'].create({
'name': rec.service_name,
'service_link_id': rec.id
'name': service.service_name,
'department_type': 'unit',
'manager_id': service.manager_id.id,
'service_link_id': service.id
})
rec.hr_department_id = dept.id
elif not rec.linked_to_department and rec.hr_department_id:
if not rec.hr_department_id.employee_ids and not self.env['empowerment.request'].search_count(
[('department_id', '=', rec.hr_department_id.id)]):
rec.hr_department_id.unlink()
rec.hr_department_id = False
service.hr_department_id = dept.id
elif not service.linked_to_department and service.hr_department_id:
# Remove linked department if no dependencies (employees or requests)
hr_dept = service.hr_department_id
empowerment_request = self.env['empowerment.request'].search([('department_id', '=', hr_dept.id)], limit=1)
if hr_dept.employee_ids or empowerment_request:
raise ValidationError(_('لا يمكن فك الربط، قسم الموارد البشرية مرتبط بموظفين أو طلبات.'))
hr_dept.unlink()
service.hr_department_id = False
return res
def unlink(self):
for rec in self:
if rec.linked_to_department:
if rec.hr_department_id and (
rec.hr_department_id.employee_ids or self.env['empowerment.request'].search_count(
[('department_id', '=', rec.hr_department_id.id)])):
raise ValidationError(
_("Cannot delete service linked to department with employees or associated requests"))
if rec.hr_department_id:
rec.hr_department_id.unlink()
for service in self:
if service.linked_to_department and service.hr_department_id:
hr_dept = service.hr_department_id
empowerment_request = self.env['empowerment.request'].search([('department_id', '=', hr_dept.id)], limit=1)
if hr_dept.employee_ids or empowerment_request:
raise ValidationError(_('لا يمكن حذف الخدمة، القسم مرتبط بموظفين أو طلبات.'))
hr_dept.unlink()
return super().unlink()
class HrDepartment(models.Model):
_inherit = 'hr.department'
service_link_id = fields.Many2one('services.settings', string='Linked Service', readonly=True)
service_link_id = fields.Many2one(
'services.settings', string='خدمة مرتبطة', readonly=True
)
# class EmpowermentEducationEntity(models.Model):
# _name = 'empowerment.education.entity'
# _description = 'الجهات التعليمية'
#
# name = fields.Char(string='اسم الجهة', required=True)
# entity_type = fields.Selection(
# [('university', 'جامعة'), ('college', 'كلية'),
# ('institute', 'معهد'), ('school', 'مدرسة')],
# string='نوع الجهة', required=True
# )
# study_specialization = fields.Selection(
# [('bachelor', 'بكالريوس'), ('diploma', 'دبلوم')],
# string='تخصص الدراسة', required=True
# )
# specialization_id = fields.Many2one(
# 'empowerment.study.specialization', string='تخصص الدراسة',
# domain="[('type', '=', study_specialization)]",
# )
class EmpowermentEducationEntity(models.Model):
_name = 'empowerment.education.entity'
_description = 'Educational Entity'
_description = 'Education Entity'
name = fields.Char(string='Entity Name', required=True)
entity_type = fields.Selection(
[('university', 'University'), ('college', 'College'),
('institute', 'Institute'), ('school', 'School')],
string='Entity Type', required=True
)
study_specialization = fields.Selection(
[('bachelor', 'Bachelor'), ('diploma', 'Diploma')],
string='Study Specialization', required=True
)
specialization_id = fields.Many2one(
'empowerment.study.specialization', string='Study Specialization',
domain="[('type', '=', study_specialization)]",
)
_sql_constraints = [
('name_unique', 'unique(name)', 'اسم الجهة يجب أن يكون فريداً!'),
]
@api.onchange('entity_type')
def _onchange_entity_type(self):
if self.entity_type in ['university', 'college']:
self.study_specialization = 'bachelor'
elif self.entity_type in ['institute', 'school']:
self.study_specialization = 'diploma'
else:
self.study_specialization = False
# Reset specialization_id when entity_type changes
# self.specialization_id = False
# class StudySpecialization(models.Model):
# _name = 'empowerment.study.specialization'
# _description = 'تخصص الدراسة'
#
# type = fields.Selection([
# ('bachelor', 'بكالريوس'),
# ('diploma', 'دبلوم')
# ], string='تخصص الدراسة', required=True)
#
# universities_colleges = fields.Char(string='الجامعات / الكليات')
# institutes_schools = fields.Char(string='اسم المعهد / المدرسة')
class StudySpecialization(models.Model):
_name = 'empowerment.study.specialization'
_description = 'Study Specialization'
type = fields.Selection([
('bachelor', 'Bachelor'),
('diploma', 'Diploma')
], string='Study Type', required=True)
universities_colleges = fields.Char(string='Universities / Colleges')
institutes_schools = fields.Char(string='Institute / School Name')
name = fields.Char('Entity Name', required=True)
entity_type = fields.Selection([
('university', 'جامعة'),
('college', 'كلية'),
('institute', 'معهد'),
('school', 'مدرسة')
], string='Entity Type', required=True)
study_specialization = fields.Selection([
('bachelor', 'بكالريوس'),
('diploma', 'دبلوم')
], string='Study Specialization', required=True)

View File

@ -1,9 +1,10 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
pa_program_level_all,pa.program.level,model_pa_program_level,,1,1,1,1
pa_program_track_all,pa.program.track,model_pa_program_track,,1,1,1,1
pa_program_all,pa.program,model_pa_program,,1,1,1,1
pa_program_activity_all,pa.program.activity,model_pa_program_activity,,1,1,1,1
pa_program_medad_all,pa.program.medad,model_pa_program_medad,,1,1,1,1
pa_program_registration_all,pa.program.registration,model_pa_program_activity_registration,,1,1,1,1
pa_family_all,pa.family,model_pa_family,,1,1,1,1
pa_return_reason_wizard,pa.return.reason.wizard,model_pa_return_reason_wizard,,1,1,1,1
access_empowerment_education_entity,access_empowerment_education_entity,model_empowerment_education_entity,,1,1,1,1
access_empowerment_study_specialization,access_empowerment_study_specialization,model_empowerment_study_specialization,,1,1,1,1
access_empowerment_request,access_empowerment_request,model_empowerment_request,,1,1,1,1
access_empowerment_return_reason_wizard,access_empowerment_return_reason_wizard,model_empowerment_return_reason_wizard,,1,1,1,1
access_hr_qualification_name_req,access_hr_qualification_name_req,model_hr_qualification_name_req,,1,1,1,1
access_hr_employee_history_req,access_hr_employee_history_req,model_hr_employee_history_req,,1,1,1,1
access_qualification_specification_req,access_qualification_specification_req,model_qualification_specification_req,,1,1,1,1
access_hr_qualification_req,access_hr_qualification_req,model_hr_qualification_req,,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 pa_program_level_all access_empowerment_education_entity pa.program.level access_empowerment_education_entity model_pa_program_level model_empowerment_education_entity 1 1 1 1
3 pa_program_track_all access_empowerment_study_specialization pa.program.track access_empowerment_study_specialization model_pa_program_track model_empowerment_study_specialization 1 1 1 1
4 pa_program_all access_empowerment_request pa.program access_empowerment_request model_pa_program model_empowerment_request 1 1 1 1
5 pa_program_activity_all access_empowerment_return_reason_wizard pa.program.activity access_empowerment_return_reason_wizard model_pa_program_activity model_empowerment_return_reason_wizard 1 1 1 1
6 pa_program_medad_all access_hr_qualification_name_req pa.program.medad access_hr_qualification_name_req model_pa_program_medad model_hr_qualification_name_req 1 1 1 1
7 pa_program_registration_all access_hr_employee_history_req pa.program.registration access_hr_employee_history_req model_pa_program_activity_registration model_hr_employee_history_req 1 1 1 1
8 pa_family_all access_qualification_specification_req pa.family access_qualification_specification_req model_pa_family model_qualification_specification_req 1 1 1 1
9 pa_return_reason_wizard access_hr_qualification_req pa.return.reason.wizard access_hr_qualification_req model_pa_return_reason_wizard model_hr_qualification_req 1 1 1 1
10

View File

@ -0,0 +1,40 @@
<odoo>
<record id="view_qualification_specification_form" model="ir.ui.view">
<field name="name">qualification.specification.req.form</field>
<field name="model">qualification.specification.req</field>
<field name="arch" type="xml">
<form string="Qualification Specification">
<sheet>
<group>
<field name="name"/>
<field name="type"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_qualification_specification_tree" model="ir.ui.view">
<field name="name">qualification.specification.req.tree</field>
<field name="model">qualification.specification.req</field>
<field name="arch" type="xml">
<tree string="Qualification Specifications">
<field name="name"/>
<field name="type"/>
</tree>
</field>
</record>
<record id="action_qualification_specification" model="ir.actions.act_window">
<field name="name">Qualification Specifications</field>
<field name="res_model">qualification.specification.req</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_action_qualification_specification" name="تخصص المؤهل" parent="odex25_empowermentmanagement.menu_education_entities" action="action_qualification_specification" sequence="12"/>
<!-- <menuitem id="menu_education_sp_action" name="تخصص الدراسة" parent="menu_education_entities" action="action_study_specialization" sequence="13"/>-->
</odoo>

View File

@ -1,629 +1,384 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_empowerment_request_form" model="ir.ui.view">
<field name="name">empowerment.request.form</field>
<field name="model">empowerment.request</field>
<field name="arch" type="xml">
<form string="طلب تمكين">
<sheet>
<header>
<!-- Draft -->
<button string="اعتماد الاخصائى الاجتماعى" type="object" name="action_approve_social_worker" states="draft"/>
<button string="رفض" type="object" name="action_reject" states="draft,social_worker,head_of_department,branch_manager,finance"/>
<record id="action_open_return_reason_wizard" model="ir.actions.act_window">
<field name="name">سبب الإرجاع</field>
<field name="res_model">pa.return.reason.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!-- Levels Views -->
<record id="view_pa_program_level_tree" model="ir.ui.view">
<field name="name">pa.program.level.tree</field>
<field name="model">pa.program.level</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="name"/>
<field name="type"/>
<field name="active"/>
<field name="track_ids" string="المسارات المرتبطة" widget="many2many_tags"/>
</tree>
</field>
</record>
<record id="view_pa_program_level_form" model="ir.ui.view">
<field name="name">pa.program.level.form</field>
<field name="model">pa.program.level</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="code" readonly="1"/>
<field name="name" required="1" placeholder="مسارات تقنية - ثقافية معرفية دينية"/>
<field name="type" widget="selection" required="1"/>
<field name="description"/>
<field name="active"/>
</group>
<notebook>
<page string="المسارات المرتبطة">
<field name="track_ids" context="{'default_level_id': active_id}">
<tree editable="bottom">
<field name="code"/>
<field name="name"/>
<field name="branch"/>
<field name="gender"/>
<field name="age_category"/>
<field name="study_category"/>
<field name="hobby"/>
<field name="study_status"/>
<field name="health_status"/>
<field name="education_status"/>
<field name="partner_id"/>
<field name="active"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- Social Worker -->
<button string="اعتماد" type="object" name="action_approve_head" states="social_worker"/>
<button string="ارجاع لمسودة" type="object" name="action_return_to_draft" states="social_worker"/>
<record id="view_pa_program_level_search" model="ir.ui.view">
<field name="name">pa.program.level.search</field>
<field name="model">pa.program.level</field>
<field name="arch" type="xml">
<search>
<field name="code"/>
<field name="name"/>
<filter name="active_filter" string="نشط" domain="[('active', '=', True)]"/>
</search>
</field>
</record>
<record id="action_pa_program_level" model="ir.actions.act_window">
<field name="name">مستويات البرامج</field>
<field name="res_model">pa.program.level</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_pa_program_level_search"/>
</record>
<!-- Tracks Views -->
<record id="view_pa_program_track_tree" model="ir.ui.view">
<field name="name">pa.program.track.tree</field>
<field name="model">pa.program.track</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="name"/>
<field name="branch"/>
<field name="gender"/>
<field name="age_category"/>
<field name="study_category"/>
<field name="hobby"/>
<field name="study_status"/>
<field name="health_status"/>
<field name="education_status"/>
<field name="partner_id"/>
<field name="active"/>
<field name="level_id"/>
</tree>
</field>
</record>
<record id="view_pa_program_track_form" model="ir.ui.view">
<field name="name">pa.program.track.form</field>
<field name="model">pa.program.track</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="code" readonly="1"/>
<field name="name" required="1"/>
<field name="description"/>
</group>
<group>
<field name="branch"/>
<field name="gender" widget="selection"/>
<field name="age_category" />
<field name="study_category"/>
<field name="hobby"/>
<field name="study_status"/>
<field name="health_status"/>
<field name="education_status"/>
<field name="partner_id"/>
<field name="active"/>
<field name="level_id" required="1"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- Head of Department -->
<button string="اعتماد" type="object" name="action_approve_branch" states="head_of_department"/>
<button string="ارجاع للاخصائى الاجتماعى" type="object" name="action_return_to_social_worker" states="head_of_department"/>
<!-- Branch Manager -->
<button string="اعتماد" type="object" name="action_approve_finance" states="branch_manager"/>
<record id="view_pa_program_track_search" model="ir.ui.view">
<field name="name">pa.program.track.search</field>
<field name="model">pa.program.track</field>
<field name="arch" type="xml">
<search>
<field name="code"/>
<field name="name"/>
<field name="level_id" string="المستوى المرتبط"/>
<filter name="active_filter" string="نشط" domain="[('active', '=', True)]"/>
</search>
</field>
</record>
<record id="action_pa_program_track" model="ir.actions.act_window">
<field name="name">مسارات البرامج</field>
<field name="res_model">pa.program.track</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_pa_program_track_search"/>
</record>
<!-- Finance -->
<button string="اعتماد" type="object" name="action_approve_final" states="finance"/>
<button string="ارجاع لمسودة" type="object" name="action_return_to_draft" states="finance"/>
<field name="state" widget="statusbar" />
</header>
<!-- Programs Views -->
<record id="view_pa_program_tree" model="ir.ui.view">
<field name="name">pa.program.tree</field>
<field name="model">pa.program</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="name"/>
<!-- <field name="kind"/>-->
<field name="payment_type"/>
<field name="sponsor_id"/>
<field name="sponsor_support_amount"/>
<field name="budget"/>
<field name="location"/>
<field name="active"/>
<field name="track_id"/>
</tree>
</field>
</record>
<record id="view_pa_program_form" model="ir.ui.view">
<field name="name">pa.program.form</field>
<field name="model">pa.program</field>
<field name="arch" type="xml">
<form string="البرنامج">
<sheet>
<group>
<field name="code" readonly="1"/>
<field name="name" required="1"/>
<!-- <field name="kind" widget="selection" required="1"/>-->
<field name="payment_type" required="1"/>
<field name="sponsor_id" attrs="{'invisible': [('payment_type','!=','paid')]}"/>
<field name="sponsor_support_amount"/>
<field name="budget"/>
<field name="location" widget="selection" required="1"/>
<field name="description"/>
</group>
<group>
<field name="track_id" required="1"/>
<field name="analytic_account_id" options="{'no_create': True}" readonly="1"/>
<field name="estimated_budget"/>
<field name="active"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_pa_program" model="ir.actions.act_window">
<field name="name">البرامج</field>
<field name="res_model">pa.program</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Activities Views -->
<record id="view_pa_program_activity_tree" model="ir.ui.view">
<field name="name">pa.program.activity.tree</field>
<field name="model">pa.program.activity</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="name"/>
<field name="program_id"/>
<field name="location"/>
<field name="date_start"/>
<field name="date_end"/>
<field name="active"/>
</tree>
</field>
</record>
<record id="view_pa_program_activity_form" model="ir.ui.view">
<field name="name">pa.program.activity.form</field>
<field name="model">pa.program.activity</field>
<field name="arch" type="xml">
<form string="النشاط">
<sheet>
<group>
<field name="code" readonly="1"/>
<field name="name" required="1"/>
<field name="description"/>
</group>
<group>
<field name="program_id" required="1"/>
<field name="location" widget="selection" required="1"/>
<field name="date_start"/>
<field name="date_end"/>
<field name="analytic_account_id" options="{'no_create': True}" readonly="1"/>
<field name="estimated_budget"/>
<field name="active"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_pa_program_activity" model="ir.actions.act_window">
<field name="name">الأنشطة</field>
<field name="res_model">pa.program.activity</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Medad Views -->
<record id="view_pa_program_medad_tree" model="ir.ui.view">
<field name="name">pa.program.medad.tree</field>
<field name="model">pa.program.medad</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="name"/>
<field name="medad_type"/>
<field name="activity_id"/>
<field name="active"/>
</tree>
</field>
</record>
<record id="view_pa_program_medad_form" model="ir.ui.view">
<field name="name">pa.program.medad.form</field>
<field name="model">pa.program.medad</field>
<field name="arch" type="xml">
<form string="مداد">
<sheet>
<group>
<field name="code" readonly="1"/>
<field name="name" required="1"/>
<field name="description"/>
</group>
<group>
<field name="medad_type" widget="selection" required="1"/>
<field name="activity_id" required="0"/>
<field name="analytic_account_id" options="{'no_create': True}" readonly="1"/>
<field name="estimated_budget"/>
<field name="active"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_pa_program_medad" model="ir.actions.act_window">
<field name="name">مداد</field>
<field name="res_model">pa.program.medad</field>
<field name="view_mode">tree,form</field>
</record>
<record id="view_pa_program_activity_registration_form" model="ir.ui.view">
<field name="name">pa.program.activity.registration.form</field>
<field name="model">pa.program.activity.registration</field>
<field name="arch" type="xml">
<form string="تسجيل الأنشطة">
<sheet>
<header>
<field name="state" widget="statusbar"
statusbar_visible="draft,social_specialist,operation_manager,branch_manager,activity_head,finance_manager,approved,refused"/>
<button name="action_to_social_specialist" string="اعتماد الاخصائي الاجتماعي" type="object"
class="oe_highlight" states="draft"
groups="odex25_program_activity.group_social_specialist"/>
<button name="action_approve" string="اعتماد" type="object"
states="social_specialist,operation_manager,branch_manager,activity_head,finance_manager"
groups="odex25_program_activity.group_operation_manager,odex25_program_activity.group_branch_manager,odex25_program_activity.group_activity_head,odex25_program_activity.group_finance_manager"/>
<button name="action_refuse" string="رفض" type="object"
states="draft,social_specialist,operation_manager,branch_manager,activity_head,finance_manager"
groups="odex25_program_activity.group_social_specialist,odex25_program_activity.group_operation_manager,odex25_program_activity.group_branch_manager,odex25_program_activity.group_activity_head,odex25_program_activity.group_finance_manager"/>
<button name="%(action_open_return_reason_wizard)d" string="إعادة إلى المسودة" type="action"
groups="odex25_program_activity.group_social_specialist,odex25_program_activity.group_operation_manager"
states="social_specialist,operation_manager"/>
<button name="%(action_open_return_reason_wizard)d" string="إعادة إلى الأخصائي الاجتماعي" type="action"
groups="odex25_program_activity.group_operation_manager" states="operation_manager"/>
</header>
<group string="معلومات الإنشاء" col="2">
<field name="name" readonly="1"/>
<field name="request_date" readonly="1"/>
<field name="creator_id" readonly="1"/>
<field name="date_from"/>
<field name="date_to"/>
</group>
<group string="معلومات الأسرة" col="2">
<!-- domain="[('mother_marital_status','=','widow')]"-->
<field name="family_id" />
<field name="familye_id" />
<field name="branch_custom_id" />
<field name="gender" />
<field name="nationality_id" />
<field name="graduation_status" />
<field name="health_status" />
<field name="education_status" />
<!-- <field name="familye_member"/>-->
<field name="beneficiary_relation"/>
<field name="beneficiary_ids"/>
<field name="mobile" readonly="1"/>
</group>
<group string="معلومات البرامج والأنشطة" col="2">
<field name="level_id" required="1"/>
<field name="track_id"/>
<field name="program_id"/>
<field name="activity_id"/>
<field name="medad_id"/>
<field name="want_transport"/>
</group>
<notebook string="بيانات احصائية">
<page string="بيانات الأبناء">
<group>
<field name="sons" readonly="1"/>
<field name="daughters" readonly="1"/>
</group>
</page>
<page string="بيانات الأم">
<group>
<field name="mother_is_life" readonly="1"/>
<field name="mother_location_conf" readonly="1"/>
<field name="is_mother_work" readonly="1"/>
<!-- <field name="mother_education" readonly="1"/>-->
<field name="housing_type" readonly="1"/>
</group>
</page>
<page string="بيانات المستفيد">
<field name="member_ids" widget="one2many_list"
readonly="0" edit="0" create="0">
<form string="Family Member">
<widget name="web_ribbon" title="Non Benefit Member" bg_color="bg-danger"
attrs="{'invisible': [('member_status', '!=', 'non_benefit')]}"/>
<widget name="web_ribbon" title="Benefit Member" bg_color="bg-success"
attrs="{'invisible': [('member_status', '!=', 'benefit')]}"/>
<sheet>
<group>
<label for="relationn" string="Relation"/>
<div>
<field name="relationn" class="oe_inline" nolabel="1"
attrs="{'readonly':[('parent.state','not in',['draft','new','complete_info','edit_info'])]}"
options='{"no_open": True,"no_create_edit": True}'
required="1"/>
<field name="relation" class="oe_inline" nolabel="1" invisible="1"/>
</div>
<group string="معلومات عامة">
<field name="name"/>
<field name="request_date"/>
<field name="creator_id"/>
<field name="branch_id"/>
</group>
<group>
<group>
<field placeholder="Name" name="name" class="oe_inline" readonly="1"
force_save="1" invisible="1"/>
<field name="is_mother" invisible="1"/>
<field name="member_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_third_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_third_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_id_number" required="1"/>
<field name="is_dead"/>
<!-- <field name="gender" required="1"/>-->
<field name="member_location" force_save="1" invisible="1"/>
<field name="member_location_conf" force_save="1"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="is_work" attrs="{'invisible':[('age','&lt;',18)]}"/>
<field name="member_income"
attrs="{'invisible':[('age','&lt;',18)], 'required':[('is_work','=',True), ('age','>=',18)]}"/>
<field name="need_transportation"/>
<field name="has_disabilities"/>
<field name="minor_siblings"/>
<field name="sponsor_id"/>
<field name="is_excluded_suspension" readonly="1" force_save="1"/>
<field name="member_status" readonly="1" widget="badge"
decoration-success="member_status == 'benefit'"
decoration-danger="member_status == 'non_benefit'"/>
</group>
<group>
<field name="member_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_family_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_family_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="benefit_id" invisible="1"/>
<field name="member_phone"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="birth_date" required="1"/>
<field name="age" required="1"/>
<field name="age_status"/>
<field name="is_married"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="is_alhaju" widget="boolean_toggle"/>
<field name="is_amra" widget="boolean_toggle"/>
<field name="mother_marital_conf"
attrs="{'invisible':[('is_mother','=',False)]}"
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
<field name="mother_location" invisible="1"/>
<field name="mother_location_conf"
attrs="{'invisible':[('is_mother','=',False)]}"
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
</group>
<group string="البيانات الشخصية">
<field name="familye_id"/>
<field name="relationship"/>
<field name="benefit_category_id"/>
<field name="identity_number"/>
<field name="sms_phone"/>
<field name="email"/>
<field name="nationality"/>
<field name="education_status"/>
<field name="has_car"/>
<field name="health_status" attrs="{'required': [('service_type', '=', 'employment')]}"/>
</group>
<notebook>
<page string="Hobbies">
<field name="hobbies_attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="hobbies_id" required="1"/>
<field name="name"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
</tree>
<group string="بيانات الخدمة">
<field name="service_id"/>
<field name="service_type"/>
<field name="service_item"/>
</group>
<group string="بيانات تعليمية" attrs="{'invisible': [('service_type', 'not in', [
'educational_care','bachelor_service','diploma_service',
'bachelor_intercession','diploma_intercession'])]}">
<field name="study_specialization"
/>
<field name="university_id" attrs="{'invisible': [('study_specialization', '!=', 'bachelor')]}"
/>
<field name="institute_id" attrs="{'invisible': [('study_specialization', '!=', 'diploma')]}
" />
<field name="intercession_type" />
<field name="request_entity_id" />
<field name="description" />
</group>
<group string="بيانات تدريبية" attrs="{'invisible': [('service_type', 'not in', ['training_service','training_intercession'])]}">
<field name="training_type" />
<!-- commint-->
<!-- <field name="training_course_id" required="1" context="{'default_name': ''}"/>-->
<!-- <field name="training_entity_id" required="1" context="{'default_name': ''}"/>-->
<field name="training_intercession_type" attrs="{'invisible': [('service_type', '!=', 'training_intercession')]}"/>
</group>
<group string="بيانات تمويل" attrs="{'invisible': [('service_type', 'not in', ['funding_service','project_funding_intercession'])]}">
<!-- <field name="project_funding_type_id" required="1" context="{'default_name': ''}"/>-->
<field name="sponsor_id" domain="[('branch_id', '=', branch_id)]"/>
<field name="sponsor_mobile" readonly="1"/>
<!-- commmint-->
<!-- <field name="sponsor_identity" readonly="1"/>-->
<field name="sponsor_email" readonly="1"/>
<!-- <field name="sponsor_communication_method" readonly="1"/>-->
<field name="finance_request_entity_id" context="{'default_name': ''}" attrs="{'invisible': [('service_type', '!=', 'project_funding_intercession')]}"/>
</group>
<group string="الجهة المستلمة للطلب">
<field name="request_receiver_id"
options="{'no_open': False}"/>
</group>
<!-- commint domain="[('is_empowerment_receiver', '=', True)]"
context="{'default_is_empowerment_receiver': True}"-->
<group string="الإجراءات">
<field name="reject_reason" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
<field name="return_reason" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
</group>
<notebook string="بيانات احصائية">
<page string="الدورات التدريبية">
<field name="employment_history_ids" >
<tree>
<field name="name" />
<field name="position" />
<field name="salary" />
<field name="date_from" required="True"/>
<field name="date_to" required="True"/>
<field name="country" required="True"/>
</tree>
</field>
</page>
<page string="Diseases">
<field name="diseases_attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="diseases_id" required="1"/>
<field name="name"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
</tree>
</field>
</page>
<page string="Disabilities">
<field name="disabilities_attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="disabilities_id" required="1"/>
<field name="name"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
</tree>
</field>
</page>
<page string="Education">
<h3>Education Status</h3>
<field name="member_education_status_ids" mode="tree,form"/>
</page>
<page string="Attachments">
<field name="attachment_ids" widget="one2many_list">
<tree editable="bottom" delete="0">
<field name="name" string="Attachment Name"
attrs="{'readonly':[('is_default','=',True)]}"
force_save="1"/>
<field name="attach_id" invisible="1"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="allow_days"/>
<field name="benefit_id" invisible="1"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
</field>
<group>
<field name="state" invisible="1"/>
<field name="required_attach"
attrs="{'required':[('state','not in',['draft','new'])]}"/>
</group>
</page>
</page>
<page string=" الخبرات السابقة">
<field name="qualifiction_id"
editable="bottom">
<tree editable="bottom">
<field name="uni_name"/>
<!-- <field name="col_name"/>-->
<field name="qualification_id" />
<field name="qualification_specification_id"
context="{'default_type': 'qualification'}"/>
<field name="qualification_degree" />
<field name="comp_date"/>
<field name="country_name" />
<field name="attachment" widget="binary"/>
</tree>
</field>
</page>
<page string="بيانات المستفيد">
<field name="member_ids" widget="one2many_list"
readonly="0" edit="0" create="0">
<form string="Family Member">
<widget name="web_ribbon" title="Non Benefit Member" bg_color="bg-danger"
attrs="{'invisible': [('member_status', '!=', 'non_benefit')]}"/>
<widget name="web_ribbon" title="Benefit Member" bg_color="bg-success"
attrs="{'invisible': [('member_status', '!=', 'benefit')]}"/>
<sheet>
<group>
<label for="relationn" string="Relation"/>
<div>
<field name="relationn" class="oe_inline" nolabel="1"
attrs="{'readonly':[('parent.state','not in',['draft','new','complete_info','edit_info'])]}"
options='{"no_open": True,"no_create_edit": True}'
/>
<field name="relation" class="oe_inline" nolabel="1" invisible="1"/>
</div>
</group>
<group>
<group>
<field placeholder="Name" name="name" class="oe_inline" readonly="1"
force_save="1" invisible="1"/>
<field name="is_mother" invisible="1"/>
<field name="member_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_first_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_third_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_third_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_id_number" />
<field name="is_dead"/>
<!-- <field name="gender" required="1"/>-->
<field name="member_location" force_save="1" invisible="1"/>
<field name="member_location_conf" force_save="1"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="is_work" attrs="{'invisible':[('age','&lt;',18)]}"/>
<field name="member_income"
attrs="{'invisible':[('age','&lt;',18)], 'required':[('is_work','=',True), ('age','>=',18)]}"/>
<field name="need_transportation"/>
<field name="has_disabilities"/>
<field name="minor_siblings"/>
<field name="sponsor_id"/>
<field name="is_excluded_suspension" readonly="1" force_save="1"/>
<field name="member_status" readonly="1" widget="badge"
decoration-success="member_status == 'benefit'"
decoration-danger="member_status == 'non_benefit'"/>
</group>
<group>
<field name="member_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_second_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="member_family_name" force_save="1"
attrs="{'invisible':[('is_mother','=',True)],'required':[('is_mother','=',False)]}"/>
<field name="mother_family_name" force_save="1"
attrs="{'invisible':[('is_mother','=',False)],'required':[('is_mother','=',True)]}"/>
<field name="benefit_id" invisible="1"/>
<field name="member_phone"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="birth_date" />
<field name="age" />
<field name="age_status"/>
<field name="is_married"
attrs="{'invisible':[('is_mother','=',True)]}"/>
<field name="is_alhaju" widget="boolean_toggle"/>
<field name="is_amra" widget="boolean_toggle"/>
<field name="mother_marital_conf"
attrs="{'invisible':[('is_mother','=',False)]}"
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
<field name="mother_location" invisible="1"/>
<field name="mother_location_conf"
attrs="{'invisible':[('is_mother','=',False)]}"
options="{'no_create': True, 'no_create_edit': True}"
groups="!odex_benefit.group_benefit_manager"/>
</group>
</group>
<notebook>
<page string="Hobbies">
<field name="hobbies_attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="hobbies_id" required="1"/>
<field name="name"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
</tree>
</field>
</page>
<page string="Diseases">
<field name="diseases_attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="diseases_id" required="1"/>
<field name="name"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
</tree>
</field>
</page>
<page string="Disabilities">
<field name="disabilities_attachment_ids" widget="one2many_list">
<tree editable="bottom">
<field name="disabilities_id" required="1"/>
<field name="name"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="member_id" invisible="1"/>
</tree>
</field>
</page>
<page string="Education">
<h3>Education Status</h3>
<field name="member_education_status_ids" mode="tree,form"/>
</page>
<page string="Attachments">
<field name="attachment_ids" widget="one2many_list">
<tree editable="bottom" delete="0">
<field name="name" string="Attachment Name"
attrs="{'readonly':[('is_default','=',True)]}"
force_save="1"/>
<field name="attach_id" invisible="1"/>
<field name="datas" widget="binary"
filename="attachment_file_name"/>
<button name="action_preview_attachment" type="object"
string="Preview Attachment"/>
<field name="expiration_date"/>
<field name="attach_status"/>
<field name="allow_days"/>
<field name="benefit_id" invisible="1"/>
<field name="is_required" invisible="1"/>
<field name="is_default" invisible="1"/>
</tree>
</field>
<group>
<field name="state" invisible="1"/>
<field name="required_attach"
attrs="{'required':[('state','not in',['draft','new'])]}"/>
</group>
</page>
</notebook>
</sheet>
</form>
<tree string="Family Members">
<field name="name" force_save="1"/>
<!-- <field name="gender" required="1"/>-->
<field name="relationn"/>
<field name="member_location_conf"/>
<field name="member_status" string="Is Benefit?"/>
<field name="age"/>
<field name="benefit_id"/>
<field name="state"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
<tree string="Family Members">
<field name="name" force_save="1"/>
<!-- <field name="gender" required="1"/>-->
<field name="relationn"/>
<field name="member_location_conf"/>
<field name="member_status" string="Is Benefit?"/>
<field name="age"/>
<field name="benefit_id"/>
<field name="state"/>
</tree>
</field>
</page>
</sheet>
</form>
</field>
</record>
<record id="view_empowerment_request_tree" model="ir.ui.view">
<field name="name">empowerment.request.tree</field>
<field name="model">empowerment.request</field>
<field name="arch" type="xml">
<tree string="طلبات التمكين">
<field name="name"/>
<field name="familye_id"/>
<field name="service_id"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_empowerment_request_search" model="ir.ui.view">
<field name="name">empowerment.request.search</field>
<field name="model">empowerment.request</field>
<field name="arch" type="xml">
<search string="بحث طلبات التمكين">
<!-- Search fields -->
<field name="name" string="رقم الطلب"/>
<field name="familye_id" string="المستفيد" options="{'no_create': True}"/>
<field name="sms_phone" string="رقم الجوال"/>
<field name="identity_number" string="رقم الهوية"/>
<!-- Group by / Aggregation filters -->
<filter string="نوع الخدمة" name="group_by_service_type" context="{'group_by':'service_type'}"/>
<filter string="بند الخدمة" name="group_by_service_id" context="{'group_by':'service_id'}"/>
<filter string="الحالة" name="group_by_state" context="{'group_by':'state'}"/>
</search>
</field>
</record>
</notebook>
<record id="action_empowerment_request" model="ir.actions.act_window">
<field name="name">طلبات التمكين</field>
<field name="res_model">empowerment.request</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_empowerment_request_search"/>
</record>
<record id="view_empowerment_return_reason_wizard_form" model="ir.ui.view">
<field name="name">empowerment.return.reason.wizard.form</field>
<field name="model">empowerment.return.reason.wizard</field>
<field name="arch" type="xml">
<form string="سبب الإرجاع">
<sheet>
<group>
<field name="reason" />
</group>
<footer>
<button string="حفظ" type="object" name="action_return" class="btn-primary"/>
<button string="إلغاء" class="btn-secondary" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<!-- Tree View -->
<record id="view_pa_program_activity_registration_tree" model="ir.ui.view">
<field name="name">pa.program.activity.registration.tree</field>
<field name="model">pa.program.activity.registration</field>
<field name="arch" type="xml">
<tree string="طلبات تسجيل الأنشطة">
<field name="name"/>
<field name="family_id"/>
<field name="level_id"/>
<field name="state"/>
<field name="request_date"/>
</tree>
</field>
</record>
<!-- Action -->
<record id="action_pa_program_activity_registration" model="ir.actions.act_window">
<field name="name">تسجيل الأنشطة</field>
<field name="res_model">pa.program.activity.registration</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Wizard form and action -->
<record id="view_pa_return_reason_wizard_form" model="ir.ui.view">
<field name="name">pa.return.reason.wizard.form</field>
<field name="model">pa.return.reason.wizard</field>
<field name="arch" type="xml">
<form string="سبب الإرجاع" >
<group>
<field name="reason" />
</group>
<footer>
<button string="تأكيد" type="object" name="action_confirm_return" class="btn-primary"/>
<button string="إلغاء" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Root Settings Menu -->
<!-- Menu -->
<menuitem id="menu_pa_root" name="البرامج والأنشطة" sequence="1"/>
<menuitem id="menu_pa_registration" parent="menu_pa_root" name="تسجيل الأنشطة" sequence="20" action="action_pa_program_activity_registration"/>
<menuitem id="menu_pa_settings" name="الإعدادات" parent="menu_pa_root" sequence="90"/>
<!-- Levels menu -->
<menuitem id="menu_pa_levels" name="مستويات البرامج" parent="menu_pa_settings" action="action_pa_program_level"/>
<!-- Tracks menu -->
<menuitem id="menu_pa_tracks" name="مسارات البرامج" parent="menu_pa_settings" action="action_pa_program_track"/>
<!-- Programs menu -->
<menuitem id="menu_pa_programs" name="البرامج" parent="menu_pa_settings" action="action_pa_program"/>
<!-- Activities menu -->
<menuitem id="menu_pa_activities" name="الأنشطة" parent="menu_pa_settings" action="action_pa_program_activity"/>
<!-- Medad menu -->
<menuitem id="menu_pa_medad" name="مداد" parent="menu_pa_settings" action="action_pa_program_medad"/>
</odoo>
<menuitem id="menu_empowerment_requests" name="طلبات التمكين"
parent="odex25_empowermentmanagement.menu_empowerment_root" action="action_empowerment_request"/>
</odoo>

View File

@ -0,0 +1,112 @@
<odoo>
<!-- Inherited form view to add linked_to_department and hr_department_id -->
<record id="view_services_settings_form_inherit_empowerment" model="ir.ui.view">
<field name="name">services.settings.form.empowerment</field>
<field name="model">services.settings</field>
<field name="inherit_id" ref="odex_benefit.services_settings_form"/> <!-- Adjust ref to actual base form -->
<field name="arch" type="xml">
<xpath expr="//sheet/group[1]" position="after">
<group>
<field name="linked_to_department" string="مرتبط بقسم"/>
<field name="hr_department_id" readonly="1" string="القسم المرتبط" />
<field name="manager_id" readonly="1" string="القسم المرتبط" />
</group>
</xpath>
</field>
</record>
<!-- Tree view for services.settings, extended -->
<record id="view_services_settings_tree_inherit_empowerment" model="ir.ui.view">
<field name="name">services.settings.tree.empowerment</field>
<field name="model">services.settings</field>
<field name="inherit_id" ref="odex_benefit.services_settings_tree"/>
<field name="arch" type="xml">
<xpath expr="//tree" position="inside">
<field name="linked_to_department"/>
<field name="hr_department_id"/>
</xpath>
</field>
</record>
<!-- View for Empowerment Education Entity -->
<record id="view_empowerment_education_entity_form" model="ir.ui.view">
<field name="name">empowerment.education.entity.form</field>
<field name="model">empowerment.education.entity</field>
<field name="arch" type="xml">
<form string="الجهات التعليمية">
<sheet>
<group>
<field name="name"/>
<field name="entity_type"/>
<field name="specialization_id"/>
<field name="study_specialization"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_empowerment_education_entity_tree" model="ir.ui.view">
<field name="name">empowerment.education.entity.tree</field>
<field name="model">empowerment.education.entity</field>
<field name="arch" type="xml">
<tree string="الجهات التعليمية">
<field name="name"/>
<field name="entity_type"/>
<field name="specialization_id"/>
<!-- <field name="study_specialization"/>-->
</tree>
</field>
</record>
<!-- Action menu for Education Entities -->
<record id="action_empowerment_education_entity" model="ir.actions.act_window">
<field name="name">الجهات التعليمية</field>
<field name="res_model">empowerment.education.entity</field>
<field name="view_mode">tree,form</field>
</record>
<record id="view_study_specialization_form" model="ir.ui.view">
<field name="name">empowerment.study.specialization.form</field>
<field name="model">empowerment.study.specialization</field>
<field name="arch" type="xml">
<form string="تخصص الدراسة">
<sheet>
<group>
<field name="type"/>
<field name="universities_colleges"
attrs="{'invisible': [('type', '!=', 'bachelor')]}"
string="الجامعات / الكليات"/>
<field name="institutes_schools"
attrs="{'invisible': [('type', '!=', 'diploma')]}"
string="اسم المعهد / المدرسة"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_study_specialization" model="ir.actions.act_window">
<field name="name">تخصص الدراسة</field>
<field name="res_model">empowerment.study.specialization</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Menu -->
<menuitem id="menu_empowerment_root" name="إدارة التمكين"/>
<menuitem id="menu_services_settings" name="اعدادات الخدمات" parent="menu_empowerment_root" sequence="10"/>
<menuitem id="menu_education_entities" name="الجهات التعليمية" parent="menu_empowerment_root" sequence="20"/>
<!-- Link Actions -->
<menuitem id="menu_education_entities_action" name="الجهات التعليمية" parent="menu_education_entities" action="action_empowerment_education_entity" sequence="10"/>
<menuitem id="menu_education_sp_action" name="تخصص الدراسة" parent="menu_education_entities" action="action_study_specialization" sequence="11"/>
</odoo>

View File

@ -320,12 +320,7 @@ class PaProgramActivityRegistration(models.Model):
beneficiary_ids = fields.Many2many('res.partner', string='اسم المستفيد')
mobile = fields.Char(string='رقم الجوال', related='family_id.mobile', readonly=True)
# familye_member = fields.Many2one(
# 'family.member',
# string='عضو الأسرة',
# domain="[('member_status', '=', 'benefit'), ('benfit_id', '=', familye_id)]"
# )
#
widow = fields.Boolean(string="الأم أرملة؟", related='family_id.widow', readonly=True)