@php use Illuminate\Support\Str; @endphp
{{-- Header --}} {{-- Contract info --}}
{{ __('contracts.field.contract_date') }}
{{ $contract->contract_date instanceof \Carbon\Carbon ? $contract->contract_date->format('Y-m-d') : (string) $contract->contract_date }}
{{ __('contracts.field.customer') }}
{{ $contract->customer->name ?? '-' }}
{{ __('contracts.field.guarantor') }}
{{ $contract->guarantor->name ?? '-' }}
{{ __('contracts.field.products') }}
@if($contract->products && $contract->products->count())
    @foreach($contract->products as $product)
  • {{ $product->name }}
  • @endforeach
@else - @endif
{{ __('contracts.field.original_price') }}
{{ number_format((float)($contract->original_price ?? 0), 2) }}
{{ __('contracts.field.installment_price') }}
{{ number_format((float)($contract->installment_price ?? 0), 2) }}
{{ __('contracts.field.installment_count') }}
{{ (int)($contract->installment_count ?? 0) }}
{{ __('contracts.field.installment_value') }}
{{ number_format((float)($contract->installment_value ?? 0), 2) }}
{{ __('contracts.field.first_installment_date') }}
@php $firstDate = $contract->first_installment_date; if (empty($firstDate)) { $firstDate = \Carbon\Carbon::now()->addMonth(); } @endphp {{ $firstDate instanceof \Carbon\Carbon ? $firstDate->format('Y-m-d') : (string) $firstDate }}
{{ __('contracts.field.status') }}
{{ __('contracts.statuses.' . $contract->status) }}
{{ __('contracts.field.notes') }}
{!! $contract->notes ?: '-' !!}
{{-- Installments --}}
{{ __('contracts.field.installments') }}
@php $total = $contract->installments->count(); $paidCount = $contract->installments->where('is_paid', true)->count(); $sumTotal = $contract->installments->sum('value'); $sumPaid = $contract->installments->where('is_paid', true)->whereNotNull('paid_amount')->sum('paid_amount'); $sumUnpaid = $contract->installments->where('is_paid', false)->sum('value'); @endphp
عدد الأقساط: {{ $total }} المسدّد: {{ $paidCount }} {{-- إجمالي: {{ number_format($sumTotal, 2) }} | مسدّد: {{ number_format($sumPaid, 2) }} | متبقّي: {{ number_format($sumUnpaid, 2) }} --}}
@forelse($contract->installments as $installment) @php $isOverdue = !$installment->is_paid && $installment->due_date && \Carbon\Carbon::parse($installment->due_date)->isPast(); @endphp @empty @endforelse
{{ __('contracts.field.due_date') }} {{ __('contracts.field.installment_value') }} المبلغ المدفوع تاريخ السداد {{ __('contracts.field.status') }}
{{ $installment->due_date instanceof \Carbon\Carbon ? $installment->due_date->format('d/m/Y') : (string) $installment->due_date }} {{ number_format((float)($installment->value ?? 0), 2) }} جنيه {{ $installment->paid_amount ? number_format($installment->paid_amount, 2) . ' جنيه' : '-' }} {{ $installment->payment_date ? \Carbon\Carbon::parse($installment->payment_date)->format('d/m/Y') : '-' }} @if ($installment->is_paid) ✅ مدفوع @else {{ $isOverdue ? '⚠️ متأخر' : '❌ غير مدفوع' }} @endif
{{ __('common.no_records') }}
الإجمالي {{ number_format($sumTotal, 2) }} جنيه {{ number_format($sumPaid, 2) }} جنيه المتبقّي: {{ number_format($sumUnpaid, 2) }} جنيه
عرض {{ $contract->installments->count() }} من {{ $contract->installments->count() }} قسط
{{-- قسم المدفوعات --}} @php $payments = $contract->payments; $completedPayments = $payments->where('status', 'completed'); $pendingPayments = $payments->where('status', 'pending'); $cancelledPayments = $payments->where('status', 'cancelled'); $totalCompleted = $completedPayments->sum('amount'); $totalPending = $pendingPayments->sum('amount'); $totalPayments = $payments->sum('amount'); $lastPayment = $completedPayments->sortByDesc('payment_date')->first(); @endphp
مدفوعات العملاء المباشرة
{{-- ملخص المدفوعات --}}

إجمالي مدفوعات العملاء المكتملة

{{ number_format($totalCompleted, 2) }} جنيه

({{ $completedPayments->count() }} دفعة)
@if($pendingPayments->count() > 0)

مدفوعات العملاء المعلقة

{{ number_format($totalPending, 2) }} جنيه

({{ $pendingPayments->count() }} دفعة)
@endif @if($lastPayment)

آخر مدفوعة

{{ number_format($lastPayment->amount, 2) }} جنيه

{{ $lastPayment->payment_date->format('d/m/Y') }}
@endif

إجمالي عدد مدفوعات العملاء

{{ $payments->count() }}

مدفوعة
@if($payments->count() > 0)
@foreach($payments->sortByDesc('payment_date') as $payment) @endforeach
تاريخ الدفع المبلغ طريقة الدفع رقم الإيصال الحالة ملاحظات
{{ $payment->payment_date ? $payment->payment_date->format('d/m/Y') : '-' }} {{ number_format($payment->amount, 2) }} جنيه @php $methodLabels = [ 'cash' => '💵 نقداً', 'bank_transfer' => '🏦 حوالة بنكية', 'check' => '📋 شيك', 'card' => '💳 بطاقة' ]; @endphp {{ $methodLabels[$payment->payment_method] ?? $payment->payment_method }} {{ $payment->receipt_number ?: '-' }} @if($payment->status === 'completed') ✅ مكتملة @elseif($payment->status === 'pending') ⏳ معلقة @else ❌ ملغاة @endif {{ Str::limit($payment->notes, 30) ?: '-' }}
الإجمالي {{ number_format($totalPayments, 2) }} جنيه مكتمل: {{ number_format($totalCompleted, 2) }} جنيه معلق: {{ number_format($totalPending, 2) }} جنيه
عرض {{ $payments->count() }} من {{ $payments->count() }} مدفوعة
@else

لا توجد مدفوعات عملاء مسجلة

لم يتم تسجيل أي مدفوعات عملاء مباشرة لهذا العقد بعد

@endif {{-- الإجماليات الشاملة --}} @php $grandTotalPaid = $sumPaid + $totalCompleted; // الأقساط المدفوعة + المدفوعات المباشرة $contractTotal = $contract->installment_price; // إجمالي قيمة العقد $remaining = $contractTotal - $grandTotalPaid; // المتبقي $paymentPercentage = $contractTotal > 0 ? ($grandTotalPaid / $contractTotal) * 100 : 0; @endphp
الإجماليات الشاملة

إجمالي المحصل

{{ number_format($grandTotalPaid, 2) }} جنيه

أقساط + مدفوعات عملاء

قيمة العقد

{{ number_format($contractTotal, 2) }} جنيه

إجمالي المطلوب

المتبقي

{{ number_format($remaining, 2) }} جنيه

{{ number_format($paymentPercentage, 1) }}% مكتمل
{{-- شريط التقدم --}}
نسبة الإنجاز: {{ number_format($paymentPercentage, 1) }}%
{{-- Footer --}}