==================================================================
إصلاح الترقيم التلقائي للفواتير - استخدام السنة المالية
==================================================================

الملف المراد تعديله:
app/Http/Controllers/CustomerInvoiceController.php

==================================================================
الخطوة 1: أضف هذا الاستيراد في أعلى الملف (بعد السطر 5)
==================================================================

use App\Models\FiscalYear;


==================================================================
الخطوة 2: استبدل الدالة generateInvoiceNumber() بالكامل
==================================================================

المسار: السطور 695-735

الكود الجديد:

    protected function generateInvoiceNumber()
    {
        $companyId = Auth::user()->company_id;

        // ✅ 1️⃣ البحث عن الفترة المحاسبية النشطة مع تحميل السنة المالية
        $activePeriod = AccountingPeriod::with('fiscalYear')
            ->where('company_id', $companyId)
            ->where('status', 'open')
            ->whereDate('start_date', '<=', now()->toDateString())
            ->whereDate('end_date', '>=', now()->toDateString())
            ->first();

        // ✅ 2️⃣ استخراج السنة من السنة المالية (البيانات الأساسية)
        if ($activePeriod && $activePeriod->fiscalYear) {
            // استخدام السنة من السنة المالية النشطة (هذا الحل الصحيح!)
            $year = $activePeriod->fiscalYear->start_date->format('Y');
            // الشهر من الفترة المحاسبية الحالية
            $month = $activePeriod->start_date->format('m');
        } else {
            // fallback: استخدام التاريخ الفعلي
            $year = date('Y');
            $month = date('m');
        }

        $prefix = "INV-{$year}{$month}-";

        // ✅ 3️⃣ البحث عن آخر فاتورة بنفس البادئة (مع احترام الفواتير المحذوفة)
        $lastInvoice = CustomerInvoice::withTrashed()
            ->where('company_id', $companyId)
            ->where('invoice_number', 'LIKE', $prefix . '%')
            ->orderBy('id', 'desc')
            ->first();

        // ✅ 4️⃣ حساب الرقم التسلصلي التالي
        if ($lastInvoice) {
            $lastNumber = intval(substr($lastInvoice->invoice_number, strlen($prefix)));
            $newNumber = $lastNumber + 1;
        } else {
            $newNumber = 1;
        }

        return $prefix . str_pad($newNumber, 4, '0', STR_PAD_LEFT);
    }


==================================================================
الخطوة 3: امسح الكاش
==================================================================

من بدء الأمر في المسار:
cd d:\xampp8-2-new\htdocs\contracts
php artisan optimize:clear


==================================================================
الخطوة 4: اختبر النظام
==================================================================

1. افتح: http://localhost:8000/customer-invoices/create
2. تحقق من رقم الفاتورة - يجب أن يبدأ بـ 202301- (من السنة المالية)
3. أنشئ فاتورة واختبر الحفظ


==================================================================
الفروقات الرئيسية
==================================================================

قبل (الخطأ):
✗ الاستعلام: AccountingPeriod::where
✗ الشرط: if ($activePeriod)
✗ السنة: $activePeriod->start_date
✗ النتيجة: 202601-0007 (خطأ!)

بعد (الصحيح):
✓ الاستعلام: AccountingPeriod::with('fiscalYear')->where
✓ الشرط: if ($activePeriod && $activePeriod->fiscalYear)
✓ السنة: $activePeriod->fiscalYear->start_date
✓ النتيجة: 202301-0007 (صحيح!)


==================================================================
الملاحظات المهمة
==================================================================

1. التاريخ الفعلي قد يكون 2026 لكن السنة المالية هي 2023 ✓
2. الفواتير القديمة لن تتأثر ✓
3. هذا الإصلاح يؤثر على الفواتير الجديدة فقط ✓
4. الفواتير الموجودة ستحتفظ برقمها الأصلي ✓


==================================================================
في حالة المشاكل
==================================================================

1. تأكد من تطبيق التعديل على الملف الصحيح
2. تأكد من امسح الكاش: php artisan optimize:clear
3. أعد تحميل الصفحة (Ctrl+Shift+R)
4. افتح متصفح جديد وحاول مجدداً


==================================================================
للمزيد من المعلومات
==================================================================

اقرأ الملف: INVOICE_NUMBER_FISCAL_YEAR_FIX.md

