empowerment_management
This commit is contained in:
parent
053454849b
commit
a4f945469d
|
|
@ -0,0 +1 @@
|
|||
from . import models
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
'name': 'Odex25 empowerment management',
|
||||
'description': 'This module empowerment management ',
|
||||
'author': 'Expert Co. Ltd.',
|
||||
'website': 'http://exp-sa.com',
|
||||
'category': 'Odex25-Ensan activity',
|
||||
'depends': ['base','mail','odex_takaful'],
|
||||
'data': [
|
||||
'security/security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/ir_sequence_data.xml',
|
||||
|
||||
'views/empowerment_management.xml',
|
||||
|
||||
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
<odoo>
|
||||
<record id="seq_pa_program_level" model="ir.sequence">
|
||||
<field name="name">Level Code</field>
|
||||
<field name="code">pa.program.level</field>
|
||||
<field name="prefix">LVL/</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>
|
||||
|
|
@ -0,0 +1,569 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * ensan_real_estate
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. 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: 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: ensan_real_estate
|
||||
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr "إجراء مطلوب"
|
||||
|
||||
#. module: ensan_real_estate
|
||||
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_ids
|
||||
msgid "Activities"
|
||||
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: ensan_real_estate
|
||||
#: model:ir.model.fields,field_description:ensan_real_estate.field_property_evaluation__activity_state
|
||||
msgid "Activity State"
|
||||
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: ensan_real_estate
|
||||
#: model:res.groups,name:ensan_real_estate.group_real_estate_evaluation_admin
|
||||
msgid "Admin"
|
||||
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: ensan_real_estate
|
||||
#: model:ir.model,name:ensan_real_estate.model_account_asset
|
||||
msgid "Asset/Revenue Recognition"
|
||||
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
|
||||
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 "هل أنت متأكد من إعادة الطلب إلى مبدئي؟"
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
from . import empowerment_management
|
||||
# from . import empowerment_request
|
||||
from . import service_settings
|
||||
from . import education_entity
|
||||
|
||||
|
|
@ -0,0 +1,449 @@
|
|||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
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)
|
||||
|
||||
date_from = fields.Datetime(string='التاريخ من')
|
||||
date_to = fields.Datetime(string='التاريخ الى')
|
||||
|
||||
family_id = fields.Many2one('pa.family', string='الأسرة')
|
||||
familye_id = fields.Many2one('grant.benefit', string='الأسرة')
|
||||
|
||||
member_ids = fields.One2many(
|
||||
'family.member',
|
||||
'benefit_id',
|
||||
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)
|
||||
|
||||
|
||||
|
||||
# sons_count = fields.Integer(string='عدد الأولاد في الأسرة', related='familye_id.sons_count', readonly=True)
|
||||
# daughters_count = fields.Integer(string='عدد البنات في الأسرة', related='familye_id.daughters_count', readonly=True)
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
housing_type = fields.Selection(string='نوع السكن', related='familye_id.housing_type', readonly=True)
|
||||
|
||||
|
||||
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)
|
||||
|
||||
# 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)
|
||||
|
||||
sons = fields.Integer(
|
||||
string="عدد الأولاد",
|
||||
compute='_compute_sons_daughters',
|
||||
store=False
|
||||
)
|
||||
daughters = fields.Integer(
|
||||
string="عدد البنات",
|
||||
compute='_compute_sons_daughters',
|
||||
store=False
|
||||
)
|
||||
|
||||
@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
|
||||
|
||||
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', 'رئيس العمليات'),
|
||||
('branch_manager', 'مدير الفرع'),
|
||||
('activity_head', 'رئيس الأنشطة'),
|
||||
('finance_manager', 'إدارة المالية'),
|
||||
('approved', 'معتمد'),
|
||||
('refused', 'مرفوض')
|
||||
], default='draft', tracking=True)
|
||||
|
||||
rejection_reason = fields.Text('سبب الارجاع') # To hold the last rejection note
|
||||
|
||||
@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
|
||||
|
||||
# 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):
|
||||
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(_('لحالة المستوى "مداد"، جميع الحقول "المسار"، "البرنامج"، "النشاط"، "المداد" مطلوبة'))
|
||||
|
||||
def action_to_social_specialist(self):
|
||||
self.ensure_one()
|
||||
self.state = 'social_specialist'
|
||||
|
||||
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',
|
||||
}
|
||||
next_state = transition_map.get(self.state)
|
||||
if next_state:
|
||||
self.state = next_state
|
||||
|
||||
def action_refuse(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'
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
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'
|
||||
|
||||
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')]"
|
||||
)
|
||||
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')
|
||||
|
||||
@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)
|
||||
if not dept:
|
||||
dept = self.env['hr.department'].create({
|
||||
'name': record.service_name,
|
||||
'service_link_id': record.id
|
||||
})
|
||||
record.hr_department_id = dept.id
|
||||
return record
|
||||
|
||||
def write(self, vals):
|
||||
res = super().write(vals)
|
||||
for rec in self:
|
||||
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 not dept:
|
||||
dept = self.env['hr.department'].create({
|
||||
'name': rec.service_name,
|
||||
'service_link_id': rec.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
|
||||
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()
|
||||
return super().unlink()
|
||||
|
||||
|
||||
class HrDepartment(models.Model):
|
||||
_inherit = 'hr.department'
|
||||
|
||||
service_link_id = fields.Many2one('services.settings', string='Linked Service', readonly=True)
|
||||
|
||||
|
||||
class EmpowermentEducationEntity(models.Model):
|
||||
_name = 'empowerment.education.entity'
|
||||
_description = 'Educational Entity'
|
||||
|
||||
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)
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
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
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<odoo>
|
||||
<record id="group_pa_social_specialist" model="res.groups">
|
||||
<field name="name">اخصائى اجتماعى</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources"/>
|
||||
</record>
|
||||
<record id="group_pa_operation_manager" model="res.groups">
|
||||
<field name="name">رئيس العمليات</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources"/>
|
||||
</record>
|
||||
<record id="group_pa_branch_manager" model="res.groups">
|
||||
<field name="name">مدير الفرع</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources"/>
|
||||
</record>
|
||||
<record id="group_pa_activity_head" model="res.groups">
|
||||
<field name="name">رئيس الأنشطة</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources"/>
|
||||
</record>
|
||||
<record id="group_pa_finance_manager" model="res.groups">
|
||||
<field name="name">ادارة المالية</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,629 @@
|
|||
<odoo>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
<!-- 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>
|
||||
<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>
|
||||
<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>
|
||||
</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>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
'security/ir.model.access.csv',
|
||||
'data/ir_sequence_data.xml',
|
||||
|
||||
'views/program.xml',
|
||||
'views/empowerment_management.xml',
|
||||
|
||||
|
||||
],
|
||||
|
|
|
|||
Loading…
Reference in New Issue