Files
lpj/app/Models/PersetujuanPenawaran.php
Daeng Deni Mardaeni 2173a36564 feat & 🐛 fix(persetujuan-penawaran): Tambah field nomor_tiket dan perbaiki namespace serta relasi model
###  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.
2025-09-11 22:03:58 +07:00

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');
}
}