odex25_standard/odex25_benefit/odex_benefit/MODULE_REVIEW.md

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)
    • 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_accounting_transfer(): إنشاء أمر دفع
  • 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: رمز OTP
    • otp_generated_at: وقت إنشاء OTP
    • response_id: استجابة الاستبيان

الوظائف الرئيسية:

  • generateOTP(): إنشاء رمز OTP
  • action_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)
  • الموافقات:

    • 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 - المدفوعات

  • إدارة المدفوعات للخدمات

🔐 الأمان والصلاحيات

مجموعات المستخدمين:

  1. group_benefit_researcher - الباحثون
  2. group_benefit_woman_commitee - لجنة النساء
  3. group_benefit_branch_manager - مديرو الفروع
  4. group_benefit_manager - المديرون
  5. group_benefit_edit - المحررون
  6. group_benefit_info - المعلومات
  7. 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