{{-- resources/views/filament/pages/customer-account-report.blade.php --}}
{{-- شريط الأدوات --}}
@includeWhen(View::exists('filament.partials.company-header'), 'filament.partials.company-header')
{{-- العنوان --}}

تقرير حساب العميل

{{-- فلاتر التقرير (نفس فكرة تقرير الشريك) --}}
{{-- بيانات العميل --}}
بيانات العميل
الاسم:{{ $customer->name ?? '—' }}
الهاتف:{{ $customer->phone ?? '—' }}
العنوان:{{ $customer->address ?? '—' }}
الرقم القومي:{{ $customer->national_id ?? '—' }}
الضامن:{{ optional($customer?->guarantor)->name ?? '—' }}
{{-- ملخص سريع على نفس ستايل الشريك --}} @php $totalContracts = $contracts->count(); $sumOriginal = $contracts->sum('original_price'); $sumInstallment = $contracts->sum('installment_price'); $allInstallments = $contracts->flatMap(fn($c) => $c->installments); $paidCount = $allInstallments->where('is_paid', true)->count(); $unpaidCount = $allInstallments->where('is_paid', false)->count(); // حساب المبالغ الفعلية $totalPaidAmount = $allInstallments->where('is_paid', true)->whereNotNull('paid_amount')->sum('paid_amount'); $totalDueAmount = $allInstallments->where('is_paid', false)->sum('value'); // حساب المدفوعات المباشرة $totalPayments = $payments ? $payments->sum('amount') : 0; $paymentsCount = $payments ? $payments->count() : 0; // إجمالي ما تم تحصيله: نعتمد مدفوعات العميل فقط لتجنب الازدواج // لأن المدفوعات يتم توزيعها على الأقساط تلقائيا. $totalCollected = $totalPayments; @endphp
ملخص سريع
عدد العقود{{ $totalContracts }}
إجمالي السعر الأصلي{{ number_format($sumOriginal, 2) }} جنيه
إجمالي سعر التقسيط{{ number_format($sumInstallment, 2) }} جنيه
أقساط مدفوعة{{ $paidCount }}
أقساط غير مدفوعة{{ $unpaidCount }}
إجمالي المبالغ المسددة (أقساط){{ number_format($totalPaidAmount, 2) }} جنيه
{{ __('payments.plural_model_label') }}{{ number_format($totalPayments, 2) }} {{ __('app.currency') }} ({{ $paymentsCount }} {{ __('payments.model_label') }})
إجمالي المحصل{{ number_format($totalCollected, 2) }} جنيه
إجمالي المبالغ المستحقة{{ number_format($totalDueAmount, 2) }} جنيه
{{-- العقود + الأقساط --}}
العقود
@forelse($contracts as $contract)
تاريخ التعاقد: {{ $contract->contract_date }}
عدد الأقساط: {{ $contract->installment_count }}
{{-- --}}
المنتجات @forelse($contract->products as $product)
{{ $product->name }} ({{ $product->brand?->name ?? '—' }}) {{ $product->category?->name ?? '' }}
@empty — @endforelse
تفاصيل المجموعة{{ $contract->product_details ?? '—' }}
السعر الأصلي{{ number_format($contract->original_price, 2) }}
سعر التقسيط{{ number_format($contract->installment_price, 2) }}
قيمة القسط{{ number_format($contract->installment_value, 2) }}
الحالة{{ __('contracts.statuses.' . $contract->status) }}
@forelse($contract->installments as $inst) @empty @endforelse @if($contract->installments && $contract->installments->count() > 0) @endif
تاريخ الاستحقاق قيمة القسط الأصلية المبلغ المسدد تاريخ السداد الحالة
{{ $inst->due_date ? \Carbon\Carbon::parse($inst->due_date)->format('d/m/Y') : '-' }} {{ number_format($inst->value, 2) }} جنيه {{ $inst->paid_amount ? number_format($inst->paid_amount, 2) . ' جنيه' : '-' }} {{ $inst->payment_date ? \Carbon\Carbon::parse($inst->payment_date)->format('d/m/Y') : '-' }} @if($inst->is_paid) مدفوع @else غير مدفوع @endif
لا توجد أقساط
الإجماليات: {{ number_format($contract->installments->whereNotNull('paid_amount')->sum('paid_amount'), 2) }} جنيه مدفوع: {{ $contract->installments->where('is_paid', true)->count() }} غير مدفوع: {{ $contract->installments->where('is_paid', false)->count() }}
@empty
لا توجد تعاقدات خلال الفترة المحددة
@endforelse
{{-- قسم المدفوعات الجديد --}} @if($payments && $payments->count() > 0)
{{ __('payments.plural_model_label') }}
@foreach($payments as $payment) @endforeach
{{ __('payments.contract') }} {{ __('payments.amount') }} {{ __('payments.payment_date') }} {{ __('payments.payment_method') }} {{ __('payments.receipt_number') }} {{ __('payments.notes') }}
@if($payment->contract && $payment->contract->products) {{ __('payments.contract_format', ['id' => $payment->contract_id, 'amount' => '']) }} - {{ $payment->contract->products->pluck('name')->join(', ') }} @else {{ __('payments.contract_format', ['id' => $payment->contract_id, 'amount' => '']) }} @endif {{ number_format($payment->amount, 2) }} {{ __('app.currency') }} {{ $payment->payment_date ? \Carbon\Carbon::parse($payment->payment_date)->format('d/m/Y') : '-' }} @php $methodColors = [ 'cash' => '#e8f5e8; color: #2e7d2e', 'bank_transfer' => '#e3f2fd; color: #1976d2', 'check' => '#fff3e0; color: #f57c00', 'card' => '#f3e5f5; color: #7b1fa2' ]; $methodLabels = [ 'cash' => __('payments.payment_methods.cash'), 'bank_transfer' => __('payments.payment_methods.bank_transfer'), 'check' => __('payments.payment_methods.check'), 'card' => __('payments.payment_methods.card') ]; @endphp {{ $methodLabels[$payment->payment_method] ?? $payment->payment_method }} {{ $payment->receipt_number ?? '-' }} {{ $payment->notes ?? '-' }}
{{-- ملخص المدفوعات --}} @php $totalPayments = $payments->sum('amount'); $paymentsByMethod = $payments->groupBy('payment_method'); @endphp
{{ __('payments.plural_model_label') }} {{ __('app.total') }}:
{{ __('app.total') }} {{ __('payments.plural_model_label') }}: {{ number_format($totalPayments, 2) }} {{ __('app.currency') }}
عدد {{ __('payments.plural_model_label') }}: {{ $payments->count() }}
@endif {{-- إحصائيات شاملة للعميل --}} @if($contracts->count() > 0) @php $allInstallments = $contracts->flatMap(fn($c) => $c->installments); $totalInstallmentsCount = $allInstallments->count(); $paidInstallmentsCount = $allInstallments->where('is_paid', true)->count(); $unpaidInstallmentsCount = $allInstallments->where('is_paid', false)->count(); $overdueInstallmentsCount = $allInstallments->where('is_paid', false)->where('due_date', '<', now())->count(); $totalPaidFromInstallments = $allInstallments->where('is_paid', true)->sum('paid_amount'); $totalDirectPayments = $payments ? $payments->sum('amount') : 0; $totalRemaining = $allInstallments->where('is_paid', false)->sum('value'); @endphp
📊 الإحصائيات الإجمالية للعميل
📝
إجمالي الأقساط
{{ $totalInstallmentsCount }}
قسط
✅
أقساط مدفوعة
{{ $paidInstallmentsCount }}
مكتمل
❌
أقساط غير مدفوعة
{{ $unpaidInstallmentsCount }}
متبقي
⚠️
أقساط متأخرة
{{ $overdueInstallmentsCount }}
متأخر
💰 الملخص المالي
💵
إجمالي المدفوع من الأقساط
{{ number_format($totalPaidFromInstallments, 2) }}
جنيه
💳
المدفوعات المباشرة
{{ number_format($totalDirectPayments, 2) }}
جنيه
⏳
المبلغ المتبقي
{{ number_format($totalRemaining, 2) }}
جنيه
@endif