input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d')); $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d')); // Inisialisasi array untuk menyimpan data $pendapatan = []; $beban = []; try { // Ambil semua transaksi dalam periode $transaksis = DB::table('laporan_transaksis') ->whereBetween('Tanggal', [$startDate, $endDate]) ->get(); foreach ($transaksis as $transaksi) { // Proses kategori1 if (!empty($transaksi->kategori)) { $this->prosesKategori( $transaksi->kategori, $transaksi->uang_masuk ?? 0, $transaksi->uang_keluar ?? 0, $pendapatan, $beban ); } // Proses kategori2-5 for ($i = 2; $i <= 5; $i++) { $kategori = $transaksi->{"kategori$i"}; if (!empty($kategori)) { $this->prosesKategori( $kategori, $transaksi->{"uang_masuk$i"} ?? 0, $transaksi->{"uang_keluar$i"} ?? 0, $pendapatan, $beban ); } } } // Hitung total $total_pendapatan = array_sum(array_column($pendapatan, 'nominal')); $total_beban = abs(array_sum(array_column($beban, 'nominal'))); $laba_rugi = $total_pendapatan - $total_beban; return view('Labarugi', [ 'startDate' => $startDate, 'endDate' => $endDate, 'pendapatan' => $pendapatan, 'beban' => $beban, 'total_pendapatan' => $total_pendapatan, 'total_beban' => $total_beban, 'laba_rugi' => $laba_rugi ]); } catch (\Exception $e) { Log::error("Error in LabarugiController: " . $e->getMessage()); throw $e; } } private function prosesKategori($kategori, $uang_masuk, $uang_keluar, &$pendapatan, &$beban) { $kodeAkun = $this->getKodeAkun($kategori); if ($kodeAkun) { $nominal = $uang_masuk - $uang_keluar; $data = [ 'kategori' => $kategori, 'kode_akun' => $kodeAkun, 'nominal' => $nominal ]; if (str_starts_with($kodeAkun, '24')) { if (isset($pendapatan[$kategori])) { $pendapatan[$kategori]['nominal'] += $nominal; } else { $pendapatan[$kategori] = $data; } } elseif (str_starts_with($kodeAkun, '25')) { if (isset($beban[$kategori])) { $beban[$kategori]['nominal'] += $nominal; } else { $beban[$kategori] = $data; } } } } public function filter(Request $request) { return $this->index($request); } }