# خطة تطوير نظام إدارة المحل المتكامل

## 📋 نظرة عامة
تحويل النظام من نظام تقسيط بسيط إلى **نظام إدارة محل متكامل** يشمل:
- إدارة المخزون الكاملة
- نظام الموردين والمشتريات
- البيع النقدي
- نظام الخزائن الثلاث
- تتبع السيريال
- الإشعارات التلقائية
- الإعدادات المتقدمة

---

## 🎯 المراحل الأساسية

### المرحلة 1️⃣: إدارة المخزون
**الهدف:** تحويل المنتجات من مجرد بيانات إلى نظام مخزون حقيقي

#### الـ Models & Migrations المطلوبة:
- ✅ `Product` (موجود - يحتاج تحديث)
- 🆕 `StockMovement` - حركات المخزن
- 🆕 `ProductSerial` - أرقام السيريال

#### التعديلات على Product:
```php
// إضافة حقول جديدة:
- stock_quantity (الكمية الحالية)
- min_stock_level (الحد الأدنى)
- sku (كود المنتج)
- has_serial (هل المنتج له سيريال؟)
- is_active (منتج نشط؟)
```

#### StockMovement (حركات المخزن):
```php
- product_id
- type (in/out/adjustment)
- quantity
- reference_type (purchase/sale/contract/adjustment)
- reference_id
- before_quantity
- after_quantity
- notes
- created_by
- created_at
```

#### ProductSerial (السيريالات):
```php
- product_id
- serial_number (unique)
- status (available/sold/in_contract/returned)
- purchase_id
- sale_id
- contract_id
- notes
```

---

### المرحلة 2️⃣: نظام الخزائن

**3 خزائن رئيسية:**
1. خزينة النقدي (Cash Vault)
2. خزينة POS/البنك (Bank Vault)
3. خزينة إنستاباي (Instapay Vault)

#### Models المطلوبة:
- 🆕 `Vault` - الخزائن
- 🆕 `VaultTransaction` - حركات الخزائن
- 🆕 `VaultTransfer` - التحويلات بين الخزائن

#### Vault:
```php
- name (النقدي، POS، إنستاباي)
- code (cash, pos, instapay)
- balance (الرصيد الحالي)
- opening_balance (رصيد افتتاحي)
- is_active
```

#### VaultTransaction:
```php
- vault_id
- type (in/out)
- amount
- reference_type (sale/payment/expense/deposit/withdrawal/transfer)
- reference_id
- balance_before
- balance_after
- notes
- created_by
```

---

### المرحلة 3️⃣: الموردون والمشتريات

#### Models المطلوبة:
- 🆕 `Supplier` - الموردين
- 🆕 `Purchase` - فواتير الشراء
- 🆕 `PurchaseItem` - تفاصيل فاتورة الشراء
- 🆕 `SupplierPayment` - دفعات للموردين

#### Supplier:
```php
- name
- company_name
- phone
- email
- address
- tax_number
- balance (المبلغ المستحق له)
- is_active
```

#### Purchase:
```php
- supplier_id
- purchase_number (كود الفاتورة)
- purchase_date
- total_amount
- paid_amount
- remaining_amount
- status (pending/completed/cancelled)
- vault_id (الخزينة المدفوع منها)
- notes
- created_by
```

#### PurchaseItem:
```php
- purchase_id
- product_id
- quantity
- unit_price
- total_price
- serials (JSON - إذا المنتج له سيريال)
```

---

### المرحلة 4️⃣: البيع النقدي

#### Models المطلوبة:
- 🆕 `Sale` - فواتير البيع النقدي
- 🆕 `SaleItem` - تفاصيل الفاتورة

#### Sale:
```php
- sale_number
- customer_name (اختياري)
- customer_phone (اختياري)
- sale_date
- subtotal
- discount_percentage
- discount_amount
- tax_amount
- total_amount
- vault_id (الخزينة المحصلة فيها)
- payment_method (cash/pos/instapay)
- status (completed/cancelled)
- notes
- created_by
```

#### SaleItem:
```php
- sale_id
- product_id
- quantity
- unit_price
- subtotal
- discount_amount
- total
- serials (JSON)
```

---

### المرحلة 5️⃣: التكامل مع النظام الحالي

#### تحديثات على Models الموجودة:

**Contract:**
```php
// إضافة:
- vault_id (الخزينة اللي هتحصل فيها الأقساط)
- serials (JSON - السيريالات المرتبطة بالعقد)
```

**Payment:**
```php
// إضافة:
- vault_id (الخزينة اللي اتحصلت فيها الدفعة)
```

**Expense:**
```php
// إضافة:
- vault_id (الخزينة اللي اتدفع منها المصروف)
```

**PartnerDeposit:**
```php
// إضافة:
- vault_id
```

**PartnerWithdrawal:**
```php
// إضافة:
- vault_id
```

---

### المرحلة 6️⃣: الإشعارات

#### Models المطلوبة:
- 🆕 `Notification` (استخدام نظام Laravel المدمج)

