# 📊 خطة تطبيق نظام المحاسبة المزدوجة (Double Entry Accounting System)

**التاريخ:** 20 يناير 2026  
**الحالة:** جاهز للتطبيق  
**المستوى:** متكامل مع النظام الموجود

---

## 🎯 نظرة عامة على النظام

نظام Double Entry Accounting هو نظام محاسبي متقدم يعتمد على مبدأ أساسي:
> **كل قيد مالي يجب أن يؤثر على حسابين أو أكثر، وكل ديْن يقابله دائن معادل**

### الصيغة المحاسبية الأساسية:
```
الأصول = الخصوم + حقوق الملكية
Assets = Liabilities + Equity
```

### المبدأ الأساسي:
```
مجموع الخصم (Debits) = مجموع الائتمان (Credits)
Dr = Cr
```

---

## 📋 المكونات الرئيسية للنظام

### 1️⃣ شجرة الحسابات (Chart of Accounts) - متعددة المستويات

#### البنية الهرمية:
```
المستوى 1: فئة رئيسية (Account Category)
├── المستوى 2: فئة فرعية (SubCategory)
│   ├── المستوى 3: حساب رئيسي (Main Account)
│   │   └── المستوى 4: حساب فرعي (Sub Account)
```

#### أنواع الحسابات الرئيسية:

**أ. حسابات الأصول (Assets)**
```
1000 - الأصول الحالية (Current Assets)
├── 1100 - النقد والبنك (Cash & Bank)
│   ├── 1110 - الصندوق (Cash Box)
│   ├── 1120 - البنك - حساب جاري (Bank - Current Account)
│   └── 1130 - النقد في الطريق (Cash in Transit)
├── 1200 - الذمم المدينة (Accounts Receivable)
│   ├── 1210 - العملاء الداخليين (Internal Customers)
│   └── 1220 - العملاء الخارجيين (External Customers)
├── 1300 - المخزون (Inventory)
│   ├── 1310 - مخزون المواد الخام (Raw Materials)
│   ├── 1320 - مخزون الإنتاج الجاري (Work in Progress)
│   └── 1330 - مخزون المنتجات النهائية (Finished Goods)
└── 1400 - المصروفات المقدمة (Prepaid Expenses)

2000 - الأصول الثابتة (Fixed Assets)
├── 2100 - الممتلكات والمشروعات (Property, Plant & Equipment)
├── 2200 - الأثاث والتجهيزات (Furniture & Equipment)
└── 2300 - الاستهلاك المتراكم (Accumulated Depreciation)
```

**ب. حسابات الخصوم (Liabilities)**
```
3000 - الخصوم الجارية (Current Liabilities)
├── 3100 - الذمم الدائنة (Accounts Payable)
│   ├── 3110 - الموردون (Suppliers)
│   └── 3120 - الموردون المحليون (Local Suppliers)
├── 3200 - الرواتب والأجور المستحقة (Accrued Salaries)
├── 3300 - الضرائب المستحقة (Accrued Taxes)
└── 3400 - الإيجار المستحق (Accrued Rent)

4000 - الخصوم طويلة الأجل (Long-term Liabilities)
├── 4100 - القروض طويلة الأجل (Long-term Loans)
└── 4200 - السندات المستحقة (Bonds Payable)
```

**ج. حسابات حقوق الملكية (Equity)**
```
5000 - حقوق الملكية (Equity)
├── 5100 - رأس المال (Capital)
│   ├── 5110 - رأس المال الأول (Initial Capital)
│   └── 5120 - رأس مال إضافي (Additional Capital)
├── 5200 - الأرباح المحتفظ بها (Retained Earnings)
└── 5300 - التوزيعات (Distributions)
```

**د. حسابات الإيرادات (Revenues)**
```
6000 - الإيرادات (Revenues)
├── 6100 - المبيعات (Sales)
│   ├── 6110 - مبيعات محلية (Domestic Sales)
│   └── 6120 - مبيعات صادرات (Export Sales)
├── 6200 - خصم المبيعات (Sales Discounts)
├── 6300 - عوائد المبيعات (Sales Returns)
└── 6400 - إيرادات أخرى (Other Revenues)
    ├── 6410 - إيرادات الفوائد (Interest Income)
    └── 6420 - إيرادات العمولات (Commission Income)
```

