### ✨ Fitur Baru - Menambahkan field `nomor_tiket` pada model **PersetujuanPenawaran** ke dalam `$fillable`. - Membuat migration untuk menambahkan kolom `nomor_tiket` (VARCHAR 100, nullable) di tabel `persetujuan_penawaran`. - Menambahkan validasi dan custom error messages untuk field `nomor_tiket` pada **PersetujuanPenawaranRequest**. - Menempatkan `nomor_tiket` setelah `nomor_proposal_penawaran` untuk konsistensi. - Implementasi rollback pada migration untuk menjaga keamanan database. - Menambahkan komentar dokumentasi pada migration untuk mempermudah maintenance. - Validation rules: `nullable|string|max:100` dengan pesan error dalam Bahasa Indonesia. - Field ini mendukung tracking dan identifikasi tiket setiap persetujuan penawaran. - Mengikuti pola dan konvensi sistem yang sudah ada agar konsisten. ### 🐛 Perbaikan Bug - Memperbaiki typo namespace dari **Usermanagemenet** menjadi **Usermanagement**. - Menghapus import **Region** yang tidak ada di codebase. - Menghapus relasi `region()` karena model **Region** tidak ditemukan. - Mempertahankan relasi valid seperti `penawaran`, `permohonan`, `authorizedBy`, dan `noc`. - Menyelesaikan error *"Undefined type"* pada baris 53 dan 59. - Membersihkan kode dengan menghapus dependency yang tidak ada. - Menyesuaikan namespace **User** agar konsisten dengan struktur modul **Usermanagement**. - Model kini lebih stabil, bersih, dan bebas dari error diagnostic.
62 lines
1.7 KiB
PHP
62 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Models;
|
|
|
|
use Modules\Usermanagement\Models\User;
|
|
|
|
class PersetujuanPenawaran extends Base
|
|
{
|
|
|
|
protected $table = 'persetujuan_penawaran';
|
|
|
|
protected $fillable = [
|
|
'permohonan_id',
|
|
'penawaran_id',
|
|
'nomor_proposal_penawaran',
|
|
'nomor_tiket',
|
|
'tanggal_proposal_penawaran',
|
|
'biaya_final',
|
|
'sla_resume',
|
|
'sla_final',
|
|
'file_persetujuan_penawaran',
|
|
'surat_representasi',
|
|
'bukti_bayar',
|
|
'nominal_bayar',
|
|
'status',
|
|
'authorized_status',
|
|
'authorized_at',
|
|
'authorized_by',
|
|
'catatan',
|
|
];
|
|
|
|
protected $casts = [
|
|
'tanggal_proposal_penawaran' => 'date',
|
|
'biaya_final' => 'decimal:2',
|
|
'status' => 'boolean',
|
|
'authorized_status' => 'boolean',
|
|
'authorized_at' => 'datetime',
|
|
];
|
|
|
|
// Relationship with Penawaran
|
|
public function penawaran()
|
|
{
|
|
return $this->belongsTo(PenawaranTender::class, 'penawaran_id');
|
|
}
|
|
|
|
public function permohonan(){
|
|
return $this->belongsTo(Permohonan::class, 'permohonan_id');
|
|
}
|
|
|
|
// Relationship with User (for authorized_by)
|
|
public function authorizedBy()
|
|
{
|
|
return $this->belongsTo(User::class, 'authorized_by');
|
|
}
|
|
|
|
// Relationship with Noc
|
|
public function noc()
|
|
{
|
|
return $this->hasOne(Noc::class, 'persetujuan_penawaran_id');
|
|
}
|
|
}
|