26 KiB
📋 مراجعة شاملة لموديول Odex Benefit
🎯 نظرة عامة
اسم الموديول: odex_benefit
الإصدار: 1.0
الفئة: Grant Management
الشركة المطورة: Expert Ltd
الموقع: http://exp-sa.com
الترخيص: GPL-3
الوصف
موديول شامل لإدارة المنح والمساعدات لمشروع التكافل، يوفر نظام متكامل لإدارة الأسر المستفيدة، أعضاء الأسرة، الخدمات المقدمة، الزيارات، والمصروفات.
📦 الاعتمادات (Dependencies)
الموديول يعتمد على:
base- الأساسياتsurvey- الاستبياناتtakaful_core- نواة التكافلwebsite- الموقع الإلكترونيaccount- المحاسبةreport_xlsx- التقاريرsale- المبيعاتproduct- المنتجاتstock- المخزونhr- الموارد البشريةpurchase- المشترياتweb_google_maps- خرائط جوجلodex25_account_payment_fix- إصلاحات الدفعotp_sms_auth_custom- المصادقة عبر OTP
المكتبات الخارجية
num2words- تحويل الأرقام إلى كلمات
🏗️ البنية الهيكلية للموديول
1. النماذج الرئيسية (Models)
1.1 grant.benefit - الملف الرئيسي للأسرة المستفيدة
الوصف: النموذج الأساسي الذي يمثل الأسرة المستفيدة من المنح
الحقول الرئيسية:
-
المعلومات الأساسية:
code: رقم الملف (تسلسلي)name: اسم الأسرةpartner_id: ربط مع شريك (res.partner)benefit_type: نوع الاستفادة (benefit/orphan/widow)benefit_category_id: فئة الاستفادةstate: حالة الملف (draft/new/complete_info/waiting_approve/first_approve/second_approve/refused/suspended_second_approve/exception_second_approve/black_list)
-
معلومات الأب:
father_id_number: رقم هوية الأبfather_birth_date: تاريخ ميلاد الأبfather_age: عمر الأب (محسوب)father_marital: الحالة الاجتماعية للأبfather_job_id: الوظيفةfather_dead_date: تاريخ الوفاةfather_dead_reason_id: سبب الوفاة
-
معلومات الأم:
mother_name: اسم الأمmother_id_number: رقم هوية الأمmother_birth_date: تاريخ ميلاد الأمmother_age: عمر الأم (محسوب)mother_marital_conf: الحالة الاجتماعية للأمmother_income: دخل الأمis_mother_work: هل تعمل الأم؟mother_has_disabilities: هل لديها إعاقة؟add_replacement_mother: إضافة أم بديلة
-
معلومات السكن:
housing_type: نوع السكن (apartment/villa/popular_house/tent)property_type: نوع الملكية (ownership/rent/charitable/ownership_shared/rent_shared)rent_amount: مبلغ الإيجارcontract_num: رقم عقد الإيجارrent_start_date: تاريخ بداية الإيجارrent_end_date: تاريخ نهاية الإيجارpayment_type: نوع الدفع (Yearly/Half-yearly/Quarterly/Monthly)lat,lon: الإحداثيات الجغرافية
-
المعلومات المالية:
total_income: إجمالي الدخلtotal_expenses: إجمالي المصروفاتbenefit_needs_percent: نسبة الحاجةfamily_monthly_income: الدخل الشهري للأسرةfamily_monthly_meals: الوجبات الشهريةfamily_monthly_clotting: الملابس الشهرية
-
معلومات الأعضاء:
member_ids: قائمة أعضاء الأسرة (One2many)benefit_member_count: عدد الأعضاء المستفيدين (محسوب)non_member_count: عدد غير المستفيدين
-
معلومات الفرع:
branch_custom_id: الفرعdistrict_id: الحيmeal_card: بطاقة الوجباتresearcher_id: الباحث المسؤول
-
الحالات الخاصة:
is_excluded_suspension: مستثنى من الإيقافsuspend_reason: سبب الإيقافexception_reason: سبب الاستثناءexception_type: نوع الاستثناء (temporarily/permanent)
الوظائف الرئيسية:
check_mother_status(): التحقق من حالة الأمcheck_replacement_mother_status(): التحقق من حالة الأم البديلةget_members_count(): حساب عدد الأعضاءget_total_income(): حساب إجمالي الدخلget_total_expenses(): حساب إجمالي المصروفاتcreate_scheduled_visit(): إنشاء زيارات مجدولة تلقائياًsend_expiry_date_notification(): إرسال إشعارات انتهاء المرفقاتupdate_data_automatically(): تحديث البيانات تلقائياًaction_auto_exception(): التحقق من الاستثناءات المؤقتة
1.2 family.member - أعضاء الأسرة
الوصف: يمثل كل فرد من أفراد الأسرة
الحقول الرئيسية:
-
المعلومات الشخصية:
member_first_name: الاسم الأولmember_second_name: الاسم الثاني (مرتبط بالأب)member_third_name: الاسم الثالثmember_family_name: اسم العائلةmember_id_number: رقم الهويةgender: الجنس (male/female)birth_date: تاريخ الميلادage: العمر (محسوب)age_status: حالة العمر (minor/non_minor)relationn: صلة القرابة (son/daughter/mother/replacement_mother)
-
معلومات الأم (إذا كانت العضو):
mother_first_name: الاسم الأول للأمmother_marital_conf: الحالة الاجتماعيةmother_location: موقع الأمis_mother_work: هل تعمل؟
-
معلومات العمل:
is_work: هل يعمل؟member_income: الدخلsalary_certificate: شهادة الراتب
-
معلومات التعليم:
education_status: حالة التعليم (educated/illiterate/under_study_age)case_study: حالة الدراسة (continuous/intermittent/graduate)education_levels: المستوى التعليميspecialization_ids: التخصصis_scientific_specialty: تخصص علمي؟is_medical_specialty: تخصص طبي؟member_education_status_ids: سجل الحالة التعليمية
-
معلومات الصحة:
diseases_ids: الأمراضdisabilities_ids: الإعاقاتhobbies_ids: الهوايات
-
الحالة:
state: حالة العضو (draft/new/complete_info/waiting_approve/first_approve/second_approve/refused/suspended_second_approve/exception_second_approve/black_list)member_status: حالة الاستفادة (benefit/non_benefit)non_benefit_reason: سبب عدم الاستفادةis_excluded_suspension: مستثنى من الإيقاف
الوظائف الرئيسية:
check_member_status(): التحقق من حالة الاستفادة للعضو_compute_get_age_date(): حساب العمر_compute_get_age_status(): حساب حالة العمر_compute_minor_siblings(): حساب وجود أشقاء قاصرين
1.3 service.request - طلبات الخدمات
الوصف: يمثل طلب خدمة من الأسرة أو العضو
الحقول الرئيسية:
-
المعلومات الأساسية:
name: رقم الطلب (تسلسلي)date: تاريخ الطلبbenefit_type: نوع الاستفادة (family/member)family_id: الأسرةmember_id: العضو (إذا كان للعضو)service_cat: فئة الخدمةservice_type: نوع الخدمة (rent/home_restoration/electrical_devices/marriage/etc.)
-
معلومات الخدمة:
requested_service_amount: المبلغ المطلوبservice_max_amount: الحد الأقصى المسموحdescription: الوصفneed_status: حالة الحاجة (urgent/not_urgent)
-
معلومات الإيجار (للخدمات المتعلقة بالإيجار):
rent_contract_number: رقم عقد الإيجارrent_start_date: تاريخ بداية الإيجارrent_end_date: تاريخ نهاية الإيجارrent_amount: مبلغ الإيجارpayment_type: نوع الدفعestimated_rent_amount: المبلغ المقدر للإيجار
-
الحالة:
state: حالة الطلب (draft/researcher/waiting_approve/first_approve/family_services_manager/legal_department/projects_department/gm_assistant/accounting_approve/approval_of_beneficiary_services/send_request_to_supplier/family_received_device/refused)payment_order_id: أمر الدفع المرتبطpayment_order_state: حالة أمر الدفع
-
المرفقات:
attachment_lines: قائمة المرفقات المطلوبةservice_attach: مرفقات الخدمة
الوظائف الرئيسية:
_get_estimated_rent_amount(): حساب المبلغ المقدر للإيجار_get_aid_amount(): حساب مبلغ المساعدة_compute_attachment_lines(): حساب المرفقات المطلوبةaction_create_payment_order(): إنشاء أمر دفعcreate_vendor_bill(): إنشاء فاتورة مورد
1.4 visit.location - الزيارات
الوصف: يمثل زيارة للأسرة
الحقول الرئيسية:
-
المعلومات الأساسية:
name: رقم الزيارة (تسلسلي)benefit_id: الأسرة المستفيدةvisit_date: تاريخ الزيارةvisit_types: نوع الزيارةvisit_objective: هدف الزيارة (inform_visit/objective_visit)researcher_ids: الباحثون
-
الحالة:
state: حالة الزيارة (draft/contact/schedule_a_visit/pending/done/close/cancel)
-
المصادقة:
otp_code: رمز OTPotp_generated_at: وقت إنشاء OTPresponse_id: استجابة الاستبيان
الوظائف الرئيسية:
generateOTP(): إنشاء رمز OTPaction_send_survey(): إرسال استبيان التقييمaction_done(): إتمام الزيارة
1.5 confirm.benefit.expense - تأكيد مصروفات الأسرة
الوصف: تأكيد ودفع المصروفات الشهرية للأسرة
الحقول الرئيسية:
-
المعلومات الأساسية:
family_expense_seq: رقم المصروف (تسلسلي)date: التاريخstart_date: تاريخ البدايةend_date: تاريخ النهايةexpense_type: نوع المصروف (family_expense/family_invoice)family_ids: الأسر المختارة
-
المصروفات:
cash_expense: تضمين المصروف النقدي؟meal_expense: تضمين مصروف الوجبات؟cloth_expense: تضمين مصروف الملابس؟family_monthly_income: إجمالي الدخل الشهريfamily_monthly_meals: إجمالي الوجبات الشهريةfamily_monthly_clotting: إجمالي الملابس الشهرية
-
الحالة:
state: الحالة (draft/calculated/assistant_general_manager/depart_manager/account_manager/cancel/confirm)
الوظائف الرئيسية:
action_calculate(): حساب المصروفاتaction_confirm_selected(): تأكيد المصروفات وإنشاء قيود محاسبية_update_benefit_expense_lines(): تحديث بنود المصروفات
1.6 payment.orders - أوامر الدفع
الوصف: يمثل أمر دفع لخدمات متعددة
الحقول الرئيسية:
-
المعلومات الأساسية:
name: رقم أمر الدفع (تسلسلي)payment_order_date: تاريخ أمر الدفعaccountant_id: المحاسب المسؤولservice_requests_ids: طلبات الخدمات المرتبطةjournal_id: دفتر اليومية
-
الحالة:
state: الحالة (draft/waiting_head/waiting_finance/waiting_gm/done/refused)
الوظائف الرئيسية:
get_lines(): إنشاء بنود القيد المحاسبيaction_manager_approval(): موافقة المديرaction_finance_approval(): موافقة المالية وإنشاء القيد
1.7 services.settings - إعدادات الخدمات
الوصف: إعدادات وتكوين الخدمات المتاحة
الحقول الرئيسية:
-
المعلومات الأساسية:
service_name: اسم الخدمةservice_type: نوع الخدمة (rent/home_restoration/electrical_devices/etc.)benefit_type: نوع الاستفادة (family/member)service_category: فئة الخدمة (emergency/permanent/exceptional/seasonal)is_seasonal_service: خدمة موسمية؟
-
الحدود والقيود:
max_amount: الحد الأقصى للمبلغmax_age: الحد الأقصى للعمرallowed_recurrence: السماح بالتكرار (once/periodic/unlimited)recurrence_period: فترة التكرار (months/years)recurrence_interval: فترة التكرارmax_limit_type: نوع الحد الأقصى (none/fixed/category/amount_person/etc.)max_limit_period: فترة الحد الأقصى (request/individual/month/year/recurrence_period)
-
الموافقات:
needs_beneficiary_manager_approval: يحتاج موافقة مدير المستفيدين؟needs_services_head_approval: يحتاج موافقة رئيس الخدمات؟needs_legal_approval: يحتاج موافقة قانونية؟needs_project_management_approval: يحتاج موافقة إدارة المشاريع؟
-
البيانات المرتبطة:
rent_lines: بنود الإيجار (حسب الفئة وعدد الأعضاء)electrical_devices_lines: بنود الأجهزة الكهربائيةhome_furnishing_lines: بنود تأثيث المنزلcategory_amount_lines: بنود المبالغ حسب الفئةbill_lines: بنود الفواتيرlimit_person_line_ids: حدود حسب عدد الأشخاص
1.8 نماذج أخرى مهمة
benefit.category - فئات الاستفادة
name: اسم الفئةgender: الجنس (male/female/both)age_from,age_to: نطاق العمرmini_income_amount,max_income_amount: نطاق الدخل
family.expense - مصروفات الأسرة
name: اسم المصروفexpenses_type: نوع المصروف (governmental/medical/transportation/etc.)amount: المبلغstate: الحالة (waiting/accepted/refused)
family.expense.line - بنود مصروفات الأسرة
expenses_type_custom: نوع المصروفamount: المبلغstate: الحالةdeduct_from_family_income: خصم من دخل الأسرة؟
visit.survey - استبيانات الزيارات
- ربط الزيارات مع استبيانات التقييم
seasonal.service - الخدمات الموسمية
- خدمات موسمية مثل رمضان، العيد، الشتاء
payment - المدفوعات
- إدارة المدفوعات للخدمات
🔐 الأمان والصلاحيات
مجموعات المستخدمين:
group_benefit_researcher- الباحثونgroup_benefit_woman_commitee- لجنة النساءgroup_benefit_branch_manager- مديرو الفروعgroup_benefit_manager- المديرونgroup_benefit_edit- المحررونgroup_benefit_info- المعلوماتgroup_benefit_payment_accountant_accept- المحاسبون
ملفات الأمان:
security/security_view.xml: تعريف مجموعات المستخدمينsecurity/ir.model.access.csv: صلاحيات الوصول للنماذج
⚙️ الإعدادات والتكوين
1. family.validation.setting - إعدادات التحقق من الأسرة
female_benefit_age: سن الاستفادة للإناثmale_benefit_age: سن الاستفادة للذكورexceptional_age_scientific_specialty: سن استثنائي للتخصص العلميexceptional_age_medical_specialty: سن استثنائي للتخصص الطبيexceptional_age_has_disabilities: سن استثنائي للإعاقةminor_siblings_age: سن الأشقاء القاصرينmax_income_for_benefit: الحد الأقصى للدخل للاستفادة
2. branch.settings - إعدادات الفروع
branch: الفرع (hr.department)branch_type: نوع الفرع (branches/governorates)city_id: المدينة
3. relation.settings - إعدادات صلة القرابة
relation_type: نوع الصلة (son/daughter/mother/replacement_mother/other relation)age_difference: الفرق في العمر
4. location.settings - إعدادات الموقع
location_type: نوع الموقع (member/mother_location)is_benefit: هل يستفيد؟is_far_from_family: بعيد عن الأسرة؟
5. attachments.settings - إعدادات المرفقات
attach_type: نوع المرفق (family_attach/member_attach/income_attach/etc.)is_required: مطلوب؟is_default: افتراضي؟show_in_portal: عرض في البوابة؟
6. education.settings - إعدادات التعليم
- إعدادات المستويات التعليمية، الفصول، النتائج، التخصصات
7. job.settings - إعدادات الوظائف
- قائمة الوظائف المتاحة
8. death.reason.settings - إعدادات أسباب الوفاة
- قائمة أسباب الوفاة
🔄 العمليات المجدولة (Scheduled Actions)
1. Recurrence Visit Workflow Scheduler
- التردد: يومي
- الوظيفة:
create_scheduled_visit() - الوصف: إنشاء زيارات مجدولة تلقائياً حسب إعدادات أنواع الزيارات
2. Notification: Expiry date Attachment
- التردد: يومي
- الوظيفة:
send_expiry_date_notification() - الوصف: إرسال إشعارات للمرفقات المنتهية الصلاحية
3. Update Data Auto (Daily)
- التردد: يومي
- الوظيفة:
update_data_automatically() - الوصف: تحديث البيانات تلقائياً (مثل الأعمار، الحالات)
4. Check Temporarily Exception
- التردد: يومي
- الوظيفة:
action_auto_exception() - الوصف: التحقق من الاستثناءات المؤقتة المنتهية
5. Check Member Temporarily Exception
- التردد: يومي
- الوظيفة:
action_auto_exception()(للأعضاء) - الوصف: التحقق من استثناءات الأعضاء المؤقتة
6. Send Expiring Salary Attachments Notifications
- التردد: يومي
- الوظيفة:
action_send_attachment_expiry_email() - الوصف: إرسال إشعارات لشهادات الراتب المنتهية الصلاحية
📊 التقارير
1. Benefit Report (benefit_report.py)
- تقرير شامل عن الأسرة المستفيدة
2. Family Bank Report (family_bank_report.py)
- تقرير عن الحسابات البنكية للأسر
🎨 الواجهات (Views)
النماذج الرئيسية:
benefit_view.xml: واجهة ملف الأسرةfamily_members.xml: واجهة أعضاء الأسرةservice_request.xml: واجهة طلبات الخدماتvisit.xml: واجهة الزياراتpayment_order.xml: واجهة أوامر الدفعfamily_expense_view.xml: واجهة مصروفات الأسرةgenerate_reports.xml: واجهة التقارير
الإعدادات:
benefit_config_view.xml: إعدادات الاستفادةservices_settings.xml: إعدادات الخدماتeducation_settings.xml: إعدادات التعليمfamily_validation_setting.xml: إعدادات التحقق
🧙♂️ المعالجات (Wizards)
1. Researcher Wizard (researcher_wizard.py)
- تعيين باحث للأسرة أو العضو
2. Suspend Reason Wizard (suspend_reason_wizard.py)
- إدخال سبب الإيقاف
3. Exception Wizard (exception_wizard.py)
- إدخال معلومات الاستثناء
5. Entity Refused Wizard (entity_refused_wizard.py)
- إدخال سبب الرفض
6. Entity Black List Wizard (entity_black_list_wizard.py)
- إضافة للقائمة السوداء
7. Visit Location OTP Wizard (visit_location_otp_wizard.py)
- التحقق من OTP للزيارة
8. Visit Location Refused Wizard (visit_location_refused_wizard.py)
- إدخال سبب رفض الزيارة
9. Family Bank Report Wizard (family_bank_report_wizard.py)
- معالج تقرير الحسابات البنكية
10. Service Refuse Reason Wizard (service_refuse_reason_wizard.py)
- إدخال سبب رفض الخدمة
11. Reason For Return Wizard (reason_for_return_wizard.py)
- إدخال سبب الإرجاع
📧 القوالب البريدية
1. Benefit Email Templates
- قوالب إرسال الإشعارات للأسر
2. Benefit Services Email Templates
- قوالب إشعارات الخدمات
3. Visit Email Templates
- قوالب إشعارات الزيارات
🔗 التكاملات
1. مع المحاسبة (Account)
- إنشاء قيود محاسبية للمصروفات
- ربط أوامر الدفع بدفاتر اليومية
- تتبع المدفوعات
2. مع المبيعات (Sale)
- ربط الخدمات بطلبات المبيعات
3. مع المشتريات (Purchase)
- ربط الخدمات بطلبات الشراء
4. مع الموارد البشرية (HR)
- ربط الباحثين بالموظفين
- ربط الفروع بالأقسام
5. مع الاستبيانات (Survey)
- ربط الزيارات باستبيانات التقييم
6. مع الموقع (Website)
- بوابة المستفيدين
- عرض الخدمات المتاحة
📈 إحصائيات البيانات
بناءً على فحص البيانات في النظام:
- عدد الأسر المستفيدة: 18
- عدد أعضاء الأسر: 40
- عدد طلبات الخدمات: 23
- عدد الزيارات: 18
- عدد تأكيدات المصروفات: 8
🎯 الميزات الرئيسية
1. إدارة شاملة للأسر المستفيدة
- تسجيل كامل لمعلومات الأب والأم والأعضاء
- تتبع الحالات الاجتماعية والتعليمية والصحية
- حساب تلقائي للأعمار والحالات
2. نظام ذكي لتحديد الاستفادة
- حساب تلقائي لحالة الاستفادة لكل عضو
- قواعد معقدة تعتمد على العمر، الجنس، التعليم، العمل، الدخل
- دعم الاستثناءات المؤقتة والدائمة
3. إدارة متقدمة للخدمات
- أنواع خدمات متعددة (إيجار، أجهزة، زواج، إلخ)
- حدود وقيود مرنة حسب الفئة وعدد الأعضاء
- نظام موافقات متعدد المستويات
4. نظام زيارات متطور
- زيارات يدوية وتلقائية
- مصادقة OTP للزيارات
- استبيانات تقييم مرتبطة
5. إدارة مالية متكاملة
- حساب المصروفات الشهرية (نقدي، وجبات، ملابس)
- أوامر دفع متعددة الخدمات
- تكامل كامل مع المحاسبة
6. تقارير وتحليلات
- تقارير شاملة عن الأسر
- تقارير الحسابات البنكية
- إحصائيات متعددة
7. بوابة المستفيدين
- واجهة للمستفيدين لتقديم الطلبات
- متابعة حالة الطلبات
- رفع المرفقات
🔧 الصيانة والتطوير
نقاط القوة:
✅ نظام شامل ومتكامل
✅ قواعد عمل معقدة ومرنة
✅ تكامل جيد مع موديولات Odoo الأخرى
✅ واجهات مستخدم منظمة
✅ نظام أمان قوي
نقاط التحسين المحتملة:
⚠️ بعض الكود المعلق (commented code) يحتاج تنظيف
⚠️ بعض الحقول المكررة يمكن توحيدها
⚠️ يمكن تحسين الأداء في بعض الاستعلامات المعقدة
📝 الخلاصة
موديول odex_benefit هو نظام شامل ومتطور لإدارة المنح والمساعدات، يوفر:
- إدارة كاملة للأسر المستفيدة وأعضائها
- نظام ذكي لتحديد الاستفادة
- إدارة متقدمة للخدمات والطلبات
- نظام زيارات متطور
- إدارة مالية متكاملة
- تقارير وتحليلات شاملة
النظام مصمم بشكل احترافي ويوفر مرونة عالية في التكوين والإعدادات.
تاريخ المراجعة: 2025-01-08
المراجع: AI Assistant
الإصدار: 1.0