**هـ. حسابات المصروفات (Expenses)**
```
7000 - المصروفات (Expenses)
├── 7100 - تكلفة السلع المباعة (Cost of Goods Sold - COGS)
│   ├── 7110 - تكلفة المشتريات (Purchases)
│   ├── 7120 - رسوم الشحن (Freight)
│   └── 7130 - الجمارك والرسوم (Customs & Duties)
├── 7200 - مصروفات الرواتب والأجور (Salary & Wages)
├── 7300 - مصروفات الإيجار (Rent Expenses)
├── 7400 - مصروفات الكهرباء والمياه (Utilities)
├── 7500 - مصروفات الصيانة (Maintenance)
├── 7600 - مصروفات النقل والتوصيل (Transport & Delivery)
└── 7700 - مصروفات إدارية أخرى (Other Admin Expenses)
```

---

### 2️⃣ القيود اليومية (Journal Entries)

#### أنواع القيود:

**أ. القيود اليدوية (Manual Journal Entries)**
- إدخال يدوي من قبل المحاسب
- قيود التسوية (Adjusting Entries)
- قيود الإقفال (Closing Entries)
- قيود التصحيح (Correcting Entries)

**ب. القيود التلقائية (Automatic Entries)**
- عند حفظ فاتورة مبيعات
- عند حفظ فاتورة مشتريات
- عند حفظ مرتجع مبيعات
- عند حفظ مرتجع مشتريات
- عند دفع/استقبال نقود

#### مثال على قيد يدوي:
```
تاريخ: 2026-01-20
القيد: تحصيل مستحقات من العميل أحمد محمد

| الحساب | البيان | الخصم (Dr) | الائتمان (Cr) |
|-------|--------|----------|-----------|
| 1110 | النقد - صندوق | 5,000 | - |
| 1210 | ذمم مدينة - عملاء | - | 5,000 |

---
```

---

### 3️⃣ شاشة ربط القيود (Journal Mapping Configuration)

هذه الشاشة تربط العمليات المالية بحسابات الفواتير:

#### المجموعات المطلوبة:

**أ. إعدادات مبيعات (Sales Mapping)**
```
├─ حساب المبيعات (Sales Account) → 6110
├─ حساب خصم المبيعات (Sales Discount) → 6200
├─ حساب عودات المبيعات (Sales Returns) → 6300
├─ حساب الذمم المدينة (A/R) → 1210
├─ حساب التكلفة المباعة (COGS) → 7100
└─ حساب المخزون (Inventory) → 1300
```

**ب. إعدادات المشتريات (Purchase Mapping)**
```
├─ حساب المشتريات (Purchases Account) → 7110
├─ حساب خصم المشتريات (Purchase Discount) → 6200
├─ حساب عودات المشتريات (Purchase Returns) → 6300
├─ حساب الذمم الدائنة (A/P) → 3110
└─ حساب المخزون (Inventory) → 1300
```

**ج. إعدادات النقود (Cash Mapping)**
```
├─ حساب الصندوق (Cash Box) → 1110
├─ حساب البنك (Bank) → 1120
├─ حساب المصروفات النقدية (Cash Expenses) → 7200-7700
└─ حساب الإيرادات النقدية (Cash Revenues) → 6100-6400
```

---

### 4️⃣ آلية عمل القيود التلقائية

#### **أ. عند حفظ فاتورة مبيعات:**

```sql
فاتورة المبيعات:
- Product: محمص القهوة (100 وحدة)
- Unit Price: 100 جنيه
- Subtotal: 10,000 جنيه
- Tax: 1,000 جنيه
- Total: 11,000 جنيه
- Customer: محمد حسن (دفع 5,000 جنيه، المتبقي: 6,000 جنيه)

القيود التلقائية:
┌─────────────────────────────────────────┐
│ القيد 1: تسجيل المبيعات والمخزون      │
├─────────────────────────────────────────┤
│ Dr 1110 (صندوق)      | 5,000          │
│ Dr 1210 (ذمم مدينة)   | 6,000          │
│ Cr 6110 (مبيعات)      |      | 10,000 │
│ Cr 2050 (ضريبة إضافية)|      | 1,000  │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│ القيد 2: تخفيض المخزون (COGS)          │
├─────────────────────────────────────────┤
│ Dr 7100 (تكلفة مباعة) | 6,000          │
│ Cr 1300 (مخزون)       |      | 6,000  │
└─────────────────────────────────────────┘
```

#### **ب. عند حفظ فاتورة مشتريات:**

