query('bulan'); // Ambil nilai bulan dari query string $selectedyear = $request->query('tahun'); $tagihanid = $request->query('tagihan_id'); if (Auth::user()->role == 'bendahara-excellent') $jurusan = 'excellent'; else $jurusan = 'reguler'; $trans = Transaksi::with(['user', 'jenistagihan']) ->where('jurusan', $jurusan) ->where('status', '1') ->whereNotNull('tgl_pembayaran') ->latest() ->get(); $totaltransaksi = Transaksi::where('status', '1')->count(); $trans->map(function ($item) { $item->tgl_pembayaran_formatted = \Carbon\Carbon::parse($item->tgl_pembayaran)->format('F j, Y'); return $item; }); $no = 1; $listbulan = [ '1' => 'Januari', '2' => 'Februari', '3' => 'Maret', '4' => 'April', '5' => 'Mei', '6' => 'Juni', '7' => 'Juli', '8' => 'Agustus', '9' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Desember', ]; $tagihan = tagihan::whereNotIn('id', [1, 2, 3, 4, 5, 6])->get(); $siswa = User::where('role', 'siswa')->get(); $tahun = TahunAjaran::where('status', 'aktif')->get(); $query = Transaksi::select( 'jenistagihan.name as Namatagihan', 'transaksi.tagihan_id', DB::raw('GROUP_CONCAT(transaksi.keterangan SEPARATOR ", ") as keterangan'), DB::raw('SUM(transaksi.total) as total'), DB::raw('MIN(transaksi.tgl_pembayaran) as tgl_pembayaran') // Menggunakan MIN untuk tanggal pembayaran pertama ) ->join('jenistagihan', 'jenistagihan.id', '=', 'transaksi.tagihan_id') ->where('jenis_transaksi', 'Pengeluaran') ->where('jurusan', $jurusan); if ($selectedyear) { $query->whereYear('tgl_pembayaran', $selectedyear); } if ($bulan) { $query->whereMonth('tgl_pembayaran', $bulan); } if (Auth::user()->role == 'bendahara-excellent') { $query->whereNotIn('tagihan_id', ['5']); } $query->groupBy('transaksi.tagihan_id'); $data = $query->get(); $jumlahtotal = $data->sum('total'); return view('pages.rekapitulasi.rekapitulasi-pengeluaran', compact('siswa', 'tagihan', 'jumlahtotal', 'no', 'tahun', 'trans', 'data', 'totaltransaksi', 'listbulan', 'query')); } public function exportExcel(Request $request) { Carbon::setLocale('id'); if (Auth::user()->role == 'bendahara-excellent') $jurusan = 'excellent'; else $jurusan = 'reguler'; $tagihanid = $request->input('tagihan_id'); $tahun = $request->input('tahun'); $bulan = $request->input('bulan'); $query = Transaksi::select( 'jenistagihan.name as Namatagihan', 'transaksi.tagihan_id', DB::raw('GROUP_CONCAT(transaksi.keterangan SEPARATOR ", ") as keterangan'), DB::raw('SUM(transaksi.total) as total'), DB::raw('MIN(transaksi.tgl_pembayaran) as tgl_pembayaran') // Menggunakan MIN untuk tanggal pembayaran pertama ) ->join('jenistagihan', 'jenistagihan.id', '=', 'transaksi.tagihan_id') ->where('jenis_transaksi', 'Pengeluaran') ->where('jurusan', $jurusan); if ($tahun) { $query->whereYear('tgl_pembayaran', $tahun); } if ($bulan) { $query->whereMonth('tgl_pembayaran', $bulan); } if (Auth::user()->role == 'bendahara-excellent') { $query->whereNotIn('tagihan_id', ['5']); } $query->groupBy('transaksi.tagihan_id'); $data = $query->get(); $jumlahtotal = $data->sum('total'); $title = 'Pengeluaran'; // Buat nama file berdasarkan ketersediaan bulan dan tahun if ($tahun && $bulan) { $namaFile = 'Rekapitulasi-Pengeluaran_' . $tahun . '_' . Carbon::createFromFormat('m', $bulan)->translatedFormat('F') . '.xlsx'; } elseif ($tahun) { $namaFile = 'Rekapitulasi-Pengeluaran_' . $tahun . '.xlsx'; } else { $namaFile = 'Rekapitulasi-Pengeluaran.xlsx'; } return Excel::download(new RekapitulasiExport($data, $jumlahtotal, $title, $bulan, $tahun), $namaFile); } }