From ae63ac1618765f30619dfd38cfa06b05bd8a6e4f Mon Sep 17 00:00:00 2001 From: whywdd Date: Mon, 19 May 2025 22:59:01 +0700 Subject: [PATCH] update tgl 19 mei --- app/Http/Controllers/LaporanController.php | 8 +- .../Controllers/NeracasaldoController.php | 156 +++++++++++------- app/Http/Controllers/RekeningController.php | 129 +++++++++------ resources/views/User.blade.php | 18 +- 4 files changed, 192 insertions(+), 119 deletions(-) diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 5df338e..603287a 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -166,7 +166,7 @@ public function headings(): array { } }; - return Excel::download($export, 'laporan-keuangan-'.date('Y-m-d').'.xlsx'); + return Excel::download($export, 'jurnal-umum-'.date('Y-m-d').'.xlsx'); } catch (\Exception $e) { return redirect()->back()->with('error', 'Gagal mengekspor Excel: ' . $e->getMessage()); } @@ -273,7 +273,7 @@ public function exportPDF(Request $request) $rows .= ''.number_format($totalKredit, 0, ',', '.').''; $rows .= ''; - $html = 'Laporan Keuangan'; - $html .= '

Laporan Keuangan

'; + $html .= '

Jurnal Umum

'; $html .= '

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