```sql
فاتورة المشتريات:
- Product: قهوة حبوب (500 كيس)
- Unit Price: 50 جنيه
- Subtotal: 25,000 جنيه
- Tax: 2,500 جنيه
- Total: 27,500 جنيه
- Supplier: نور للقهوة (دفع: 15,000 جنيه)

القيود التلقائية:
┌─────────────────────────────────────────┐
│ القيد 1: تسجيل المشتريات               │
├─────────────────────────────────────────┤
│ Dr 1300 (مخزون)       | 25,000         │
│ Dr 2050 (ضريبة مدفوعة)| 2,500          │
│ Cr 1110 (نقد مدفوع)   |      | 15,000 │
│ Cr 3110 (ذمم دائنة)   |      | 12,500 │
└─────────────────────────────────────────┘
```

#### **ج. عند دفع نقود (Customer Payment):**

```sql
تحصيل من العميل محمد حسن: 6,000 جنيه

القيد:
┌─────────────────────────────────────────┐
│ Dr 1110 (صندوق)       | 6,000          │
│ Cr 1210 (ذمم مدينة)   |      | 6,000  │
└─────────────────────────────────────────┘
```

---

### 5️⃣ التقارير المالية (Financial Reports)

#### **أ. ميزان المراجعة (Trial Balance)**

يعرض جميع الحسابات برصيدها الحالي (خصم/ائتمان):

```
ميزان المراجعة - 2026-01-20

| الحساب | الرصيد الخصم | الرصيد الائتمان |
|-------|----------|-----------|
| 1110 - النقد | 45,000 | - |
| 1210 - ذمم مدينة | 125,000 | - |
| 1300 - مخزون | 350,000 | - |
| 3110 - ذمم دائنة | - | 175,000 |
| 5100 - رأس المال | - | 250,000 |
| 6110 - مبيعات | - | 500,000 |
| 7100 - تكلفة مباعة | 300,000 | - |
|-------|----------|-----------|
| الإجمالي | 820,000 | 925,000 |

⚠️ **ملاحظة:** التوازن مفقود - هناك خطأ بقيمة 105,000 جنيه
```

#### **ب. قائمة الدخل (Income Statement)**

تظهر الربح أو الخسارة في فترة محددة:

```
قائمة الدخل
من 2026-01-01 إلى 2026-01-31

الإيرادات:
├── المبيعات             500,000
├── ناقص: خصم المبيعات    (25,000)
├── ناقص: عودات المبيعات  (15,000)
└── صافي المبيعات        460,000

تكلفة السلع المباعة:
├── مخزون افتتاحي        100,000
├── إضافة: مشتريات       280,000
├── ناقص: مخزون إغلاقي   (350,000)
└── تكلفة مباعة          30,000

صافي الربح الإجمالي      430,000

المصروفات:
├── رواتب وأجور          120,000
├── إيجار                30,000
├── مصروفات كهرباء        8,000
├── مصروفات أخرى         15,000
└── إجمالي المصروفات     173,000

صافي الربح قبل الضريبة   257,000
ناقص: الضريبة (15%)      (38,550)
صافي الربح بعد الضريبة   218,450
```

#### **ج. الميزانية العمومية (Balance Sheet)**

تظهر المركز المالي في تاريخ معين:

```
الميزانية العمومية
كما في 2026-01-31

الأصول:
  الأصول الجارية:
  ├── النقد                45,000
  ├── ذمم مدينة          125,000
  ├── مخزون              350,000
  └── إجمالي الجارية     520,000
  
  الأصول الثابتة:
  ├── معدات             200,000
  ├── ناقص استهلاك       (20,000)
  └── إجمالي الثابتة     180,000

إجمالي الأصول:          700,000

الخصوم:
  الخصوم الجارية:
  ├── ذمم دائنة          175,000
  └── إجمالي الجارية     175,000

حقوق الملكية:
├── رأس المال           250,000
├── أرباح مثبتة         218,450
└── إجمالي الملكية      468,450

إجمالي الخصوم والملكية: 643,450
```

#### **د. تقرير المركز المالي (Financial Position Report)**

يجمع بين المركز المالي والربحية:

```
تقرير المركز المالي - يناير 2026

النسب المالية:
├── نسبة السيولة الحالية: 2.97
├── نسبة الملاءة: 3.00
├── نسبة الربح: 47.39%
└── العائد على الاستثمار: 46.72%
```

---

## 🔧 خطة التطبيق التفصيلية

### المرحلة الأولى: إعداد قاعدة البيانات (Week 1-2)

