diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index 34fa78d..4da2b1a 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -117,8 +117,30 @@ class PembayaranController extends Controller return view('lpj::pembayaran.form', compact('permohonan', 'persetujuanPenawaran')); } + public function editKurang($id){ + $noc = Noc::find($id); + $permohonan = Permohonan::find($noc->permohonan_id); + $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $permohonan->id)->first(); + return view('lpj::pembayaran.form-kurang', compact('noc','permohonan','persetujuanPenawaran')); + } public function store(PersetujuanPenawaranRequest $request) { + if($req['type'] == 'kurang_bayar'){ + $noc = Noc::find($req['noc_id']); + $noc->nominal_pelunasan = $req['nominal_pelunasan']; + if (request()->hasFile('bukti_ksl_kurang_bayar')) { + $folderPath = 'persetujuan_penawaran/bukti_ksl_kurang_bayar/' . $req['noc_id']; + $noc->bukti_ksl_kurang_bayar = $request->file('bukti_ksl_kurang_bayar')->store($folderPath, 'public'); + } + $noc->save(); + + $persetujuanPenawaran = PersetujuanPenawaran::find($noc->persetujuan_penawaran_id); + $persetujuanPenawaran->bukti_ksl_kurang_bayar = $noc->bukti_ksl_kurang_bayar; + $persetujuanPenawaran->nominal_kurang_bayar = $req['nominal_pelunasan']; + $persetujuanPenawaran->save(); + return redirect() + ->route('pembayaran.kurang.index')->with('success', 'Pelunasan Kurang Bayar berhasil disimpan.'); + } $validated = $request->validated(); $validated['created_by'] = Auth::id(); $validated['status'] = '0'; @@ -347,7 +369,8 @@ class PembayaranController extends Controller } $query = Noc::query()->where(function ($query) { - $query->where(['status_kurang_bayar' => '1']); + $query->where(['status_kurang_bayar' => '1']) + ->where('bukti_ksl_kurang_bayar',null); }); // Sorting berdasarkan sortField dan sortOrder diff --git a/app/Http/Requests/PersetujuanPenawaranRequest.php b/app/Http/Requests/PersetujuanPenawaranRequest.php index 5e41f8b..dce675c 100644 --- a/app/Http/Requests/PersetujuanPenawaranRequest.php +++ b/app/Http/Requests/PersetujuanPenawaranRequest.php @@ -19,7 +19,7 @@ 'nomor_proposal_penawaran' => 'nullable|string|max:255', 'nomor_tiket' => 'nullable|string|max:100', 'nominal_kurang_bayar' => 'nullable|string|max:100', - 'bukti_ksl_kurang_bayar' => 'nullable|string|max:100', + 'bukti_ksl_kurang_bayar' => 'nullable|file|mimes:pdf,doc,docx|max:10240', 'tanggal_proposal_penawaran' => 'nullable|date', 'biaya_final' => 'nullable|numeric|min:0', 'sla_resume' => 'nullable|numeric|min:0', diff --git a/database/migrations/2025_09_11_145857_add_nomor_tiket_to_persetujuan_penawaran_table.php b/database/migrations/2025_09_11_145857_add_nomor_tiket_to_persetujuan_penawaran_table.php index e7115b6..4dd5f0e 100644 --- a/database/migrations/2025_09_11_145857_add_nomor_tiket_to_persetujuan_penawaran_table.php +++ b/database/migrations/2025_09_11_145857_add_nomor_tiket_to_persetujuan_penawaran_table.php @@ -28,7 +28,8 @@ return new class extends Migration $table->string('nomor_rekening_lebih_bayar',20)->nullable()->after('nominal_lebih_bayar'); $table->string('bukti_ksl_lebih_bayar')->nullable()->after('nomor_rekening_lebih_bayar'); $table->string('bukti_ksl_kurang_bayar')->nullable()->after('bukti_ksl_lebih_bayar'); - + $table->string('nominal_pelunasan')->nullable()->after('bukti_ksl_kurang_bayar'); + $table->string('debiture_id')->nullable()->after('persetujuan_penawaran_id'); }); } @@ -41,11 +42,18 @@ return new class extends Migration Schema::table('persetujuan_penawaran', function (Blueprint $table) { // Menghapus kolom nomor_tiket $table->dropColumn('nomor_tiket'); + $table->dropColumn('nominal_kurang_bayar'); + $table->dropColumn('bukti_ksl_kurang_bayar'); }); Schema::table('noc', function (Blueprint $table) { // Menghapus kolom nomor_tiket $table->dropColumn('nomor_tiket'); + $table->dropColumn('nomor_rekening_lebih_bayar'); + $table->dropColumn('bukti_ksl_lebih_bayar'); + $table->dropColumn('bukti_ksl_kurang_bayar'); + $table->dropColumn('nominal_pelunasan'); + $table->dropColumn('debiture_id'); }); } }; diff --git a/resources/views/pembayaran/form-kurang.blade.php b/resources/views/pembayaran/form-kurang.blade.php new file mode 100644 index 0000000..27bb068 --- /dev/null +++ b/resources/views/pembayaran/form-kurang.blade.php @@ -0,0 +1,151 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('pembayaran') }} +@endsection + +@section('content') +
+
+
+
+ Form Pembayaran Kurang Bayar +
+
+ Back +
+
+
+ +
+

