# 🏗️ OfficeFurniturePro — خطة بناء سيستم إدارة شركة خزائن وأثاث مكتبي

> **التقنيات المستخدمة:** Laravel 11 + DataTables Yajra AJAX + Spatie Permission + RTL Arabic Support
>
> **النمط المعماري:** Repository Pattern + Service Layer
>
> **عدد الـ Prompts:** 10 prompts بالترتيب لبناء السيستم كامل

---

## 📌 ملاحظات قبل البدء

1. قبل ما تبعت أي prompt من اللي تحت، ابعت الـ context ده معاه:
   > "السيستم اسمه OfficeFurniturePro، Laravel 11، يستخدم Repository + Service Pattern، DataTables Yajra AJAX، Spatie Permission، RTL Arabic، AdminLTE 3 RTL. أكمل من حيث وقفنا في الـ Prompt السابق."

2. اعمل **Git commit** بعد كل prompt علشان لو حصل غلط ترجع.

3. اعمل **اختبار يدوي** لكل موديول قبل ما تروح للي بعده.

4. مش لازم تبعت الـ prompt كامل دفعة واحدة — تقدر تقسمه لجزئين لو حسيت الـ output هيكون كبير.

---

## **Prompt #1 — تجهيز المشروع والبنية الأساسية**
### Project Setup & Architecture

```
أنشئ مشروع Laravel 11 جديد لإدارة شركة خزائن وأثاث مكتبي باسم "OfficeFurniturePro".

المتطلبات:
1. ثبّت الباكدجات التالية:
   - laravel/breeze (للـ Authentication)
   - spatie/laravel-permission (للصلاحيات والأدوار)
   - yajra/laravel-datatables-oracle (للـ DataTables AJAX)
   - barryvdh/laravel-dompdf (لطباعة الفواتير وعروض الأسعار)
   - maatwebsite/excel (لتصدير البيانات)
   - intervention/image (لمعالجة صور المنتجات)
   - mcamara/laravel-localization (لدعم العربية والإنجليزية)

2. اعمل البنية المعمارية التالية (Repository + Service Pattern):
   app/
   ├── Http/Controllers/Admin/
   ├── Models/
   ├── Repositories/
   │   ├── Contracts/ (Interfaces)
   │   └── Eloquent/ (Implementations)
   ├── Services/ (Business Logic)
   ├── DataTables/ (Yajra DataTable Classes)
   ├── Http/Requests/Admin/ (Form Requests للـ Validation)
   └── Traits/ (Reusable Traits)

3. اعمل BaseRepository و BaseService كـ abstract classes.

4. ضبط ملف config/app.php للغة العربية كافتراضية مع دعم RTL.

5. اعمل Layout أساسي بـ AdminLTE 3 RTL أو Tabler RTL مع:
   - Sidebar متجاوب
   - Top navbar فيه تبديل اللغة + الإشعارات + بروفايل المستخدم
   - Footer
   - دعم كامل للـ RTL والخط العربي (Cairo أو Tajawal)

6. اعمل Toastr للـ Flash Messages بالعربي.

7. اعمل seeder لإنشاء User أساسي (Super Admin) + Roles الأساسية:
   (super-admin, admin, sales, warehouse, accountant, installer)

أكتبلي الـ commands بالترتيب + هيكل الفولدرات + الكود الكامل لكل ملف أساسي.
```

---

## **Prompt #2 — نظام الصلاحيات والمستخدمين والأدوار**
### Users, Roles & Permissions

```
بناءً على المشروع، اعمل موديول كامل لإدارة:
1. المستخدمين (Users)
2. الأدوار (Roles)
3. الصلاحيات (Permissions)

المتطلبات:

1. الـ Migrations لـ Spatie Permission + إضافة حقول للـ users:
   (phone, avatar, status, branch_id, last_login_at)

2. اعمل PermissionsSeeder بالـ permissions التالية مجمعة لكل موديول:
   - users.* (view, create, edit, delete)
   - roles.*
   - customers.*, suppliers.*, products.*, categories.*
   - warehouses.*, stock.*
   - quotations.*, sales_orders.*, purchase_orders.*
   - invoices.*, payments.*
   - installations.*
   - reports.*, settings.*

3. اعمل CRUD كامل لكل من:
   - UserController + UserRepository + UserService + UserDataTable
   - RoleController + RoleRepository + RoleService + RoleDataTable
   - PermissionController (View + Assign فقط)

4. صفحة Users تحتوي على:
   - DataTable AJAX بفلاتر (الفرع، الدور، الحالة)
   - Modal لإضافة/تعديل المستخدم مع رفع صورة
   - Multi-select للأدوار
   - تفعيل/تعطيل المستخدم
   - تغيير الباسورد بمودال منفصل

5. صفحة Roles تحتوي على:
   - DataTable AJAX
   - Modal لإضافة دور جديد
   - صفحة Assign Permissions بـ checkboxes مجمعة بالموديول مع زرار "تحديد الكل لهذا الموديول"

6. اعمل Middleware للتحقق من الصلاحيات على مستوى الراوتس + Blade directives (@can, @role).

7. كل العناصر بالعربي مع Validation Messages بالعربي.

أكتبلي كل الكود كامل بدون اختصارات.
```