#### 1. إنشاء جداول قاعدة البيانات:

```sql
-- جدول شجرة الحسابات
CREATE TABLE chart_of_accounts (
    id BIGINT PRIMARY KEY,
    code VARCHAR(20) UNIQUE,           -- 1000, 1100, 1110 إلخ
    name VARCHAR(255),
    name_ar VARCHAR(255),
    account_type ENUM('asset', 'liability', 'equity', 'revenue', 'expense'),
    normal_balance ENUM('debit', 'credit'),
    parent_id BIGINT,                   -- للتسلسل الهرمي
    level INT,                          -- 1, 2, 3, 4
    description TEXT,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

-- جدول القيود اليومية
CREATE TABLE journal_entries (
    id BIGINT PRIMARY KEY,
    entry_number VARCHAR(50) UNIQUE,    -- JE-2026-0001
    entry_date DATE,
    description TEXT,
    description_ar TEXT,
    reference_type ENUM('manual', 'sale', 'purchase', 'payment', 'adjustment'),
    reference_id BIGINT,
    posted BOOLEAN DEFAULT FALSE,
    posted_at TIMESTAMP,
    posted_by BIGINT,
    notes TEXT,
    created_by BIGINT,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

-- جدول تفاصيل القيود
CREATE TABLE journal_entry_lines (
    id BIGINT PRIMARY KEY,
    journal_entry_id BIGINT,
    account_id BIGINT,
    debit DECIMAL(15,2) DEFAULT 0,
    credit DECIMAL(15,2) DEFAULT 0,
    description TEXT,
    created_at TIMESTAMP
);

-- جدول إعدادات ربط القيود
CREATE TABLE journal_mappings (
    id BIGINT PRIMARY KEY,
    transaction_type ENUM('sale', 'purchase', 'payment', 'receipt'),
    field_name VARCHAR(100),
    account_id BIGINT,
    company_id BIGINT,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

-- جدول الأرصدة (يُحدّث تلقائياً)
CREATE TABLE account_balances (
    id BIGINT PRIMARY KEY,
    account_id BIGINT,
    balance_date DATE,
    debit_balance DECIMAL(15,2) DEFAULT 0,
    credit_balance DECIMAL(15,2) DEFAULT 0,
    created_at TIMESTAMP
);
```

#### 2. إنشاء Migrations في Laravel:

```
database/migrations/
├── 2026_01_20_000001_create_chart_of_accounts_table.php
├── 2026_01_20_000002_create_journal_entries_table.php
├── 2026_01_20_000003_create_journal_entry_lines_table.php
├── 2026_01_20_000004_create_journal_mappings_table.php
└── 2026_01_20_000005_create_account_balances_table.php
```

---

### المرحلة الثانية: بناء الـ Models (Week 2-3)

#### ملفات Models:

```
app/Models/Accounting/
├── ChartOfAccount.php
├── JournalEntry.php
├── JournalEntryLine.php
├── JournalMapping.php
└── AccountBalance.php
```

#### 1. Model الحسابات:

```php
class ChartOfAccount extends Model {
    // علاقات
    - hasMany: JournalEntryLines
    - belongsTo: parent ChartOfAccount
    - hasMany: children ChartOfAccounts
    - belongsToMany: JournalMappings
    
    // Methods
    - getCurrentBalance()
    - getSubAccounts()
    - getHierarchyPath()
    - canBeDeleted()
}
```

#### 2. Model القيود:

```php
class JournalEntry extends Model {
    // علاقات
    - hasMany: JournalEntryLines
    - belongsTo: User (created_by)
    - belongsTo: User (posted_by)
    
    // Scopes
    - posted()
    - unposted()
    - byType($type)
    - dateRange($from, $to)
    
    // Methods
    - post()
    - unpost()
    - isBalanced()
    - getTotalDebits()
    - getTotalCredits()
}
```

---

### المرحلة الثالثة: بناء Filament Resources (Week 3-4)

#### 1. ChartOfAccountsResource

```
Features:
├─ Create/Edit/Delete الحسابات
├─ عرض الهيكل الهرمي (Tree View)
├─ Validation قوي
├─ منع حذف الحسابات المستخدمة
└─ Import من ملف Excel
```

#### 2. JournalEntriesResource

```
Features:
├─ إدخال يدوي للقيود
├─ Validation: مجموع الخصم = مجموع الائتمان
├─ Post/Unpost entries
├─ Approval workflow (حسب الصلاحيات)
└─ Audit trail (من غير ما يحذف)
```

