feat(noc): implementasi mutual exclusive selection untuk status kurang dan lebih bayar

- Menambahkan JavaScript untuk mutual exclusive selection antara status kurang bayar dan lebih bayar
- Hanya satu status yang bisa dipilih pada satu waktu untuk mencegah konflik data
- Implementasi fungsi resetFields() untuk membersihkan field yang tidak dipilih
- Menambahkan event handler untuk toggle visibility field berdasarkan pilihan status
- Menambahkan logging untuk tracking perubahan status pembayaran
- Field nominal dan bukti pengembalian otomatis direset ketika status berubah
- Mempertahankan UI existing dengan checkbox namun menambahkan logika mutual exclusive
- Menambahkan validasi client-side untuk mencegah input data yang tidak konsisten
- Support untuk readonly mode ketika memo penyelesaian sudah ada
- Implementasi function-level comments untuk dokumentasi kode
This commit is contained in:
Daeng Deni Mardaeni
2025-07-31 13:24:18 +07:00
parent bc7fef05f6
commit 19fb39b02f
5 changed files with 262 additions and 1 deletions

View File

@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Menjalankan migration untuk menambahkan field status pembayaran
* Field yang ditambahkan: status_kurang_bayar, nominal_kurang_bayar,
* status_lebih_bayar, nominal_lebih_bayar, bukti_pengembalian
*/
public function up(): void
{
Schema::table('noc', function (Blueprint $table) {
// Field untuk status kurang bayar
$table->boolean('status_kurang_bayar')->default(false)->after('status_bayar');
$table->decimal('nominal_kurang_bayar', 15, 2)->nullable()->after('status_kurang_bayar');
// Field untuk status lebih bayar
$table->boolean('status_lebih_bayar')->default(false)->after('nominal_kurang_bayar');
$table->decimal('nominal_lebih_bayar', 15, 2)->nullable()->after('status_lebih_bayar');
// Field untuk bukti pengembalian jika lebih bayar
$table->string('bukti_pengembalian')->nullable()->after('nominal_lebih_bayar');
});
}
/**
* Rollback migration
*/
public function down(): void
{
Schema::table('noc', function (Blueprint $table) {
$table->dropColumn([
'status_kurang_bayar',
'nominal_kurang_bayar',
'status_lebih_bayar',
'nominal_lebih_bayar',
'bukti_pengembalian'
]);
});
}
};