get('bulan', Carbon::now()->format('m')); $tahun = $request->get('tahun', Carbon::now()->format('Y')); if ($tahun == Carbon::now()->format('Y') && $bulan > Carbon::now()->format('m')) { $bulan = Carbon::now()->format('m'); } if ($tahun > Carbon::now()->format('Y')) { $tahun = Carbon::now()->format('Y'); } $namaBulan = Carbon::create()->month($bulan)->translatedFormat('F'); $pendapatan = Pendapatan::where('user_id', Auth::id()) ->whereYear('tanggal_transaksi', $tahun) ->whereMonth('tanggal_transaksi', $bulan) ->orderBy('tanggal_transaksi', 'asc') ->get() ->map(function ($item) { return [ 'tanggal' => $item->tanggal_transaksi, 'keterangan' => $item->kategori, 'jumlah' => $item->jumlah * $item->harga_per_satuan, 'tipe' => 'pendapatan', ]; }); $pengeluaran = Pengeluaran::where('user_id', Auth::id()) ->whereYear('tanggal_pembelian', $tahun) ->whereMonth('tanggal_pembelian', $bulan) ->orderBy('tanggal_pembelian', 'asc') ->get() ->map(function ($item) { return [ 'tanggal' => $item->tanggal_pembelian, 'keterangan' => $item->category . ' - ' . $item->description, 'jumlah' => $item->jumlah * $item->harga_per_satuan, 'tipe' => 'pengeluaran', ]; }); $transaksi = collect($pendapatan)->merge($pengeluaran)->sortBy('tanggal'); $totalPendapatan = $pendapatan->sum('jumlah'); $totalPengeluaran = $pengeluaran->sum('jumlah'); $labaBersih = $totalPendapatan - $totalPengeluaran; $totalPendapatanHarian = $transaksi->filter(fn($trx) => $trx['tipe'] === 'pendapatan')->sum('jumlah'); $totalPengeluaranHarian = $transaksi->filter(fn($trx) => $trx['tipe'] === 'pengeluaran')->sum('jumlah'); $totalSaldoHarian = $totalPendapatanHarian - $totalPengeluaranHarian; return view('finance-management', compact( 'transaksi', 'totalPendapatan', 'totalPengeluaran', 'labaBersih', 'bulan', 'tahun', 'namaBulan', 'totalPendapatanHarian', 'totalPengeluaranHarian', 'totalSaldoHarian' )); } catch (\Exception $e) { Log::error('Gagal memuat laporan keuangan: ' . $e->getMessage()); return redirect()->route('finance-management')->with([ 'status' => 'error', 'message' => 'Terjadi kesalahan saat memuat laporan keuangan.', ]); } } public function exportPDF(Request $request) { $bulan = $request->get('bulan', Carbon::now()->format('m')); $tahun = $request->get('tahun', Carbon::now()->format('Y')); $namaBulan = Carbon::create()->month($bulan)->translatedFormat('F'); $userId = Auth::id(); // Simpan user ID dalam variabel agar konsisten $pendapatan = Pendapatan::where('user_id', $userId) ->whereYear('tanggal_transaksi', $tahun) ->whereMonth('tanggal_transaksi', $bulan) ->orderBy('tanggal_transaksi', 'asc') ->get() ->map(fn($item) => [ 'tanggal' => $item->tanggal_transaksi, 'keterangan' => $item->kategori, 'jumlah' => $item->jumlah * $item->harga_per_satuan, 'tipe' => 'pendapatan', ]); $pengeluaran = Pengeluaran::where('user_id', $userId) // Tambahkan filter user_id di sini ->whereYear('tanggal_pembelian', $tahun) ->whereMonth('tanggal_pembelian', $bulan) ->orderBy('tanggal_pembelian', 'asc') ->get() ->map(fn($item) => [ 'tanggal' => $item->tanggal_pembelian, 'keterangan' => $item->category . ' - ' . $item->description, 'jumlah' => $item->jumlah * $item->harga_per_satuan, 'tipe' => 'pengeluaran', ]); $transaksi = collect($pendapatan)->merge($pengeluaran)->sortBy('tanggal'); $totalPendapatan = $pendapatan->sum('jumlah'); $totalPengeluaran = $pengeluaran->sum('jumlah'); $totalSaldo = $totalPendapatan - $totalPengeluaran; // Tambahkan nama user ke dalam view untuk ditampilkan dalam PDF $user = Auth::user(); $pdf = Pdf::loadView('cetak.laporan-keuangan', compact( 'transaksi', 'totalPendapatan', 'totalPengeluaran', 'totalSaldo', 'namaBulan', 'tahun', 'user' )); return $pdf->download("Laporan-Keuangan-{$user->name}-{$namaBulan}-{$tahun}.pdf"); } }