🔧 fix(noc): Perbaiki validasi dan logika NOC untuk mendukung pembayaran tanpa permohonan

- Ubah validasi permohonan_id dari required menjadi nullable di NocRequest
- Hapus pesan error required untuk permohonan_id di validation messages
- Tambahkan logika kondisional di NocController->store() untuk updateOrCreate berdasarkan keberadaan permohonan_id
- Perbaiki null safety dengan operator ?-> di form.blade.php untuk akses nested properties
- Update logika status pembayar untuk mendukung pembayaran dengan nomor_tiket
- Tambahkan kondisi khusus untuk menentukan status bayar berdasarkan nomor_tiket
- Perbaiki formatting dan spacing di controller untuk readability
This commit is contained in:
Daeng Deni Mardaeni
2025-09-15 13:58:40 +07:00
parent c08e050815
commit d851ab58bc
3 changed files with 23 additions and 6 deletions

View File

@@ -45,6 +45,7 @@
public function store(NocRequest $request)
{
$validated = $request->validated();
$validated['updated_by'] = Auth::id();
if (request()->get('status_bayar') == "sudah_bayar") {
$validated['status'] = '1';
@@ -66,13 +67,23 @@
'nominal_lebih_bayar' => $validated['nominal_lebih_bayar'] ?? '0',
'bukti_pengembalian' => $validated['bukti_pengembalian'] ?? '',
];
$noc = Noc::updateOrCreate(
if($validated['permohonan_id']){
$noc = Noc::updateOrCreate(
[
'permohonan_id' => $validated['permohonan_id'],
'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'],
],
$dataNoc,
);
} else {
$noc = Noc::updateOrCreate(
[
'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'],
],
$dataNoc,
);
}
$folderPath = 'noc/' . request()->get('persetujuan_penawaran_id') . '/bukti_ksl/';

View File

@@ -52,7 +52,7 @@
private function getBasicInfoRules()
{
return [
'permohonan_id' => 'required|exists:permohonan,id',
'permohonan_id' => 'nullable|exists:permohonan,id',
'persetujuan_penawaran_id' => 'required|exists:persetujuan_penawaran,id',
'status' => 'nullable|boolean',
'created_by' => 'nullable|exists:users,id',
@@ -130,7 +130,6 @@
public function messages()
{
return [
'permohonan_id.required' => 'ID Permohonan harus diisi',
'permohonan_id.exists' => 'ID Permohonan tidak valid',
'persetujuan_penawaran_id.required' => 'ID Persetujuan Penawaran harus diisi',
'persetujuan_penawaran_id.exists' => 'ID Persetujuan Penawaran tidak valid',

View File

@@ -38,7 +38,7 @@
<input type="hidden" name="persetujuan_penawaran_id"
value="{{ $persetujuanPenawaran->id ?? old('persetujuan_penawaran_id') }}">
<input type="hidden" name="permohonan_id"
value="{{ $persetujuanPenawaran->penawaran->permohonan->id ?? $persetujuanPenawaran->permohonan->id }}">
value="{{ $persetujuanPenawaran?->penawaran?->permohonan?->id ?? $persetujuanPenawaran?->permohonan?->id }}">
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
<label class="form-label max-w-56">
@@ -50,10 +50,17 @@
name="status_pembayar" id="status_pembayar" {{ $hasMemo ? 'disabled' : '' }}>
<option value="">Pilih Status Bayar</option>
<option value="sudah_bayar"
{{ old('status_pembayar') == 'sudah_bayar' || $persetujuanPenawaran?->penawaran?->permohonan?->status_bayar == 'sudah_bayar' ? 'selected' : '' }}>
{{ old('status_pembayar') == 'sudah_bayar' ||
$persetujuanPenawaran?->penawaran?->permohonan?->status_bayar == 'sudah_bayar' ||
$persetujuanPenawaran?->nomor_tiket
? 'selected'
: '' }}>
Sudah Bayar</option>
<option value="belum_bayar"
{{ old('status_pembayar') == 'belum_bayar' || $persetujuanPenawaran?->penawaran?->permohonan?->status_bayar == 'belum_bayar' ? 'selected' : '' }}>
{{ old('status_pembayar') == 'belum_bayar' ||
($persetujuanPenawaran?->penawaran?->permohonan?->status_bayar == 'belum_bayar' && !$persetujuanPenawaran?->nomor_tiket)
? 'selected'
: '' }}>
Belum Bayar</option>
</select>
@error('status_bayar')