---

## **Prompt #3 — الإعدادات الأساسية**
### Settings, Branches & Warehouses

```
اعمل موديولات الإعدادات الأساسية:

1. **إعدادات الشركة (Company Settings)**:
   - جدول settings (key-value) أو single row
   - الحقول: اسم الشركة، الشعار، العنوان، التليفون، الإيميل، السجل التجاري، البطاقة الضريبية، نسبة الضريبة، العملة، الـ footer للفواتير
   - صفحة واحدة بـ Tabs (معلومات الشركة، الفواتير، الإيميل، النظام)

2. **الفروع (Branches)**:
   - الحقول: الاسم، الكود، العنوان، التليفون، المدير، الحالة
   - CRUD كامل بـ DataTable AJAX

3. **المستودعات (Warehouses)**:
   - الحقول: الاسم، الكود، الفرع التابع له، العنوان، أمين المخزن، الحالة، الـ type (رئيسي/فرعي/معرض)
   - CRUD كامل بـ DataTable AJAX
   - علاقة مع Branch (Belongs To)

4. **العملات (Currencies)** - اختياري لو هيتعامل بأكتر من عملة:
   - الحقول: الاسم، الكود (EGP, USD, SAR)، الرمز، سعر الصرف، الافتراضية
   - CRUD كامل

5. **وحدات القياس (Units)**:
   - قطعة، متر، متر مربع، كرتونة، إلخ.
   - CRUD بسيط

6. **طرق الدفع (Payment Methods)**:
   - كاش، تحويل بنكي، شيك، فيزا
   - CRUD بسيط

كل موديول يحتوي على:
- Repository + Service + Controller + DataTable + Form Requests
- Modals للإضافة والتعديل
- Soft Deletes
- Activity Log (سجل التعديلات)
- صلاحيات مربوطة بـ Spatie

اكتبلي الكود كامل + الـ Migrations + الـ Routes + الـ Views.
```

---

## **Prompt #4 — إدارة المنتجات والتصنيفات**
### Products & Categories

```
اعمل موديول إدارة المنتجات والتصنيفات (دي جوهر سيستم خزائن وأثاث مكتبي):

1. **التصنيفات (Categories)** - شجرية (Nested):
   - الحقول: الاسم بالعربي، الاسم بالإنجليزي، الـ parent_id، الصورة، الترتيب، الحالة
   - استخدم kalnoy/nestedset أو self-referencing
   - أمثلة: خزائن > خزائن ملفات > خزائن ملفات معدنية
            أثاث مكتبي > مكاتب > مكاتب مدير
   - CRUD بـ DataTable AJAX + شجرة عرض (Tree View)

2. **الماركات (Brands)** - اختياري:
   - الاسم، الشعار، البلد، الحالة

3. **المنتجات (Products)** - الجزء الأهم:

   الحقول الأساسية:
   - SKU (كود تلقائي + يدوي)
   - Barcode
   - الاسم بالعربي والإنجليزي
   - الوصف (Rich Text بـ TinyMCE أو CKEditor)
   - التصنيف، الماركة، الوحدة
   - النوع (منتج جاهز / منتج تصنيع / خدمة)

   حقول الأبعاد (مهمة جداً للأثاث):
   - الطول، العرض، الارتفاع (سم)
   - الوزن (كجم)
   - الخامة (خشب، معدن، MDF، زجاج، إلخ)
   - اللون (Multi-select)

   حقول الأسعار:
   - سعر التكلفة
   - سعر البيع
   - أقل سعر بيع (لمنع الخسارة)
   - سعر الجملة
   - نسبة الخصم المسموحة

   حقول المخزون:
   - الحد الأدنى للمخزون (Low Stock Alert)
   - الحد الأقصى
   - تتبع المخزون (boolean)

   حقول الصور:
   - صورة رئيسية
   - معرض صور (Multiple Images) باستخدام spatie/laravel-medialibrary

   حقول إضافية:
   - الضمان (شهور)
   - مدة التوريد (أيام)
   - الحالة (نشط/متوقف)
   - منتج مميز

4. **متغيرات المنتج (Product Variants)** - مهم جداً:
   نفس المنتج بألوان وأحجام مختلفة - كل variant ليه:
   - SKU خاص، باركود، سعر، صورة، مخزون منفصل

5. صفحة Products بتحتوي على:
   - DataTable AJAX بفلاتر متقدمة (تصنيف، ماركة، حالة، نطاق سعر، توافر مخزني)
   - أزرار: استيراد Excel، تصدير Excel/PDF، طباعة باركود
   - صفحة Show تفصيلية بكل البيانات + الصور + المخزون في كل المستودعات + سجل الحركة

6. صفحة Add/Edit بـ Tabs:
   - معلومات أساسية | الأسعار | المخزون | الصور | المتغيرات | SEO

اكتبلي الكود كامل بكل التفاصيل.
```