'; $html .= ' @@ -299,7 +299,7 @@ public function exportPDF(Request $request) $html .= '
No
'; $pdf = PDF::loadHTML($html); - return $pdf->download('laporan-keuangan-'.date('Y-m-d').'.pdf'); + return $pdf->download('jurnal-umum-'.date('Y-m-d').'.pdf'); } catch (\Exception $e) { return redirect()->back()->with('error', 'Gagal mengekspor PDF: ' . $e->getMessage()); } diff --git a/app/Http/Controllers/NeracasaldoController.php b/app/Http/Controllers/NeracasaldoController.php index 555a780..82ca265 100644 --- a/app/Http/Controllers/NeracasaldoController.php +++ b/app/Http/Controllers/NeracasaldoController.php @@ -153,7 +153,7 @@ public function show($id) public function exportExcel(Request $request) { try { - // Ambil parameter filter tanggal jika ada + // Ambil parameter filter tanggal $startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d')); $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d')); @@ -166,7 +166,7 @@ public function exportExcel(Request $request) $totalDebit = 0; $totalKredit = 0; - // Proses data seperti di fungsi index + // Proses data transaksi foreach ($rawTransaksis as $transaksi) { $processAkun = function($kode, $kategori, $debit, $kredit) use (&$totalsPerAkun) { if (!empty($kode) && !empty($kategori)) { @@ -183,6 +183,7 @@ public function exportExcel(Request $request) } }; + // Proses semua kolom transaksi $processAkun($transaksi->kode, $transaksi->kategori, $transaksi->uang_masuk, $transaksi->uang_keluar); $processAkun($transaksi->kode2, $transaksi->kategori2, $transaksi->uang_masuk2, $transaksi->uang_keluar2); $processAkun($transaksi->kode3, $transaksi->kategori3, $transaksi->uang_masuk3, $transaksi->uang_keluar3); @@ -190,33 +191,42 @@ public function exportExcel(Request $request) $processAkun($transaksi->kode5, $transaksi->kategori5, $transaksi->uang_masuk5, $transaksi->uang_keluar5); } + // Proses saldo untuk setiap akun foreach ($totalsPerAkun as $kategori => $data) { $kodeAwal = substr($data['kode'], 0, 3); $saldo = $data['debit'] - $data['kredit']; - if (in_array($kodeAwal, ['111', '112']) || in_array($kodeAwal, ['251', '252'])) { - if ($saldo != 0) { - $processedData[] = [ - 'kode' => $data['kode'], - 'kategori' => $kategori, - 'debit' => $saldo > 0 ? abs($saldo) : 0, - 'kredit' => $saldo < 0 ? abs($saldo) : 0 - ]; - $totalDebit += $saldo > 0 ? abs($saldo) : 0; - $totalKredit += $saldo < 0 ? abs($saldo) : 0; + // Reset nilai debit dan kredit + $debit = 0; + $kredit = 0; + + // Logika untuk menentukan posisi saldo + if (in_array($kodeAwal, ['111', '112', '251', '252'])) { + // Aktiva dan Beban + if ($saldo > 0) { + $debit = $saldo; + } else { + $kredit = abs($saldo); } } else { - if ($saldo != 0) { - $processedData[] = [ - 'kode' => $data['kode'], - 'kategori' => $kategori, - 'debit' => $saldo < 0 ? abs($saldo) : 0, - 'kredit' => $saldo > 0 ? abs($saldo) : 0 - ]; - $totalDebit += $saldo < 0 ? abs($saldo) : 0; - $totalKredit += $saldo > 0 ? abs($saldo) : 0; + // Pasiva dan Pendapatan + if ($saldo < 0) { + $kredit = abs($saldo); + } else { + $debit = $saldo; } } + + if ($saldo != 0) { + $processedData[] = [ + 'kode' => $data['kode'], + 'kategori' => $kategori, + 'debit' => $debit, + 'kredit' => $kredit + ]; + $totalDebit += $debit; + $totalKredit += $kredit; + } } // Tambahkan baris total @@ -227,13 +237,23 @@ public function exportExcel(Request $request) 'kredit' => $totalKredit ]; - // Buat class export inline + // Buat class export inline dengan format yang diperbaiki $export = new class($processedData) implements FromCollection, WithHeadings { protected $data; public function __construct($data) { - $this->data = collect($data); + // Format data untuk Excel + $formattedData = collect($data)->map(function ($item) { + return [ + 'kode' => $item['kode'], + 'kategori' => $item['kategori'], + 'debit' => $item['debit'] > 0 ? $item['debit'] : 0, + 'kredit' => $item['kredit'] > 0 ? $item['kredit'] : 0 + ]; + }); + + $this->data = $formattedData; } public function collection() @@ -302,32 +322,48 @@ public function exportPDF(Request $request) $kodeAwal = substr($data['kode'], 0, 3); $saldo = $data['debit'] - $data['kredit']; - if (in_array($kodeAwal, ['111', '112']) || in_array($kodeAwal, ['251', '252'])) { - if ($saldo != 0) { - $processedData[] = [ - 'kode' => $data['kode'], - 'kategori' => $kategori, - 'debit' => $saldo > 0 ? abs($saldo) : 0, - 'kredit' => $saldo < 0 ? abs($saldo) : 0 - ]; - $totalDebit += $saldo > 0 ? abs($saldo) : 0; - $totalKredit += $saldo < 0 ? abs($saldo) : 0; + // Reset nilai debit dan kredit + $debit = 0; + $kredit = 0; + + // Logika untuk menentukan posisi saldo + if (in_array($kodeAwal, ['111', '112', '251', '252'])) { + // Aktiva dan Beban + if ($saldo > 0) { + $debit = $saldo; + } else { + $kredit = abs($saldo); } } else { - if ($saldo != 0) { - $processedData[] = [ - 'kode' => $data['kode'], - 'kategori' => $kategori, - 'debit' => $saldo < 0 ? abs($saldo) : 0, - 'kredit' => $saldo > 0 ? abs($saldo) : 0 - ]; - $totalDebit += $saldo < 0 ? abs($saldo) : 0; - $totalKredit += $saldo > 0 ? abs($saldo) : 0; + // Pasiva dan Pendapatan + if ($saldo < 0) { + $kredit = abs($saldo); + } else { + $debit = $saldo; } } + + if ($saldo != 0) { + $processedData[] = [ + 'kode' => $data['kode'], + 'kategori' => $kategori, + 'debit' => $debit, + 'kredit' => $kredit + ]; + $totalDebit += $debit; + $totalKredit += $kredit; + } } - // Generate PDF + // Tambahkan baris total + $processedData[] = [ + 'kode' => '', + 'kategori' => 'Total', + 'debit' => $totalDebit, + 'kredit' => $totalKredit + ]; + + // Generate PDF dengan style yang diperbaiki $html = ' @@ -354,23 +390,25 @@ public function exportPDF(Request $request) margin-bottom: 20px; } table, th, td { - border: 1px solid #ddd; + border: 1px solid #000; } th, td { - padding: 6px; + padding: 8px; text-align: left; - font-size: 10px; } th { background-color: #f2f2f2; - font-weight: bold; } .text-right { text-align: right; } - tfoot td { + .total-row td { font-weight: bold; - background-color: #f9f9f9; + background-color: #f2f2f2; + } + .amount { + text-align: right; + white-space: nowrap; } @@ -381,10 +419,10 @@ public function exportPDF(Request $request) - - - - + + + + '; @@ -395,8 +433,8 @@ public function exportPDF(Request $request) - - + + '; } } @@ -404,10 +442,10 @@ public function exportPDF(Request $request) $html .= ' - - - - + + + +
KodeNama AkunDebitKreditKodeNama AkunDebitKredit
'.$data['kode'].' '.$data['kategori'].''.($data['debit'] > 0 ? 'Rp '.number_format($data['debit'], 0, ',', '.') : '-').''.($data['kredit'] > 0 ? 'Rp '.number_format($data['kredit'], 0, ',', '.') : '-').''.($data['debit'] > 0 ? number_format($data['debit'], 0, ',', '.') : '-').''.($data['kredit'] > 0 ? number_format($data['kredit'], 0, ',', '.') : '-').'
Total:Rp '.number_format($totalDebit, 0, ',', '.').'Rp '.number_format($totalKredit, 0, ',', '.').'
Total:'.number_format($totalDebit, 0, ',', '.').''.number_format($totalKredit, 0, ',', '.').'
diff --git a/app/Http/Controllers/RekeningController.php b/app/Http/Controllers/RekeningController.php index 662c7cf..2c85145 100644 --- a/app/Http/Controllers/RekeningController.php +++ b/app/Http/Controllers/RekeningController.php @@ -507,34 +507,55 @@ public function exportPDF(Request $request) Buku Besar -

Buku Besar

-

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

'; +
+
+
+

Buku Besar

+

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

+
'; foreach($groupedLaporan as $kategori => $items) { $kodeAkun = $items->first()->kode ?? '-'; $html .= ' - - - - - - - - - - - - - - '; - - $runningBalance = 0; - $accountType = substr($kodeAkun, 0, 3); - - foreach($items->sortBy('Tanggal') as $item) { - if (in_array($accountType, ['111', '112']) || in_array($accountType, ['251', '252'])) { - $runningBalance = $runningBalance + $item->debit - $item->kredit; - } else { - $runningBalance = $runningBalance - $item->debit + $item->kredit; +
TanggalKeteranganRefDebitKreditSaldo
+ + + + + + + + + + + '; + + $runningBalance = 0; + $accountType = substr($kodeAkun, 0, 3); + + foreach($items->sortBy('Tanggal') as $item) { + if (in_array($accountType, ['111', '112']) || in_array($accountType, ['251', '252'])) { + $runningBalance = $runningBalance + $item->debit - $item->kredit; + } else { + $runningBalance = $runningBalance - $item->debit + $item->kredit; + } + + $html .= ' + + + + + + + + '; } $html .= ' - - - - - - - - '; - } - - $html .= ' - -
TanggalKeteranganRefDebitKreditSaldo
' . date('d/m/Y', strtotime($item->Tanggal)) . '' . $item->keterangan . '-' . ($item->debit > 0 ? number_format($item->debit, 0, ',', '.') : '-') . '' . ($item->kredit > 0 ? number_format($item->kredit, 0, ',', '.') : '-') . '' . number_format($runningBalance, 0, ',', '.') . '
' . date('d/m/Y', strtotime($item->Tanggal)) . '' . $item->keterangan . '-' . ($item->debit > 0 ? number_format($item->debit, 0, ',', '.') : '-') . '' . ($item->kredit > 0 ? number_format($item->kredit, 0, ',', '.') : '-') . '' . number_format($runningBalance, 0, ',', '.') . '
'; + + +
'; } $html .= ' +
'; diff --git a/resources/views/User.blade.php b/resources/views/User.blade.php index 0eeeda6..22045f6 100644 --- a/resources/views/User.blade.php +++ b/resources/views/User.blade.php @@ -1,6 +1,7 @@ @extends('Core.Sidebar') @section('content') Data Akun User + @@ -248,20 +249,29 @@ function deleteUser(id) { cancelButtonText: 'Batal' }).then((result) => { if (result.isConfirmed) { + const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); + fetch(`/User/${id}`, { method: 'DELETE', headers: { - 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content, + 'X-CSRF-TOKEN': token, + 'Accept': 'application/json', 'Content-Type': 'application/json' - } + }, + credentials: 'same-origin' + }) + .then(response => { + if (!response.ok) { + throw new Error('Network response was not ok'); + } + return response.json(); }) - .then(response => response.json()) .then(data => { if (data.success) { Swal.fire({ icon: 'success', title: 'Berhasil!', - text: 'Data user berhasil dihapus', + text: data.message || 'Data user berhasil dihapus', confirmButtonText: 'OK' }).then(() => { loadUsers(