Menambahkan fitur Surat Tender di Menu Tender di Bagian Penawaran Ulang

This commit is contained in:
2024-11-04 14:37:49 +07:00
parent 8b1c9516aa
commit 472a5673f9
9 changed files with 737 additions and 633 deletions

View File

@@ -241,15 +241,25 @@ class TenderController extends Controller
}
/**
* Remove the specified resource from storage.
* Tampilkan Surat Tender
*/
public function destroy($id)
public function showSuratTender($noreg)
{
//
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran
if (!$penawaran) {
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
}
// Jika batas tanggal penawaran sudah lewat
if ($penawaran->end_date < date('Y-m-d')) {
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
}
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg'));
}
public function datatablesPenawaran(Request $request)

View File

@@ -19,4 +19,9 @@ class JenisLaporan extends Model
protected $fillable = ['code', 'name'];
public function penawaran()
{
return $this->hasMany(PenawaranTender::class, 'jenis_laporan_id', 'id');
}
}

View File

@@ -36,4 +36,14 @@ class PenawaranTender extends Model
{
return $this->hasMany(TujuanPenilaianKJPP::class, 'id', 'tujuan_penilaian_kjpp_id');
}
public function permohonan()
{
return $this->belongsTo(Permohonan::class, 'nomor_registrasi', 'nomor_registrasi');
}
public function jenisLaporan()
{
return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id');
}
}

View File

@@ -1,82 +1,87 @@
<?php
namespace Modules\Lpj\Models;
namespace Modules\Lpj\Models;
use Modules\Lpj\Database\Factories\PermohonanFactory;
use Modules\Usermanagement\Models\User;
use Modules\Lpj\Database\Factories\PermohonanFactory;
use Modules\Usermanagement\Models\User;
class Permohonan extends Base
class Permohonan extends Base
{
protected $table = 'permohonan';
protected $fillable = [
'nomor_registrasi',
'tanggal_permohonan',
'user_id',
'branch_id',
'tujuan_penilaian_id',
'debiture_id',
'keterangan',
'dokumen',
'jenis_fasilitas_kredit_id',
'nilai_plafond_id',
'status',
'authorized_at',
'authorized_status',
'authorized_by',
// andy add
'registrasi_catatan',
'registrasi_by',
'registrasi_at',
'jenis_penilaian_id',
'region_id',
// andy add
'status_bayar',
'nilai_njop',
// andy add
'registrasi_catatan',
'registrasi_by',
'registrasi_at',
'jenis_penilaian_id',
'region_id',
];
public function user()
{
protected $table = 'permohonan';
protected $fillable = [
'nomor_registrasi',
'tanggal_permohonan',
'user_id',
'branch_id',
'tujuan_penilaian_id',
'debiture_id',
'keterangan',
'dokumen',
'jenis_fasilitas_kredit_id',
'nilai_plafond_id',
'status',
'authorized_at',
'authorized_status',
'authorized_by',
// andy add
'registrasi_catatan',
'registrasi_by',
'registrasi_at',
'jenis_penilaian_id',
'region_id',
// andy add
'status_bayar',
'nilai_njop',
// andy add
'registrasi_catatan',
'registrasi_by',
'registrasi_at',
'jenis_penilaian_id',
'region_id',
];
public function user()
{
return $this->belongsTo(User::class);
}
public function branch()
{
return $this->belongsTo(Branch::class);
}
public function tujuanPenilaian()
{
return $this->belongsTo(TujuanPenilaian::class);
}
public function debiture()
{
return $this->belongsTo(Debiture::class);
}
public function documents()
{
return $this->hasMany(DokumenJaminan::class);
}
public function nilaiPlafond()
{
return $this->belongsTo(NilaiPlafond::class);
}
public function jenisFasilitasKredit()
{
return $this->belongsTo(JenisFasilitasKredit::class);
}
public function penilaian()
{
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
}
return $this->belongsTo(User::class);
}
public function branch()
{
return $this->belongsTo(Branch::class);
}
public function tujuanPenilaian()
{
return $this->belongsTo(TujuanPenilaian::class);
}
public function debiture()
{
return $this->belongsTo(Debiture::class);
}
public function documents()
{
return $this->hasMany(DokumenJaminan::class);
}
public function nilaiPlafond()
{
return $this->belongsTo(NilaiPlafond::class);
}
public function jenisFasilitasKredit()
{
return $this->belongsTo(JenisFasilitasKredit::class);
}
public function penilaian()
{
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
}
public function penawaranTender()
{
return $this->hasMany(PenawaranTender::class, 'nomor_registrasi');
}
}

View File

@@ -189,7 +189,12 @@
@enderror
</div>
</div>
<div class="flex justify-end">
<div class="flex justify-end gap-1.5">
@if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.showSuratTender', $noreg) }}" class="btn btn-primary">
Surat Tender
</a>
@endif
<button type="submit" class="btn btn-primary">
Save
</button>

View File

@@ -195,7 +195,12 @@
</div>
</div>
<div class="flex justify-end">
<div class="flex justify-end gap-1.5">
@if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.showSuratTender', $noreg) }}" class="btn btn-primary">
Surat Tender
</a>
@endif
<button type="submit" class="btn btn-primary">
Penawaran Ulang
</button>

View File

@@ -0,0 +1,56 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
Surat Tender
</h3>
<div class="flex items-center gap-2">
@if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@else
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@endif
</div>
</div>
<div class="card-body grid gap-5">
<p>Dear
<span class="font-bold">{{ ucwords(auth()->user()->name) ?? 'Tidak Ada' }}</span>
</p>
<p>Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
class="font-bold">{{ ucwords($penawaran->permohonan->user->name) }}</span>, tujuan penilaian
untuk <span class="font-bold">
@foreach ($penawaran->tujuanPenilaianKJPP as $tujuanPenilaianKJPP)
{{ $tujuanPenilaianKJPP->name }}
@endforeach
</span>, laporan dalam bentuk <span class="font-bold">{{ $penawaran->jenisLaporan->name }}</span>,
dengan data-data sebagai berikut :</p>
<ul>
<li>Aset Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
<li>Lokasi Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
<li>LT / LB: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
</ul>
<p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p>
<p>Mohon proposal dapat saya terima segera, sebelum
<span class="font-bold">{{ formatTanggalIndonesia($penawaran->end_date) }} pukul 17.00 WIB</span>
</p>
<p>Best Regards,
<span class="font-bold">[otomasi dari nama dan tanda tangan user penginput]</span>
Sub Direktorat Appraisal
</p>
<p>PT. Bank Artha Graha Internasional, Tbk.<br>
Gedung Bank Artha Graha, Lantai 3<br>
Jl. Kwiitang Raya No 24-26, Jakarta Pusat - 10420.<br>
Telp. 021 - 3903040 (H)</p>
</div>
</div>
</div>
@endsection

File diff suppressed because it is too large Load Diff

View File

@@ -396,6 +396,9 @@ Route::middleware(['auth'])->group(function () {
Route::get('penawaran/datatables', [TenderController::class, 'datatablesPenawaran'])->name(
'penawaran.datatables',
);
Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name(
'penawaran.showSuratTender'
);
// Penawaran Ulang
Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name(