---

## **Prompt #5 — إدارة المخزون والحركة**
### Inventory & Stock Movement

```
اعمل موديول إدارة المخزون متعدد المستودعات:

1. **جدول المخزون (Stocks)**:
   - product_id, variant_id, warehouse_id
   - الكمية المتاحة، الكمية المحجوزة (للأوردرات اللي لسه ما اتسلمتش)، الكمية الفعلية
   - متوسط سعر التكلفة
   - آخر تحديث

2. **حركة المخزون (Stock Movements)** - audit trail كامل:
   - الحقول: product_id, warehouse_id, type (in/out/transfer/adjustment), quantity, reference_type, reference_id, balance_before, balance_after, cost_per_unit, user_id, notes, date
   - كل عملية مخزنية لازم تنزل هنا تلقائياً

3. **استلام البضاعة (Stock Receiving / GRN)**:
   - Goods Receipt Note مرتبط بـ Purchase Order
   - الحقول: رقم تلقائي، المورد، المستودع، التاريخ، الملاحظات
   - Items: المنتج، الكمية، سعر التكلفة، تاريخ الانتهاء (لو ينطبق)
   - عند الحفظ: يزود المخزون + ينزل حركة + يحدث متوسط التكلفة

4. **إذن صرف (Stock Issue)**:
   - مرتبط بـ Sales Order أو إذن داخلي
   - عند الحفظ: ينقص المخزون + ينزل حركة

5. **تحويل بين المستودعات (Stock Transfer)**:
   - من مستودع لمستودع
   - حالات: pending, in_transit, received, cancelled
   - عند الإرسال: يحجز من المصدر
   - عند الاستلام: يزود في الوجهة وينقص من المصدر

6. **جرد المخزون (Stock Adjustment / Stocktaking)**:
   - تسجيل الكمية الفعلية بعد الجرد
   - حساب الفرق (zaida/naqsa) تلقائياً
   - سبب التعديل (تالف، مفقود، خطأ إدخال، إلخ)
   - يحتاج موافقة (approval workflow)

7. **تنبيهات المخزون**:
   - Dashboard widget بالمنتجات اللي وصلت للحد الأدنى
   - Notification لأمين المخزن

8. كل العمليات دي تستخدم Database Transactions علشان البيانات متبوظش.

9. صفحة "تقرير حركة المخزون" بفلاتر (منتج، مستودع، فترة، نوع الحركة) مع DataTable AJAX و تصدير Excel/PDF.

اكتبلي الكود كامل + الـ Services اللي بتدير العمليات دي + الـ Observers لتسجيل الحركة تلقائياً.
```

---

## **Prompt #6 — العملاء والموردين**
### Customers & Suppliers CRM