#### 3. JournalMappingResource

```
Features:
├─ ربط حسابات للمبيعات
├─ ربط حسابات للمشتريات
├─ ربط حسابات للنقود
├─ Validation: تأكد من وجود جميع الحسابات المطلوبة
└─ Preview: اعرض كيف هتطلع القيود
```

---

### المرحلة الرابعة: القيود التلقائية (Week 4-5)

#### 1. Listeners للعمليات:

```php
app/Listeners/Accounting/
├── SaleCreatedListener.php      → عند حفظ مبيعات
├── PurchaseCreatedListener.php  → عند حفظ مشتريات
├── PaymentReceivedListener.php  → عند استقبال نقود
├── PaymentPaidListener.php      → عند دفع نقود
└── ReturnCreatedListener.php    → عند حفظ مرتجع
```

#### 2. Services للعمليات:

```php
app/Services/Accounting/
├── SalesJournalService.php      → قيود المبيعات
├── PurchaseJournalService.php   → قيود المشتريات
├── PaymentJournalService.php    → قيود النقود
└── JournalEntryService.php      → خدمة عامة للقيود
```

---

### المرحلة الخامسة: التقارير (Week 5-6)

#### 1. TrialBalanceReport

```
- عرض جميع الحسابات
- مجموع الخصم والائتمان
- فلاتر: حسب التاريخ، نوع الحساب
- تصدير PDF/Excel
```

#### 2. IncomeStatementReport

```
- الإيرادات (مع التفاصيل)
- تكلفة السلع المباعة
- المصروفات
- الربح/الخسارة
- فترة محددة
```

#### 3. BalanceSheetReport

```
- الأصول (جاري + ثابتة)
- الخصوم (جاري + طويلة الأجل)
- حقوق الملكية
- تاريخ محدد
- التحقق من التوازن
```

#### 4. FinancialPositionReport

```
- النسب المالية
- تحليل الاتجاهات
- مقارنة مع فترات سابقة
- مؤشرات الأداء
```

---

## 📁 هيكل المشروع الكامل

```
app/
├── Models/
│   └── Accounting/
│       ├── ChartOfAccount.php
│       ├── JournalEntry.php
│       ├── JournalEntryLine.php
│       ├── JournalMapping.php
│       └── AccountBalance.php
│
├── Filament/
│   ├── Resources/
│   │   └── Accounting/
│   │       ├── ChartOfAccountResource.php
│   │       ├── JournalEntryResource.php
│   │       ├── JournalMappingResource.php
│   │       └── Pages/
│   │           ├── CreateChartOfAccount.php
│   │           ├── EditChartOfAccount.php
│   │           └── ListChartOfAccounts.php
│   │
│   └── Pages/
│       └── Accounting/
│           ├── TrialBalanceReport.php
│           ├── IncomeStatementReport.php
│           ├── BalanceSheetReport.php
│           └── FinancialPositionReport.php
│
├── Services/
│   └── Accounting/
│       ├── ChartOfAccountService.php
│       ├── JournalEntryService.php
│       ├── SalesJournalService.php
│       ├── PurchaseJournalService.php
│       ├── PaymentJournalService.php
│       ├── ReportService.php
│       └── BalanceCalculationService.php
│
├── Listeners/
│   └── Accounting/
│       ├── SaleCreatedListener.php
│       ├── PurchaseCreatedListener.php
│       ├── PaymentReceivedListener.php
│       └── PaymentPaidListener.php
│
├── Events/
│   └── Accounting/
│       ├── JournalEntryPosted.php
│       ├── JournalEntryUnposted.php
│       └── JournalEntryCreated.php
│
└── Exports/
    └── Accounting/
        ├── TrialBalanceExport.php
        ├── IncomeStatementExport.php
        └── BalanceSheetExport.php

database/
├── migrations/
│   ├── 2026_01_20_000001_create_chart_of_accounts_table.php
│   ├── 2026_01_20_000002_create_journal_entries_table.php
│   ├── 2026_01_20_000003_create_journal_entry_lines_table.php
│   ├── 2026_01_20_000004_create_journal_mappings_table.php
│   └── 2026_01_20_000005_create_account_balances_table.php
│
└── seeders/
    ├── ChartOfAccountsSeeder.php
    └── JournalMappingSeeder.php

lang/
├── ar/filament/accounting/
│   ├── chart_of_accounts.php
│   ├── journal_entries.php
│   ├── journal_mappings.php
│   └── reports.php
├── en/filament/accounting/
│   └── (الترجمات الإنجليزية)
└── fr/filament/accounting/
    └── (الترجمات الفرنسية)
```

