# 📋 مراجعة شاملة لموديول 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`: المبلغ المقدر للإيجار - `new_rent_contract`: عقد إيجار جديد؟ - **الحالة:** - `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`: رمز 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/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`** - المدفوعات - إدارة المدفوعات للخدمات --- ## 🔐 الأمان والصلاحيات ### مجموعات المستخدمين: 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