```
اعمل موديول العملاء والموردين بشكل احترافي:

1. **العملاء (Customers)**:

   البيانات الأساسية:
   - النوع (فرد / شركة)
   - الاسم بالعربي والإنجليزي
   - الكود التلقائي
   - التليفون، الواتس، الإيميل
   - العنوان (محافظة، مدينة، عنوان تفصيلي، landmark)
   - الموقع على الخريطة (lat/lng) - اختياري
   - السجل التجاري والبطاقة الضريبية (لو شركة)
   - الشخص المسؤول للتواصل (لو شركة)

   البيانات المالية:
   - الرصيد الافتتاحي (Opening Balance)
   - حد الائتمان (Credit Limit)
   - مدة الائتمان (Credit Days)
   - تصنيف العميل (VIP, Regular, New)
   - مندوب المبيعات المسؤول

   عناوين متعددة (Multiple Addresses):
   - عناوين الشحن والتركيب المختلفة لنفس العميل

2. **الموردين (Suppliers)**:
   نفس بيانات العميل تقريباً مع اختلافات:
   - شروط الدفع
   - مدة التوريد المعتادة
   - تقييم المورد (1-5 نجوم)
   - المنتجات اللي بيوردها

3. صفحة العميل التفصيلية (Customer Profile):
   - Tab "المعلومات" - كل بياناته
   - Tab "العناوين" - عناوينه المتعددة
   - Tab "عروض الأسعار" - DataTable لكل عروض الأسعار المرسلة له
   - Tab "أوامر البيع" - الأوردرات
   - Tab "الفواتير" - الفواتير ودفعاتها
   - Tab "كشف الحساب (Statement)" - المدين والدائن والرصيد
   - Tab "التركيبات" - كل التركيبات المنفذة عنده
   - Tab "الملاحظات والمتابعات" - CRM Notes & Follow-ups
   - Tab "الملفات المرفقة" - عقود، صور، إلخ

4. **متابعات العملاء (Customer Follow-ups)**:
   - جدول follow_ups: customer_id, user_id, type (مكالمة/زيارة/إيميل/واتساب), subject, notes, next_follow_up_date
   - Dashboard widget للمتابعات المستحقة اليوم

5. **استيراد/تصدير**:
   - استيراد عملاء وموردين من Excel
   - تصدير القائمة Excel/PDF

6. كل صفحات الـ Index بـ DataTable AJAX مع فلاتر متقدمة وبحث.

اكتبلي الكود كامل بكل تفاصيله.
```

---

## **Prompt #7 — عروض الأسعار وأوامر البيع**
### Quotations & Sales Orders

```
اعمل أهم جزء في السيستم: عروض الأسعار وأوامر البيع.

1. **عروض الأسعار (Quotations)** - دورة الحياة:
   draft → sent → approved → converted_to_order / rejected / expired

   الحقول الأساسية:
   - رقم تلقائي (QUO-2025-0001)
   - العميل، عنوان التركيب، المندوب
   - تاريخ العرض، تاريخ الصلاحية (الافتراضي 15 يوم)
   - العملة، شروط الدفع، شروط التسليم
   - مدة التركيب المتوقعة
   - الحالة، الملاحظات الداخلية، ملاحظات للعميل

   البنود (Quotation Items):
   - المنتج (Searchable Select بـ AJAX)
   - الوصف (قابل للتعديل)
   - الكمية، الوحدة
   - سعر الوحدة (يجي تلقائي بس قابل للتعديل بحد أدنى)
   - الخصم (% أو مبلغ)
   - الضريبة
   - الإجمالي (يحسب تلقائي)
   - ملاحظة على البند
   - صورة المنتج تظهر في العرض المطبوع

   الإجماليات:
   - المجموع الفرعي
   - إجمالي الخصم
   - الضريبة (نسبة من الإعدادات)
   - مصاريف التركيب
   - مصاريف الشحن
   - الإجمالي النهائي
   - دفعة مقدمة مطلوبة (% أو مبلغ)

2. صفحة عرض السعر:
   - فورم ديناميكي لإضافة بنود (Vue.js أو Alpine.js + Livewire)
   - كل ما تضيف بند، الإجماليات تتحدث تلقائياً
   - Auto-save كـ draft
   - زرار "Save & Send Email" - يبعت العرض كـ PDF للعميل تلقائياً
   - زرار "Duplicate" لنسخ عرض موجود
   - زرار "Convert to Sales Order"
   - زرار "Print PDF" بتمبليت احترافي بشعار الشركة

3. **أوامر البيع (Sales Orders)**:
   نفس بنود عرض السعر + حقول إضافية:
   - رقم العرض الأصلي (لو متحول)
   - تاريخ التسليم المتوقع
   - حالة الأوردر: pending → confirmed → in_production → ready → delivered → installed → completed → cancelled
   - حالة الدفع: unpaid → partial → paid
   - حالة التركيب: not_required → scheduled → in_progress → completed
   - عنوان التركيب الكامل

   عند تأكيد الأوردر:
   - يحجز الكميات من المخزون
   - ينشئ Invoice مرتبطة
   - يبعت إشعار للمستودع والتركيب

4. **PDF Templates** احترافية:
   - تمبليت لعرض السعر (مع شعار، بيانات الشركة، صور المنتجات، الشروط)
   - تمبليت لأمر البيع
   - دعم كامل للعربية RTL في PDF (استخدم mpdf أو dompdf مع خط Cairo)

5. صفحات Index كلها DataTable AJAX بفلاتر:
   - الحالة، التاريخ، العميل، المندوب، نطاق المبلغ

اكتبلي الكود كامل بكل التفاصيل.
```

