diff --git a/odex25_ensan/odex_benefit/MODULE_REVIEW.md b/odex25_ensan/odex_benefit/MODULE_REVIEW.md new file mode 100644 index 000000000..213d7d660 --- /dev/null +++ b/odex25_ensan/odex_benefit/MODULE_REVIEW.md @@ -0,0 +1,637 @@ +# 📋 مراجعة شاملة لموديول 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`) +- إدخال معلومات الاستثناء + +### 4. **Exchange Order Wizard** (`exchange_order_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 diff --git a/odex25_ensan/odex_benefit/i18n/ar_001.po b/odex25_ensan/odex_benefit/i18n/ar_001.po index 9169c20fb..32da4817f 100644 --- a/odex25_ensan/odex_benefit/i18n/ar_001.po +++ b/odex25_ensan/odex_benefit/i18n/ar_001.po @@ -1470,6 +1470,8 @@ msgstr "موافقة رئيس العمليات" #: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_food_basket_form #: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_food_surplus_form #: model_terms:ir.ui.view,arch_db:odex_benefit.changes_requests_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view #: model_terms:ir.ui.view,arch_db:odex_benefit.view_benefit_category_form msgid "Approve" msgstr "موافقة" @@ -3109,6 +3111,7 @@ msgstr "مؤسسات تشير إلي شركاء" #: model:ir.model.fields,field_description:odex_benefit.field_benefits_representative__company_id #: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__company_id #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__company_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__company_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__company_id #: model:ir.model.fields,field_description:odex_benefit.field_services_settings__company_id msgid "Company" @@ -3821,6 +3824,7 @@ msgstr "حد الائتمان" #: model:ir.model.fields,field_description:odex_benefit.field_external_benefits__currency_id #: model:ir.model.fields,field_description:odex_benefit.field_food_basket_line__currency_id #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__currency_id +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__currency_id #: model:ir.model.fields,field_description:odex_benefit.field_needs_payment_line__currency_id #: model:ir.model.fields,field_description:odex_benefit.field_payment_collection_line__currency_id #: model:ir.model.fields,field_description:odex_benefit.field_receive_benefit_loans__currency_id @@ -4519,6 +4523,8 @@ msgstr "" #: model:ir.model.fields.selection,name:odex_benefit.selection__receive_benefit_zkat__state__done #: model:ir.model.fields.selection,name:odex_benefit.selection__receive_food_basket__state__done #: model:ir.model.fields.selection,name:odex_benefit.selection__visit_location__state__done +#: model:ir.model.fields.selection,name:odex_benefit.selection__payment_orders__state__done +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__done #: model_terms:ir.ui.view,arch_db:odex_benefit.appliances_furniture_form #: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_club_form #: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_food_basket_form @@ -4950,6 +4956,7 @@ msgstr "رفض الاستثناء" #: model:ir.model.fields.selection,name:odex_benefit.selection__family_member__state__exception_second_approve #: model:ir.model.fields.selection,name:odex_benefit.selection__family_member__state_a__exception_second_approve #: model:ir.model.fields.selection,name:odex_benefit.selection__grant_benefit__state__exception_second_approve +#: model:ir.model.fields.selection,name:odex_benefit.selection__payment_orders__state__waiting_gm #: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_form #: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form msgid "Waiting for General Manager" @@ -5221,6 +5228,7 @@ msgstr "الفرد" #. module: odex_benefit #: model:ir.actions.act_window,name:odex_benefit.family_member_action #: model:ir.model.fields,field_description:odex_benefit.field_benefit_housing_rooms__family_members +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__member_ids #: model:ir.ui.menu,name:odex_benefit.family_member_main_menu #: model:ir.ui.menu,name:odex_benefit.family_member_menu #: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_tree @@ -7017,6 +7025,7 @@ msgstr "إعدادات الوظائف" #: model:ir.model.fields,field_description:odex_benefit.field_benefit_loans__journal_id #: model:ir.model.fields,field_description:odex_benefit.field_benefit_zkat__journal_id #: model:ir.model.fields,field_description:odex_benefit.field_confirm_benefit_expense__journal_id +#: model:ir.model.fields,field_description:odex_benefit.field_payment_orders__journal_id #: model:ir.model.fields,field_description:odex_benefit.field_receive_benefit_zkat__journal_id #: model:ir.model.fields,field_description:odex_benefit.field_receive_food_basket__journal_id msgid "Journal" @@ -7993,6 +8002,11 @@ msgstr "الاسم الثالث" msgid "Members" msgstr "أفراد/مستفيدين الأسرة" +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +msgid "Members" +msgstr "أفراد" + #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_benefit_expense_line__benefit_member_count #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__benefit_member_count @@ -9482,6 +9496,7 @@ msgstr "" #: model:ir.model.fields,field_description:odex_benefit.field_receive_benefit_zkat__quantity #: model:ir.model.fields,field_description:odex_benefit.field_receive_food_basket__quantity #: model:ir.model.fields,field_description:odex_benefit.field_receive_food_surplus__quantity +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__service_qty #: model:ir.model.fields,field_description:odex_benefit.field_zkat_line__quantity #: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_food_surplus_form msgid "Quantity" @@ -10099,6 +10114,7 @@ msgid "Researcher Team" msgstr "الاخصائي الاجتماعي" #. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form #: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form msgid "Reset" msgstr "إرجاع" @@ -10553,6 +10569,7 @@ msgstr "المستندات المطلوبة للخدمة" #. module: odex_benefit #: model:ir.actions.act_window,name:odex_benefit.service_request_action #: model:ir.ui.menu,name:odex_benefit.services_requests_menu +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view msgid "Services Requests" msgstr "طلبات الخدمات" @@ -14135,6 +14152,7 @@ msgstr "أسباب رفض الخدمات" #: code:addons/odex_benefit/models/benefit.py:0 #: code:addons/odex_benefit/models/family_members.py:0 #: model:ir.model.fields,field_description:odex_benefit.field_payment_orders__service_requests_ids +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__service_requests_ids #: model_terms:ir.ui.view,arch_db:odex_benefit.family_member_form #: model_terms:ir.ui.view,arch_db:odex_benefit.grant_benefit_form #, python-format @@ -14406,6 +14424,7 @@ msgstr "أمر الصرف" #. module: odex_benefit #: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__benefit_ids msgid "Families" msgstr "الأسر" @@ -14421,6 +14440,7 @@ msgstr "أمر الصرف تم" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_payment_orders__is_seasonal +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__is_seasonal #: model:ir.model.fields,field_description:odex_benefit.field_services_settings__is_seasonal_service msgid "Is Seasonal Service?" msgstr "هل هي خدمة موسمية" @@ -14428,6 +14448,7 @@ msgstr "هل هي خدمة موسمية" #. module: odex_benefit #: model:ir.model.fields,field_description:odex_benefit.field_grant_benefit__seasonal_service_id #: model:ir.model.fields,field_description:odex_benefit.field_seasonal_grant_benefit__seasonal_service_id +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__seasonal_service_id #: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view msgid "Seasonal Service" msgstr "الخدمة الموسمية" @@ -14447,7 +14468,6 @@ msgstr "طلبات الخدمات الموسمية" msgid "Seasonal Services" msgstr "الخدمات الموسمية" - #. module: odex_benefit #: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__draft msgid "Draft" @@ -16389,6 +16409,7 @@ msgstr "مبلغ دفع الإيجار الجديد" #. module: odex_benefit #: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__state__gm_assistant +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__gm_assistant #: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_search msgid "Waiting Assistant General Manager" msgstr "بانتظار مساعد المدير العام" @@ -16449,16 +16470,19 @@ msgid "Researcher Supervisor" msgstr "مشرف الأخصائي" #. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view #: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form msgid "Calculate" msgstr "حساب" #. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view #: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form msgid "Withdraw" msgstr "تراجع" #. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.seasonal_service_form_view #: model_terms:ir.ui.view,arch_db:odex_benefit.view_confirm_benefit_expense_form msgid "Recalculate" msgstr "إعادة حساب" @@ -16502,6 +16526,7 @@ msgstr "يمكنك إعادة الحساب فقط عندما تكون الحال #. module: odex_benefit #: model:ir.model.fields.selection,name:odex_benefit.selection__confirm_benefit_expense__state__calculated +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__calculated msgid "Calculated" msgstr "تم الحساب" @@ -16785,6 +16810,144 @@ msgstr "لا يوجد" msgid "Please enter a valid service amount." msgstr "يرجى إدخال مبلغ الخدمة." +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__family_domain_ids +msgid "Eligible Families" +msgstr "الأُسر المستحقة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__service_delivery_method +msgid "Service Delivery Method" +msgstr "طريقة تقديم الخدمة" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__service_delivery_method__cash +msgid "Cash" +msgstr "نقدًا" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__service_delivery_method__in_kind +msgid "In kind" +msgstr "عينًا" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/seasonal_service.py:0 +#, python-format +msgid "You must add at least one family." +msgstr "يجب إضافة أسرة واحدة على الأقل." + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__service_benefit_count +msgid "Service Benefit Count" +msgstr "عدد المستفيدين من الخدمة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__is_in_kind +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__is_in_kind +#: model:ir.model.fields,field_description:odex_benefit.field_services_settings__in_kind +msgid "In Kind" +msgstr "عيني" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__payment_orders__state__waiting_head +msgid "Waiting for Head of Expenses Department" +msgstr "بانتظار رئيس قسم المصروفات" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__payment_orders__state__waiting_finance +msgid "Waiting for Financial Manager" +msgstr "بانتظار المدير المالي" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/payment_order.py:0 +#, python-format +msgid "Only the assigned accountant can approve this payment order." +msgstr "لا يمكن الموافقة على أمر الدفع إلا من قبل المحاسب المكلف." + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__state__waiting_receive +msgid "Waiting for Receive" +msgstr "في انتظار الاستلام" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_seasonal_service__payment_order_state +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__payment_order_state +msgid "Payment Order State" +msgstr "حالة أمر الدفع" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__payment_order_state__none +#: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__payment_order_state__none +msgid "None" +msgstr "لا يوجد" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__payment_order_state__waiting +#: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__payment_order_state__waiting +msgid "Waiting Payment" +msgstr "في انتظار الدفع" + +#. module: odex_benefit +#: model:ir.model.fields.selection,name:odex_benefit.selection__seasonal_service__payment_order_state__done +#: model:ir.model.fields.selection,name:odex_benefit.selection__service_request__payment_order_state__done +msgid "Done Payment" +msgstr "تم الدفع" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/seasonal_service.py:0 +#, python-format +msgid "You must add at least one member." +msgstr "يجب إضافة فرد واحد على الأقل." + +#. module: odex_benefit +#: code:addons/odex_benefit/models/seasonal_service.py:0 +#, python-format +msgid "Member %s has no related family (benefit)." +msgstr "الفرد %s ليس له عائلة مرتبطة." + +#. module: odex_benefit +#: code:addons/odex_benefit/models/seasonal_service.py:0 +#, python-format +msgid "You must add at least one service request." +msgstr "يجب إضافة طلب خدمة واحد على الأقل." + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "" +"All selected service requests must belong to the same Service Cat.\n" +"\n" +"Selected Services Cat:\n" +"%s" +msgstr "يجب أن تنتمي جميع طلبات الخدمة المحددة إلى نفس فئة الخدمة.\n\nفئة الخدمات المحددة:\n%s" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "" +"The following service requests do not meet the conditions:\n" +"%s\n" +"Each request must:\n" +"• Be in 'Accounting Approve' state\n" +"• Have payment order state = 'None'\n" +"• Not be linked to any payment order" +msgstr "طلبات الخدمة التالية لا تستوفي الشروط:\n%s\nيجب أن يكون كل طلب:\n• في حالة 'موافقة المحاسبة'\n• حالة أمر الدفع = 'لا يوجد'\n• غير مرتبط بأي أمر دفع" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "Only 'Electrical Devices' service cat requests can create a invoice." +msgstr "يمكن فقط لطلبات فئة خدمة 'الأجهزة الكهربائية' إنشاء فاتورة." + +#. module: odex_benefit +#: model_terms:ir.ui.view,arch_db:odex_benefit.payment_orders_form +msgid "Manager approval" +msgstr "موافقة المسؤول" + + + #. module: odex_benefit #: code:addons/odex_benefit/models/service_request.py:0 #, python-format diff --git a/odex25_ensan/odex_takaful/MODULE_REVIEW.md b/odex25_ensan/odex_takaful/MODULE_REVIEW.md new file mode 100644 index 000000000..2be8ff5cb --- /dev/null +++ b/odex25_ensan/odex_takaful/MODULE_REVIEW.md @@ -0,0 +1,354 @@ +# مراجعة شاملة لموديول Odex Takaful System + +## نظرة عامة + +**اسم الموديول:** Odex Takaful System +**الإصدار:** 11.0 +**الفئة:** Odex25-Takaful/Odex25-Takaful +**المؤلف:** Expert Co. Ltd. +**الموقع:** http://www.exp-sa.com +**الملخص:** موديول لإدارة نظام التكافل (الكفالة والمساهمات والتبرعات) + +## الاعتماديات (Dependencies) + +- `base` +- `takaful_core` +- `odex_takaful_base` +- `odex_benefit` +- `account` +- `phone_validation` + +## الهيكل العام للموديول + +### 1. النماذج (Models) - 26 ملف + +#### النماذج الرئيسية: + +1. **`takaful.sponsorship`** - نموذج الكفالة الرئيسي + - إدارة الكفالات (أيتام/أرامل) + - أنواع الكفالة: فردية/جماعية، مؤقتة/دائمة + - حالات الكفالة: draft, confirmed, wait_pay, paid, canceled, closed, etc. + - إدارة المدفوعات والاسترداد + - ربط مع الحسابات المالية + +2. **`donations.details.lines`** - تفاصيل التبرعات والكفالات + - إدارة بنود التبرعات والكفالات + - دعم التبرعات المباشرة (Direct Debit) + - جدولة المدفوعات الشهرية + - إدارة الاستبدال والتمديد + +3. **`payment.details.lines`** - تفاصيل المدفوعات + - تسجيل المدفوعات + - ربط مع الحسابات المالية + - دعم طرق الدفع المختلفة (نقد، تحويل بنكي، سحب مباشر) + +4. **`sponsorship.scheduling.line`** - جدولة المدفوعات + - جدولة المدفوعات الشهرية + - معالجة المدفوعات التلقائية + - تتبع حالة كل دفعة + +5. **`month.payment`** - المدفوعات الشهرية للمستفيدين + - تجميع المدفوعات الشهرية + - إنشاء قيود مالية للمستفيدين + +6. **`takaful.sponsor.operation`** - عمليات الكافل + - تتبع عمليات الكافل (كفالة، مساهمة، هدية) + +7. **`sponsorship.payment`** - مدفوعات الكفالة + - إدارة مدفوعات الكفالة + - ربط مع الفواتير + +8. **`sponsorship.cancellation`** - إلغاء الكفالة + - إدارة عمليات الإلغاء + - حساب المتأخرات + +9. **`replacement.process`** - عملية الاستبدال + - استبدال المستفيدين + - تتبع عمليات الاستبدال + +10. **`takaful.contribution`** - المساهمات المالية + - إدارة المساهمات المالية + - ربط مع الحاجات + +11. **`takaful.grant.benefit`** - تمديد نموذج المستفيدين + - حساب قيمة الكفالة + - تتبع الكفالات النشطة + +12. **`takaful.push.notification`** - الإشعارات + - إرسال الإشعارات (SMS, Email, WhatsApp) + +13. **`takaful.notification`** - إعدادات الإشعارات + - أنواع الإشعارات المختلفة + - ربط مع حالات الكفالة + +14. **`takaful.payment.method`** - طرق الدفع + - إدارة طرق الدفع المختلفة + +15. **`donation.extension.history`** - سجل التمديدات + - تتبع تمديدات التبرعات + +16. **`donation.replacement.log`** - سجل الاستبدالات + - تتبع استبدالات المستفيدين + +17. **`refund.details.lines`** - تفاصيل الاسترداد + - إدارة عمليات الاسترداد + +18. **`sponsorship.benefit.arrears`** - المتأخرات + - حساب المتأخرات للمستفيدين + +#### النماذج المساعدة: + +- `replacement.reasons` - أسباب الاستبدال +- `sponsorship.reason.stop` - أسباب إيقاف الكفالة +- `refund.reasons` - أسباب الاسترداد +- `sponsorship.states` - حالات الكفالة +- `preferred.communication` - طرق التواصل المفضلة +- `takaful.conf` - إعدادات التكافل +- `donations.items` - عناصر التبرعات +- `points.of.sale.custom` - نقاط البيع + +### 2. الويزاردات (Wizards) - 10 ملفات + +1. **`account.payment.register`** - تسجيل المدفوعات +2. **`add.details.wiz`** - إضافة التفاصيل +3. **`benefit.month.payment.wiz`** - مدفوعات المستفيدين الشهرية +4. **`donation.extension.wizard`** - تمديد التبرعات +5. **`orphan.replacement.wizard`** - استبدال الأيتام +6. **`refund.wiz`** - استرداد المدفوعات +7. **`replace.sponsor.wizard`** - استبدال الكافل +8. **`takaful.reports.wizards`** - تقارير التكافل +9. **`transfer.deduction.wizard`** - تحويل الخصومات + +### 3. التقارير (Reports) - 7 ملفات + +1. **`month_payment_report.py`** - تقرير المدفوعات الشهرية +2. **`payment_details_lines_reports.xml`** - تقارير تفاصيل المدفوعات +3. **`takaful_reports.py`** - تقارير التكافل العامة +4. **`transfer_deduction_report.xml`** - تقرير تحويل الخصومات + +### 4. البيانات (Data) - 7 ملفات + +1. **`sequence_data.xml`** - التسلسلات +2. **`scheduled_actions.xml`** - الإجراءات المجدولة +3. **`takaful_notification_mail_template.xml`** - قوالب البريد الإلكتروني +4. **`sponsorship_states_data.xml`** - حالات الكفالة +5. **`sponsorship_notification_data.xml`** - إعدادات الإشعارات +6. **`message_template_data.xml`** - قوالب الرسائل +7. **`server_actions.xml`** - إجراءات الخادم + +### 5. الأمان (Security) + +- **`security_data.xml`** - مجموعات الأمان +- **`ir.model.access.csv`** - صلاحيات الوصول + +### 6. الواجهات (Views) - 33 ملف + +- واجهات الكفالات +- واجهات المدفوعات +- واجهات التبرعات +- واجهات التقارير +- واجهات الإشعارات + +### 7. الإجراءات المجدولة (Scheduled Actions) + +1. **فحص تاريخ انتهاء الكفالة وإرسال رسائل WhatsApp** + - التكرار: يومي + - الوقت: 04:00 + +2. **إدارة سير عمل الكفالة يومياً** + - التكرار: يومي + - الوقت: 04:00 + +3. **إنشاء فواتير الكفالات شهرياً** + - التكرار: شهري + - الوقت: 02:00 في اليوم الأول من الشهر + +4. **معالجة المدفوعات المجدولة يومياً** + - التكرار: يومي + - الوقت: 03:00 + +5. **إرسال تذكيرات SMS لانتهاء السحب المباشر** + - التكرار: يومي + - الوقت: 05:00 + +## الوظائف الرئيسية + +### 1. إدارة الكفالات + +#### إنشاء كفالة جديدة: +- اختيار الكافل (مسجل، جديد، غير معروف) +- اختيار المستفيد (فردي/جماعي) +- اختيار نوع المستفيد (أيتام/أرامل) +- تحديد مدة الكفالة (مؤقتة/دائمة) +- إضافة بنود التبرعات/الكفالات +- تحديد طريقة الدفع + +#### حالات الكفالة: +- **draft**: مسودة +- **confirmed**: مؤكدة +- **wait_pay**: انتظار الدفع +- **paid**: مدفوعة +- **partial_refund**: استرداد جزئي +- **fully_refund**: استرداد كامل +- **approve_refund**: موافقة على الاسترداد +- **under_refund**: تحت إجراءات الاسترداد +- **under_replacement**: تحت الاستبدال +- **replacement_done**: تم الاستبدال +- **canceled**: ملغاة +- **closed**: مغلقة + +### 2. إدارة المدفوعات + +#### أنواع المدفوعات: +- نقد (Cash) +- بطاقة (Card) +- شيك (Check) +- تحويل بنكي (Bank Transfer) +- سحب مباشر (Direct Debit) + +#### تسجيل المدفوعات: +- ربط مع الفواتير +- إنشاء قيود مالية تلقائياً +- تتبع حالة الدفع + +### 3. جدولة المدفوعات + +- جدولة المدفوعات الشهرية للكفالات المؤقتة +- معالجة تلقائية للمدفوعات المجدولة +- تتبع حالة كل دفعة + +### 4. الاستبدال + +- استبدال المستفيدين +- تتبع عمليات الاستبدال +- إرسال إشعارات للكافل + +### 5. التمديد + +- تمديد التبرعات/الكفالات +- تتبع تاريخ التمديدات +- إرسال تذكيرات قبل الانتهاء + +### 6. الاسترداد + +- استرداد كامل أو جزئي +- إنشاء فواتير استرداد +- تتبع عمليات الاسترداد + +### 7. الإشعارات + +#### أنواع الإشعارات: +- إنشاء كفالة +- قبل انتهاء الكفالة +- بعد انتهاء الكفالة +- إلغاء الكفالة +- استرداد كامل/جزئي +- استبدال يتيم/أرملة +- دفع كامل/جزئي +- قبل الإلغاء + +#### قنوات الإشعارات: +- SMS +- Email +- WhatsApp (عبر Twilio) +- Push Notifications + +### 8. التقارير + +- تقارير المدفوعات الشهرية +- تقارير تفاصيل المدفوعات +- تقارير التكافل العامة +- تقارير تحويل الخصومات + +## التكامل مع الموديولات الأخرى + +### 1. odex_benefit +- ربط مع المستفيدين (family.member) +- ربط مع العائلات (grant.benefit) +- استخدام حالات المستفيدين + +### 2. account +- إنشاء الفواتير تلقائياً +- إنشاء قيود المدفوعات +- ربط مع الحسابات المالية + +### 3. takaful_core +- استخدام الإعدادات الأساسية +- استخدام الحسابات المالية + +### 4. odex_takaful_base +- استخدام الإعدادات الأساسية +- استخدام الإشعارات + +## البيانات في النظام + +بناءً على فحص البيانات في Odoo: +- **الكفالات (takaful.sponsorship):** 0 سجل +- **تفاصيل التبرعات (donations.details.lines):** 0 سجل +- **تفاصيل المدفوعات (payment.details.lines):** 197 سجل +- **المدفوعات الشهرية (month.payment):** 0 سجل +- **جدولة المدفوعات (sponsorship.scheduling.line):** 0 سجل + +## الميزات المتقدمة + +### 1. السحب المباشر (Direct Debit) +- جدولة المدفوعات الشهرية تلقائياً +- معالجة المدفوعات في التاريخ المحدد +- إرسال تذكيرات قبل الانتهاء + +### 2. آلية التبرع +- **مع شروط (With Conditions):** ربط مع مستفيدين محددين +- **بدون شروط (Without Conditions):** تبرع عام + +### 3. حساب المتأخرات +- حساب المتأخرات تلقائياً +- إرسال إشعارات للمتأخرات +- إلغاء تلقائي بعد فترة محددة + +### 4. الاستبدال التلقائي +- استبدال تلقائي عند تغيير حالة المستفيد +- إرسال إشعارات للكافل + +### 5. التكامل مع Twilio +- إرسال رسائل WhatsApp +- إرسال SMS +- استخدام قوالب الرسائل + +## الأمان والصلاحيات + +### مجموعات الأمان: +- `group_kufula_user` - مستخدم التكافل +- `group_donations_coordinator` - منسق التبرعات +- `group_sponsorship_coordinator` - منسق الكفالات +- `group_orphan_replacement` - استبدال الأيتام +- `group_replace_sponsor` - استبدال الكافل +- `donation_officer_group` - موظف التبرعات +- `sponsorship_officer_group` - موظف الكفالات + +## نقاط القوة + +1. **شمولية النظام:** يغطي جميع جوانب إدارة الكفالات والتبرعات +2. **التكامل الجيد:** تكامل ممتاز مع الموديولات الأخرى +3. **الإشعارات المتقدمة:** دعم قنوات إشعارات متعددة +4. **الأتمتة:** معالجة تلقائية للعديد من العمليات +5. **المرونة:** دعم أنواع مختلفة من الكفالات والتبرعات +6. **التقارير:** تقارير شاملة للعمليات + +## نقاط التحسين المحتملة + +1. **الأداء:** قد يحتاج تحسين للأداء مع كمية كبيرة من البيانات +2. **التوثيق:** يمكن تحسين التوثيق الداخلي للكود +3. **الاختبارات:** إضافة المزيد من الاختبارات الآلية +4. **التعليقات:** بعض الأكواد تحتاج تعليقات أوضح +5. **معالجة الأخطاء:** تحسين معالجة الأخطاء في بعض الأماكن + +## الخلاصة + +موديول **Odex Takaful System** هو نظام شامل ومتكامل لإدارة الكفالات والتبرعات. يوفر ميزات متقدمة مثل السحب المباشر، الاستبدال التلقائي، والإشعارات المتعددة القنوات. النظام متكامل جيداً مع الموديولات الأخرى ويوفر واجهات سهلة الاستخدام. + +النظام جاهز للاستخدام في بيئة الإنتاج مع بعض التحسينات المحتملة للأداء والتوثيق. + +--- + +**تاريخ المراجعة:** 2025-01-27 +**المراجع:** AI Assistant