distinct()->orderBy('tahun', 'desc')->pluck('tahun'); $months = [ 1 => 'Januari', 2 => 'Februari', 3 => 'Maret', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Agustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Desember' ]; // Ambil filter dari request $tahun = $request->input('tahun', date('Y')); $bulan = $request->input('bulan', ''); // Query laporan keuangan utama $query = Keuangan::selectRaw( 'YEAR(tanggal_pembayaran) as tahun, MONTH(tanggal_pembayaran) as bulan, SUM(jumlah_pembayaran) as total_pemasukan, (SELECT SUM(jumlah_pengeluaran) FROM pengeluaran WHERE YEAR(tanggal_pengeluaran) = YEAR(tanggal_pembayaran) AND MONTH(tanggal_pengeluaran) = MONTH(tanggal_pembayaran) ) as total_pengeluaran, (SUM(jumlah_pembayaran) - COALESCE((SELECT SUM(jumlah_pengeluaran) FROM pengeluaran WHERE YEAR(tanggal_pengeluaran) = YEAR(tanggal_pembayaran) AND MONTH(tanggal_pengeluaran) = MONTH(tanggal_pembayaran)), 0) ) as keuntungan_bersih' ) ->where('status_transaksi', 'Lunas') ->whereYear('tanggal_pembayaran', $tahun) ->groupBy('tahun', 'bulan') ->orderBy('tahun', 'desc') ->orderBy('bulan', 'desc'); if ($bulan) { $query->whereMonth('dibuat_pada', $bulan); } $filteredLaporan = $query->get(); // Ambil detail pemasukan $detailPemasukan = Keuangan::whereYear('tanggal_pembayaran', $tahun) ->where('status_transaksi', 'Lunas') ->when($bulan, fn($q) => $q->whereMonth('tanggal_pembayaran', $bulan)) ->orderBy('tanggal_pembayaran', 'desc') ->get(); $detailPengeluaran = DB::table('pengeluaran') ->whereYear('tanggal_pengeluaran', $tahun) ->when($bulan, fn($q) => $q->whereMonth('tanggal_pengeluaran', $bulan)) ->orderBy('tanggal_pengeluaran', 'desc') ->get(); return view('pemilik.laporan', compact('years', 'months', 'filteredLaporan', 'detailPemasukan', 'detailPengeluaran')); } }