From 749d33bed027a2354fa0310b082bb214a0a91991 Mon Sep 17 00:00:00 2001 From: whywdd Date: Mon, 28 Apr 2025 23:42:49 +0700 Subject: [PATCH] update tgl 28 april 2 --- app/Http/Controllers/UangMasukController.php | 41 +++++--- resources/views/Gaji.Blade.php | 2 +- resources/views/UangMasuk.blade.php | 103 +++++++++++++++++-- 3 files changed, 124 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/UangMasukController.php b/app/Http/Controllers/UangMasukController.php index bedc37f..56cd2da 100644 --- a/app/Http/Controllers/UangMasukController.php +++ b/app/Http/Controllers/UangMasukController.php @@ -3,40 +3,53 @@ namespace App\Http\Controllers; use App\Models\UangMasukModel; // Import model +use App\Models\GajiModel; // Import model gaji use Illuminate\Http\Request; class UangMasukController extends Controller { public function index() { - return view('UangMasuk'); + // Ambil data karyawan untuk dropdown + $karyawans = GajiModel::whereNotNull('gaji') + ->where('gaji', '>', 0) + ->select('id', 'nama', 'jabatan', 'gaji') + ->get(); + + return view('UangMasuk', compact('karyawans')); } public function store(Request $request) { try { - // Validasi input - $validated = $request->validate([ + $request->validate([ 'Tanggal' => 'required|date', + 'keterangan_type' => 'required|in:karyawan,manual', 'kategori' => 'required|array', - 'kategori.*' => 'required|string', - 'keterangan' => 'required|string', - 'nominal' => 'required|array', - 'nominal.*' => 'required|string', 'posisi' => 'required|array', - 'posisi.*' => 'required|in:debit,kredit', + 'nominal' => 'required|array', ]); - // Inisialisasi data untuk disimpan + // Gabungkan keterangan berdasarkan tipe input + $keterangan = ''; + if ($request->keterangan_type === 'karyawan') { + $keterangan = $request->keterangan; + if ($request->filled('keterangan_tambahan')) { + $keterangan = $request->keterangan_tambahan; + } + } else { + $keterangan = $request->keterangan_manual; + } + $data = [ - 'Tanggal' => $validated['Tanggal'], - 'keterangan' => $validated['keterangan'], + 'Tanggal' => $request->Tanggal, + 'keterangan' => $keterangan, ]; // Proses setiap rekening - foreach ($validated['kategori'] as $index => $kategori) { + foreach ($request->kategori as $index => $kategori) { $kode = $this->generateKode($kategori); - $nominal = str_replace(['.', ','], '', $validated['nominal'][$index]); + $nominal = str_replace(['.', ','], '', $request->nominal[$index]); // Set kode dan kategori sesuai urutan $positionIndex = $index === 0 ? '' : ($index + 1); @@ -44,7 +57,7 @@ public function store(Request $request) $data["kategori" . $positionIndex] = $kategori; // Set uang_masuk atau uang_keluar berdasarkan posisi - if ($validated['posisi'][$index] === 'debit') { + if ($request->posisi[$index] === 'debit') { $data["uang_masuk" . $positionIndex] = $nominal; $data["uang_keluar" . $positionIndex] = null; } else { diff --git a/resources/views/Gaji.Blade.php b/resources/views/Gaji.Blade.php index cdacf89..3f33e74 100644 --- a/resources/views/Gaji.Blade.php +++ b/resources/views/Gaji.Blade.php @@ -5,7 +5,7 @@

Gaji Karyawan

-

Tabel keterangan gaji karyawan

+

Tabel keterangan karyawan

diff --git a/resources/views/UangMasuk.blade.php b/resources/views/UangMasuk.blade.php index 353af3d..ac632e2 100644 --- a/resources/views/UangMasuk.blade.php +++ b/resources/views/UangMasuk.blade.php @@ -29,13 +29,60 @@ class="w-full border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus: - +
+ +
+ + +
+ + +
+
+ + + +
+ + +
+
+
+ + + +
@@ -228,6 +275,24 @@ class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition- let rekeningCount = 1; const MAX_REKENING = 5; +function toggleKeteranganInput() { + const karyawanInput = document.getElementById('karyawanInput'); + const manualInput = document.getElementById('manualInput'); + const keteranganType = document.querySelector('input[name="keterangan_type"]:checked').value; + + if (keteranganType === 'karyawan') { + karyawanInput.classList.remove('hidden'); + manualInput.classList.add('hidden'); + document.getElementById('keterangan').required = true; + document.querySelector('textarea[name="keterangan_manual"]').required = false; + } else { + karyawanInput.classList.add('hidden'); + manualInput.classList.remove('hidden'); + document.getElementById('keterangan').required = false; + document.querySelector('textarea[name="keterangan_manual"]').required = true; + } +} + function tambahRekening() { if (rekeningCount >= MAX_REKENING) { Swal.fire({ @@ -318,6 +383,18 @@ function validateBalance() { }); return; } + + // Set keterangan berdasarkan input yang dipilih + const keteranganType = document.querySelector('input[name="keterangan_type"]:checked').value; + if (keteranganType === 'karyawan') { + const karyawan = document.getElementById('keterangan').value; + const tambahan = document.querySelector('textarea[name="keterangan_tambahan"]').value; + document.querySelector('textarea[name="keterangan_manual"]').value = ''; + document.getElementById('keterangan').value = tambahan ? `${karyawan} - ${tambahan}` : karyawan; + } else { + const manual = document.querySelector('textarea[name="keterangan_manual"]').value; + document.getElementById('keterangan').value = manual; + } }); // Event listener untuk input nominal @@ -335,6 +412,18 @@ function validateBalance() { } }); +document.getElementById('keterangan').addEventListener('change', function() { + const selectedOption = this.options[this.selectedIndex]; + const gaji = selectedOption.getAttribute('data-gaji'); + if (gaji) { + const nominalInputs = document.getElementsByName('nominal[]'); + if (nominalInputs.length > 0) { + nominalInputs[0].value = new Intl.NumberFormat('id-ID').format(gaji); + validateBalance(); + } + } +}); + @if(session('success')) Swal.fire({ icon: 'success',