---

## **Prompt #8 — المشتريات والفواتير والمدفوعات**
### Purchases, Invoices & Payments

```
اعمل دورة المشتريات الكاملة + الفواتير والمدفوعات:

1. **طلبات الشراء (Purchase Requests)** - داخلية:
   - من قسم لقسم (مثلاً المبيعات تطلب من المشتريات)
   - الحالة: pending → approved → ordered → received

2. **أوامر الشراء (Purchase Orders)**:
   نفس فكرة Sales Order بس مع الموردين:
   - رقم تلقائي (PO-2025-0001)
   - المورد، المستودع المستلم
   - تاريخ الإصدار، تاريخ التسليم المتوقع
   - البنود: المنتج، الكمية، سعر التكلفة، الخصم، الإجمالي
   - الحالة: draft → sent → confirmed → partially_received → received → cancelled
   - عند الاستلام: يربط بـ GRN (من Prompt 5)

3. **فواتير المبيعات (Sales Invoices)**:
   - مرتبطة بـ Sales Order أو مستقلة
   - رقم تلقائي (INV-2025-0001)
   - نفس بنود الأوردر
   - حالة الدفع: unpaid → partial → paid → overdue
   - تاريخ الاستحقاق
   - ميزة الفاتورة الإلكترونية المصرية (e-invoice) - خلي البنية جاهزة

4. **فواتير المشتريات (Purchase Invoices / Bills)**:
   - مرتبطة بـ Purchase Order
   - تتبع المستحق للموردين

5. **المدفوعات (Payments)** - نظام مزدوج:

   **Receipts (مقبوضات من العملاء)**:
   - رقم تلقائي (REC-2025-0001)
   - العميل، المبلغ، طريقة الدفع، الحساب المستلم
   - مرتبطة بفاتورة محددة أو دفعة على الحساب
   - إيصال PDF قابل للطباعة

   **Payments (مدفوعات للموردين)**:
   - نفس الفكرة بس للموردين
   - رقم تلقائي (PAY-2025-0001)

6. **الحسابات البنكية والكاش (Accounts)**:
   - جدول accounts: name, type (cash/bank), balance, currency
   - كل receipt/payment مرتبطة بحساب
   - يقدر يعمل تحويل بين الحسابات

7. **كشف حساب العميل/المورد**:
   - جدول واحد بكل الحركات (فواتير + مقبوضات/مدفوعات)
   - عمود الرصيد التراكمي
   - فلاتر بالتاريخ
   - تصدير PDF احترافي

8. **التذكيرات والمتأخرات**:
   - Dashboard widget بالفواتير المتأخرة
   - إرسال تذكير بالواتساب/الإيميل (تكامل مع API)
   - تقرير Aging Report (0-30, 31-60, 61-90, 90+ days)

9. كل العمليات المالية بـ Transactions و Activity Log.

اكتبلي الكود كامل بكل التفاصيل.
```

---

## **Prompt #9 — التركيب والجدولة**
### Installation & Scheduling