#### أنواع الإشعارات:
1. **أقساط مستحقة** - قبل 3 أيام
2. **أقساط متأخرة** - يومياً
3. **نقص مخزون** - عند الوصول للحد الأدنى
4. **سداد موردين** - قبل الموعد بيومين
5. **انخفاض رصيد الخزينة** - أقل من حد معين

---

### المرحلة 7️⃣: الإعدادات

#### تحديث جدول Settings:
```php
// إضافات جديدة:
- default_vault_id (الخزينة الافتراضية)
- default_profit_percentage (نسبة الربح الافتراضية)
- late_fee_percentage (غرامة التأخير %)
- stock_alert_level (حد تنبيه المخزون)
- low_vault_balance_alert (حد تنبيه الخزينة)
- contract_number_prefix (بادئة رقم العقد)
- sale_number_prefix (بادئة رقم الفاتورة)
- purchase_number_prefix (بادئة رقم المشتريات)
```

---

### المرحلة 8️⃣: Filament Resources

#### Resources جديدة:
1. **VaultResource** - إدارة الخزائن
2. **SupplierResource** - الموردين
3. **PurchaseResource** - المشتريات
4. **SaleResource** - البيع النقدي
5. **StockMovementResource** - حركات المخزن
6. **ProductSerialResource** - السيريالات

#### Widgets جديدة:
1. **VaultBalancesWidget** - أرصدة الخزائن
2. **StockAlertsWidget** - تنبيهات المخزون
3. **SupplierPaymentsWidget** - مستحقات الموردين

#### Pages جديدة:
1. **VaultTransfersPage** - التحويل بين الخزائن
2. **StockAdjustmentPage** - تسوية المخزون
3. **ComprehensiveReportPage** - تقرير شامل

---

## 📊 ترتيب التنفيذ

### الأولوية 1 (Critical):
1. ✅ نظام الخزائن (أساسي لكل العمليات المالية)
2. ✅ إدارة المخزون (حركات الشراء والبيع)
3. ✅ الموردون والمشتريات

### الأولوية 2 (High):
4. ✅ البيع النقدي
5. ✅ تتبع السيريال
6. ✅ تحديث النظام الحالي (ربط بالخزائن)

### الأولوية 3 (Medium):
7. ✅ الإشعارات
8. ✅ الإعدادات المتقدمة
9. ✅ التقارير الجديدة

---

## 🔧 خطوات التنفيذ التفصيلية

### الخطوة 1: إنشاء Migrations
```bash
# الخزائن
php artisan make:migration create_vaults_table
php artisan make:migration create_vault_transactions_table
php artisan make:migration create_vault_transfers_table

# المخزون
php artisan make:migration add_stock_fields_to_products_table
php artisan make:migration create_stock_movements_table
php artisan make:migration create_product_serials_table

# الموردون
php artisan make:migration create_suppliers_table
php artisan make:migration create_purchases_table
php artisan make:migration create_purchase_items_table
php artisan make:migration create_supplier_payments_table

# البيع النقدي
php artisan make:migration create_sales_table
php artisan make:migration create_sale_items_table

# التحديثات
php artisan make:migration add_vault_id_to_contracts_table
php artisan make:migration add_vault_id_to_payments_table
php artisan make:migration add_vault_id_to_expenses_table
php artisan make:migration add_vault_id_to_partner_deposits_table
php artisan make:migration add_vault_id_to_partner_withdrawals_table
php artisan make:migration add_settings_to_settings_table
```

### الخطوة 2: إنشاء Models مع العلاقات

### الخطوة 3: إنشاء Policies & Permissions

### الخطوة 4: إنشاء Filament Resources

### الخطوة 5: إنشاء Observers لتحديث المخزون والخزائن تلقائياً

### الخطوة 6: إنشاء الإشعارات والجدولة

### الخطوة 7: التقارير الجديدة

---

## ✅ Checklist

- [ ] إنشاء كل الـ Migrations
- [ ] إنشاء كل الـ Models
- [ ] إنشاء العلاقات بين الـ Models
- [ ] إنشاء الـ Policies
- [ ] إنشاء الـ Observers
- [ ] إنشاء Filament Resources
- [ ] إنشاء الـ Widgets
- [ ] إنشاء الـ Pages الخاصة
- [ ] إنشاء نظام الإشعارات
- [ ] تحديث التقارير
- [ ] الترجمة الكاملة (AR/EN)
- [ ] اختبار شامل
- [ ] Documentation

---

## 📝 ملاحظات مهمة

1. **الـ Observers ضرورية** لتحديث المخزون والخزائن تلقائياً
2. **Transactions** مهمة جداً للعمليات المالية
3. **Soft Deletes** على كل الجداول المهمة
4. **User Tracking** - كل عملية تسجل باسم المستخدم
5. **Validation** قوية على كل الـ Forms

---

تاريخ الإنشاء: 7 مارس 2026
آخر تحديث: 7 مارس 2026
