# خطوات إكمال نظام الثلاجات والأراضي

## ✅ ما تم إنجازه

1. ✅ إنشاء جميع ملفات الموديلات (Models)
   - Freezer
   - FreezerMovement
   - FreezerLabor
   - FreezerInspection
   - Land
   - LandExpense
   - LandIncome

2. ✅ إنشاء جميع ملفات Filament Resources
   - FreezerResource مع جميع الصفحات والنماذج والجداول
   - FreezerMovementResource
   - FreezerLaborResource
   - FreezerInspectionResource
   - LandResource مع RelationManagers
   - LandExpenseResource
   - LandIncomeResource

3. ✅ إنشاء جميع migrations
   - freezers
   - freezer_movements
   - freezer_labors
   - freezer_inspections
   - lands
   - land_expenses
   - land_incomes

4. ✅ تشغيل الـ migrations بنجاح

5. ✅ إنشاء Seeders للـ Journal Mappings
   - FreezerJournalMappingSeeder
   - LandJournalMappingSeeder

6. ✅ إضافة القيود المحاسبية التلقائية في الموديلات

---

## ⏳ الخطوات المتبقية

### 1. إعداد الحسابات المحاسبية

يجب تحديث `account_id` في الـ Seeders بناءً على الحسابات المتوفرة في نظامك.

**خطوات العمل:**

```bash
# 1. عرض الحسابات المحاسبية المتاحة
php artisan tinker
```

ثم في Tinker:
```php
$accounts = \App\Models\Accounting\ChartOfAccount::where('tenant_id', 1)->get(['id', 'code', 'name', 'name_ar', 'account_type']);
foreach($accounts as $account) {
    echo "{$account->id} | {$account->code} | {$account->name_ar} | {$account->account_type}\n";
}
```

**2. تحديث Seeders:**

افتح الملفات التالية وحدّث `account_id`:
- `database/seeders/FreezerJournalMappingSeeder.php`
- `database/seeders/LandJournalMappingSeeder.php`

**الحسابات المطلوبة لنظام الثلاجات:**
- حساب الخزينة/الصندوق (Cash)
- حساب إيرادات الثلاجات (Income)
- حساب مصروفات الثلاجات (Expense)
- حساب العملاء/الذمم المدينة (Accounts Receivable)
- حساب المخزون/المبيعات (Inventory/Sales)
- حساب مصروفات العمالة (Labor Expense)
- حساب مصروفات الفحص (Inspection Expense)

**الحسابات المطلوبة لنظام الأراضي:**
- حساب الخزينة/الصندوق (Cash)
- حساب إيرادات الأراضي (Land Income)
- حساب مصروفات الأراضي (Land Expense)

**3. تشغيل الـ Seeders:**

```bash
php artisan db:seed --class=FreezerJournalMappingSeeder
php artisan db:seed --class=LandJournalMappingSeeder
```

---

### 2. إعداد الصلاحيات (Permissions)

قد تحتاج إلى إعداد الصلاحيات لنظام الثلاجات والأراضي:

```bash
php artisan shield:generate --all
```

أو يدوياً من لوحة التحكم:
- افتح **Shield** → **Roles**
- اختر الدور المطلوب
- فعّل الصلاحيات للموارد الجديدة:
  - FreezerResource
  - FreezerMovementResource
  - FreezerLaborResource
  - FreezerInspectionResource
  - LandResource
  - LandExpenseResource
  - LandIncomeResource

---

### 3. الاختبار

**أ) اختبار نظام الثلاجات:**

1. إنشاء ثلاجة جديدة:
   - اذهب إلى **إدارة الثلاجات** → **الثلاجات**
   - أنشئ ثلاجة جديدة مع تحديد السعة والوحدة

2. إضافة حركة إيراد:
   - اذهب إلى **حركات الثلاجة**
   - اختر نوع الحركة: **إيراد**
   - أدخل البيانات (رقم العضو، جملة اللزام، سعر الوالفير)
   - تحقق من حساب المبلغ تلقائيًا

3. إضافة مصروف عمالة:
   - اذهب إلى **مصروفات العمالة**
   - اختر النوع (إدخال أو إخراج)
   - أدخل المبلغ والبيانات

4. إضافة مصروف فحص:
   - اذهب إلى **مصروفات الفحص**
   - اختر النوع (دخول أو خروج)
   - أدخل رسوم الهيئة والضرائب
   - تحقق من حساب الإجمالي تلقائيًا

5. التحقق من القيود المحاسبية:
   - اذهب إلى **المحاسبة** → **القيود اليومية**
   - تحقق من إنشاء القيود تلقائيًا

**ب) اختبار نظام الأراضي:**

1. إنشاء أرض جديدة:
   - اذهب إلى **إدارة الأراضي** → **الأراضي**
   - أنشئ أرض مع تحديد المساحة

2. إضافة مصروف:
   - اذهب إلى **مصروفات الأراضي**
   - اختر نوع المصروف (عمالة، صيانة، إلخ)

3. إضافة إيراد:
   - اذهب إلى **إيرادات الأراضي**
   - أدخل بيانات المحصول
   - تحقق من حساب الصافي تلقائيًا

4. التحقق من القيود المحاسبية

---

### 4. إصلاح الأخطاء البرمجية (Optional)

هناك بعض الأخطاء البسيطة في الملفات التالية (لا تؤثر على عمل النظام):

**أ) استيراد Classes في LandExpenseResource و LandIncomeResource:**
- الأخطاء تتعلق باستيراد `Forms\Components\Grid` و `Forms\Components\Section`
- هذه مجرد تحذيرات من PHPStan ولن تؤثر على عمل النظام

**ب) استيراد Classes في Tables:**
- بعض ملفات الجداول تحتاج استيراد `ActionGroup`, `ViewAction`, إلخ
- يمكن تجاهلها حاليًا

**ج) استخدام tenant() function:**
- في ملف `ListFreezerMovements.php`، يجب استبدال `tenant('id')` بـ `auth()->user()->tenant_id`

---

### 5. التوثيق للمستخدم النهائي

قد تحتاج إلى إنشاء:
- دليل استخدام للمستخدمين
- فيديوهات تعليمية
- أسئلة شائعة (FAQ)

---

## 📋 قائمة التحقق النهائية

- [ ] تحديث account_id في FreezerJournalMappingSeeder
- [ ] تحديث account_id في LandJournalMappingSeeder
- [ ] تشغيل الـ Seeders
- [ ] إعداد الصلاحيات (Permissions)
- [ ] اختبار نظام الثلاجات
- [ ] اختبار نظام الأراضي
- [ ] التحقق من القيود المحاسبية
- [ ] مراجعة التقارير
- [ ] توثيق للمستخدم النهائي

---

## 📚 ملفات مرجعية

- **الدليل الكامل**: `FREEZER_LAND_SYSTEM_GUIDE.md`
- **الموديلات**: `app/Models/`
- **الـ Resources**: `app/Filament/Resources/`
- **الـ Migrations**: `database/migrations/`
- **الـ Seeders**: `database/seeders/`

---

## 🎉 بعد الانتهاء من جميع الخطوات

سيكون لديك نظام متكامل لإدارة الثلاجات والأراضي مع:
- ✅ تتبع دقيق للحركات المالية
- ✅ قيود محاسبية تلقائية
- ✅ تقارير شاملة
- ✅ واجهة مستخدم سهلة
- ✅ دعم multi-tenancy

---

**تاريخ الإنشاء**: 27 يناير 2026  
**الحالة**: جاهز للاختبار بعد إعداد الحسابات المحاسبية