```
موديول مهم جداً لأن شركات الأثاث المكتبي بتركب عند العميل:

1. **أوامر التركيب (Installation Orders)**:
   - مرتبطة تلقائياً بـ Sales Order
   - رقم تلقائي (INS-2025-0001)
   - العميل، عنوان التركيب التفصيلي
   - تاريخ التركيب المحدد + الوقت
   - فريق التركيب المسؤول
   - السائق ورقم العربية (لو في توصيل)
   - حالة: scheduled → in_progress → completed → postponed → cancelled
   - البنود المراد تركيبها (من الأوردر)
   - أدوات وعدد مطلوبة
   - ملاحظات خاصة (هل في أسانسير؟ كام دور؟ ميعاد دخول البلوك؟)

2. **فرق التركيب (Installation Teams)**:
   - اسم الفريق، قائد الفريق، الأعضاء
   - التخصص (تركيب أثاث، تركيب خزائن، إلخ)
   - الفروع التي يخدمها

3. **جدول التركيبات (Installation Calendar)**:
   - عرض FullCalendar.js بكل التركيبات
   - عرض يومي/أسبوعي/شهري
   - فلتر بالفريق، الحالة
   - Drag & Drop لإعادة الجدولة
   - منع التعارض (نفس الفريق في نفس الوقت)
   - طباعة جدول اليوم لكل فريق

4. **تقرير ما بعد التركيب (Installation Report)**:
   عند انتهاء التركيب:
   - الفني/قائد الفريق يدخل النظام (موبايل-فريندلي)
   - يأكد البنود المركبة
   - يرفع صور قبل وبعد التركيب
   - توقيع العميل (Signature Pad)
   - تقييم العميل من 1-5
   - ملاحظات العميل
   - أي بنود ناقصة أو تالفة
   - تحويل الأوردر تلقائياً لحالة "Installed"

5. **بلاغات الصيانة وما بعد البيع (After-Sales / Maintenance Tickets)**:
   - رقم تلقائي (TKT-2025-0001)
   - العميل، المنتج، رقم الفاتورة الأصلي
   - نوع البلاغ: ضمان / صيانة مدفوعة / استبدال / استرجاع
   - الوصف، الصور
   - الحالة: open → assigned → in_progress → resolved → closed
   - الفني المسؤول، تاريخ الزيارة
   - حل المشكلة، التكلفة (لو مدفوعة)
   - تقييم العميل بعد الحل

6. **سجل الضمان (Warranty Tracker)**:
   - كل منتج متباع له تاريخ بداية الضمان وانتهاءه
   - تنبيه قبل انتهاء الضمان بـ 30 يوم (فرصة لخدمة جديدة)

7. **الـ KPIs لقسم التركيب**:
   - عدد التركيبات المنفذة
   - متوسط وقت التركيب
   - نسبة التركيبات في الموعد
   - متوسط تقييم العملاء

اكتبلي الكود كامل + الـ Calendar Implementation + الـ Mobile-Friendly View للفنيين.
```

---

## **Prompt #10 — الـ Dashboard والتقارير والإشعارات**
### Dashboard, Reports & Notifications

