@extends('dashboard.layouts.app') @section('content') @include('components.alert') @php $activeType = request('type', 'all'); $totalEntries = $journalSummary['count'] ?? 0; $totalDebit = (float) ($journalSummary['total_debit'] ?? 0); $totalCredit = (float) ($journalSummary['total_credit'] ?? 0); $difference = (float) ($journalSummary['difference'] ?? 0); $isBalanced = $difference < 0.001; $defaultTabs = collect(['manual', 'expense', 'sales', 'student']); $tabs = $defaultTabs->merge($entryTypes ?? collect())->filter()->unique()->values(); @endphp
Finance / Journal Entries

Journal Entries

Total Entries
{{ number_format($totalEntries) }}
{{ now()->format('F Y') }}
Total Debit
@forelse($journalSummary['by_currency'] ?? [] as $currencyTotal)
{{ number_format($currencyTotal->total_debit, 2) }} {{ $currencyTotal->currency ?? 'Unspecified' }}
@empty 0.00 @endforelse
Debit sum
Total Credit
@forelse($journalSummary['by_currency'] ?? [] as $currencyTotal)
{{ number_format($currencyTotal->total_credit, 2) }} {{ $currencyTotal->currency ?? 'Unspecified' }}
@empty 0.00 @endforelse
Credit sum
Balance
{{ $isBalanced ? 'Balanced' : number_format($difference, 2) }}
Debit - credit
All @foreach($tabs as $type) {{ str($type)->headline() }} @endforeach
@if($activeType !== 'all') @endif
@forelse ($journalEntries as $entry) @php $status = $entry->status ?? 'draft'; $statusClass = match ($status) { 'posted' => 'journal-status-badge--posted', 'cancelled' => 'journal-status-badge--cancelled', 'draft' => 'journal-status-badge--draft', default => '', }; $entryNo = $entry->reference_no && str_starts_with($entry->reference_no, 'JE-') ? $entry->reference_no : 'JE-' . str_pad($entry->id, 6, '0', STR_PAD_LEFT); $externalReference = $entry->reference_no && !str_starts_with($entry->reference_no, 'JE-') ? $entry->reference_no : null; $linkedStudentInvoice = $entry->studentInvoice; $studentInvoiceId = $linkedStudentInvoice?->id ?? ($externalReference ? ($studentInvoiceLinks[$externalReference] ?? null) : null); $studentInvoiceReference = $linkedStudentInvoice?->invoice_number ?? $externalReference; $payrollInvoiceId = $externalReference ? ($payrollInvoiceLinks[$externalReference] ?? null) : null; $source = $entry->type ?: 'manual'; $isAutomatic = $source !== 'manual'; $entryDebit = (float) ($entry->debit_total ?? $entry->lines->sum('debit')); $entryCredit = (float) ($entry->credit_total ?? $entry->lines->sum('credit')); @endphp @empty @endforelse
Entry No. Date Source Reference Description Debit Credit Status Created By Actions
@if($isAutomatic) AUTO @endif {{ $entryNo }} {{ optional($entry->date)->format('Y-m-d') ?? '-' }} {{ str($source)->headline() }} @if($studentInvoiceId) {{ $studentInvoiceReference }} @elseif($payrollInvoiceId) {{ $externalReference }} @else {{ $externalReference ?: '-' }} @endif @php $displayPartyName = $entry->payment?->party_name ?: $entry->party_name; $displayPartyType = $entry->payment?->party_type ?: $entry->party_type; $displayPartyRef = $entry->payment?->party_ref ?: $entry->party_ref; @endphp
{{ $entry->description ?: 'No description' }}
@if($displayPartyName)
{{ $displayPartyName }} @if($displayPartyType) ({{ ucfirst($displayPartyType) }}) @endif @if($displayPartyRef) - {{ $displayPartyRef }} @endif
@endif
{{ number_format($entryDebit, 2) }} {{ $entry->currency ?? '' }} {{ number_format($entryCredit, 2) }} {{ $entry->currency ?? '' }} {{ str($status)->headline() }} {{ $entry->creator ? $entry->creator->name : 'System' }}
No journal entries found.
@if($journalEntries instanceof \Illuminate\Pagination\LengthAwarePaginator)
{{ $journalEntries->links('pagination::bootstrap-5') }}
@endif
@endsection