---

## 🎯 المميزات الإضافية

### 1. **التدقيق والتحكم (Audit & Control)**
- Audit trail لكل عملية
- منع تعديل القيود المنشورة (Posted)
- تتبع من قام بكل عملية ومتى
- سجل كامل للتغييرات

### 2. **الموافقات والصلاحيات**
- Workflow للموافقة على القيود
- صلاحيات حسب الدور:
  - محاسب: إدخال قيود
  - مدير: مراجعة وموافقة
  - مدير عام: تقارير فقط

### 3. **التكامل مع النظام الموجود**
- ربط Sales/Purchases بـ الحسابات
- قيود تلقائية عند كل عملية
- تحديث الأرصدة تلقائياً
- عدم تعارض مع العمليات الحالية

### 4. **الأداء والتحسين**
- Caching للأرصدة
- Batch processing للقيود
- قائمة الانتظار (Queue) للعمليات الثقيلة
- فهرسة قوية على قاعدة البيانات

### 5. **الأمان**
- Encryption للبيانات الحساسة
- منع التزوير (Tamper-proof)
- Audit trail غير قابل للحذف
- نسخ احتياطية يومية

---

## 📊 معادلات الحساب

### 1. **حساب رصيد الحساب:**
```
إذا كان normal_balance = 'debit':
    رصيد الحساب = مجموع الخصم - مجموع الائتمان

إذا كان normal_balance = 'credit':
    رصيد الحساب = مجموع الائتمان - مجموع الخصم
```

### 2. **التحقق من توازن القيد:**
```
مجموع الخصم == مجموع الائتمان
الفرق يجب أن يكون = 0
```

### 3. **معادلة المحاسبة:**
```
الأصول = الخصوم + حقوق الملكية
A = L + E

يجب أن تكون صحيحة دائماً!
```

---

## 🔍 أمثلة عملية

### مثال 1: فاتورة مبيعات نقداً

```
البيانات:
- منتج: 100 وحدة بـ 50 جنيه = 5,000 جنيه
- ضريبة: 500 جنيه
- المجموع: 5,500 جنيه
- الدفع: نقداً

القيود:
Dr 1110 (النقد)              5,500
    Cr 6110 (المبيعات)              5,000
    Cr 2050 (الضريبة)                 500

Dr 7100 (COGS)               3,000 (تكلفة 100 وحدة)
    Cr 1300 (المخزون)                3,000
```

### مثال 2: فاتورة مشتريات بالآجل

```
البيانات:
- مشتريات: 2,000 جنيه
- ضريبة: 200 جنيه
- المجموع: 2,200 جنيه
- الدفع: 40% نقداً، الباقي آجل

القيود:
Dr 1300 (المخزون)           2,000
Dr 2050 (ضريبة مدفوعة)        200
    Cr 1110 (النقد)                   880 (40%)
    Cr 3110 (ذمم دائنة)            1,320 (60%)
```

---

## ✅ معايير الجودة

### Code Quality:
- ✅ Pest Tests (Unit + Feature)
- ✅ Laravel Code Style
- ✅ Type Hinting
- ✅ Documentation

### Database:
- ✅ Proper Indexing
- ✅ Referential Integrity
- ✅ Audit Trail
- ✅ Data Validation

### Performance:
- ✅ Query Optimization
- ✅ Caching Strategy
- ✅ Pagination
- ✅ Batch Processing

---

## 📅 الجدول الزمني

| الأسبوع | المهام | الحالة |
|-------|--------|--------|
| 1-2 | إعداد DB + Models | خطة |
| 2-3 | Filament Resources | خطة |
| 3-4 | الواجهات والـ Forms | خطة |
| 4-5 | القيود التلقائية | خطة |
| 5-6 | التقارير | خطة |
| 6 | Testing & QA | خطة |
| 7 | Deployment | خطة |

---

## 🚀 الخطوة التالية

ما تريد تبدأ فيه أولاً؟

1. **إنشاء جداول قاعدة البيانات**
2. **إنشاء Models**
3. **بناء Filament Resources**
4. **إعداد القيود التلقائية**
5. **بناء التقارير**

اختر المرحلة التي تريد البدء بها الآن! 🎯
