Merge branch 'staging' into feature/senior-officer
This commit is contained in:
@@ -1,119 +1,150 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
use Modules\Lpj\Models\HolidayCalendar;
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||||
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
function formatTanggalIndonesia($date)
|
|
||||||
{
|
|
||||||
$carbonDate = Carbon::parse($date);
|
|
||||||
$indonesianMonths = [
|
|
||||||
'Januari',
|
|
||||||
'Februari',
|
|
||||||
'Maret',
|
|
||||||
'April',
|
|
||||||
'Mei',
|
|
||||||
'Juni',
|
|
||||||
'Juli',
|
|
||||||
'Agustus',
|
|
||||||
'September',
|
|
||||||
'Oktober',
|
|
||||||
'November',
|
|
||||||
'Desember',
|
|
||||||
];
|
|
||||||
$month = $indonesianMonths[$carbonDate->month - 1];
|
|
||||||
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function formatRupiah($number)
|
function formatTanggalIndonesia($date)
|
||||||
{
|
{
|
||||||
$number = (float) $number;
|
$carbonDate = Carbon::parse($date);
|
||||||
return 'Rp ' . number_format($number, 2, ',', '.');
|
$indonesianMonths = [
|
||||||
}
|
'Januari',
|
||||||
|
'Februari',
|
||||||
|
'Maret',
|
||||||
|
'April',
|
||||||
|
'Mei',
|
||||||
|
'Juni',
|
||||||
|
'Juli',
|
||||||
|
'Agustus',
|
||||||
|
'September',
|
||||||
|
'Oktober',
|
||||||
|
'November',
|
||||||
|
'Desember',
|
||||||
|
];
|
||||||
|
$month = $indonesianMonths[$carbonDate->month - 1];
|
||||||
|
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatTanggalIndonesia2($date)
|
||||||
|
{
|
||||||
|
Carbon::setLocale('id');
|
||||||
|
$waktu = Carbon::parse($date);
|
||||||
|
return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function formatAlamat($alamat)
|
function formatRupiah($number)
|
||||||
{
|
{
|
||||||
return ($alamat->address ? $alamat->address . ', ' : '') .
|
$number = (float)$number;
|
||||||
(isset($alamat->village) ? $alamat->village->name . ', ' : '') .
|
return 'Rp ' . number_format($number, 2, ',', '.');
|
||||||
(isset($alamat->city) ? $alamat->city->name . ', ' : '') .
|
}
|
||||||
(isset($alamat->province) ? $alamat->province->name . ', ' : '') .
|
|
||||||
($alamat->postal_code ?? '');
|
|
||||||
}
|
|
||||||
|
|
||||||
// andy add
|
|
||||||
function checkActiveDateRangePenawaran($id)
|
|
||||||
{
|
|
||||||
$penawaran = PenawaranTender::find($id);
|
|
||||||
|
|
||||||
$start_date = strtotime($penawaran->start_date);
|
function formatAlamat($alamat)
|
||||||
$end_date = strtotime($penawaran->end_date);
|
{
|
||||||
$todays_date = strtotime(now());
|
return ($alamat->address ? $alamat->address . ', ' : '') . (isset($alamat->village) ? $alamat->village->name . ', ' : '') . (isset($alamat->city) ? $alamat->city->name . ', ' : '') . (isset($alamat->province) ? $alamat->province->name . ', ' : '') . ($alamat->postal_code ?? '');
|
||||||
|
}
|
||||||
|
|
||||||
|
// andy add
|
||||||
|
function checkActiveDateRangePenawaran($id)
|
||||||
|
{
|
||||||
|
$penawaran = PenawaranTender::find($id);
|
||||||
|
|
||||||
|
$start_date = strtotime($penawaran->start_date);
|
||||||
|
$end_date = strtotime($penawaran->end_date);
|
||||||
|
$todays_date = strtotime(now());
|
||||||
|
|
||||||
$allow = true;
|
|
||||||
if ($todays_date >= $start_date && $todays_date <= $end_date) {
|
|
||||||
//Penawaran dibuka
|
|
||||||
$allow = true;
|
$allow = true;
|
||||||
} else {
|
if ($todays_date >= $start_date && $todays_date <= $end_date) {
|
||||||
if ($todays_date < $start_date) {
|
//Penawaran dibuka
|
||||||
//Penawaran Belum dibuka
|
|
||||||
$allow = true;
|
$allow = true;
|
||||||
} else {
|
} else {
|
||||||
//Penawaran sudah ditutup
|
if ($todays_date < $start_date) {
|
||||||
|
//Penawaran Belum dibuka
|
||||||
|
$allow = true;
|
||||||
|
} else {
|
||||||
|
//Penawaran sudah ditutup
|
||||||
|
$allow = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $allow;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkKelengkapanDetailKJPP($id)
|
||||||
|
{
|
||||||
|
$allow = true;
|
||||||
|
// DB::enableQueryLog();
|
||||||
|
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
|
||||||
|
$query = PenawaranDetailTender::select('id')->where('penawaran_id', '=', $id)->where('status', '=', 1)->where(
|
||||||
|
function ($query) {
|
||||||
|
// no_proposal
|
||||||
|
$query->orWhere('no_proposal', '', "");
|
||||||
|
$query->orWhereNull('no_proposal');
|
||||||
|
|
||||||
|
// tgl_proposal
|
||||||
|
$query->orWhere('tgl_proposal', '', "");
|
||||||
|
$query->orWhereNull('tgl_proposal');
|
||||||
|
|
||||||
|
$query->orWhere('biaya_penawaran', '', "");
|
||||||
|
$query->orWhereNull('biaya_penawaran');
|
||||||
|
|
||||||
|
$query->orWhere('attachment', '', "");
|
||||||
|
$query->orWhereNull('attachment');
|
||||||
|
|
||||||
|
$query->orWhere('dokumen_persetujuan', '', "");
|
||||||
|
$query->orWhereNull('dokumen_persetujuan');
|
||||||
|
},
|
||||||
|
)->get();
|
||||||
|
// $sql = DB::getQueryLog();
|
||||||
|
|
||||||
|
|
||||||
|
if (sizeof($query) > 0) {
|
||||||
$allow = false;
|
$allow = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $allow;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $allow;
|
// convert
|
||||||
}
|
function convertSlug($slug)
|
||||||
|
{
|
||||||
|
$words = explode('-', $slug);
|
||||||
|
|
||||||
function checkKelengkapanDetailKJPP($id)
|
foreach ($words as $index => $word) {
|
||||||
{
|
$words[$index] = strtoupper($word);
|
||||||
$allow = true;
|
}
|
||||||
// DB::enableQueryLog();
|
|
||||||
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
|
|
||||||
$query = PenawaranDetailTender::select('id')
|
|
||||||
->where('penawaran_id', '=', $id)
|
|
||||||
->where('status','=',1)
|
|
||||||
->where(function ($query) {
|
|
||||||
// no_proposal
|
|
||||||
$query->orWhere('no_proposal', '', "");
|
|
||||||
$query->orWhereNull('no_proposal');
|
|
||||||
|
|
||||||
// tgl_proposal
|
|
||||||
$query->orWhere('tgl_proposal', '', "");
|
|
||||||
$query->orWhereNull('tgl_proposal');
|
|
||||||
|
|
||||||
$query->orWhere('biaya_penawaran', '', "");
|
|
||||||
$query->orWhereNull('biaya_penawaran');
|
|
||||||
|
|
||||||
$query->orWhere('attachment', '', "");
|
return implode(' ', $words);
|
||||||
$query->orWhereNull('attachment');
|
|
||||||
|
|
||||||
$query->orWhere('dokumen_persetujuan', '', "");
|
|
||||||
$query->orWhereNull('dokumen_persetujuan');
|
|
||||||
})->get();
|
|
||||||
// $sql = DB::getQueryLog();
|
|
||||||
|
|
||||||
|
|
||||||
if (sizeof($query) > 0) {
|
|
||||||
$allow = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $allow;
|
// andy add
|
||||||
}
|
|
||||||
|
|
||||||
// convert
|
|
||||||
function convertSlug($slug) {
|
|
||||||
|
|
||||||
$words = explode('-', $slug);
|
|
||||||
|
|
||||||
foreach ($words as $index => $word) {
|
function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
||||||
$words[$index] = strtoupper($word);
|
{
|
||||||
|
$tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay();
|
||||||
|
$tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay();
|
||||||
|
|
||||||
|
$hariKerja = 0;
|
||||||
|
$tanggalSekarang = $tanggalMulai->copy();
|
||||||
|
|
||||||
|
// Ambil semua tanggal libur dari tabel holiday calendar
|
||||||
|
$tanggalLibur = HolidayCalendar::whereBetween('date', [$tanggalMulai, $tanggalSelesai])->pluck('date')->map(
|
||||||
|
function ($item) {
|
||||||
|
return Carbon::parse($item)->format('Y-m-d');
|
||||||
|
},
|
||||||
|
)->toArray();
|
||||||
|
|
||||||
|
while ($tanggalSekarang <= $tanggalSelesai) {
|
||||||
|
// Cek apakah hari ini bukan Sabtu atau Minggu dan bukan hari libur
|
||||||
|
if (!$tanggalSekarang->isWeekend() && !in_array($tanggalSekarang->format('Y-m-d'), $tanggalLibur)) {
|
||||||
|
$hariKerja++;
|
||||||
|
}
|
||||||
|
$tanggalSekarang->addDay();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $hariKerja;
|
||||||
}
|
}
|
||||||
|
|
||||||
return implode(' ', $words);
|
|
||||||
}
|
|
||||||
// andy add
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,20 @@
|
|||||||
namespace Modules\Lpj\Http\Controllers;
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Barryvdh\DomPDF\PDF;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Modules\Lpj\Models\KJPP;
|
use Modules\Lpj\Models\KJPP;
|
||||||
|
use Modules\Location\Models\City;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Location\Models\Village;
|
||||||
use Modules\Lpj\Models\JenisLaporan;
|
use Modules\Lpj\Models\JenisLaporan;
|
||||||
|
use Modules\Location\Models\District;
|
||||||
|
use Modules\Location\Models\Province;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
use Modules\Lpj\Models\StatusPermohonan;
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
@@ -66,12 +73,14 @@ class TenderController extends Controller
|
|||||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
// Add created_by/updated_by from the authenticated user
|
// Add created_by/updated_by from the authenticated user
|
||||||
$userId = auth()->user()->id;
|
$userId = Auth::user()->id;
|
||||||
|
|
||||||
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
|
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
|
||||||
|
|
||||||
$validated['status'] = $request->input('status') ?? 'tender';
|
$validated['status'] = $request->input('status') ?? 'tender';
|
||||||
$validated['updated_by'] = $userId; // Updating the record
|
$validated['updated_by'] = $userId; // Updating the record
|
||||||
|
$validated['end_date'] = $request->input('end_date') . ' 17:00:00';
|
||||||
|
// dd($validated['end_date']);
|
||||||
$permohonan->update($validated);
|
$permohonan->update($validated);
|
||||||
|
|
||||||
// Adding created_by for the new PenawaranTender record
|
// Adding created_by for the new PenawaranTender record
|
||||||
@@ -117,6 +126,15 @@ class TenderController extends Controller
|
|||||||
$penawaranExists = PenawaranTender::where('nomor_registrasi', $noreg)->exists();
|
$penawaranExists = PenawaranTender::where('nomor_registrasi', $noreg)->exists();
|
||||||
|
|
||||||
$penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
$penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
|
if (!$penawaran1) {
|
||||||
|
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($penawaran1->status != 'tender') {
|
||||||
|
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||||
|
}
|
||||||
|
|
||||||
// dd($penawaran1->id);
|
// dd($penawaran1->id);
|
||||||
if ($penawaran1) {
|
if ($penawaran1) {
|
||||||
$penawaran = $penawaran1;
|
$penawaran = $penawaran1;
|
||||||
@@ -141,8 +159,18 @@ class TenderController extends Controller
|
|||||||
{
|
{
|
||||||
// Find the specific penawaran by its ID
|
// Find the specific penawaran by its ID
|
||||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
|
if (!$penawaran) {
|
||||||
|
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!');
|
||||||
|
}
|
||||||
|
|
||||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
|
|
||||||
|
if ($penawaran->status != 'tender') {
|
||||||
|
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||||
|
}
|
||||||
|
|
||||||
$status = StatusPermohonan::all();
|
$status = StatusPermohonan::all();
|
||||||
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
||||||
$jenis_laporan = JenisLaporan::all();
|
$jenis_laporan = JenisLaporan::all();
|
||||||
@@ -152,6 +180,8 @@ class TenderController extends Controller
|
|||||||
|
|
||||||
$kjpp = KJPP::all();
|
$kjpp = KJPP::all();
|
||||||
|
|
||||||
|
// dd($penawaran);
|
||||||
|
|
||||||
return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan'));
|
return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,13 +201,15 @@ class TenderController extends Controller
|
|||||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
// Ambil ID user yang sedang login
|
// Ambil ID user yang sedang login
|
||||||
$userId = auth()->user()->id;
|
$userId = Auth::user()->id;
|
||||||
|
|
||||||
// Jangan ubah created_by untuk data yang sudah ada
|
// Jangan ubah created_by untuk data yang sudah ada
|
||||||
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
|
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
|
||||||
$validated['status'] = $request->input('status') ?? 'tender';
|
$validated['status'] = $request->input('status') ?? 'tender';
|
||||||
$validated['created_by'] = $userId;
|
$validated['created_by'] = $userId;
|
||||||
$validated['updated_by'] = $userId; // Hanya update 'updated_by'
|
$validated['updated_by'] = $userId; // Hanya update 'updated_by'
|
||||||
|
$validated['end_date'] = $request->input('end_date') . ' 17:00:00';
|
||||||
|
// dd($validated['end_date']);
|
||||||
|
|
||||||
// Update data penawaran dan permohonan
|
// Update data penawaran dan permohonan
|
||||||
$penawaran->update($validated);
|
$penawaran->update($validated);
|
||||||
@@ -228,7 +260,7 @@ class TenderController extends Controller
|
|||||||
DB::commit();
|
DB::commit();
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('tender.penawaran.index')
|
->route('tender.penawaran.ulang.index')
|
||||||
->with('success', 'Data Penawaran updated successfully');
|
->with('success', 'Data Penawaran updated successfully');
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
// Rollback jika ada kesalahan
|
// Rollback jika ada kesalahan
|
||||||
@@ -247,19 +279,46 @@ class TenderController extends Controller
|
|||||||
public function showSuratTender($noreg)
|
public function showSuratTender($noreg)
|
||||||
{
|
{
|
||||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran
|
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran
|
||||||
if (!$penawaran) {
|
if (!$penawaran) {
|
||||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
|
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
|
||||||
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($penawaran->status != 'tender') {
|
||||||
|
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan
|
||||||
|
if ($permohonan->debiture->documents->isEmpty()) {
|
||||||
|
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
|
||||||
|
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($permohonan->debiture->documents as $document) {
|
||||||
|
$village_permohonan = $document->village_code;
|
||||||
|
$district_permohonan = $document->district_code;
|
||||||
|
$city_permohonan = $document->city_code;
|
||||||
|
$province_permohonan = $document->province_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$villages = Village::where('code', $village_permohonan)->get();
|
||||||
|
$districts = District::where('code', $district_permohonan)->get();
|
||||||
|
$cities = City::where('code', $city_permohonan)->get();
|
||||||
|
$provinces = Province::where('code', $province_permohonan)->get();
|
||||||
|
|
||||||
|
date_default_timezone_set('Asia/Jakarta');
|
||||||
|
|
||||||
|
$now = date('Y-m-d H:i:s');
|
||||||
// Jika batas tanggal penawaran sudah lewat
|
// Jika batas tanggal penawaran sudah lewat
|
||||||
if ($penawaran->end_date < date('Y-m-d')) {
|
if ($penawaran->end_date < $now) {
|
||||||
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
|
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
|
||||||
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
|
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg'));
|
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function datatablesPenawaran(Request $request)
|
public function datatablesPenawaran(Request $request)
|
||||||
@@ -414,4 +473,31 @@ class TenderController extends Controller
|
|||||||
// Kembalikan hasil pengecekan sebagai JSON
|
// Kembalikan hasil pengecekan sebagai JSON
|
||||||
return response()->json(['exists' => $exists]);
|
return response()->json(['exists' => $exists]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function downloadSuratTender($noreg)
|
||||||
|
{
|
||||||
|
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||||
|
|
||||||
|
if ($penawaran->status != 'tender') {
|
||||||
|
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($permohonan->debiture->documents as $document) {
|
||||||
|
$village_permohonan = $document->village_code;
|
||||||
|
$district_permohonan = $document->district_code;
|
||||||
|
$city_permohonan = $document->city_code;
|
||||||
|
$province_permohonan = $document->province_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
$villages = Village::where('code', $village_permohonan)->get();
|
||||||
|
$districts = District::where('code', $district_permohonan)->get();
|
||||||
|
$cities = City::where('code', $city_permohonan)->get();
|
||||||
|
$provinces = Province::where('code', $province_permohonan)->get();
|
||||||
|
|
||||||
|
$pdf = app('dompdf.wrapper'); // create an instance of the PDF class
|
||||||
|
$pdf->loadView('lpj::penawaran.surat_tender_download', compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces'));
|
||||||
|
|
||||||
|
return $pdf->download('surat_tender' . time() . '.pdf');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
app/Models/HolidayCalendar.php
Normal file
10
app/Models/HolidayCalendar.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Modules\Basicdata\Models\HolidayCalendar as BasicdataHolidayCalendar;
|
||||||
|
|
||||||
|
class HolidayCalendar extends BasicdataHolidayCalendar
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -22,4 +22,9 @@ class PenawaranDetailTender extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id');
|
return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function kjpp(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(KJPP::class, 'kjpp_rekanan_id', 'id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class PenawaranTender extends Model
|
|||||||
// menambahkan relasi tujuan penilaian KJPP
|
// menambahkan relasi tujuan penilaian KJPP
|
||||||
public function tujuanPenilaianKjpp()
|
public function tujuanPenilaianKjpp()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id','id');
|
return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function permohonan()
|
public function permohonan()
|
||||||
@@ -46,6 +46,4 @@ class PenawaranTender extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id');
|
return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Modules\Lpj\Models;
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Modules\Lpj\Database\Factories\PermohonanFactory;
|
use Modules\Lpj\Database\Factories\PermohonanFactory;
|
||||||
use Modules\Lpj\Services\PermohonanHistoryService;
|
use Modules\Lpj\Services\PermohonanHistoryService;
|
||||||
use Modules\Usermanagement\Models\User;
|
use Modules\Usermanagement\Models\User;
|
||||||
@@ -39,7 +40,6 @@ class Permohonan extends Base
|
|||||||
'registrasi_at',
|
'registrasi_at',
|
||||||
'jenis_penilaian_id',
|
'jenis_penilaian_id',
|
||||||
'region_id',
|
'region_id',
|
||||||
'attachment'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
protected static function boot()
|
protected static function boot()
|
||||||
@@ -70,12 +70,7 @@ class Permohonan extends Base
|
|||||||
$fileName = time() . '_' . $file->getClientOriginalName();
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
||||||
$filePath = $file->storeAs('permohonan_attachments', $fileName, 'public');
|
$filePath = $file->storeAs('permohonan_attachments', $fileName, 'public');
|
||||||
|
|
||||||
// Delete old file if it exists
|
$permohonan->dokumen = $filePath;
|
||||||
if ($permohonan->attachment) {
|
|
||||||
Storage::disk('public')->delete($permohonan->attachment);
|
|
||||||
}
|
|
||||||
|
|
||||||
$permohonan->attachment = $filePath;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +82,7 @@ class Permohonan extends Base
|
|||||||
$keterangan = request()->input('keterangan'); // Get keterangan from request
|
$keterangan = request()->input('keterangan'); // Get keterangan from request
|
||||||
$beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : [];
|
$beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : [];
|
||||||
$afterRequest = $permohonan->toArray();
|
$afterRequest = $permohonan->toArray();
|
||||||
$file = $permohonan->attachment ? Storage::disk('public')->path($permohonan->attachment) : null;
|
$file = $permohonan->dokumen ? Storage::disk('public')->path($permohonan->dokumen) : null;
|
||||||
|
|
||||||
$historyService->createHistory(
|
$historyService->createHistory(
|
||||||
$permohonan,
|
$permohonan,
|
||||||
|
|||||||
@@ -7,15 +7,8 @@ use Modules\Lpj\Models\PermohonanHistory;
|
|||||||
|
|
||||||
class PermohonanHistoryService
|
class PermohonanHistoryService
|
||||||
{
|
{
|
||||||
public function createHistory(Permohonan $permohonan, string $status, ?string $keterangan, array $beforeRequest, array $afterRequest, ?string $file = null)
|
public function createHistory(Permohonan $permohonan, string $status, ?string $keterangan, array $beforeRequest, array $afterRequest, ?string $filePath = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
$filePath = null;
|
|
||||||
if ($file) {
|
|
||||||
$filePath = $file->store('permohonan_history_files', 'public');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$history = PermohonanHistory::create([
|
$history = PermohonanHistory::create([
|
||||||
'permohonan_id' => $permohonan->id,
|
'permohonan_id' => $permohonan->id,
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('penawaran', function (Blueprint $table) {
|
||||||
|
$table->datetime('end_date')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('penawaran', function (Blueprint $table) {
|
||||||
|
$table->date('end_date')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -12,34 +12,34 @@ class LpjDatabaseSeeder extends Seeder
|
|||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$this->call([
|
$this->call([
|
||||||
BranchSeeder::class,
|
// BranchSeeder::class,
|
||||||
CurrencySeeder::class,
|
// CurrencySeeder::class,
|
||||||
JenisFasilitasKreditSeeder::class,
|
// JenisFasilitasKreditSeeder::class,
|
||||||
JenisLegalitasJaminanSeeder::class,
|
// JenisLegalitasJaminanSeeder::class,
|
||||||
JenisJaminanSeeder::class,
|
// JenisJaminanSeeder::class,
|
||||||
JenisDokumenSeeder::class,
|
// JenisDokumenSeeder::class,
|
||||||
TujuanPenilaianSeeder::class,
|
// TujuanPenilaianSeeder::class,
|
||||||
NilaiPlatformSeeder::class,
|
// NilaiPlatformSeeder::class,
|
||||||
HubunganPemilikJaminanSeeder::class,
|
// HubunganPemilikJaminanSeeder::class,
|
||||||
HubunganPenghuniJaminanSeeder::class,
|
// HubunganPenghuniJaminanSeeder::class,
|
||||||
ArahMataAnginSeeder::class,
|
// ArahMataAnginSeeder::class,
|
||||||
StatusPermohonanSeeder::class,
|
// StatusPermohonanSeeder::class,
|
||||||
RegionSeeder::class,
|
// RegionSeeder::class,
|
||||||
TeamsSeeder::class,
|
// TeamsSeeder::class,
|
||||||
TeamUsersSeeder::class,
|
// TeamUsersSeeder::class,
|
||||||
JenisPenilaianSeeder::class,
|
// JenisPenilaianSeeder::class,
|
||||||
TujuanPenilaianKJPPSeeder::class,
|
// TujuanPenilaianKJPPSeeder::class,
|
||||||
IjinUsahaSeeder::class,
|
// IjinUsahaSeeder::class,
|
||||||
JenisLaporanSeeder::class,
|
// JenisLaporanSeeder::class,
|
||||||
DebitureSeeder::class,
|
// DebitureSeeder::class,
|
||||||
PermohonanSeeder::class,
|
// PermohonanSeeder::class,
|
||||||
PemilikJaminanSeeder::class,
|
PemilikJaminanSeeder::class,
|
||||||
DokumenJaminanSeeder::class,
|
// DokumenJaminanSeeder::class,
|
||||||
DetailDokumenJaminanSeeder::class,
|
// DetailDokumenJaminanSeeder::class,
|
||||||
KJPPSeeder::class,
|
// KJPPSeeder::class,
|
||||||
PenawaranSeeder::class,
|
// PenawaranSeeder::class,
|
||||||
DetailPenawaranSeeder::class,
|
// DetailPenawaranSeeder::class,
|
||||||
PenilaianSeeder::class,
|
// PenilaianSeeder::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "admin"]
|
"roles": ["administrator", "admin"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "admin"],
|
"roles": ["administrator", "admin","EO Appraisal","DD Appraisal"],
|
||||||
"sub": [
|
"sub": [
|
||||||
{
|
{
|
||||||
"title": "Otorisasi Penawaran",
|
"title": "Otorisasi Penawaran",
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "admin"]
|
"roles": ["administrator", "admin","EO Appraisal","DD Appraisal"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,8 +15,6 @@
|
|||||||
Tambah Data Penawaran
|
Tambah Data Penawaran
|
||||||
</h3>
|
</h3>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<a href="{{ route('tender.penawaran.show', $noreg) }}" class="btn btn-xs btn-primary"
|
|
||||||
title="Detail"><i class="ki-outline ki-abstract-26"></i> Detail</a>
|
|
||||||
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i
|
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i
|
||||||
class="ki-filled ki-exit-left"></i>
|
class="ki-filled ki-exit-left"></i>
|
||||||
Back</a>
|
Back</a>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<a href="{{ route('tender.penawaran.show', $noreg) }}" class="btn btn-xs btn-primary" title="Detail">
|
<a href="{{ route('tender.penawaran.show', $noreg) }}" class="btn btn-xs btn-primary" title="Detail">
|
||||||
<i class="ki-outline ki-abstract-26"></i> Detail
|
<i class="ki-outline ki-abstract-26"></i> Detail
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info">
|
<a href="{{ route('tender.penawaran.ulang.index') }}" class="btn btn-xs btn-info">
|
||||||
<i class="ki-filled ki-exit-left"></i> Back
|
<i class="ki-filled ki-exit-left"></i> Back
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -39,8 +39,13 @@
|
|||||||
Nama KJPP Sebelumnya
|
Nama KJPP Sebelumnya
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
@php
|
||||||
|
$nama_kjpp = $penawaran->nama_kjpp_sebelumnya;
|
||||||
|
$nama = explode(' - ', $nama_kjpp)[1] ?? '';
|
||||||
|
@endphp
|
||||||
|
|
||||||
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
name="nama_kjpp_sebelumnya" readonly value="{{ $penawaran->nama_kjpp_sebelumnya ?? '' }}">
|
name="nama_kjpp_sebelumnya" readonly value="{{ $nama !== null ? $nama : '' }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@@ -49,7 +54,8 @@
|
|||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
name="biaya_kjpp_sebelumnya" readonly value="{{ $penawaran->biaya_kjpp_sebelumnya ?? '' }}">
|
name="biaya_kjpp_sebelumnya" readonly
|
||||||
|
value="{{ $penawaran->biaya_kjpp_sebelumnya !== null ? formatRupiah($penawaran->biaya_kjpp_sebelumnya) : '' }}">
|
||||||
</div>
|
</div>
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Tanggal Penilaian Sebelumnya
|
Tanggal Penilaian Sebelumnya
|
||||||
@@ -57,7 +63,7 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
name="tanggal_penilaian_sebelumnya" readonly
|
name="tanggal_penilaian_sebelumnya" readonly
|
||||||
value="{{ $penawaran->tanggal_penilaian_sebelumnya ?? '' }}">
|
value="{{ $penawaran->tanggal_penilaian_sebelumnya !== null ? formatTanggalIndonesia($penawaran->tanggal_penilaian_sebelumnya) : '' }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@@ -132,8 +138,8 @@
|
|||||||
</div>
|
</div>
|
||||||
-
|
-
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('end_date') border-danger @enderror" type="date" name="end_date"
|
<input class="input @error('end_date') border-danger @enderror" type="date" name="end_date"
|
||||||
value="{{ old('end_date', $penawaran->end_date) }}">
|
value="{{ old('end_date', $penawaran->end_date ? date('Y-m-d', strtotime($penawaran->end_date)) : '') }}">
|
||||||
@error('end_date')
|
@error('end_date')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -134,9 +134,6 @@
|
|||||||
} else {
|
} else {
|
||||||
// Jika tidak ada, tampilkan tombol "Tambah Penawaran"
|
// Jika tidak ada, tampilkan tombol "Tambah Penawaran"
|
||||||
actionDiv.innerHTML = `
|
actionDiv.innerHTML = `
|
||||||
<a class="btn btn-sm btn-icon btn-clear btn-warning" title="Detail" href="/tender/penawaran/${nomor_registrasi}/show">
|
|
||||||
<i class="ki-outline ki-eye"></i>
|
|
||||||
</a>
|
|
||||||
<a href="/tender/penawaran/${nomor_registrasi}/create" class="btn btn-sm btn-icon btn-clear btn-primary" title="Penawaran">
|
<a href="/tender/penawaran/${nomor_registrasi}/create" class="btn btn-sm btn-icon btn-clear btn-primary" title="Penawaran">
|
||||||
<i class="ki-outline ki-notepad-edit"></i>
|
<i class="ki-outline ki-notepad-edit"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -20,8 +20,14 @@
|
|||||||
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-primary"
|
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-primary"
|
||||||
title="Penawaran"><i class="ki-filled ki-arrow-circle-right"></i> Tambah Penawaran</a>
|
title="Penawaran"><i class="ki-filled ki-arrow-circle-right"></i> Tambah Penawaran</a>
|
||||||
@endif
|
@endif
|
||||||
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i
|
@if ($penawaranExists)
|
||||||
class="ki-filled ki-exit-left"></i> Back</a>
|
<a href="{{ route('tender.penawaran.ulang.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
@endif
|
||||||
|
@if (!$penawaranExists)
|
||||||
|
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body grid gap-5">
|
<div class="card-body grid gap-5">
|
||||||
|
|||||||
@@ -12,43 +12,148 @@
|
|||||||
Surat Tender
|
Surat Tender
|
||||||
</h3>
|
</h3>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
@if (isset($penawaran->nomor_registrasi))
|
<a href="{{ route('tender.penawaran.downloadSuratTender', $noreg) }}" class="btn btn-xs btn-light">
|
||||||
<a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
|
<img src="{{ asset('img/pdf.png') }}" width="25" alt="pdf"></img>Download
|
||||||
class="ki-filled ki-exit-left"></i> Back</a>
|
</span>
|
||||||
@else
|
@if (isset($penawaran->nomor_registrasi))
|
||||||
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
|
<a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
|
||||||
class="ki-filled ki-exit-left"></i> Back</a>
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
@endif
|
@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>
|
</div>
|
||||||
<div class="card-body grid gap-5">
|
<div class="card-body grid gap-5">
|
||||||
<p>Dear
|
<p>Dear
|
||||||
<span class="font-bold">{{ ucwords(auth()->user()->name) ?? 'Tidak Ada' }}</span>
|
<span class="font-bold">
|
||||||
|
@php
|
||||||
|
$allPeople = [];
|
||||||
|
|
||||||
|
foreach ($penawaran->penawaranKjpp as $kjpp) {
|
||||||
|
if ($kjpp->kjpp->nama_pic_admin) {
|
||||||
|
$allPeople[] = ucwords($kjpp->kjpp->nama_pic_admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($kjpp->kjpp->detail_nama_pic_admin) {
|
||||||
|
try {
|
||||||
|
$decoded = json_decode($kjpp->kjpp->detail_nama_pic_admin);
|
||||||
|
if ($decoded) {
|
||||||
|
foreach ($decoded as $admin) {
|
||||||
|
if (isset($admin->nama_pic_admin)) {
|
||||||
|
$allPeople[] = ucwords($admin->nama_pic_admin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// Handle invalid JSON silently
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$allPeople = array_filter($allPeople);
|
||||||
|
$totalPeople = count($allPeople);
|
||||||
|
@endphp
|
||||||
|
@if ($totalPeople > 0)
|
||||||
|
@foreach ($allPeople as $index => $person)
|
||||||
|
{{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }}
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
Tidak Ada
|
||||||
|
@endif
|
||||||
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p>Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
|
<p>Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
|
||||||
class="font-bold">{{ ucwords($penawaran->permohonan->user->name) }}</span>, tujuan penilaian
|
class="font-bold">{{ ucwords($permohonan->debiture->name) }}</span>, tujuan penilaian
|
||||||
untuk <span class="font-bold">
|
untuk <span class="font-bold">
|
||||||
@foreach ($penawaran->tujuanPenilaianKJPP as $tujuanPenilaianKJPP)
|
{{ $penawaran->tujuanPenilaianKJPP->name }}
|
||||||
{{ $tujuanPenilaianKJPP->name }}
|
|
||||||
@endforeach
|
|
||||||
</span>, laporan dalam bentuk <span class="font-bold">{{ $penawaran->jenisLaporan->name }}</span>,
|
</span>, laporan dalam bentuk <span class="font-bold">{{ $penawaran->jenisLaporan->name }}</span>,
|
||||||
dengan data-data sebagai berikut :</p>
|
dengan data-data sebagai berikut :</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Aset Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
|
<li>Aset Jaminan:
|
||||||
<li>Lokasi Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
|
<span class="font-bold">
|
||||||
<li>LT / LB: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
|
@foreach ($permohonan->debiture->documents as $document)
|
||||||
|
{{ $document->jenisJaminan->name }}
|
||||||
|
@endforeach
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li>Lokasi Jaminan:
|
||||||
|
<span class="font-bold">
|
||||||
|
@foreach ($permohonan->debiture->documents as $document)
|
||||||
|
{{ $document->address }}
|
||||||
|
@if (isset($document->jenisJaminan))
|
||||||
|
, Kel.
|
||||||
|
@foreach ($villages as $village)
|
||||||
|
{{ $village->name }}
|
||||||
|
@endforeach
|
||||||
|
, Kec.
|
||||||
|
@foreach ($districts as $district)
|
||||||
|
{{ $district->name }}
|
||||||
|
@endforeach
|
||||||
|
,
|
||||||
|
@foreach ($cities as $city)
|
||||||
|
{{ ucwords(strtolower($city->name)) }}
|
||||||
|
@endforeach
|
||||||
|
,
|
||||||
|
@foreach ($provinces as $province)
|
||||||
|
{{ $province->name }}
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li>Luas Tanah / Luas Bangunan:
|
||||||
|
<span class="font-bold">
|
||||||
|
@php
|
||||||
|
$luas_tanah = null;
|
||||||
|
$luas_bangunan = null;
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@foreach ($permohonan->debiture->documents as $document)
|
||||||
|
@foreach ($document->detail as $detail)
|
||||||
|
@php
|
||||||
|
$details = json_decode($detail->details);
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@if (is_object($details))
|
||||||
|
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah))
|
||||||
|
@php $luas_tanah = $details->luas_tanah; @endphp
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan))
|
||||||
|
@php $luas_bangunan = $details->luas_bangunan; @endphp
|
||||||
|
@endif
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@if ($luas_tanah !== null && $luas_bangunan !== null)
|
||||||
|
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
|
||||||
|
@elseif ($luas_tanah !== null)
|
||||||
|
{{ $luas_tanah }} m<sup>2</sup>
|
||||||
|
@elseif ($luas_bangunan !== null)
|
||||||
|
{{ $luas_bangunan }} m<sup>2</sup>
|
||||||
|
@endif
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p>
|
<p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p>
|
||||||
<p>Mohon proposal dapat saya terima segera, sebelum
|
<p>Mohon proposal dapat saya terima segera, sebelum
|
||||||
<span class="font-bold">{{ formatTanggalIndonesia($penawaran->end_date) }} pukul 17.00 WIB</span>
|
<span class="font-bold">{{ formatTanggalIndonesia2($penawaran->end_date) }}</span>
|
||||||
</p>
|
</p>
|
||||||
<p>Best Regards,
|
<p>Best Regards,
|
||||||
<span class="font-bold">[otomasi dari nama dan tanda tangan user penginput]</span>
|
<div class="font-bold">
|
||||||
Sub Direktorat Appraisal
|
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
|
||||||
|
alt="{{ $permohonan->user->name }}" width="200">
|
||||||
|
<p>
|
||||||
|
{{ $permohonan->user->name }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
Sub Direktorat Appraisal
|
||||||
</p>
|
</p>
|
||||||
<p>PT. Bank Artha Graha Internasional, Tbk.<br>
|
<p>PT. Bank Artha Graha Internasional, Tbk.<br>
|
||||||
Gedung Bank Artha Graha, Lantai 3<br>
|
Gedung Bank Artha Graha, Lantai 3<br>
|
||||||
Jl. Kwiitang Raya No 24-26, Jakarta Pusat - 10420.<br>
|
Jl. Kwitang Raya No 24-26, Jakarta Pusat - 10420.<br>
|
||||||
Telp. 021 - 3903040 (H)</p>
|
Telp. 021 - 3903040 (H)</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
178
resources/views/penawaran/surat_tender_download.blade.php
Normal file
178
resources/views/penawaran/surat_tender_download.blade.php
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>Surat Tender | {{ formatTanggalIndonesia(now()) }}</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Calibri;
|
||||||
|
margin: 20px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-top: 20px;
|
||||||
|
white-space: pre-line;
|
||||||
|
/* To handle line breaks in text */
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-max {
|
||||||
|
margin-top: 20px;
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.important {
|
||||||
|
font-weight: bold;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature {
|
||||||
|
margin-top: 40px;
|
||||||
|
font-family: 'Brush Script MT', cursive;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
Dear <span class="important">
|
||||||
|
@php
|
||||||
|
$allPeople = [];
|
||||||
|
|
||||||
|
foreach ($penawaran->penawaranKjpp as $kjpp) {
|
||||||
|
if ($kjpp->kjpp->nama_pic_admin) {
|
||||||
|
$allPeople[] = ucwords($kjpp->kjpp->nama_pic_admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($kjpp->kjpp->detail_nama_pic_admin) {
|
||||||
|
try {
|
||||||
|
$decoded = json_decode($kjpp->kjpp->detail_nama_pic_admin);
|
||||||
|
if ($decoded) {
|
||||||
|
foreach ($decoded as $admin) {
|
||||||
|
if (isset($admin->nama_pic_admin)) {
|
||||||
|
$allPeople[] = ucwords($admin->nama_pic_admin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// Handle invalid JSON silently
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$allPeople = array_filter($allPeople);
|
||||||
|
$totalPeople = count($allPeople);
|
||||||
|
@endphp
|
||||||
|
@if ($totalPeople > 0)
|
||||||
|
@foreach ($allPeople as $index => $person)
|
||||||
|
{{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }}
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
Tidak Ada
|
||||||
|
@endif
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
|
||||||
|
class="important">{{ $permohonan->debiture->name }}</span>, tujuan penilaian untuk <span
|
||||||
|
class="important">{{ $penawaran->tujuanPenilaianKJPP->name }}</span>, laporan dalam bentuk <span
|
||||||
|
class="important">{{ $penawaran->jenisLaporan->name }}</span>, dengan data-data sebagai berikut:
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-max">
|
||||||
|
Aset Jaminan: @foreach ($permohonan->debiture->documents as $document)
|
||||||
|
{{ $document->jenisJaminan->name }}
|
||||||
|
@endforeach
|
||||||
|
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document)
|
||||||
|
{{ $document->address }}, Kel. @foreach ($villages as $village)
|
||||||
|
{{ $village->name }}
|
||||||
|
@endforeach, Kec. @foreach ($districts as $district)
|
||||||
|
{{ $district->name }}
|
||||||
|
@endforeach,@foreach ($cities as $city)
|
||||||
|
{{ ucwords(strtolower($city->name)) }}
|
||||||
|
@endforeach,@foreach ($provinces as $province)
|
||||||
|
{{ $province->name }}
|
||||||
|
@endforeach
|
||||||
|
@endforeach
|
||||||
|
</span>
|
||||||
|
|
||||||
|
Luas Tanah / Luas Bangunan:
|
||||||
|
@php
|
||||||
|
$luas_tanah = null;
|
||||||
|
$luas_bangunan = null;
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@foreach ($permohonan->debiture->documents as $document)
|
||||||
|
@foreach ($document->detail as $detail)
|
||||||
|
@php
|
||||||
|
$details = json_decode($detail->details);
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@if (is_object($details))
|
||||||
|
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah))
|
||||||
|
@php $luas_tanah = $details->luas_tanah; @endphp
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan))
|
||||||
|
@php $luas_bangunan = $details->luas_bangunan; @endphp
|
||||||
|
@endif
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@if ($luas_tanah !== null && $luas_bangunan !== null)
|
||||||
|
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
|
||||||
|
@elseif ($luas_tanah !== null)
|
||||||
|
{{ $luas_tanah }} m<sup>2</sup>
|
||||||
|
@elseif ($luas_bangunan !== null)
|
||||||
|
{{ $luas_bangunan }} m<sup>2</sup>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi. <br />
|
||||||
|
Mohon proposal dapat saya terima segera, sebelum <span
|
||||||
|
class="important">{{ formatTanggalIndonesia2($penawaran->end_date) }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature">
|
||||||
|
Best Regards,<br />
|
||||||
|
<img src="{{ public_path('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
|
||||||
|
alt="{{ $permohonan->user->name }}" width="200">
|
||||||
|
<p>
|
||||||
|
{{ $permohonan->user->name }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
PT. Bank Artha Graha Internasional, Tbk.<br>
|
||||||
|
Gedung Bank Artha Graha, Lantai 3<br>
|
||||||
|
Jl. Kwitang Raya No 24-26, Jakarta Pusat - 10420.<br>
|
||||||
|
Telp. 021 - 3903040 (H)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
@include('lpj::component.detail-jaminan',['backLink' => 'authorization.index'])
|
@include('lpj::component.detail-jaminan',['backLink' => 'authorization.index'])
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<form action="{{ route('authorization.update', $permohonan->id) }}" method="POST" id="authorizationForm">
|
<form action="{{ route('authorization.update', $permohonan->id) }}" method="POST" id="authorizationForm" enctype="multipart/form-data">
|
||||||
<input type="hidden" name="_method" value="PUT">
|
<input type="hidden" name="_method" value="PUT">
|
||||||
@csrf
|
@csrf
|
||||||
<div class="card-body lg:py-7.5">
|
<div class="card-body lg:py-7.5">
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
Upload File Revisi
|
Upload File Revisi
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input type="file" class="file-input" id="revisionFile" name="revisionFile">
|
<input type="file" class="file-input" id="revisionFile" name="attachment">
|
||||||
<em class="alert text-danger text-sm hidden" id="file-message"></em>
|
<em class="alert text-danger text-sm hidden" id="file-message"></em>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
keteranganMessage.textContent = '';
|
keteranganMessage.textContent = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!revisionFile.files.length) {
|
if (event.submitter === revisiBtn && !revisionFile.files.length) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
fileMessage.textContent = 'File revisi harus diunggah.';
|
fileMessage.textContent = 'File revisi harus diunggah.';
|
||||||
fileMessage.classList.remove('hidden');
|
fileMessage.classList.remove('hidden');
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
@include('lpj::component.detail-jaminan',['backLink' => 'prmohonan.index'])
|
@include('lpj::component.detail-jaminan', ['backLink' => 'permohonan.index'])
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<form action="{{ route('permohonan.print', $permohonan->id) }}" method="GET">
|
<form action="{{ route('permohonan.print', $permohonan->id) }}" method="GET">
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
|
use Modules\Lpj\Http\Controllers\SpkController;
|
||||||
use Modules\Lpj\Http\Controllers\RegistrasiController;
|
use Modules\Lpj\Http\Controllers\RegistrasiController;
|
||||||
use Modules\Lpj\Http\Controllers\ProsesPenawaranController;
|
use Modules\Lpj\Http\Controllers\ProsesPenawaranController;
|
||||||
use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController;
|
|
||||||
use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController;
|
|
||||||
use Modules\Lpj\Http\Controllers\SpkController;
|
|
||||||
use Modules\Lpj\Http\Controllers\RegistrasiFinalController;
|
use Modules\Lpj\Http\Controllers\RegistrasiFinalController;
|
||||||
|
use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController;
|
||||||
|
use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController;
|
||||||
|
|
||||||
Route::middleware(['auth'])->group(function () {
|
Route::middleware(['auth'])->group(function () {
|
||||||
|
|
||||||
// andy add
|
// andy add
|
||||||
// Route::name('registrasi.')->prefix('registrasi')->group(function () {
|
// Route::name('registrasi.')->prefix('registrasi')->group(function () {
|
||||||
Route::controller(RegistrasiController::class)->group(function(){
|
Route::controller(RegistrasiController::class)->group(function () {
|
||||||
// Route::get('/', [RegistrasiController::class, 'index'])->name('registrasi.index');
|
// Route::get('/', [RegistrasiController::class, 'index'])->name('registrasi.index');
|
||||||
Route::get('/registrasi', 'index')->name('registrasi.index');
|
Route::get('/registrasi', 'index')->name('registrasi.index');
|
||||||
Route::get('/registrasi/datatables', 'dataForDatatables')->name('registrasi.datatables');
|
Route::get('/registrasi/datatables', 'dataForDatatables')->name('registrasi.datatables');
|
||||||
|
|
||||||
// show data
|
// show data
|
||||||
Route::get('/registrasi/{registrasi}', 'show')->name('registrasi.show');
|
Route::get('/registrasi/{registrasi}', 'show')->name('registrasi.show');
|
||||||
Route::post('registrasi/showData', 'setData')->name('registrasi.showData');
|
Route::post('registrasi/showData', 'setData')->name('registrasi.showData');
|
||||||
@@ -23,49 +24,45 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::post('registrasi/setData', 'setData')->name('registrasi.setData');
|
Route::post('registrasi/setData', 'setData')->name('registrasi.setData');
|
||||||
Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit');
|
Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit');
|
||||||
Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update');
|
Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update');
|
||||||
|
|
||||||
});
|
});
|
||||||
// andy add
|
// andy add
|
||||||
|
|
||||||
|
|
||||||
Route::name('tender.')->prefix('tender')->group(function () {
|
Route::name('tender.')->prefix('tender')->group(function () {
|
||||||
|
|
||||||
// Proses Penawaran
|
// Proses Penawaran
|
||||||
Route::controller(ProsesPenawaranController::class)->group(function(){
|
Route::controller(ProsesPenawaranController::class)->group(function () {
|
||||||
|
|
||||||
Route::get('prosespenawaran', 'index')->name('prosespenawaran.index');
|
Route::get('prosespenawaran', 'index')->name('prosespenawaran.index');
|
||||||
Route::get('prosespenawaran/datatables', 'dataForDatatables')->name('prosespenawaran.datatables');
|
Route::get('prosespenawaran/datatables', 'dataForDatatables')->name('prosespenawaran.datatables');
|
||||||
Route::get('prosespenawaran/datatableskjppList_1', 'dataForDatatablesKJPPList_1')->name('prosespenawaran.datatableskjppList_1');
|
Route::get('prosespenawaran/datatableskjppList_1', 'dataForDatatablesKJPPList_1')->name('prosespenawaran.datatableskjppList_1');
|
||||||
|
Route::get('/prosespenawaran/{prosespenawaran}', 'show')->name('prosespenawaran.show');
|
||||||
// show data
|
Route::get('prosespenawaran/{prosespenawaran}/edit', 'edit')->name('prosespenawaran.edit');
|
||||||
Route::get('/prosespenawaran/{prosespenawaran}', 'show')->name('prosespenawaran.show');
|
|
||||||
Route::post('prosespenawaran/setData', 'setData')->name('prosespenawaran.setData');
|
|
||||||
|
|
||||||
Route::get('prosespenawaran/{prosespenawaran}/edit', 'edit')->name('prosespenawaran.edit');
|
|
||||||
|
|
||||||
// update one
|
Route::post('prosespenawaran/setData', 'setData')->name('prosespenawaran.setData');
|
||||||
Route::put('/prosespenawaran/{prosespenawaran}', 'update')->name('prosespenawaran.update');
|
|
||||||
// update all
|
|
||||||
Route::put('/prosespenawaranAll/{prosespenawaranAll}', 'updateAll')->name('prosespenawaran.updateAll');
|
|
||||||
// update draft
|
|
||||||
Route::put('/prosespenawaranDraft/{prosespenawaranDraft}', 'updateDraft')->name('prosespenawaran.updateDraft');
|
|
||||||
// delete KJPP, status set = 0
|
|
||||||
Route::put('/prosespenawaranKJPPStatus/{prosespenawaranKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaran.updateKJPPStatus');
|
|
||||||
|
|
||||||
// add KJPP to detail_penawaran
|
|
||||||
Route::post('prosespenawaran/store', 'store')->name('prosespenawaran.store');
|
|
||||||
Route::post('prosespenawaran/storeUlang', 'storeUlang')->name('prosespenawaran.storeUlang');
|
|
||||||
|
|
||||||
// edit proses penawaran ulang
|
// update one
|
||||||
Route::get('prosespenawaran/{prosespenawaran}/editulang', 'editulang')->name('prosespenawaran.editulang');
|
Route::put('/prosespenawaran/{prosespenawaran}', 'update')->name('prosespenawaran.update');
|
||||||
Route::post('prosespenawaran/setDataUlang', 'setDataUlang')->name('prosespenawaran.setDataUlang');
|
// update all
|
||||||
Route::put('/prosespenawaran2/{prosespenawaran2}', 'updateulang')->name('prosespenawaran.updateulang');
|
Route::put('/prosespenawaranAll/{prosespenawaranAll}', 'updateAll')->name('prosespenawaran.updateAll');
|
||||||
Route::put('/prosespenawaranKJPPStatusUlang/{prosespenawaranKJPPStatusUlang}', 'updateKJPPStatusUlang')->name('prosespenawaran.updateKJPPStatusUlang');
|
// update draft
|
||||||
|
Route::put('/prosespenawaranDraft/{prosespenawaranDraft}', 'updateDraft')->name('prosespenawaran.updateDraft');
|
||||||
|
// delete KJPP, status set = 0
|
||||||
|
Route::put('/prosespenawaranKJPPStatus/{prosespenawaranKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaran.updateKJPPStatus');
|
||||||
|
|
||||||
|
// add KJPP to detail_penawaran
|
||||||
|
Route::post('prosespenawaran/store', 'store')->name('prosespenawaran.store');
|
||||||
|
Route::post('prosespenawaran/storeUlang', 'storeUlang')->name('prosespenawaran.storeUlang');
|
||||||
|
|
||||||
|
// edit proses penawaran ulang
|
||||||
|
Route::get('prosespenawaran/{prosespenawaran}/editulang', 'editulang')->name('prosespenawaran.editulang');
|
||||||
|
Route::post('prosespenawaran/setDataUlang', 'setDataUlang')->name('prosespenawaran.setDataUlang');
|
||||||
|
Route::put('/prosespenawaran2/{prosespenawaran2}', 'updateulang')->name('prosespenawaran.updateulang');
|
||||||
|
Route::put('/prosespenawaranKJPPStatusUlang/{prosespenawaranKJPPStatusUlang}', 'updateKJPPStatusUlang')->name('prosespenawaran.updateKJPPStatusUlang');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Proses Penawaran Ulang
|
// Proses Penawaran Ulang
|
||||||
Route::controller(ProsesPenawaranUlangController::class)->group(function(){
|
Route::controller(ProsesPenawaranUlangController::class)->group(function () {
|
||||||
Route::get('prosespenawaranulang', 'index')->name('prosespenawaranulang.index');
|
Route::get('prosespenawaranulang', 'index')->name('prosespenawaranulang.index');
|
||||||
Route::get('prosespenawaranulang/datatables', 'dataForDatatables')->name('prosespenawaranulang.datatables');
|
Route::get('prosespenawaranulang/datatables', 'dataForDatatables')->name('prosespenawaranulang.datatables');
|
||||||
Route::get('prosespenawaranulang/{prosespenawaranulang}/edit', 'edit')->name('prosespenawaranulang.edit');
|
Route::get('prosespenawaranulang/{prosespenawaranulang}/edit', 'edit')->name('prosespenawaranulang.edit');
|
||||||
@@ -76,14 +73,13 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
|
|
||||||
// update KJPP data, detail penawaran
|
// update KJPP data, detail penawaran
|
||||||
Route::put('/prosespenawaranulang/{prosespenawaranulang}', 'update')->name('prosespenawaranulang.update');
|
Route::put('/prosespenawaranulang/{prosespenawaranulang}', 'update')->name('prosespenawaranulang.update');
|
||||||
// delete KJPP, status set = 0
|
// delete KJPP, status set = 0
|
||||||
Route::put('/prosespenawaranulangKJPPStatus/{prosespenawaranulangKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaranulang.updateKJPPStatus');
|
Route::put('/prosespenawaranulangKJPPStatus/{prosespenawaranulangKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaranulang.updateKJPPStatus');
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::name('otorisasitender.')->prefix('otorisasitender')->group(function () {
|
Route::name('otorisasitender.')->prefix('otorisasitender')->group(function () {
|
||||||
Route::controller(OtorisasiPenawaranController::class)->group(function(){
|
Route::controller(OtorisasiPenawaranController::class)->group(function () {
|
||||||
Route::get('penawaran', 'index')->name('penawaran.index');
|
Route::get('penawaran', 'index')->name('penawaran.index');
|
||||||
Route::get('penawaran/datatables', 'dataForDatatables')->name('penawaran.datatables');
|
Route::get('penawaran/datatables', 'dataForDatatables')->name('penawaran.datatables');
|
||||||
Route::get('penawaran/{penawaran}/edit', 'edit')->name('penawaran.edit');
|
Route::get('penawaran/{penawaran}/edit', 'edit')->name('penawaran.edit');
|
||||||
@@ -94,23 +90,22 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
|
|
||||||
// update KJPP data, detail penawaran
|
// update KJPP data, detail penawaran
|
||||||
Route::put('/otorisasiPenawaranKJPP/{penawaran}', 'otorisasiPenawaranKJPP')->name('penawaran.otorisasiPenawaranKJPP');
|
Route::put('/otorisasiPenawaranKJPP/{penawaran}', 'otorisasiPenawaranKJPP')->name('penawaran.otorisasiPenawaranKJPP');
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::controller(SpkController::class)->group(function(){
|
Route::controller(SpkController::class)->group(function () {
|
||||||
Route::get('/spk/dokumennya', 'dokumennya')->name('spk.dokumennya');
|
Route::get('/spk/dokumennya', 'dokumennya')->name('spk.dokumennya');
|
||||||
|
|
||||||
Route::get('/spk', 'index')->name('spk.index');
|
Route::get('/spk', 'index')->name('spk.index');
|
||||||
Route::get('/spk/datatables', 'dataForDatatables')->name('spk.datatables');
|
Route::get('/spk/datatables', 'dataForDatatables')->name('spk.datatables');
|
||||||
Route::get('/spk/{spk}', 'show')->name('spk.show');
|
Route::get('/spk/{spk}', 'show')->name('spk.show');
|
||||||
Route::get('/spk/{spk}/edit', 'edit')->name('spk.edit');
|
Route::get('/spk/{spk}/edit', 'edit')->name('spk.edit');
|
||||||
Route::put('/spk/{spk}', 'update')->name('spk.update');
|
Route::put('/spk/{spk}', 'update')->name('spk.update');
|
||||||
|
|
||||||
Route::get('spk/{spk}/download', 'download')->name('spk.download');
|
Route::get('spk/{spk}/download', 'download')->name('spk.download');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::controller(RegistrasiFinalController::class)->group(function(){
|
Route::controller(RegistrasiFinalController::class)->group(function () {
|
||||||
Route::get('/registrasifinal', 'index')->name('registrasifinal.index');
|
Route::get('/registrasifinal', 'index')->name('registrasifinal.index');
|
||||||
Route::get('/registrasifinal/datatables', 'dataForDatatables')->name('registrasifinal.datatables');
|
Route::get('/registrasifinal/datatables', 'dataForDatatables')->name('registrasifinal.datatables');
|
||||||
Route::get('/registrasifinal/{registrasifinal}', 'show')->name('registrasifinal.show');
|
Route::get('/registrasifinal/{registrasifinal}', 'show')->name('registrasifinal.show');
|
||||||
@@ -121,4 +116,3 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::put('/registrasifinal/{registrasifinal}', 'update')->name('registrasifinal.update');
|
Route::put('/registrasifinal/{registrasifinal}', 'update')->name('registrasifinal.update');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -393,6 +393,7 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name(
|
Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name(
|
||||||
'penawaran.showSuratTender'
|
'penawaran.showSuratTender'
|
||||||
);
|
);
|
||||||
|
Route::get('penawaran/{noreg}/suratTender/downloadpdf', [TenderController::class, 'downloadSuratTender'])->name('penawaran.downloadSuratTender');
|
||||||
|
|
||||||
// Penawaran Ulang
|
// Penawaran Ulang
|
||||||
Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name(
|
Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name(
|
||||||
|
|||||||
Reference in New Issue
Block a user