From 2433aacfbc87f35c51058b165c8cac7ee97bcc97 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 12 Sep 2025 09:23:13 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(noc):=20implementasi=20sistem?= =?UTF-8?q?=20pembayaran=20dengan=20tracking=20nomor=20tiket=20dan=20statu?= =?UTF-8?q?s=20kurang/lebih=20bayar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Tambah field `nomor_tiket`, `nominal_kurang_bayar`, `bukti_ksl_kurang_bayar`, `nomor_rekening_lebih_bayar`, `bukti_ksl_lebih_bayar` di tabel `persetujuan_penawaran` & `noc` - Update model `Noc` & `PersetujuanPenawaran` dengan fillable baru + migrasi database - Update validasi di `NocRequest` & `PersetujuanPenawaranRequest` (nomor tiket, bukti KSL, kurang bayar, string max length) - Restructure menu pembayaran dengan submenu *Kurang Bayar* & *Lebih Bayar* - Tambah kolom "Nomor Tiket" di tabel & DataTable pembayaran - Perbaikan tampilan: formatting, CSS, responsive layout, display cabang (code - name) - Tambah routes `pembayaran.kurang.index` & `pembayaran.lebih.index` + integrasi controller - Update `module.json` untuk menu, permission, roles, icon, dan styling --- app/Http/Requests/NocRequest.php | 16 ++-- .../Requests/PersetujuanPenawaranRequest.php | 2 + app/Models/Noc.php | 4 + app/Models/PersetujuanPenawaran.php | 2 + ...r_tiket_to_persetujuan_penawaran_table.php | 18 ++++ module.json | 59 +++++++++--- resources/views/pembayaran/index.blade.php | 94 ++++++++++--------- routes/registrasi.php | 2 + 8 files changed, 135 insertions(+), 62 deletions(-) diff --git a/app/Http/Requests/NocRequest.php b/app/Http/Requests/NocRequest.php index c99a7b9..db11c4e 100644 --- a/app/Http/Requests/NocRequest.php +++ b/app/Http/Requests/NocRequest.php @@ -95,12 +95,16 @@ $fileRule = 'nullable|file|mimes:' . self::ALLOWED_FILE_TYPES . '|max:' . self::MAX_FILE_SIZE; return [ - 'nominal_penyelesaian' => 'nullable|numeric|min:0', - 'status_penyelesaian' => 'nullable|boolean', - 'tanggal_penyelesaian' => 'nullable|date', - 'bukti_penyelesaian' => $fileRule, - 'memo_penyelesaian' => $fileRule, - 'catatan_noc' => 'nullable|string', + 'nominal_penyelesaian' => 'nullable|numeric|min:0', + 'status_penyelesaian' => 'nullable|boolean', + 'tanggal_penyelesaian' => 'nullable|date', + 'bukti_penyelesaian' => $fileRule, + 'memo_penyelesaian' => $fileRule, + 'catatan_noc' => 'nullable|string', + 'nomor_tiket' => 'nullable|string', + 'nomor_rekening_lebih_bayar' => 'nullable|string', + 'bukti_ksl_lebih_bayar' => 'nullable|string', + 'bukti_ksl_kurang_bayar' => 'nullable|string' ]; } diff --git a/app/Http/Requests/PersetujuanPenawaranRequest.php b/app/Http/Requests/PersetujuanPenawaranRequest.php index e6bdf73..5e41f8b 100644 --- a/app/Http/Requests/PersetujuanPenawaranRequest.php +++ b/app/Http/Requests/PersetujuanPenawaranRequest.php @@ -18,6 +18,8 @@ 'penawaran_id' => 'nullable|exists:penawaran,id', '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', 'tanggal_proposal_penawaran' => 'nullable|date', 'biaya_final' => 'nullable|numeric|min:0', 'sla_resume' => 'nullable|numeric|min:0', diff --git a/app/Models/Noc.php b/app/Models/Noc.php index 0eb4a91..2cb8dbc 100644 --- a/app/Models/Noc.php +++ b/app/Models/Noc.php @@ -11,6 +11,7 @@ class Noc extends Base protected $fillable = [ 'permohonan_id', 'persetujuan_penawaran_id', + 'nomor_tiket', 'bukti_bayar', 'nominal_bayar', 'total_pembukuan', @@ -36,6 +37,9 @@ class Noc extends Base 'authorized_status', 'authorized_at', 'authorized_by', + 'nomor_rekening_lebih_bayar', + 'bukti_ksl_lebih_bayar', + 'bukti_ksl_kurang_bayar' ]; protected $casts = [ diff --git a/app/Models/PersetujuanPenawaran.php b/app/Models/PersetujuanPenawaran.php index feec460..e42e343 100644 --- a/app/Models/PersetujuanPenawaran.php +++ b/app/Models/PersetujuanPenawaran.php @@ -14,6 +14,8 @@ 'penawaran_id', 'nomor_proposal_penawaran', 'nomor_tiket', + 'nominal_kurang_bayar', + 'bukti_ksl_kurang_bayar', 'tanggal_proposal_penawaran', 'biaya_final', 'sla_resume', 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 de8706d..e7115b6 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 @@ -16,6 +16,19 @@ return new class extends Migration // Menambahkan kolom nomor_tiket setelah nomor_proposal_penawaran $table->string('nomor_tiket', 100)->nullable()->after('nomor_proposal_penawaran') ->comment('Nomor tiket untuk tracking persetujuan penawaran'); + $table->string('nominal_kurang_bayar')->nullable()->after('nomor_proposal_penawaran'); + $table->string('bukti_ksl_kurang_bayar')->nullable()->after('nominal_kurang_bayar'); + + }); + + Schema::table('noc', function (Blueprint $table) { + // Menambahkan kolom nomor_tiket setelah nomor_proposal_penawaran + $table->string('nomor_tiket', 100)->nullable()->after('persetujuan_penawaran_id') + ->comment('Nomor tiket untuk tracking persetujuan penawaran'); + $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'); + }); } @@ -29,5 +42,10 @@ return new class extends Migration // Menghapus kolom nomor_tiket $table->dropColumn('nomor_tiket'); }); + + Schema::table('noc', function (Blueprint $table) { + // Menghapus kolom nomor_tiket + $table->dropColumn('nomor_tiket'); + }); } }; diff --git a/module.json b/module.json index 00cde6b..98a93fe 100644 --- a/module.json +++ b/module.json @@ -378,6 +378,53 @@ "pemohon-ao" ] }, + { + "title": "Pembayaran", + "path": "pembayaran", + "icon": "ki-filled ki-credit-cart text-lg text-primary", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao" + ], + "sub": [ + { + "title": "Pembayaran", + "path": "pembayaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Kurang Bayar", + "path": "pembayaran.kurang", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Lebih Bayar", + "path": "pembayaran.lebih", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + } + ] + }, { "title": "NOC", "path": "noc", @@ -513,18 +560,6 @@ "admin" ] }, - { - "title": "Pembayaran", - "path": "pembayaran", - "icon": "ki-filled ki-credit-cart text-lg text-primary", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao" - ] - }, { "title": "Data Debitur", "path": "debitur", diff --git a/resources/views/pembayaran/index.blade.php b/resources/views/pembayaran/index.blade.php index 6aba159..36f8e0e 100644 --- a/resources/views/pembayaran/index.blade.php +++ b/resources/views/pembayaran/index.blade.php @@ -6,9 +6,9 @@ @section('content')
-
-
+
+

Daftar Pembayaran

@@ -26,51 +26,55 @@
- +
- - - - - - - - + + + + + + + + + - - + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Status Bayar - -
+ + + Nomor Registrasi + + + Nomor Tiket + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Status Bayar + + Action
Action