@php $tz = config('app.timezone', 'Asia/Riyadh'); $sessSig = session('invoices_backup_sig'); $sessAt = (int) session('invoices_backup_at', 0); $fromNorm = $from ? \Carbon\Carbon::parse($from)->format('Y-m-d') : null; $toNorm = $to ? \Carbon\Carbon::parse($to)->format('Y-m-d') : null; $currentSig = sha1(json_encode([ 'branch_id' => ($branchId !== '' ? (int)$branchId : null), 'from' => $fromNorm, 'to' => $toNorm, ])); $isToday = $sessAt > 0 && \Carbon\Carbon::createFromTimestamp($sessAt, $tz)->isSameDay(\Carbon\Carbon::now($tz)); $backupOk = $sessSig && $sessSig === $currentSig && $isToday; @endphp
حذف الفواتير (Admin)
نسخ قاعدة البيانات اليوم إجباري قبل الحذف
مبيعات الفروع
@csrf
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif
⚠️ تحذير: هذا الحذف نهائي ولا يمكن التراجع عنه.
✅ لازم تضغط زر نسخ قاعدة البيانات اليوم (إجباري) لنفس الفلاتر.
✅ بعد النسخ اكتب: DELETE INVOICES
الفلاتر
1) اختر الفلاتر 2) تطبيق (إجباري) 3) النسخ والحذف
مسح @if($backupOk) تم النسخ اليوم ✅ @else لم يتم النسخ اليوم @endif نسخ قاعدة البيانات
الحذف النهائي
سيظهر تأكيد يوضح الفرع/كل الفروع + الفترة قبل التنفيذ
@csrf
لازم تكتبها حرفيًا: DELETE INVOICES
الحذف يتفعل فقط بعد النسخ (اليوم) لنفس الفلاتر.
{{-- Restore --}}
استرجاع نسخة احتياطية
الاسترجاع يستبدل جدول الفواتير بالكامل — مسموح فقط لنسخ (كل الفروع)
@forelse(($recentBackups ?? collect()) as $b) @php $isAll = ((int)$b->is_all_branches === 1); $range = ($b->from_date || $b->to_date) ? (($b->from_date ?? '—').' → '.($b->to_date ?? '—')) : 'بدون تحديد'; $createdAt = $b->created_at ? \Carbon\Carbon::parse($b->created_at)->format('Y-m-d H:i') : '-'; @endphp @empty @endforelse
اختيار النوع الفترة عدد السجلات التاريخ اسم جدول النسخة
{{ $isAll ? 'كل الفروع' : 'فرع واحد' }} {{ $range }} {{ (int)$b->rows_count }} {{ $createdAt }} {{ $b->backup_table }}
لا توجد نسخ احتياطية حتى الآن
@csrf
⚠️ سيتم استبدال جدول الفواتير بالكامل بهذه النسخة.