@extends('admin.layouts.master') @section('title', __('admin.dashboard')) @section('page_title', __('admin.dashboard')) @section('breadcrumbs') @endsection @section('content') @isset($charts)

{{ number_format($stats['month_sales'] ?? 0, 0) }}

مبيعات هذا الشهر

{{ number_format($stats['month_orders'] ?? 0) }}

فواتير هذا الشهر

{{ number_format($stats['total_cash'], 0) }}

الرصيد النقدي/البنكي

{{ number_format($stats['expiring_warranties'] ?? 0) }}

ضمانات تنتهي خلال 30 يوم

المبيعات آخر 12 شهر

المبيعات حسب التصنيف (هذا الشهر)

أعلى 10 منتجات (هذا الشهر)

أفضل 5 عملاء (هذا الشهر)

@forelse($charts['top_customers'] as $c) @empty @endforelse
العميلعدد الفواتيرالإجمالي
{{ $c->customer?->name_ar ?? '—' }} {{ $c->invoice_count }} {{ number_format((float) $c->total, 2) }}
لا توجد مبيعات هذا الشهر
@push('scripts') @endpush @endisset

{{ number_format($stats['products_count'] ?? 0) }}

{{ __('admin.products') }}

عرض الكل

{{ $stats['total_orders'] }}

{{ __('admin.total_orders') }}

{{ $stats['new_customers'] }}

{{ __('admin.new_customers') }} (آخر 30 يوم)

@can('customers.view') عرض الكل @endcan

{{ $stats['low_stock'] }}

{{ __('admin.low_stock') }}

@can('stock.view') المخزون المنخفض @endcan
{{-- Low stock widget --}}

منتجات وصلت الحد الأدنى

@if(($lowStockItems ?? collect())->isEmpty())

لا توجد تنبيهات حالياً.

@else @foreach($lowStockItems as $stock) @endforeach
المنتجالمستودعالمتاحالحد الأدنى
{{ $stock->product?->sku }} {{ $stock->product?->name_ar }} {{ $stock->warehouse?->name }} {{ number_format((float) $stock->available_qty, 2) }} {{ number_format((float) ($stock->product?->min_stock ?? 0), 2) }}
@endif
{{-- Recent movements --}}

آخر حركات المخزون

@can('stock.view')
@endcan
@if(($recentMovements ?? collect())->isEmpty())

لا توجد حركات بعد.

@else @foreach($recentMovements as $m) @endforeach
الوقتالنوعالمنتجالمستودعالكمية
{{ $m->moved_at?->diffForHumans() }} {{ $m->type }} {{ $m->product?->name_ar }} {{ $m->warehouse?->name }} {{ in_array($m->type, ['receive','transfer_in','adjustment_in','return_in','opening']) ? '+' : '−' }}{{ number_format((float) $m->quantity, 2) }}
@endif
@if(($myFollowUps ?? collect())->isNotEmpty())

متابعاتي المستحقة ({{ $stats['pending_followups'] }})

@can('follow_ups.view')
@endcan
@foreach($myFollowUps as $f) @php $entityType = class_basename($f->followable_type); $entityRoute = $entityType === 'Customer' ? 'admin.customers.show' : 'admin.suppliers.show'; @endphp @endforeach
الموضوعالنوعالجهةالموعد التالي{{ __('admin.actions') }}
{{ $f->subject }} {{ $f->type }} @if($f->followable) {{ $f->followable->name_ar ?? $f->followable->code }} @else — @endif @php $overdue = $f->next_followup_date && $f->next_followup_date->isPast(); @endphp {{ $f->next_followup_date?->format('Y-m-d') }} @if($overdue)@endif @can('follow_ups.edit')
@csrf
@endcan
@endif @if(($todayInstallations ?? collect())->isNotEmpty() || ($openTickets ?? collect())->isNotEmpty())
@if(($todayInstallations ?? collect())->isNotEmpty())

تركيبات اليوم ({{ $stats['today_installations'] }})

@can('installations.view')
@endcan
@foreach($todayInstallations as $ins) @endforeach
الوقتالرقمالعميلالفريقالحالة
{{ $ins->scheduled_at?->format('H:i') }} {{ $ins->number }} {{ $ins->customer?->name_ar }} {{ $ins->team?->name ?? '—' }} {{ $ins->status }}
@endif @if(($openTickets ?? collect())->isNotEmpty())

تذاكر صيانة مفتوحة ({{ $stats['open_tickets'] }})

@can('maintenance.view')
@endcan
@foreach($openTickets as $t) @php $pmap = ['low'=>'secondary','medium'=>'info','high'=>'warning','urgent'=>'danger']; @endphp @endforeach
الرقمالعميلالموضوعالأولويةالمسؤول
{{ $t->number }} {{ $t->customer?->name_ar }} {{ \Illuminate\Support\Str::limit($t->subject, 30) }} {{ $t->priority }} {{ $t->assignee?->name ?? '—' }}
@endif
@endif @if(($overdueInvoices ?? collect())->isNotEmpty())

فواتير متأخرة ({{ $stats['pending_invoices'] }})

@can('invoices.view')
@endcan
@foreach($overdueInvoices as $inv) @endforeach
الفاتورةالعميلالاستحقاق متأخر منذالإجماليالمتبقي
{{ $inv->number }} {{ $inv->customer?->name_ar ?? '—' }} {{ $inv->due_date?->format('Y-m-d') }} {{ $inv->days_overdue }} يوم {{ number_format((float) $inv->total, 2) }} {{ number_format($inv->remaining_amount, 2) }}
@endif @endsection