Detail Pembayaran

+
+
+ +

{{ $noc->permohonan->nomor_registrasi ?? '-' }}

+
+
+ +

{{ $noc->nomor_tiket ?? '-' }}

+
+
+ +

{{ $noc->permohonan->tanggal_permohonan ?? '-' }}

+
+
+ +

{{ $noc->permohonan->user->name ?? '-' }}

+
+
+ +

+ @if ($noc->permohonan->branch ?? null) + {{ $noc->permohonan->branch->code }} - {{ $noc->permohonan->branch->name }} + @else + - + @endif +

+
+
+ +

{{ $noc->permohonan->debiture->name ?? '-' }}

+
+
+ +

Kurang Bayar

+
+
+ +

{{ formatRupiah($noc->nominal_kurang_bayar ?? 0, 2) }} +

+
+
+
+ +
+ @csrf + + + +
+ +
+ + @error('nominal_pelunasan') + {{ $message }} + @enderror + + Nominal kurang bayar: {{ formatRupiah($noc->nominal_kurang_bayar ?? 0, 2) }} + +
+
+ +
+ +
+ + @error('bukti_ksl_kurang_bayar') + {{ $message }} + @enderror + + Format yang diizinkan: PDF, JPG, JPEG, PNG (Max: 2MB) + +
+
+ +
+ +
+ + @error('catatan') + {{ $message }} + @enderror +
+
+ +
+ + Batal + + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/pembayaran/kurang.blade.php b/resources/views/pembayaran/kurang.blade.php index 11c7b12..2af4014 100644 --- a/resources/views/pembayaran/kurang.blade.php +++ b/resources/views/pembayaran/kurang.blade.php @@ -222,7 +222,7 @@ title: 'Status', render: (item, data) => { return `
- +
`; diff --git a/routes/registrasi.php b/routes/registrasi.php index 6528d5a..fbd4b12 100644 --- a/routes/registrasi.php +++ b/routes/registrasi.php @@ -139,6 +139,7 @@ Route::middleware(['auth'])->group(function () { Route::get('/pembayaran/datatables-kurang','dataForDatatablesKurang')->name('pembayaran.kurang.datatables'); Route::get('/pembayaran/datatables-lebih','dataForDatatablesLebih')->name('pembayaran.lebih.datatables'); + Route::get('/pembayaran/{pembayaran}/kurang', 'editKurang')->name('pembayaran.kurang'); Route::put('/pembayaran/{pembayaran}', 'update')->name('pembayaran.update'); Route::get('/pembayaran/approval', 'approval')->name('pembayaran.approval.index');