From 778db5371667a9af9d0806756225f1d69a6b9554 Mon Sep 17 00:00:00 2001 From: whywdd Date: Tue, 22 Apr 2025 04:23:05 +0700 Subject: [PATCH] update tgl 22 april2 --- .../Controllers/DataKaryawanController.php | 7 +- app/Http/Controllers/GajiController.php | 34 +- app/Http/Controllers/HomeController.php | 328 ++++++++++-------- resources/views/Core/Sidebar.blade.php | 7 +- resources/views/Gaji.Blade.php | 92 ++++- resources/views/GajiEdit.blade.php | 72 +++- resources/views/Home.blade.php | 80 +++-- resources/views/Labarugi.blade.php | 11 +- resources/views/Laporan.blade.php | 20 +- resources/views/Neracasaldo.blade.php | 4 +- resources/views/Rekening.blade.php | 10 +- resources/views/User.blade.php | 60 +++- 12 files changed, 500 insertions(+), 225 deletions(-) diff --git a/app/Http/Controllers/DataKaryawanController.php b/app/Http/Controllers/DataKaryawanController.php index 8a695af..5442f8c 100644 --- a/app/Http/Controllers/DataKaryawanController.php +++ b/app/Http/Controllers/DataKaryawanController.php @@ -34,9 +34,12 @@ public function store(Request $request) 'gaji' => $gaji ]); - return redirect()->back()->with('success', 'Data karyawan berhasil ditambahkan!'); + // Redirect ke halaman gaji dengan pesan sukses + return redirect()->route('gaji.index') + ->with('success', 'Data karyawan berhasil ditambahkan!'); } catch (\Exception $e) { - return redirect()->back()->with('error', 'Gagal menambahkan data karyawan: ' . $e->getMessage()); + return redirect()->back() + ->with('error', 'Gagal menambahkan data karyawan: ' . $e->getMessage()); } } } diff --git a/app/Http/Controllers/GajiController.php b/app/Http/Controllers/GajiController.php index f76fa49..a764200 100644 --- a/app/Http/Controllers/GajiController.php +++ b/app/Http/Controllers/GajiController.php @@ -33,15 +33,37 @@ public function edit($id) public function update(Request $request, $id) { - $karyawan = GajiModel::findOrFail($id); - $karyawan->update($request->all()); - return redirect()->route('gaji.index')->with('success', 'Data gaji berhasil diperbarui'); + try { + $karyawan = GajiModel::findOrFail($id); + + // Bersihkan format angka dari gaji + $request->merge([ + 'gaji' => str_replace('.', '', $request->gaji) + ]); + + $karyawan->update($request->all()); + return redirect()->route('gaji.index') + ->with('success', 'Data gaji berhasil diperbarui!'); + } catch (\Exception $e) { + return redirect()->back() + ->with('error', 'Gagal memperbarui data gaji: ' . $e->getMessage()); + } } public function destroy($id) { - $karyawan = GajiModel::findOrFail($id); - $karyawan->delete(); - return response()->json(['success' => true]); + try { + $karyawan = GajiModel::findOrFail($id); + $karyawan->delete(); + return response()->json([ + 'success' => true, + 'message' => 'Data gaji berhasil dihapus!' + ]); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Gagal menghapus data gaji: ' . $e->getMessage() + ]); + } } } \ No newline at end of file diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 8cda5ed..1858fd1 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -39,40 +39,42 @@ private function getKodeAkun($kategori) return null; } - private function prosesKategori($kategori, $uang_masuk, $uang_keluar, &$pendapatan, &$beban) - { - $kodeAkun = $this->getKodeAkun($kategori); - if ($kodeAkun) { - if (str_starts_with($kodeAkun, '24')) { - // Untuk pendapatan - $nominal = $uang_masuk; - $data = [ - 'kategori' => $kategori, - 'kode_akun' => $kodeAkun, - 'nominal' => $nominal - ]; - - if (isset($pendapatan[$kategori])) { - $pendapatan[$kategori]['nominal'] += $nominal; - } else { - $pendapatan[$kategori] = $data; - } - } elseif (str_starts_with($kodeAkun, '25')) { - // Untuk beban - $nominal = $uang_keluar; - $data = [ - 'kategori' => $kategori, - 'kode_akun' => $kodeAkun, - 'nominal' => $nominal - ]; - - if (isset($beban[$kategori])) { - $beban[$kategori]['nominal'] += $nominal; - } else { - $beban[$kategori] = $data; - } - } + private function getAccountType($kodeAkun) { + $kode = (string)$kodeAkun; + if (str_starts_with($kode, '111') || str_starts_with($kode, '112')) { + return 'AKTIVA'; + } else if (str_starts_with($kode, '121') || str_starts_with($kode, '122') || str_starts_with($kode, '131')) { + return 'PASIVA'; + } else if (str_starts_with($kode, '241') || str_starts_with($kode, '242')) { + return 'PENDAPATAN'; + } else if (str_starts_with($kode, '251') || str_starts_with($kode, '252')) { + return 'BEBAN'; } + return 'UNKNOWN'; + } + + private function calculateBalance($previousBalance, $debit, $kredit, $accountType) { + $balance = $previousBalance; + + switch($accountType) { + case 'AKTIVA': + // Aktiva: bertambah di debit, berkurang di kredit + $balance = $balance + $debit - $kredit; + break; + case 'PASIVA': + case 'PENDAPATAN': + // Pasiva & Pendapatan: bertambah di kredit, berkurang di debit + $balance = $balance - $debit + $kredit; + break; + case 'BEBAN': + // Beban: bertambah di debit, berkurang di kredit + $balance = $balance + $debit - $kredit; + break; + default: + $balance = $balance + $debit - $kredit; + } + + return $balance; } public function index(Request $request) @@ -81,147 +83,175 @@ public function index(Request $request) $startDate = $request->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(); - // Reset total - $totalUangMasuk = 0; - $totalUangKeluar = 0; + // Array untuk menyimpan total per kategori + $totalsPerAkun = []; + $totalPendapatan = 0; + $totalBeban = 0; + + // Fungsi untuk menambahkan atau memperbarui total per akun + $processAkun = function($kode, $kategori, $debit, $kredit) use (&$totalsPerAkun) { + if (!empty($kode) && !empty($kategori)) { + if (!isset($totalsPerAkun[$kategori])) { + $totalsPerAkun[$kategori] = [ + 'kode' => $kode, + 'kategori' => $kategori, + 'debit' => 0, + 'kredit' => 0 + ]; + } + $totalsPerAkun[$kategori]['debit'] += floatval($debit ?? 0); + $totalsPerAkun[$kategori]['kredit'] += floatval($kredit ?? 0); + } + }; 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 untuk semua kategori + for ($i = 1; $i <= 5; $i++) { + $kategoriField = $i === 1 ? 'kategori' : "kategori{$i}"; + $uangMasukField = $i === 1 ? 'uang_masuk' : "uang_masuk{$i}"; + $uangKeluarField = $i === 1 ? 'uang_keluar' : "uang_keluar{$i}"; - // Tambahkan ke total - $totalUangMasuk += $transaksi->uang_masuk ?? 0; - $totalUangKeluar += $transaksi->uang_keluar ?? 0; - } + if (!empty($transaksi->$kategoriField)) { + $kodeAkun = $this->getKodeAkun($transaksi->$kategoriField); + if ($kodeAkun) { + $processAkun( + $kodeAkun, + $transaksi->$kategoriField, + $transaksi->$uangMasukField, + $transaksi->$uangKeluarField + ); - // 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 - ); - - // Tambahkan ke total - $totalUangMasuk += $transaksi->{"uang_masuk$i"} ?? 0; - $totalUangKeluar += $transaksi->{"uang_keluar$i"} ?? 0; + // Hitung total berdasarkan jenis akun + $accountType = $this->getAccountType($kodeAkun); + if ($accountType === 'PENDAPATAN') { + $totalPendapatan = $this->calculateBalance( + $totalPendapatan, + floatval($transaksi->$uangMasukField ?? 0), + floatval($transaksi->$uangKeluarField ?? 0), + 'PENDAPATAN' + ); + } elseif ($accountType === 'BEBAN') { + $totalBeban = $this->calculateBalance( + $totalBeban, + floatval($transaksi->$uangMasukField ?? 0), + floatval($transaksi->$uangKeluarField ?? 0), + 'BEBAN' + ); + } + } } } } - // Calculate current month totals - $currentMonthUangMasuk = $totalUangMasuk; - $currentMonthUangKeluar = $totalUangKeluar; + // Hitung laba rugi + $labaRugiTotal = $totalPendapatan - $totalBeban; + $labaRugiBulanIni = $labaRugiTotal; - // Calculate last month totals for growth percentage - $lastMonthStart = Carbon::parse($startDate)->subMonth()->startOfMonth(); - $lastMonthEnd = Carbon::parse($startDate)->subMonth()->endOfMonth(); - - $lastMonthTransaksis = DB::table('laporan_transaksis') - ->whereBetween('Tanggal', [$lastMonthStart, $lastMonthEnd]) - ->get(); - - $lastMonthUangMasuk = 0; - $lastMonthUangKeluar = 0; - - foreach ($lastMonthTransaksis as $transaksi) { - $lastMonthUangMasuk += $transaksi->uang_masuk ?? 0; - $lastMonthUangKeluar += $transaksi->uang_keluar ?? 0; - - for ($i = 2; $i <= 5; $i++) { - $lastMonthUangMasuk += $transaksi->{"uang_masuk$i"} ?? 0; - $lastMonthUangKeluar += $transaksi->{"uang_keluar$i"} ?? 0; + // Kelompokkan data untuk tampilan + $pendapatan = []; + $beban = []; + foreach ($totalsPerAkun as $kategori => $data) { + $accountType = $this->getAccountType($data['kode']); + if ($accountType === 'PENDAPATAN') { + $pendapatan[$kategori] = [ + 'kategori' => $kategori, + 'kode_akun' => $data['kode'], + 'nominal' => $this->calculateBalance(0, $data['debit'], $data['kredit'], 'PENDAPATAN') + ]; + } elseif ($accountType === 'BEBAN') { + $beban[$kategori] = [ + 'kategori' => $kategori, + 'kode_akun' => $data['kode'], + 'nominal' => $this->calculateBalance(0, $data['debit'], $data['kredit'], 'BEBAN') + ]; } } - $lastMonthTotal = $lastMonthUangMasuk - $lastMonthUangKeluar; - $currentMonthTotal = $totalUangMasuk - $totalUangKeluar; - + // Get monthly totals for chart + $monthlyTotals = DB::table('laporan_transaksis') + ->select( + DB::raw('DATE_FORMAT(Tanggal, "%Y-%m") as periode'), + DB::raw('SUM(CASE WHEN LEFT(kategori, 3) IN ("241", "242") THEN uang_masuk ELSE 0 END) as total_debit'), + DB::raw('SUM(CASE WHEN LEFT(kategori, 3) IN ("251", "252") THEN uang_keluar ELSE 0 END) as total_kredit') + ) + ->groupBy('periode') + ->orderBy('periode') + ->get(); + + // Get category totals for distribution chart + $categoryTotals = DB::table('laporan_transaksis') + ->select( + 'kategori', + DB::raw('SUM(CASE WHEN LEFT(kategori, 3) IN ("241", "242") THEN uang_masuk ELSE 0 END) as total_debit'), + DB::raw('SUM(CASE WHEN LEFT(kategori, 3) IN ("251", "252") THEN uang_keluar ELSE 0 END) as total_kredit') + ) + ->whereBetween('Tanggal', [$startDate, $endDate]) + ->whereNotNull('kategori') + ->groupBy('kategori') + ->get(); + + // Get recent transactions + $recentTransactions = DB::table('laporan_transaksis') + ->orderBy('Tanggal', 'desc') + ->limit(10) + ->get(); + // Calculate growth percentage - $growthPercentage = $lastMonthTotal != 0 ? - (($currentMonthTotal - $lastMonthTotal) / abs($lastMonthTotal)) * 100 : + $lastMonthStart = Carbon::parse($startDate)->subMonth()->startOfMonth(); + $lastMonthEnd = Carbon::parse($startDate)->subMonth()->endOfMonth(); + + $lastMonthData = DB::table('laporan_transaksis') + ->whereBetween('Tanggal', [$lastMonthStart, $lastMonthEnd]) + ->get(); + + $lastMonthPendapatan = 0; + $lastMonthBeban = 0; + + foreach ($lastMonthData as $transaksi) { + $kodeAkun = $this->getKodeAkun($transaksi->kategori); + if ($kodeAkun) { + $accountType = $this->getAccountType($kodeAkun); + if ($accountType === 'PENDAPATAN') { + $lastMonthPendapatan = $this->calculateBalance( + $lastMonthPendapatan, + floatval($transaksi->uang_masuk ?? 0), + floatval($transaksi->uang_keluar ?? 0), + 'PENDAPATAN' + ); + } elseif ($accountType === 'BEBAN') { + $lastMonthBeban = $this->calculateBalance( + $lastMonthBeban, + floatval($transaksi->uang_masuk ?? 0), + floatval($transaksi->uang_keluar ?? 0), + 'BEBAN' + ); + } + } + } + + $lastMonthLabaRugi = $lastMonthPendapatan - $lastMonthBeban; + $currentMonthLabaRugi = $labaRugiBulanIni; + + $growthPercentage = $lastMonthLabaRugi != 0 ? + (($currentMonthLabaRugi - $lastMonthLabaRugi) / abs($lastMonthLabaRugi)) * 100 : 100; - // Calculate total saldo dan laba rugi sesuai format di Labarugi blade - $totalSaldo = -($totalUangMasuk) - $totalUangKeluar; - $labaRugiTotal = -($totalUangMasuk) - $totalUangKeluar; - $labaRugiBulanIni = -($currentMonthUangMasuk) - $currentMonthUangKeluar; - - // Get category breakdown - $categoryTotals = collect($pendapatan)->map(function($item) { - return [ - 'kategori' => $item['kategori'], - 'total_debit' => $item['nominal'], - 'total_kredit' => 0 - ]; - })->merge( - collect($beban)->map(function($item) { - return [ - 'kategori' => $item['kategori'], - 'total_debit' => 0, - 'total_kredit' => $item['nominal'] - ]; - }) - )->values(); - - // Get monthly totals for chart - $monthlyTotals = DB::table('laporan_transaksis') - ->select( - DB::raw('DATE_FORMAT(Tanggal, "%Y-%m") as periode'), - DB::raw('SUM(uang_masuk) + SUM(COALESCE(uang_masuk2, 0)) + SUM(COALESCE(uang_masuk3, 0)) + SUM(COALESCE(uang_masuk4, 0)) + SUM(COALESCE(uang_masuk5, 0)) as total_debit'), - DB::raw('SUM(uang_keluar) + SUM(COALESCE(uang_keluar2, 0)) + SUM(COALESCE(uang_keluar3, 0)) + SUM(COALESCE(uang_keluar4, 0)) + SUM(COALESCE(uang_keluar5, 0)) as total_kredit') - ) - ->groupBy('periode') - ->orderBy('periode') - ->get(); - - // Get recent transactions - $recentTransactions = DB::table('laporan_transaksis') - ->orderBy('Tanggal', 'desc') - ->limit(10) - ->get(); - - // Debug log untuk memeriksa nilai - Log::info("Total Uang Masuk: " . $totalUangMasuk); - Log::info("Total Uang Keluar: " . $totalUangKeluar); - Log::info("Total Saldo: " . $totalSaldo); - Log::info("Laba Rugi Total: " . $labaRugiTotal); - Log::info("Laba Rugi Bulan Ini: " . $labaRugiBulanIni); - - return view('home', compact( + return view('home', compact( 'startDate', 'endDate', - 'totalUangMasuk', - 'totalUangKeluar', - 'currentMonthUangMasuk', - 'currentMonthUangKeluar', - 'totalSaldo', - 'growthPercentage', + 'totalPendapatan', + 'totalBeban', 'labaRugiTotal', 'labaRugiBulanIni', - 'monthlyTotals', - 'categoryTotals', + 'growthPercentage', + 'monthlyTotals', + 'categoryTotals', 'recentTransactions', 'pendapatan', 'beban' diff --git a/resources/views/Core/Sidebar.blade.php b/resources/views/Core/Sidebar.blade.php index 4ac188f..506a625 100644 --- a/resources/views/Core/Sidebar.blade.php +++ b/resources/views/Core/Sidebar.blade.php @@ -157,7 +157,7 @@
  • - Rekening + Buku Besar
  • @@ -165,6 +165,11 @@ Neraca Saldo
  • +
  • + + Laporan Laba Rugi + +
  • diff --git a/resources/views/Gaji.Blade.php b/resources/views/Gaji.Blade.php index 7fd1fa4..cdacf89 100644 --- a/resources/views/Gaji.Blade.php +++ b/resources/views/Gaji.Blade.php @@ -8,6 +8,11 @@

    Tabel keterangan gaji karyawan

    + + + + +
    @@ -100,6 +105,25 @@ class="text-red-600 hover:text-red-800"
    diff --git a/resources/views/GajiEdit.blade.php b/resources/views/GajiEdit.blade.php index 8df70ed..63e82b4 100644 --- a/resources/views/GajiEdit.blade.php +++ b/resources/views/GajiEdit.blade.php @@ -2,12 +2,17 @@ @section('content')
    + + + + +

    Edit Gaji Karyawan

    -
    + @csrf @method('PUT') @@ -31,8 +36,12 @@ class="border rounded w-full py-2 px-3" required>
    - +
    + Rp + +
    @@ -47,4 +56,61 @@ class="bg-gray-500 text-white px-4 py-2 rounded mr-2">
    + + @endsection \ No newline at end of file diff --git a/resources/views/Home.blade.php b/resources/views/Home.blade.php index ae4d617..467cdbf 100644 --- a/resources/views/Home.blade.php +++ b/resources/views/Home.blade.php @@ -29,25 +29,7 @@
    -
    - - - +
    @@ -58,7 +40,13 @@

    Total Pendapatan

    -

    Rp {{ number_format($totalUangMasuk, 0, ',', '.') }}

    +

    + @if($totalPendapatan < 0) + -Rp {{ number_format(abs($totalPendapatan), 0, ',', '.') }} + @else + Rp {{ number_format($totalPendapatan, 0, ',', '.') }} + @endif +

    Periode: {{ date('d/m/Y', strtotime($startDate)) }} - {{ date('d/m/Y', strtotime($endDate)) }}

    @@ -74,7 +62,13 @@

    Total Beban

    -

    Rp {{ number_format($totalUangKeluar, 0, ',', '.') }}

    +

    + @if($totalBeban < 0) + -Rp {{ number_format(abs($totalBeban), 0, ',', '.') }} + @else + Rp {{ number_format($totalBeban, 0, ',', '.') }} + @endif +

    Periode: {{ date('d/m/Y', strtotime($startDate)) }} - {{ date('d/m/Y', strtotime($endDate)) }}

    @@ -92,13 +86,25 @@ {{ ucwords($item['kategori']) }} ({{ $item['kode_akun'] }})
    - Rp {{ number_format(abs($item['nominal']), 0, ',', '.') }} + + @if($item['nominal'] < 0) + -Rp {{ number_format(abs($item['nominal']), 0, ',', '.') }} + @else + Rp {{ number_format($item['nominal'], 0, ',', '.') }} + @endif + @endforeach
    Total Pendapatan - Rp {{ number_format($totalUangMasuk, 0, ',', '.') }} + + @if($totalPendapatan < 0) + -Rp {{ number_format(abs($totalPendapatan), 0, ',', '.') }} + @else + Rp {{ number_format($totalPendapatan, 0, ',', '.') }} + @endif +
    @@ -112,13 +118,25 @@ {{ ucwords($item['kategori']) }} ({{ $item['kode_akun'] }}) - Rp {{ number_format(abs($item['nominal']), 0, ',', '.') }} + + @if($item['nominal'] < 0) + -Rp {{ number_format(abs($item['nominal']), 0, ',', '.') }} + @else + Rp {{ number_format($item['nominal'], 0, ',', '.') }} + @endif + @endforeach
    Total Beban - Rp {{ number_format($totalUangKeluar, 0, ',', '.') }} + + @if($totalBeban < 0) + -Rp {{ number_format(abs($totalBeban), 0, ',', '.') }} + @else + Rp {{ number_format($totalBeban, 0, ',', '.') }} + @endif +
    @@ -137,7 +155,11 @@

    - Rp {{ number_format(abs($labaRugiTotal), 0, ',', '.') }} + @if($labaRugiTotal < 0) + -Rp {{ number_format(abs($labaRugiTotal), 0, ',', '.') }} + @else + Rp {{ number_format($labaRugiTotal, 0, ',', '.') }} + @endif

    {{ $labaRugiTotal >= 0 ? 'Laba' : 'Rugi' }}

    @@ -155,7 +177,11 @@

    - Rp {{ number_format(abs($labaRugiBulanIni), 0, ',', '.') }} + @if($labaRugiBulanIni < 0) + -Rp {{ number_format(abs($labaRugiBulanIni), 0, ',', '.') }} + @else + Rp {{ number_format($labaRugiBulanIni, 0, ',', '.') }} + @endif

    {{ $labaRugiBulanIni >= 0 ? 'Laba' : 'Rugi' }}

    diff --git a/resources/views/Labarugi.blade.php b/resources/views/Labarugi.blade.php index ed3bed8..2e93b2a 100644 --- a/resources/views/Labarugi.blade.php +++ b/resources/views/Labarugi.blade.php @@ -28,7 +28,7 @@

    Laporan Laba Rugi

    -

    PT EXAMPLE

    +

    Budivespaendut

    Periode: {{ date('F Y', strtotime($startDate)) }}

    @@ -92,7 +92,14 @@ Laba/Rugi Bersih - {{ number_format(-($total_pendapatan) - $total_beban, 0, ',', '.') }} + @php + $labaRugi = -($total_pendapatan) - $total_beban; + @endphp + @if($labaRugi < 0) + -Rp {{ number_format(abs($labaRugi), 0, ',', '.') }} + @else + Rp {{ number_format($labaRugi, 0, ',', '.') }} + @endif diff --git a/resources/views/Laporan.blade.php b/resources/views/Laporan.blade.php index bf84767..d0d0e78 100644 --- a/resources/views/Laporan.blade.php +++ b/resources/views/Laporan.blade.php @@ -19,7 +19,7 @@

    Jurnal Umum

    -

    Halaman ini menampilkan jurnal umum.

    +

    jurnal umum Budivespaendut.