```
الـ Prompt الأخير لإنهاء السيستم: Dashboard ذكي + تقارير شاملة + نظام إشعارات.

1. **Dashboard ديناميكي حسب الدور**:

   **للـ Super Admin / Manager**:
   - Cards: إجمالي مبيعات الشهر، عدد الأوردرات، عدد العملاء الجدد، صافي الربح
   - مخطط Line Chart: المبيعات آخر 12 شهر
   - مخطط Bar Chart: أعلى 10 منتجات مبيعاً
   - مخطط Pie Chart: المبيعات حسب التصنيف
   - مخطط Doughnut: توزيع العملاء حسب التصنيف
   - جدول: آخر 10 أوردرات
   - جدول: أعلى 5 عملاء
   - تنبيهات: منتجات قاربت تخلص، فواتير متأخرة، تركيبات اليوم

   **لمندوب المبيعات**:
   - مبيعاته الشخصية، عمولاته
   - عملاءه، متابعاتهم
   - عروض أسعار في انتظار الموافقة
   - Target vs Actual

   **لأمين المخزن**:
   - حالة المخزون
   - استلامات اليوم
   - أوامر صرف منتظرة
   - منتجات تحت الحد الأدنى

   **للمحاسب**:
   - المقبوضات والمدفوعات
   - فواتير متأخرة
   - الرصيد البنكي والكاش

   **لقسم التركيب**:
   - تركيبات اليوم وبكرة
   - التذاكر المفتوحة

2. **التقارير (Reports Module)** - شاملة:

   **تقارير المبيعات**:
   - تقرير مبيعات بالفترة (يومي/أسبوعي/شهري/سنوي)
   - تقرير المبيعات بالعميل
   - تقرير المبيعات بالمنتج
   - تقرير المبيعات بالمندوب (مع حساب العمولات)
   - تقرير المبيعات بالتصنيف
   - تقرير الأرباح والخسائر

   **تقارير المشتريات**:
   - تقرير المشتريات بالفترة
   - تقرير المشتريات بالمورد
   - تقرير المشتريات بالمنتج

   **تقارير المخزون**:
   - تقرير حالة المخزون الحالي (بقيمته)
   - تقرير حركة المخزون
   - تقرير المنتجات الراكدة (مفيش حركة من X يوم)
   - تقرير المنتجات الأكثر/الأقل دوراناً
   - تقرير الجرد

   **تقارير مالية**:
   - تقرير المقبوضات والمدفوعات
   - تقرير ذمم العملاء (Aging)
   - تقرير ذمم الموردين
   - كشف حساب أي عميل/مورد

   **تقارير العمليات**:
   - تقرير التركيبات
   - تقرير بلاغات الصيانة
   - تقرير أداء فرق التركيب

   كل تقرير:
   - فلاتر متقدمة
   - DataTable AJAX
   - Charts بصرية (Chart.js)
   - تصدير Excel و PDF
   - طباعة احترافية

3. **نظام الإشعارات (Notifications System)**:
   استخدم Laravel Notifications:
   - Database notifications (Bell icon في الـ navbar)
   - Email notifications
   - Browser Push (اختياري - Pusher أو Laravel Echo)
   - WhatsApp notifications (اختياري - عبر API)

   أحداث تطلق إشعارات:
   - منتج وصل للحد الأدنى → أمين المخزن
   - عرض سعر اتقبل → المندوب + المدير
   - دفعة جديدة دخلت → المحاسب
   - تركيب اتجدول → فريق التركيب
   - بلاغ صيانة جديد → قسم خدمة العملاء
   - فاتورة قاربت على الاستحقاق → المحاسب
   - User login من جهاز جديد → User نفسه

4. **سجل النشاطات (Activity Log)**:
   - استخدم spatie/laravel-activitylog
   - تتبع كل CRUD operation في النظام
   - صفحة Audit Trail بفلاتر (المستخدم، الموديول، الفترة، نوع العملية)
   - مين عمل إيه ومتى وعدّل من إيه إلى إيه

5. **Backup System**:
   - استخدم spatie/laravel-backup
   - باكاب يومي تلقائي للـ DB والـ Files
   - زرار في الإعدادات لباكاب يدوي
   - Download/Restore

6. **Settings Module Final Touches**:
   - SMTP Settings
   - WhatsApp API Settings
   - SMS Gateway Settings
   - Invoice Templates Customization
   - Numbering Sequences (لكل وثيقة prefix و starting number)

7. **API للموبايل (اختياري)**:
   - Laravel Sanctum
   - APIs أساسية: Auth, Customers, Products, Orders, Installations
   - مفيد لتطبيق المندوبين وفنيي التركيب

اكتبلي الكود كامل لكل ده + Optimization tips للـ performance (Eloquent Eager Loading, Caching, Queues للإيميلات والتقارير الكبيرة).
```

---

## 📋 ملخص ترتيب التنفيذ

| # | الـ Prompt | الموديولات الرئيسية |
|---|-----------|---------------------|
| 1 | البنية الأساسية | Setup + Architecture + RTL |
| 2 | الصلاحيات | Users + Roles + Permissions |
| 3 | الإعدادات | Company + Branches + Warehouses + Units |
| 4 | المنتجات | Categories + Products + Variants |
| 5 | المخزون | Stock + Movements + Transfers + Adjustments |
| 6 | الـ CRM | Customers + Suppliers + Follow-ups |
| 7 | المبيعات | Quotations + Sales Orders |
| 8 | المالية | Purchases + Invoices + Payments |
| 9 | التركيب | Installation + Scheduling + After-sales |
| 10 | اللمسات النهائية | Dashboard + Reports + Notifications |

---

## 🚀 موديولات إضافية ممكن تضيفها لاحقاً

- **العمولات (Commissions)** — حساب عمولات المندوبين تلقائياً
- **التصنيع المخصص (Custom Manufacturing)** — لو الشركة بتصنع قطع حسب الطلب
- **إدارة المعرض (Showroom Management)** — متابعة الزيارات والعملاء المحتملين
- **HR Module** — الموظفين والحضور والمرتبات
- **Fleet Management** — إدارة سيارات النقل
- **E-commerce Integration** — موقع للعرض والبيع أونلاين

---

**بالتوفيق يا أحمد! 💪**
