@extends('layouts.app')
@section('content')
@php
$today = now()->toDateString();
$hasStart = request()->filled('start_date');
$hasEnd = request()->filled('end_date');
$startDate = request('start_date', $startDate ?? $today);
$endDate = request('end_date', $endDate ?? $today);
$resolveText = function ($trx, array $keys, $default = '-') {
foreach ($keys as $key) {
$value = data_get($trx, $key);
if (is_array($value) || is_object($value)) {
$value =
data_get($value, 'name')
?? data_get($value, 'customer_name')
?? data_get($value, 'label')
?? data_get($value, 'title');
}
if (is_string($value)) {
$value = trim($value);
}
if ($value !== null && $value !== '') {
return (string) $value;
}
}
return $default;
};
$transactionsCol = collect($transactions ?? $ledger ?? [])->map(function ($trx) use ($resolveText) {
return [
'tanggal' => data_get($trx, 'tanggal')
?? data_get($trx, 'date')
?? data_get($trx, 'created_at')
?? data_get($trx, 'transaction_date'),
'keterangan' => $resolveText($trx, [
'keterangan',
'description',
'notes',
'note',
'title',
], '-'),
'customer' => $resolveText($trx, [
'customer',
'customer_name',
'pelanggan',
'buyer_name',
'client_name',
'order.customer_name',
'order.customer.name',
'order.customerRelation.name',
'order.customer_relation.name',
'payment.order.customer_name',
'payment.order.customer.name',
'payment.order.customerRelation.name',
'payment.order.customer_relation.name',
], '-'),
'rekening' => $resolveText($trx, [
'rekening',
'account_name',
'payment_account_name',
'paymentAccount.name',
'payment_account.name',
'account.name',
], '-'),
'debit' => (float) data_get($trx, 'debit', 0),
'kredit' => (float) data_get($trx, 'kredit', data_get($trx, 'credit', 0)),
'saldo' => (float) data_get($trx, 'saldo', data_get($trx, 'balance', 0)),
'source' => data_get($trx, 'source', '-'),
];
});
$accountsCol = collect($accounts ?? []);
$totalDebit = $transactionsCol->sum('debit');
$totalKredit = $transactionsCol->sum('kredit');
$saldoAkhir = data_get($transactionsCol->last(), 'saldo', $saldoAwal ?? 0);
$selectedAccount = request('payment_account_id');
$selectedAccountLabel = 'Semua Rekening';
if ($selectedAccount !== null && $selectedAccount !== '') {
$selectedAccountLabel = $accountsCol->first(function ($acc) use ($selectedAccount) {
return (string) data_get($acc, 'id') === (string) $selectedAccount;
})->name ?? 'Rekening Terpilih';
}
$isSingleDay = ($startDate === $endDate);
$netFlow = ($totalDebit ?? 0) - ($totalKredit ?? 0);
$trendText = $netFlow >= 0 ? 'surplus' : 'defisit';
$isMinus = ($saldoAkhir ?? 0) < 0;
$periodLabel = $isSingleDay
? ('Tanggal: ' . \Carbon\Carbon::parse($startDate)->format('d M Y'))
: ('Periode: ' . \Carbon\Carbon::parse($startDate)->format('d M Y') . ' s/d ' . \Carbon\Carbon::parse($endDate)->format('d M Y'));
@endphp
@if(!$hasStart && !$hasEnd)
@endif
@if(empty($isPrint))
@endif
Ringkasan Buku Besar
{{ $periodLabel }}
Rekening: {{ $selectedAccountLabel }}
Arus Bersih: {{ $trendText }}
Buku besar ini sudah sinkron dengan modul kas:
Kas Tunai ,
Kas Kecil ,
Kas Bank ,
termasuk modal , mutasi ,
setoran , penjualan ,
expense , dan pembayaran supplier .
Cara baca cepat
• Debit = uang masuk ke rekening yang dipilih.
• Kredit = uang keluar dari rekening yang dipilih.
• Mutasi akan tampil masuk/keluar sesuai rekening filter.
Catatan penting
• Filter Semua Rekening menampilkan gabungan tanpa double count mutasi internal.
• Filter Kas Kecil fokus ke modal dan mutasi kas kecil.
• Filter Kas Bank menampilkan bank gabungan.
@if($isMinus)
Saldo akhir sedang minus.
Artinya pada filter aktif, arus keluar lebih besar daripada arus masuk.
@endif
@if(empty($isPrint))
@endif
Tanggal
Keterangan
Customer
Rekening
Debit
Kredit
Saldo
Saldo Awal
Rp {{ number_format($saldoAwal ?? 0, 0, ',', '.') }}
@forelse($transactionsCol as $trx)
@php
$debit = (float) ($trx['debit'] ?? 0);
$kredit = (float) ($trx['kredit'] ?? 0);
$saldo = (float) ($trx['saldo'] ?? 0);
$tanggal = $trx['tanggal'] ?? null;
@endphp
{{ $tanggal ? \Carbon\Carbon::parse($tanggal)->format('d/m/Y H:i') : '-' }}
{{ $trx['keterangan'] ?? '-' }}
{{ $trx['customer'] ?? '-' }}
{{ $trx['rekening'] ?? '-' }}
{{ $debit > 0 ? 'Rp ' . number_format($debit, 0, ',', '.') : '-' }}
{{ $kredit > 0 ? 'Rp ' . number_format($kredit, 0, ',', '.') : '-' }}
Rp {{ number_format($saldo, 0, ',', '.') }}
@empty
Tidak ada data pada filter ini.
@endforelse
{{ $isSingleDay ? 'Total Hari Ini' : 'Total Periode' }}
Rp {{ number_format($totalDebit ?? 0, 0, ',', '.') }}
Rp {{ number_format($totalKredit ?? 0, 0, ',', '.') }}
Rp {{ number_format($saldoAkhir ?? 0, 0, ',', '.') }}
© {{ date('Y') }} Rio Ardiansyah - aplikasipercetakan.com .
All rights reserved.
@if(!empty($isPrint))
@endif
@endsection