@extends('garage.layouts.app') @section('title', 'Customer Profile') @section('content') @php $vehicles = collect($vehicles ?? []); $documents = collect($documents ?? []); $ledgerRows = collect($ledgerRows ?? []); $stats = $stats ?? []; $closing = (float)($ledgerTotals['balance'] ?? 0); $displayName = trim(($customer->name ?? '') . ' ' . ($customer->last_name ?? '')); if ($displayName === '') { $displayName = $customer_label ?? 'Customer'; } $initial = strtoupper(mb_substr($displayName, 0, 1)); @endphp @include('shared.folder-tabs-styles')
{{ $initial }}
{{ $displayName }}
{{ $customer->code ?: 'No code' }}@if(!empty($customer->contact_person)) · {{ $customer->contact_person }}@endif
Phone
{{ $customer->phone ?: '—' }}
Email
{{ $customer->email ?: '—' }}
Vehicles
{{ (int)($stats['vehicles'] ?? 0) }}
Ledger Balance
{{ number_format(abs($closing), 2) }} {{ $closing >= 0 ? 'Dr' : 'Cr' }}
General Information
Code: {{ $customer->code ?: '—' }}
Contact person: {{ $customer->contact_person ?: '—' }}
Status: {{ !empty($customer->is_active) ? 'Active' : 'Inactive' }}
Phone: {{ $customer->phone ?: '—' }}
Email: {{ $customer->email ?: '—' }}
Tax number: {{ $customer->tax_number ?? '—' }}
Credit limit: PKR {{ number_format((float)($customer->credit_limit ?? 0), 2) }}
Opening balance: PKR {{ number_format((float)($customer->opening_balance ?? 0), 2) }}
Address: {{ $customer->address ?: '—' }}
Description: {{ $customer->description ?? '—' }}

Estimates: {{ (int)($stats['estimates'] ?? 0) }} {{ $glOrders ?? 'Orders' }}: {{ (int)($stats['repair_orders'] ?? 0) }} Sales: {{ (int)($stats['sales'] ?? 0) }}
@forelse($vehicles as $v) @empty @endforelse
Plate Make / Model Year Current reading Next service Status
{{ $v->registration_number ?: '—' }} {{ trim(implode(' ', array_filter([$v->make, $v->model]))) ?: '—' }} {{ $v->year ?: '—' }} {{ $v->odometer_reading !== null && $v->odometer_reading !== '' ? number_format((float)$v->odometer_reading) : '—' }} @if($v->next_service_date) {{ $v->next_service_date }} @elseif($v->next_service_meter_reading) @ {{ number_format((float)$v->next_service_meter_reading) }} @else — @endif {{ !empty($v->is_active) ? 'Active' : 'Inactive' }}
No vehicles registered for this customer.
Estimates, {{ strtolower($glOrders ?? 'orders') }} & sales
@forelse($documents as $doc) @empty @endforelse
Type Number Date Vehicle Reading Amount
{{ $doc->source_label ?? $doc->source_type }} {{ $doc->document_number ?: '—' }} {{ $doc->document_date ?: '—' }} {{ $doc->vehicle_label ?: '—' }} {{ $doc->meter_reading ?? '—' }} {{ number_format((float)($doc->grand_total ?? 0), 2) }} @if(!empty($doc->show_url)) Open @endif
No estimates, {{ strtolower($glOrders ?? 'orders') }}, or sales yet.
Ledger balance Open full statement
Dr: {{ number_format((float)($ledgerTotals['dr'] ?? 0), 2) }} Cr: {{ number_format((float)($ledgerTotals['cr'] ?? 0), 2) }} Closing: {{ number_format(abs($closing), 2) }} {{ $closing >= 0 ? 'Dr' : 'Cr' }}
@forelse($ledgerRows as $r) @php $dr = ($r->transaction_type ?? '') === 'debit' ? (float)($r->amount ?? 0) : 0; $cr = ($r->transaction_type ?? '') === 'credit' ? (float)($r->amount ?? 0) : 0; @endphp @empty @endforelse
DateVoucherTypeDrCrNarration
{{ $r->voucher_date ?: '—' }} @if(!empty($r->voucher_id)) {{ $r->voucher_no ?: '—' }} @else {{ $r->voucher_no ?: '—' }} @endif {{ $r->voucher_type ?: '—' }} {{ $dr > 0 ? number_format($dr, 2) : '—' }} {{ $cr > 0 ? number_format($cr, 2) : '—' }}
{{ $r->narration ?: '—' }}
@if(!empty($r->against_text))
Against: {{ $r->against_text }}
@endif
No ledger transactions found.
@endsection