@extends('layouts.app') @section('title', 'Infografis Keuangan') @section('content') @php $jt = fn ($n) => (($n < 0) ? '−' : '').(abs($n) >= 1e9 ? str_replace('.', ',', round(abs($n) / 1e9, 2)).' M' : (abs($n) >= 1e6 ? str_replace('.', ',', round(abs($n) / 1e6, 1)).' jt' : number_format(abs($n), 0, ',', '.'))); // Perubahan vs periode lalu; $naikBaik=false untuk beban (naik = buruk) $delta = function ($ini, $lalu, bool $naikBaik = true) { if ($lalu == 0) { return $ini == 0 ? ['netral', 'sama dengan periode lalu'] : ['netral', 'periode lalu nihil']; } $p = ($ini - $lalu) / abs($lalu) * 100; if (abs($p) < 0.5) { return ['netral', '≈ periode lalu']; } $baik = ($p > 0) === $naikBaik; return [$baik ? 'naik' : 'turun', ($p > 0 ? '▲ ' : '▼ ').number_format(abs($p), 0, ',', '.').'% vs periode lalu']; }; $namaBulan = collect(range(1, 12))->mapWithKeys(fn ($b) => [$b => \Illuminate\Support\Carbon::create(2000, $b)->translatedFormat('F')]); @endphp {{-- Filter (tidak ikut dicetak) --}}
Pembanding: {{ $periodeLalu }}. Tips cetak: kertas A4, aktifkan Background graphics, atau pilih Save as PDF. Rincian lengkap: Pendapatan & Beban · Neraca.
{{-- Kop --}}
@if(logo_url())@endif
{{ perusahaan() }}
Infografis Keuangan · {{ $periode }} · pembanding {{ $periodeLalu }}
Dicetak {{ now()->translatedFormat('d M Y H:i') }}
oleh {{ auth()->user()->name }}
{{-- KPI --}}
@foreach([ ['Pendapatan', $kpi->pendapatan, $delta($kpi->pendapatan, $kpi->pendapatan_lalu), 'bi-graph-up-arrow'], ['Beban', $kpi->beban, $delta($kpi->beban, $kpi->beban_lalu, false), 'bi-receipt'], [$kpi->laba >= 0 ? 'Laba Bersih' : 'Rugi Bersih', $kpi->laba, $kpi->margin !== null ? ['netral', 'margin '.number_format($kpi->margin, 0, ',', '.').'% · '.$delta($kpi->laba, $kpi->laba_lalu)[1]] : $delta($kpi->laba, $kpi->laba_lalu), 'bi-trophy'], ['Saldo Kas & Bank', $kpi->saldo_akhir, ['netral', 'per '.tgl($per).' · awal Rp '.$jt($kpi->saldo_awal)], 'bi-safe'], ['Arus Kas Bersih', $kpi->kas_masuk - $kpi->kas_keluar, ['netral', 'masuk Rp '.$jt($kpi->kas_masuk).' · keluar Rp '.$jt($kpi->kas_keluar)], 'bi-arrow-left-right'], ['Piutang Penjualan', $kpi->piutang, ['netral', $kpi->piutang_transaksi.' transaksi berjalan (di luar neraca)'], 'bi-hourglass-split'], ] as [$label, $nilai, [$arah, $ket], $ikon])
{{ $label }}
Rp {{ $jt($nilai) }}
{{ $ket }}
@endforeach
{{-- Sorotan --}}
Sorotan Keuangan
Pendapatan vs Beban per Bulan
Laba / Rugi per Bulan
Saldo Akhir Kas & Bank per Bulan
Posisi Neraca per {{ tgl($per) }}
@php $n = $neraca; $aset = $n['aset_lancar']->concat($n['aset_lain'])->filter(fn ($a) => abs($a->jumlah) >= 0.5); $pasiva = $n['kewajiban']->map(fn ($a) => (object) ['nama' => $a->nama, 'jumlah' => $a->jumlah, 'k' => 'Kewajiban']) ->concat($n['ekuitas']->map(fn ($a) => (object) ['nama' => $a->nama, 'jumlah' => $a->jumlah, 'k' => 'Ekuitas']))->filter(fn ($a) => abs($a->jumlah) >= 0.5); $porsi = fn ($x, $tot) => $tot > 0 ? max(0, $x) / $tot * 100 : 0; @endphp @foreach($aset as $a) @endforeach @foreach($pasiva as $a) @endforeach
AsetRp {{ $jt($n['total_aset']) }}
{{ $a->nama }}
{{ $jt($a->jumlah) }}
Kewajiban + EkuitasRp {{ $jt($n['total_pasiva']) }}
{{ $a->nama }} · {{ $a->k }}
{{ $jt($a->jumlah) }}
{{ $n['seimbang'] ? 'Neraca seimbang' : 'Neraca tidak seimbang (selisih Rp '.$jt($n['total_aset'] - $n['total_pasiva']).')' }}
@foreach([['Komposisi Pendapatan', $komposisiPendapatan, ''], ['Komposisi Beban', $komposisiBeban, 'beban']] as [$judul, $daftar, $kelas])
{{ $judul }}
@forelse($daftar as $x) @empty @endforelse
{{ $x->nama }}
{{ $jt($x->jumlah) }} · {{ number_format($x->persen, 0, ',', '.') }}%
Tidak ada transaksi pada periode ini.
@endforeach
{{-- Tabel data bulanan (tampilan tabel untuk grafik) --}}
Ringkasan per Bulan
@foreach($bulanPanjang as $i => $b) @foreach(['pendapatan', 'beban', 'laba', 'masuk', 'keluar', 'tunai', 'bank'] as $k) @endforeach @endforeach @foreach(['pendapatan', 'beban', 'laba', 'masuk', 'keluar'] as $k)@endforeach
BulanPendapatanBebanLaba / Rugi Kas MasukKas KeluarSaldo TunaiSaldo Bank
{{ $b }}{{ $seri[$k][$i] ? $jt($seri[$k][$i]) : '-' }}
Total{{ $jt($seri[$k]->sum()) }}{{ $jt($seri['tunai']->filter(fn ($v) => $v !== null)->last() ?? 0) }}{{ $jt($seri['bank']->filter(fn ($v) => $v !== null)->last() ?? 0) }}
{{ perusahaan() }} · Infografis Keuangan {{ $periode }} · Basis kas: pendapatan & beban dicatat saat uang diterima / dikeluarkan. Deposit titipan pembeli adalah kewajiban, bukan pendapatan. Piutang penjualan ditampilkan sebagai informasi di luar neraca.
@endsection @push('styles') @include('laporan._infografis-gaya') @endpush @push('scripts') @endpush