empowerment_management
This commit is contained in:
parent
a4f945469d
commit
bc8d45ce27
|
|
@ -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',
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 "تخصص الدراسة"
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
from . import empowerment_management
|
||||
# from . import empowerment_request
|
||||
from . import service_settings
|
||||
from . import education_entity
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
@ -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'}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
|
@ -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>
|
||||
|
|
@ -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','<',18)]}"/>
|
||||
<field name="member_income"
|
||||
attrs="{'invisible':[('age','<',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','<',18)]}"/>
|
||||
<field name="member_income"
|
||||
attrs="{'invisible':[('age','<',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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue