penggabungan feature Data Penawaran ke dalam feature Proses Penawaran. Dan merapihkan tampilan index
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Modules\Lpj\Models\HolidayCalendar;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Modules\Lpj\Models\HolidayCalendar;
|
||||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
|
|
||||||
@@ -120,6 +121,28 @@
|
|||||||
return implode(' ', $words);
|
return implode(' ', $words);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// generate last penawaran.code
|
||||||
|
function onLastnumberCodePenawaran(): string
|
||||||
|
{
|
||||||
|
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
|
||||||
|
$maxCode = PenawaranTender::max('code');
|
||||||
|
// $penawaran = PenawaranTender::latest()->first();
|
||||||
|
$penawaran = PenawaranTender::where('code','=',$maxCode)->first();
|
||||||
|
$code_penawaran_last='';
|
||||||
|
$noUrutAkhirString = sprintf("%04s", 1);
|
||||||
|
if($penawaran)
|
||||||
|
{
|
||||||
|
$code_penawaran_last = substr ($maxCode, -4);
|
||||||
|
$year_penawaran_last = Carbon::parse($penawaran->created_at)->year;
|
||||||
|
$year_now = Carbon::now()->year;
|
||||||
|
if($year_now == $year_penawaran_last)
|
||||||
|
{
|
||||||
|
$noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'NP'.Carbon::now()->format('y').$noUrutAkhirString;
|
||||||
|
}
|
||||||
// andy add
|
// andy add
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@@ -40,7 +41,18 @@ class OtorisasiPenawaranController extends Controller
|
|||||||
|
|
||||||
// Retrieve data from the database
|
// Retrieve data from the database
|
||||||
$query =PenawaranTender::query()
|
$query =PenawaranTender::query()
|
||||||
->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
|
->select('penawaran.*',
|
||||||
|
'debitures.name as debitures_name',
|
||||||
|
'permohonan.tanggal_permohonan',
|
||||||
|
'users.name as user_pemohon',
|
||||||
|
'branches.name as branches_name',
|
||||||
|
'tujuan_penilaian.name as tujuan_penilaian_name',
|
||||||
|
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
|
||||||
|
->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')
|
||||||
|
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
|
||||||
|
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
|
||||||
|
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
|
||||||
|
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id')
|
||||||
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
|
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
|
||||||
->where('penawaran.status','=','proposal-tender')
|
->where('penawaran.status','=','proposal-tender')
|
||||||
->withCount('penawarandetails');
|
->withCount('penawarandetails');
|
||||||
@@ -82,6 +94,27 @@ class OtorisasiPenawaranController extends Controller
|
|||||||
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||||
$data = $query->get();
|
$data = $query->get();
|
||||||
|
|
||||||
|
// format date
|
||||||
|
$i = 0;
|
||||||
|
foreach ($data as $obj) {
|
||||||
|
|
||||||
|
// tanggal_permohonan
|
||||||
|
if ($obj->tanggal_permohonan) {
|
||||||
|
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
// date_range
|
||||||
|
$data[$i]->date_range = "-";
|
||||||
|
if ($obj->start_date && $obj->end_date)
|
||||||
|
{
|
||||||
|
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' .
|
||||||
|
Carbon::parse($obj->end_date)->format('d M Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
// format date
|
||||||
|
|
||||||
// Calculate the page count
|
// Calculate the page count
|
||||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
|||||||
@@ -13,12 +13,16 @@ use Illuminate\Support\Facades\Validator;
|
|||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Modules\Lpj\Http\Requests\ProsesPenawaranRequest;
|
||||||
|
use Modules\Lpj\Models\JenisLaporan;
|
||||||
use Modules\Lpj\Models\KJPP;
|
use Modules\Lpj\Models\KJPP;
|
||||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||||
use Modules\Lpj\Models\PenawaranDetailTenderLog;
|
use Modules\Lpj\Models\PenawaranDetailTenderLog;
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
|
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
|
|
||||||
class ProsesPenawaranController extends Controller
|
class ProsesPenawaranController extends Controller
|
||||||
{
|
{
|
||||||
@@ -40,7 +44,51 @@ class ProsesPenawaranController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve data from the database
|
// Retrieve data from the database
|
||||||
$query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
|
// $query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
|
||||||
|
|
||||||
|
// penawaran need union with permohonan
|
||||||
|
$query = PenawaranTender::query()->whereIn('penawaran.status', ['tender', 'proposal-tender'])
|
||||||
|
->select('penawaran.id',
|
||||||
|
'penawaran.nomor_registrasi',
|
||||||
|
'penawaran.code as penawaran_code',
|
||||||
|
'penawaran.start_date',
|
||||||
|
'penawaran.end_date',
|
||||||
|
'penawaran.status as statusnya',
|
||||||
|
'debitures.name as debitures_name',
|
||||||
|
'permohonan.tanggal_permohonan',
|
||||||
|
'users.name as user_pemohon',
|
||||||
|
'branches.name as branches_name',
|
||||||
|
'tujuan_penilaian.name as tujuan_penilaian_name',
|
||||||
|
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name'
|
||||||
|
)
|
||||||
|
->withCount('penawarandetails')
|
||||||
|
->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')
|
||||||
|
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
|
||||||
|
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
|
||||||
|
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id')
|
||||||
|
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
|
||||||
|
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id', '=', 'penawaran.tujuan_penilaian_kjpp_id');
|
||||||
|
|
||||||
|
$permohonanQuery = Permohonan::whereIn('permohonan.status', ['registered'])->where('permohonan.jenis_penilaian_id', '=', 2)
|
||||||
|
->select('permohonan.id',
|
||||||
|
'permohonan.nomor_registrasi',
|
||||||
|
DB::raw('"" as penawaran_code'),
|
||||||
|
DB::raw('"" as start_date'),
|
||||||
|
DB::raw('"" as end_date'),
|
||||||
|
'permohonan.status as statusnya',
|
||||||
|
'debitures.name as debitures_name',
|
||||||
|
'permohonan.tanggal_permohonan',
|
||||||
|
'users.name as user_pemohon',
|
||||||
|
'branches.name as branches_name',
|
||||||
|
'tujuan_penilaian.name as tujuan_penilaian_name',
|
||||||
|
DB::raw('"" as tujuan_penilaian_kjpp_name'),
|
||||||
|
DB::raw('"-" as penawarandetails_count'))
|
||||||
|
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
|
||||||
|
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
|
||||||
|
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
|
||||||
|
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id');
|
||||||
|
$query->union($permohonanQuery);
|
||||||
|
// penawaran need union with permohonan
|
||||||
|
|
||||||
// Apply search filter if provided
|
// Apply search filter if provided
|
||||||
if ($request->has('search') && !empty($request->get('search'))) {
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
@@ -76,8 +124,29 @@ class ProsesPenawaranController extends Controller
|
|||||||
$filteredRecords = $query->count();
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
// Get the data for the current page
|
// Get the data for the current page
|
||||||
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
// $data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
|
||||||
$data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
|
$data = $query->get();
|
||||||
|
|
||||||
|
// format date
|
||||||
|
$i = 0;
|
||||||
|
foreach ($data as $obj) {
|
||||||
|
|
||||||
|
// tanggal_permohonan
|
||||||
|
if ($obj->tanggal_permohonan) {
|
||||||
|
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
// date_range
|
||||||
|
$data[$i]->date_range = "-";
|
||||||
|
if ($obj->start_date && $obj->end_date)
|
||||||
|
{
|
||||||
|
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' .
|
||||||
|
Carbon::parse($obj->end_date)->format('d M Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
// format date
|
||||||
|
|
||||||
// Calculate the page count
|
// Calculate the page count
|
||||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
@@ -826,4 +895,77 @@ class ProsesPenawaranController extends Controller
|
|||||||
|
|
||||||
return response()->json($data);
|
return response()->json($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// merger permohonan
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function createPenawaran($id)
|
||||||
|
{
|
||||||
|
// id ==> permohonan.id
|
||||||
|
$permohonan = Permohonan::find($id);
|
||||||
|
// dd($permohonan);
|
||||||
|
$status = StatusPermohonan::all();
|
||||||
|
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
||||||
|
$jenis_laporan = JenisLaporan::all();
|
||||||
|
$kjpp = KJPP::all();
|
||||||
|
|
||||||
|
return view('lpj::prosespenawaran.createPenawaran', compact('id', 'status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'permohonan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function storePenawaran(ProsesPenawaranRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validated = $request->validated();
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$permohonan = Permohonan::find($id);
|
||||||
|
|
||||||
|
$userId = Auth::user()->id;
|
||||||
|
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
|
||||||
|
$validated['status'] = 'tender';
|
||||||
|
$validated['updated_by'] = $userId; // Updating the record
|
||||||
|
$validated['end_date'] = $request->input('end_date') . ' 23:59:59';
|
||||||
|
|
||||||
|
$permohonan->update($validated);
|
||||||
|
|
||||||
|
// Adding created_by for the new penawaran record
|
||||||
|
$validated['created_by'] = $userId;
|
||||||
|
$validated['code'] = onLastnumberCodePenawaran();
|
||||||
|
$penawaran = PenawaranTender::create($validated);
|
||||||
|
|
||||||
|
$kjpps = $request->input('kjpp', []);
|
||||||
|
|
||||||
|
foreach ($kjpps as $kjpp) {
|
||||||
|
PenawaranDetailTender::create([
|
||||||
|
'penawaran_id' => $penawaran->id,
|
||||||
|
'kjpp_rekanan_id' => $kjpp,
|
||||||
|
'created_by' => $userId, // Set created_by for details
|
||||||
|
'updated_by' => $userId
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit the transaction
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('tender.prosespenawaran.index')
|
||||||
|
->with('success', 'Data Penawaran created successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('tender.prosespenawaran.createPenawaran', $id)
|
||||||
|
->with('error', 'Validation failed: ' . $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function showPermohonan($id)
|
||||||
|
{
|
||||||
|
$permohonan = Permohonan::find($id);
|
||||||
|
return view('lpj::prosespenawaran.showPermohonan', compact('id', 'permohonan'));
|
||||||
|
}
|
||||||
|
// merger permohonan
|
||||||
}
|
}
|
||||||
|
|||||||
85
app/Http/Requests/ProsesPenawaranRequest.php
Normal file
85
app/Http/Requests/ProsesPenawaranRequest.php
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class ProsesPenawaranRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'kjpp.*' => 'exists:kjpp,id',
|
||||||
|
'tujuan_penilaian_kjpp_id' => 'required',
|
||||||
|
'jenis_laporan_id' => 'required',
|
||||||
|
'start_date' => 'required',
|
||||||
|
'end_date' => 'required',
|
||||||
|
'catatan' => 'nullable'
|
||||||
|
];
|
||||||
|
|
||||||
|
// if ($this->method() == 'PUT') {
|
||||||
|
// $rules['code'] = 'required|max:50';
|
||||||
|
// } else {
|
||||||
|
// $rules['code'] = 'required|max:50|unique:penawaran,code';
|
||||||
|
// }
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'code.required' => 'Kode Penawaran Wajib diisi!',
|
||||||
|
'code.max' => 'Kode Penawaran maksimal 255 huruf!',
|
||||||
|
'code.unique' => 'Kode Penawaran tidak boleh sama!',
|
||||||
|
'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!',
|
||||||
|
'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
|
||||||
|
'start_date.required' => 'Tanggal Awal Wajib diisi!',
|
||||||
|
'end_date.required' => 'Tanggal Akhir Wajib diisi!',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withValidator($validator)
|
||||||
|
{
|
||||||
|
$validator->after(function ($validator) {
|
||||||
|
$startDate = strtotime($this->input('start_date'));
|
||||||
|
$endDate = strtotime($this->input('end_date'));
|
||||||
|
$today = strtotime(date('Y-m-d'));
|
||||||
|
|
||||||
|
// Jika dalam keadaan tambah penawaran maka munculkan pesan ini
|
||||||
|
// if ($this->method() !== 'PUT') {
|
||||||
|
// if ($startDate < $today) {
|
||||||
|
// $validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
if ($endDate < $startDate) {
|
||||||
|
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Validasi minimal 3 pilihan pada nama_kjpp
|
||||||
|
$namaKjpp = $this->input('kjpp', []);
|
||||||
|
|
||||||
|
// jika nama KJPP itu kosong
|
||||||
|
if (empty($namaKjpp)) {
|
||||||
|
$validator->errors()->add('kjpp', 'Nama KJPP wajib diisi.');
|
||||||
|
}
|
||||||
|
// jika terisi kurang dari 3 item
|
||||||
|
elseif (is_array($namaKjpp) && count($namaKjpp) < 3) {
|
||||||
|
$validator->errors()->add('kjpp', 'Nama KJPP minimal 3 pilihan.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,14 +36,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "admin"],
|
"roles": ["administrator", "admin"],
|
||||||
"sub": [
|
"sub": [
|
||||||
{
|
|
||||||
"title": "Data Penawaran",
|
|
||||||
"path": "tender.penawaran",
|
|
||||||
"classes": "",
|
|
||||||
"attributes": [],
|
|
||||||
"permission": "",
|
|
||||||
"roles": ["administrator", "admin"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "Data Proses Penawaran",
|
"title": "Data Proses Penawaran",
|
||||||
"path": "tender.prosespenawaran",
|
"path": "tender.prosespenawaran",
|
||||||
|
|||||||
@@ -36,11 +36,11 @@
|
|||||||
|
|
||||||
<div class="mb-5">
|
<div class="mb-5">
|
||||||
<h3 class="text-md font-medium text-gray-900">
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
Kode Penawaran:
|
Nomor Penawaran:
|
||||||
</h3>
|
</h3>
|
||||||
<span class="text-2sm text-gray-700">
|
<span class="text-2sm text-gray-700">
|
||||||
<label class="card-title" id="textCodePenawaran">
|
<label class="card-title" id="textCodePenawaran">
|
||||||
Kode Penawaran
|
Nomor Penawaran
|
||||||
</label>
|
</label>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -69,7 +69,9 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-14 text-center">No</th>
|
<th class="w-14 text-center">No</th>
|
||||||
<th class="min-w-[250px]">KJPP</th>
|
<th class="min-w-[80px]">KJPP</th>
|
||||||
|
<th>No Proposal</th>
|
||||||
|
<th>Tanggal Proposal</th>
|
||||||
<th>Biaya Penawaran</th>
|
<th>Biaya Penawaran</th>
|
||||||
<th>Dokumen Penawaran</th>
|
<th>Dokumen Penawaran</th>
|
||||||
<th class="min-w-[50px] text-center">Action</th>
|
<th class="min-w-[50px] text-center">Action</th>
|
||||||
@@ -98,7 +100,9 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-14 text-center">No</th>
|
<th class="w-14 text-center">No</th>
|
||||||
<th class="min-w-[250px]">KJPP</th>
|
<th class="min-w-[80px]">KJPP</th>
|
||||||
|
<th>No Proposal</th>
|
||||||
|
<th>Tanggal Proposal</th>
|
||||||
<th>Biaya Penawaran</th>
|
<th>Biaya Penawaran</th>
|
||||||
<th>Dokumen Penawaran</th>
|
<th>Dokumen Penawaran</th>
|
||||||
<th>created_at</th>
|
<th>created_at</th>
|
||||||
|
|||||||
@@ -36,17 +36,37 @@
|
|||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="code">
|
<th class="min-w-[150px]" data-datatable-column="code">
|
||||||
<span class="sort"> <span class="sort-label"> Kode Penawaran </span>
|
<span class="sort"> <span class="sort-label"> Nomor Penawaran</span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="start_date">
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="user_pemohon">
|
||||||
|
<span class="sort"> <span class="sort-label"> User Pemohon </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="branches_name">
|
||||||
|
<span class="sort"> <span class="sort-label"> Cabang Pemohon </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="debiture">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nama Debitur </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="date_range">
|
||||||
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_name">
|
||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian KJPP </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="penawarandetails_count">
|
<th class="min-w-[150px]" data-datatable-column="penawarandetails_count">
|
||||||
<span class="sort"> <span class="sort-label"> Total KJPP </span>
|
<span class="sort"> <span class="sort-label"> Total KJPP </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -107,13 +127,40 @@
|
|||||||
title: 'Nomor Registrasi',
|
title: 'Nomor Registrasi',
|
||||||
},
|
},
|
||||||
code: {
|
code: {
|
||||||
title: 'Kode Penawaran',
|
title: 'Nomor Penawaran',
|
||||||
|
},
|
||||||
|
tanggal_permohonan: {
|
||||||
|
title: 'Tanggal Permohonan',
|
||||||
|
},
|
||||||
|
user_pemohon: {
|
||||||
|
title: 'User Pemohon',
|
||||||
|
},
|
||||||
|
branches_name: {
|
||||||
|
title: 'Cabang Pemohon',
|
||||||
|
},
|
||||||
|
debiture: {
|
||||||
|
title: 'Nama Debitur',
|
||||||
|
render: (item, data) => {
|
||||||
|
if(data.debitures_name) {
|
||||||
|
return `${data.debitures_name}`;
|
||||||
|
}
|
||||||
|
return "-";
|
||||||
|
}
|
||||||
},
|
},
|
||||||
date_range: {
|
date_range: {
|
||||||
title: 'Tanggal Penawaran',
|
title: 'Tanggal Penawaran',
|
||||||
},
|
},
|
||||||
tujuan_penilaian_kjpp_name: {
|
tujuan_penilaian_name: {
|
||||||
title: 'Tujuan Penilaian',
|
title: 'Tujuan Penilaian',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tujuan_penilaian_name
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tujuan_penilaian_kjpp: {
|
||||||
|
title: 'Tujuan Penilaian KJPP',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tujuan_penilaian_kjpp_name
|
||||||
|
}
|
||||||
},
|
},
|
||||||
penawarandetails_count: {
|
penawarandetails_count: {
|
||||||
title: 'Total KJPP',
|
title: 'Total KJPP',
|
||||||
@@ -122,7 +169,10 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
title: 'Status'
|
title: 'Status',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.status.toUpperCase()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
title: 'Status',
|
title: 'Status',
|
||||||
|
|||||||
@@ -63,6 +63,8 @@
|
|||||||
$.each(datas, function(key, value){
|
$.each(datas, function(key, value){
|
||||||
|
|
||||||
var kjppName = value.kjpp_code+' - '+value.kjpp_name;
|
var kjppName = value.kjpp_code+' - '+value.kjpp_name;
|
||||||
|
var no_proposal = (value.no_proposal)??'';// alert(no_proposal);
|
||||||
|
var tgl_proposal = (value.tgl_proposal)??'';// alert(tgl_proposal);
|
||||||
var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran);
|
var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran);
|
||||||
var htmlDokumenPersetujuanDownload='';
|
var htmlDokumenPersetujuanDownload='';
|
||||||
var dokumenPersetujuanDownload = value.dokumen_persetujuan;
|
var dokumenPersetujuanDownload = value.dokumen_persetujuan;
|
||||||
@@ -79,6 +81,8 @@
|
|||||||
var markup = '<tr>';
|
var markup = '<tr>';
|
||||||
markup +='<td valign="top">'+i+'</td>';
|
markup +='<td valign="top">'+i+'</td>';
|
||||||
markup +='<td valign="top"><label id="{{$route[1]}}_kjppName_'+value.id+'">'+kjppName+'</label></td>';
|
markup +='<td valign="top"><label id="{{$route[1]}}_kjppName_'+value.id+'">'+kjppName+'</label></td>';
|
||||||
|
markup +='<td valign="top">'+no_proposal+'</td>';
|
||||||
|
markup +='<td valign="top">'+tgl_proposal+'</td>';
|
||||||
markup +='<td valign="top" align="right">Rp.'+biaya_penawaran_format+'</td>';
|
markup +='<td valign="top" align="right">Rp.'+biaya_penawaran_format+'</td>';
|
||||||
markup +='<td><em id="{{$route[1]}}_dokumenPersetujuan_msg_'+value.id+'" class="alert text-danger text-sm"></em>'+htmlDokumenPersetujuanDownload+'</td>';
|
markup +='<td><em id="{{$route[1]}}_dokumenPersetujuan_msg_'+value.id+'" class="alert text-danger text-sm"></em>'+htmlDokumenPersetujuanDownload+'</td>';
|
||||||
markup +='<td><div class="flex flex-nowrap justify-center">';
|
markup +='<td><div class="flex flex-nowrap justify-center">';
|
||||||
@@ -113,6 +117,8 @@
|
|||||||
$.each(datas, function(key, value){
|
$.each(datas, function(key, value){
|
||||||
|
|
||||||
var kjppName = value.kjpp_code+' - '+value.kjpp_name;
|
var kjppName = value.kjpp_code+' - '+value.kjpp_name;
|
||||||
|
var no_proposal = (value.no_proposal)??'';// alert(no_proposal);
|
||||||
|
var tgl_proposal = (value.tgl_proposal)??'';// alert(tgl_proposal);
|
||||||
var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran);
|
var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran);
|
||||||
var htmlDokumenPersetujuanDownload='';
|
var htmlDokumenPersetujuanDownload='';
|
||||||
var dokumenPersetujuanDownload = value.dokumen_persetujuan;
|
var dokumenPersetujuanDownload = value.dokumen_persetujuan;
|
||||||
@@ -129,6 +135,8 @@
|
|||||||
var markup = '<tr>';
|
var markup = '<tr>';
|
||||||
markup +='<td valign="top">'+i+'</td>';
|
markup +='<td valign="top">'+i+'</td>';
|
||||||
markup +='<td valign="top"><label id="{{$route[1]}}_kjppName_'+value.id+'">'+kjppName+'</label></td>';
|
markup +='<td valign="top"><label id="{{$route[1]}}_kjppName_'+value.id+'">'+kjppName+'</label></td>';
|
||||||
|
markup +='<td valign="top">'+no_proposal+'</td>';
|
||||||
|
markup +='<td valign="top">'+tgl_proposal+'</td>';
|
||||||
markup +='<td valign="top" align="right">Rp.'+biaya_penawaran_format+'</td>';
|
markup +='<td valign="top" align="right">Rp.'+biaya_penawaran_format+'</td>';
|
||||||
markup +='<td><em id="{{$route[1]}}_dokumenPersetujuan_msg_'+value.id+'" class="alert text-danger text-sm"></em>'+htmlDokumenPersetujuanDownload+'</td>';
|
markup +='<td><em id="{{$route[1]}}_dokumenPersetujuan_msg_'+value.id+'" class="alert text-danger text-sm"></em>'+htmlDokumenPersetujuanDownload+'</td>';
|
||||||
markup +='<td valign="top"><label id="{{$route[1]}}_kjppName_'+value.id+'">'+value.created_at2+'</label></td>';
|
markup +='<td valign="top"><label id="{{$route[1]}}_kjppName_'+value.id+'">'+value.created_at2+'</label></td>';
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-5">
|
<div class="mb-5">
|
||||||
<h3 class="text-md font-medium text-gray-900">
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
Kode Penawaran:
|
Nomor Penawaran:
|
||||||
</h3>
|
</h3>
|
||||||
<span class="text-2sm text-gray-700">
|
<span class="text-2sm text-gray-700">
|
||||||
{{ $prosespenawaran->code }}
|
{{ $prosespenawaran->code }}
|
||||||
|
|||||||
222
resources/views/prosespenawaran/createPenawaran.blade.php
Normal file
222
resources/views/prosespenawaran/createPenawaran.blade.php
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||||
|
@endsection
|
||||||
|
@php
|
||||||
|
// $route = Route::currentRouteName();
|
||||||
|
// dd($route); tender.prosespenawaran.create
|
||||||
|
$route = explode('.', Route::currentRouteName());
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@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">
|
||||||
|
Tambah Data Penawaran
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<a href="{{ route('tender.prosespenawaran.showPermohonan', $id) }}" class="btn btn-xs btn-primary" title="Detail"><i class="ki-filled ki-abstract-26"></i> Detail</a>
|
||||||
|
<a href="{{ route('tender.prosespenawaran.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
</div>
|
||||||
|
</div><!-- $id = permohonan.id -->
|
||||||
|
<form action="{{ route('tender.prosespenawaran.storePenawaran', $id) }}" method="POST">
|
||||||
|
@csrf
|
||||||
|
<div class="card-body grid gap-5">
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nomor Registrasi
|
||||||
|
</label>
|
||||||
|
<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"
|
||||||
|
name="nomor_registrasi" readonly value="{{ $permohonan->nomor_registrasi ?? '-' }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nama KJPP Sebelumnya
|
||||||
|
</label>
|
||||||
|
<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"
|
||||||
|
name="nama_kjpp_sebelumnya" readonly value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Biaya KJPP Sebelumnya
|
||||||
|
</label>
|
||||||
|
<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"
|
||||||
|
name="biaya_kjpp_sebelumnya" readonly value="">
|
||||||
|
</div>
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Penilaian Sebelumnya
|
||||||
|
</label>
|
||||||
|
<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"
|
||||||
|
name="tanggal_penilaian_sebelumnya" readonly value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nomor Penawaran
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
-
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Data KJPP
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select name="kjpp[]" multiple="multiple"
|
||||||
|
class="input tomselect w-full @error('kjpp') border-danger @enderror" id="kjpp_select">
|
||||||
|
<option value=""> - Pilih KJPP - </option>
|
||||||
|
@foreach ($kjpp as $row)
|
||||||
|
@if (isset($kjpp))
|
||||||
|
<option value="{{ $row->id }}"
|
||||||
|
{{ in_array($row->id, old('kjpp', [])) ? 'selected' : '' }}>
|
||||||
|
{{ $row->name }}
|
||||||
|
</option>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@error('kjpp')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tujuan Penilaian KJPP
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select id="tujuan_penilaian_kjpp_id"
|
||||||
|
class="select w-full @error('tujuan_penilaian_kjpp_id') border-danger @enderror"
|
||||||
|
name="tujuan_penilaian_kjpp_id">
|
||||||
|
<option value=""> - Pilih Tujuan Penilaian KJPP - </option>
|
||||||
|
@if (isset($tujuan_penilaian_kjpp))
|
||||||
|
@foreach ($tujuan_penilaian_kjpp as $tp)
|
||||||
|
<option value="{{ $tp->id }}"
|
||||||
|
{{ old('tujuan_penilaian_kjpp_id') == $tp->id ? 'selected' : '' }}>
|
||||||
|
{{ $tp->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</select>
|
||||||
|
@error('tujuan_penilaian_kjpp_id')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Batas Waktu
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('start_date') border-danger @enderror" type="date"
|
||||||
|
name="start_date" value="{{ old('start_date') }}">
|
||||||
|
@error('start_date')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
-
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('end_date') border-danger @enderror" name="end_date"
|
||||||
|
value="{{ old('end_date') }}" type="date">
|
||||||
|
@error('end_date')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Catatan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<textarea class="textarea @error('catatan') border-danger @enderror" name="catatan" rows="3" id="address">{{ old('catatan') }}</textarea>
|
||||||
|
@error('catatan')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Jenis Laporan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select id="jenis_laporan_id"
|
||||||
|
class="select w-full @error('jenis_laporan_id') border-danger @enderror"
|
||||||
|
name="jenis_laporan_id">
|
||||||
|
<option value=""> - Pilih Jenis Laporan - </option>
|
||||||
|
@if (isset($jenis_laporan))
|
||||||
|
@foreach ($jenis_laporan as $jl)
|
||||||
|
<option value="{{ $jl->id }}"
|
||||||
|
{{ old('jenis_laporan_id') == $jl->id ? 'selected' : '' }}>
|
||||||
|
{{ $jl->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</select>
|
||||||
|
@error('jenis_laporan_id')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 status-custom">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Status
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select class="select w-full @error('status') border-danger @enderror" name="status">
|
||||||
|
<option value="">Pilih Status</option>
|
||||||
|
@if (isset($status))
|
||||||
|
@foreach ($status as $s)
|
||||||
|
<option value="{{ $s->name }}"
|
||||||
|
{{ old('status') == $s->name ? 'selected' : '' }}>
|
||||||
|
{{ $s->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</select>
|
||||||
|
@error('status')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
@push('styles')
|
||||||
|
<style>
|
||||||
|
input.input-custom:focus {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
input.input-custom {
|
||||||
|
background: none;
|
||||||
|
color: var(--tw-gray-600);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-custom {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@endpush
|
||||||
@@ -38,11 +38,11 @@
|
|||||||
</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">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Kode Penawaran
|
Nomor Penawaran
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<label class="card-title" id="textCodePenawaran">
|
<label class="card-title" id="textCodePenawaran">
|
||||||
Kode Penawaran
|
Nomor Penawaran
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -37,11 +37,11 @@
|
|||||||
|
|
||||||
<div class="mb-5">
|
<div class="mb-5">
|
||||||
<h3 class="text-md font-medium text-gray-900">
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
Kode Penawaran:
|
Nomor Penawaran:
|
||||||
</h3>
|
</h3>
|
||||||
<span class="text-2sm text-gray-700">
|
<span class="text-2sm text-gray-700">
|
||||||
<label class="card-title" id="textCodePenawaran">
|
<label class="card-title" id="textCodePenawaran">
|
||||||
Kode Penawaran
|
Nomor Penawaran
|
||||||
</label>
|
</label>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -38,6 +38,23 @@
|
|||||||
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="penawaran_code">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nomor Penawaran</span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="user_pemohon">
|
||||||
|
<span class="sort"> <span class="sort-label"> User Pemohon </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="branches_name">
|
||||||
|
<span class="sort"> <span class="sort-label"> Cabang Pemohon </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="debiture">
|
<th class="min-w-[150px]" data-datatable-column="debiture">
|
||||||
<span class="sort"> <span class="sort-label"> Nama Debitur </span>
|
<span class="sort"> <span class="sort-label"> Nama Debitur </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -46,6 +63,10 @@
|
|||||||
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_name">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian</span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
|
||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian KJPP </span>
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian KJPP </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -82,29 +103,11 @@
|
|||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function formatDate(date) {
|
function showPermohonanData(regId) {
|
||||||
const day = date.getDate().toString().padStart(2, '0');
|
var url = "{{ url('tender/prosespenawaran') }}/" + regId + "/showPermohonan";
|
||||||
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
$(location).attr('href', url);
|
||||||
// Months are 0-indexed
|
|
||||||
const year = date.getFullYear();
|
|
||||||
|
|
||||||
return `${day} ${getIndonesianMonth(month)} ${year}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getIndonesianMonth(month) {
|
|
||||||
const months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni',
|
|
||||||
'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
|
|
||||||
];
|
|
||||||
return months[month -
|
|
||||||
1];
|
|
||||||
}
|
|
||||||
|
|
||||||
function capitalizeWords(str) {
|
|
||||||
return str.replace(/\b\w/g, function(char) {
|
|
||||||
return char.toUpperCase();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function showPenawaranData(regId) {
|
function showPenawaranData(regId) {
|
||||||
var url = "{{ url('tender/prosespenawaran') }}/" + regId;
|
var url = "{{ url('tender/prosespenawaran') }}/" + regId;
|
||||||
$(location).attr('href', url);
|
$(location).attr('href', url);
|
||||||
@@ -132,27 +135,40 @@
|
|||||||
'nomor_registrasi': {
|
'nomor_registrasi': {
|
||||||
title: 'Nomor Registrasi',
|
title: 'Nomor Registrasi',
|
||||||
},
|
},
|
||||||
|
'penawaran_code': {
|
||||||
|
title: 'Kode Penawaran',
|
||||||
|
},
|
||||||
|
tanggal_permohonan: {
|
||||||
|
title: 'Tanggal Permohonan',
|
||||||
|
},
|
||||||
|
user_pemohon: {
|
||||||
|
title: 'User Pemohon',
|
||||||
|
},
|
||||||
|
branches_name: {
|
||||||
|
title: 'Cabang Pemohon',
|
||||||
|
},
|
||||||
debiture: {
|
debiture: {
|
||||||
title: 'Nama Debitur',
|
title: 'Nama Debitur',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
if(data.permohonan) {
|
if(data.debitures_name) {
|
||||||
return `${data.permohonan.debiture.name}`;
|
return `${data.debitures_name}`;
|
||||||
}
|
}
|
||||||
return "-";
|
return "-";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
start_date: {
|
date_range: {
|
||||||
title: 'Tanggal Penawaran',
|
title: 'Tanggal Penawaran',
|
||||||
|
},
|
||||||
|
tujuan_penilaian_name: {
|
||||||
|
title: 'Tujuan Penilaian',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return `${formatDate(new Date(data.start_date))} - ${formatDate(new Date(data.end_date))}`
|
return data.tujuan_penilaian_name
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tujuan_penilaian_kjpp: {
|
tujuan_penilaian_kjpp: {
|
||||||
title: 'Tujuan Penilaian KJPP',
|
title: 'Tujuan Penilaian KJPP',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.tujuan_penilaian_kjpp.name
|
return data.tujuan_penilaian_kjpp_name
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
penawarandetails_count: {
|
penawarandetails_count: {
|
||||||
@@ -164,32 +180,43 @@
|
|||||||
status: {
|
status: {
|
||||||
title: 'Status',
|
title: 'Status',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return capitalizeWords(data.status)
|
return data.statusnya.toUpperCase()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
title: 'Status',
|
title: 'Status',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
// data.id ==> penawaran.id
|
|
||||||
var iconProses ='';
|
var iconProses ='';
|
||||||
if('tender'==data.status)
|
var iconDetail =`<a onclick="showPenawaranData(${data.id})" class="btn btn-sm btn-icon btn-clear btn-primary" title="Detail">
|
||||||
|
<i class="ki-outline ki-eye"></i>
|
||||||
|
</a>`;
|
||||||
|
if('registered'==data.statusnya)
|
||||||
{
|
{
|
||||||
|
// data.id ==> permohonan.id
|
||||||
|
iconProses=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Penawaran" href="tender/prosespenawaran/${data.id}/createPenawaran">
|
||||||
|
<i class="ki-outline ki-feather"></i>
|
||||||
|
</a>`;
|
||||||
|
iconDetail=`<a onclick="showPermohonanData(${data.id})" class="btn btn-sm btn-icon btn-clear btn-primary" title="Detail">
|
||||||
|
<i class="ki-outline ki-eye"></i>
|
||||||
|
</a>`;
|
||||||
|
}
|
||||||
|
else if('tender'==data.statusnya)
|
||||||
|
{
|
||||||
|
// data.id ==> penawaran.id
|
||||||
iconProses=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran" href="tender/prosespenawaran/${data.id}/edit">
|
iconProses=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran" href="tender/prosespenawaran/${data.id}/edit">
|
||||||
<i class="ki-outline ki-notepad-edit"></i>
|
<i class="ki-outline ki-notepad-edit"></i>
|
||||||
</a>`;
|
</a>`;
|
||||||
}
|
}
|
||||||
else if('proposal-tender'==data.status)
|
else if('proposal-tender'==data.statusnya)
|
||||||
{
|
{
|
||||||
|
// data.id ==> penawaran.id
|
||||||
iconProses=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran Ulang" href="tender/prosespenawaran/${data.id}/editulang">
|
iconProses=`<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran Ulang" href="tender/prosespenawaran/${data.id}/editulang">
|
||||||
<i class="ki-outline ki-arrow-circle-right"></i>
|
<i class="ki-outline ki-arrow-circle-right"></i>
|
||||||
</a>`;
|
</a>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return `<div class="flex flex-nowrap justify-center">
|
return `<div class="flex flex-nowrap justify-center">`+iconDetail+iconProses+`</div>`;
|
||||||
<a onclick="showPenawaranData(${data.id})" class="btn btn-sm btn-icon btn-clear btn-primary" title="Detail">
|
|
||||||
<i class="ki-outline ki-eye"></i>
|
|
||||||
</a>`+iconProses+`
|
|
||||||
</div>`;
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-5">
|
<div class="mb-5">
|
||||||
<h3 class="text-md font-medium text-gray-900">
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
Kode Penawaran:
|
Nomor Penawaran:
|
||||||
</h3>
|
</h3>
|
||||||
<span class="text-2sm text-gray-700">
|
<span class="text-2sm text-gray-700">
|
||||||
{{ $prosespenawaran->code }}
|
{{ $prosespenawaran->code }}
|
||||||
|
|||||||
50
resources/views/prosespenawaran/showPermohonan.blade.php
Normal file
50
resources/views/prosespenawaran/showPermohonan.blade.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||||
|
@endsection
|
||||||
|
@php
|
||||||
|
$route = explode('.', Route::currentRouteName());
|
||||||
|
@endphp
|
||||||
|
@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">
|
||||||
|
Detail Data Proses Penawaran
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
@php
|
||||||
|
$buttonProses='';
|
||||||
|
if('registered'==$permohonan->status)
|
||||||
|
{
|
||||||
|
$buttonProses='<a href="'. route('tender.prosespenawaran.createPenawaran', $id) .'" class="btn btn-xs btn-primary" title="Penawaran"><i class="ki-outline ki-notepad-edit"></i>Penawaran</a>';
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
{!! $buttonProses !!}
|
||||||
|
<a href="{{ route('tender.prosespenawaran.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body lg:py-7.5 grid grid-cols-3">
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
|
Nomor Register Permohonan:
|
||||||
|
</h3>
|
||||||
|
<span class="text-2sm text-gray-700">
|
||||||
|
{{ $permohonan->nomor_registrasi }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
|
Nomor Penawaran:
|
||||||
|
</h3>
|
||||||
|
<span class="text-2sm text-gray-700">
|
||||||
|
-
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -20,38 +20,48 @@ Breadcrumbs::for('registrasi.show', function (BreadcrumbTrail $trail) {
|
|||||||
// prosespenawaran
|
// prosespenawaran
|
||||||
Breadcrumbs::for('tender.prosespenawaran', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaran', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender');
|
$trail->parent('tender');
|
||||||
$trail->push('Data Proses Penawaran', route('tender.prosespenawaran.index'));
|
$trail->push('Proses Penawaran', route('tender.prosespenawaran.index'));
|
||||||
});
|
});
|
||||||
|
|
||||||
Breadcrumbs::for('tender.prosespenawaran.edit', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaran.edit', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender.prosespenawaran');
|
$trail->parent('tender.prosespenawaran');
|
||||||
$trail->push('Tambah Data Proses Penawaran');
|
$trail->push('Tambah Proses Penawaran');
|
||||||
});
|
});
|
||||||
|
|
||||||
Breadcrumbs::for('tender.prosespenawaran.show', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaran.show', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender.prosespenawaran');
|
$trail->parent('tender.prosespenawaran');
|
||||||
$trail->push('Detail Data Proses Penawaran');
|
$trail->push('Detail Proses Penawaran');
|
||||||
});
|
});
|
||||||
|
|
||||||
Breadcrumbs::for('tender.prosespenawaran.editulang', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaran.editulang', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender.prosespenawaran');
|
$trail->parent('tender.prosespenawaran');
|
||||||
$trail->push('Tambah Data Proses Penawaran Ulang');
|
$trail->push('Tambah Proses Penawaran Ulang');
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('tender.prosespenawaran.createPenawaran', function (BreadcrumbTrail $trail) {
|
||||||
|
$trail->parent('tender.prosespenawaran');
|
||||||
|
$trail->push('Tambah Data Penawaran');
|
||||||
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('tender.prosespenawaran.showPermohonan', function (BreadcrumbTrail $trail) {
|
||||||
|
$trail->parent('tender.prosespenawaran');
|
||||||
|
$trail->push('Detail Proses Penawaran');
|
||||||
});
|
});
|
||||||
// prosespenawaran
|
// prosespenawaran
|
||||||
// Proses Penawaran Ulang
|
// Proses Penawaran Ulang
|
||||||
Breadcrumbs::for('tender.prosespenawaranulang', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaranulang', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender');
|
$trail->parent('tender');
|
||||||
$trail->push('Data Proses Penawaran Ulang', route('tender.prosespenawaranulang.index'));
|
$trail->push('Proses Penawaran Ulang', route('tender.prosespenawaranulang.index'));
|
||||||
});
|
});
|
||||||
|
|
||||||
Breadcrumbs::for('tender.prosespenawaranulang.edit', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaranulang.edit', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender.prosespenawaranulang');
|
$trail->parent('tender.prosespenawaranulang');
|
||||||
$trail->push('Tambah Data Proses Penawaran Ulang');
|
$trail->push('Tambah Proses Penawaran Ulang');
|
||||||
});
|
});
|
||||||
|
|
||||||
Breadcrumbs::for('tender.prosespenawaranulang.show', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.prosespenawaranulang.show', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender.prosespenawaranulang');
|
$trail->parent('tender.prosespenawaranulang');
|
||||||
$trail->push('Detail Data Proses Penawaran Ulang');
|
$trail->push('Detail Proses Penawaran Ulang');
|
||||||
});
|
});
|
||||||
// Proses Penawaran Ulang
|
// Proses Penawaran Ulang
|
||||||
// Otorisasi Tender
|
// Otorisasi Tender
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::post('prosespenawaran/setDataUlang', 'setDataUlang')->name('prosespenawaran.setDataUlang');
|
Route::post('prosespenawaran/setDataUlang', 'setDataUlang')->name('prosespenawaran.setDataUlang');
|
||||||
Route::put('/prosespenawaran2/{prosespenawaran2}', 'updateulang')->name('prosespenawaran.updateulang');
|
Route::put('/prosespenawaran2/{prosespenawaran2}', 'updateulang')->name('prosespenawaran.updateulang');
|
||||||
Route::put('/prosespenawaranKJPPStatusUlang/{prosespenawaranKJPPStatusUlang}', 'updateKJPPStatusUlang')->name('prosespenawaran.updateKJPPStatusUlang');
|
Route::put('/prosespenawaranKJPPStatusUlang/{prosespenawaranKJPPStatusUlang}', 'updateKJPPStatusUlang')->name('prosespenawaran.updateKJPPStatusUlang');
|
||||||
|
|
||||||
|
// merger penawaran
|
||||||
|
Route::get('/prosespenawaran/{prosespenawaran}/showPermohonan', 'showPermohonan')->name('prosespenawaran.showPermohonan');
|
||||||
|
Route::get('prosespenawaran/{prosespenawaran}/createPenawaran', 'createPenawaran')->name('prosespenawaran.createPenawaran');
|
||||||
|
Route::post('prosespenawaran/{prosespenawaran}/storePenawaran', 'storePenawaran')->name('prosespenawaran.storePenawaran');
|
||||||
|
// merger penawaran
|
||||||
});
|
});
|
||||||
|
|
||||||
// Proses Penawaran Ulang
|
// Proses Penawaran Ulang
|
||||||
|
|||||||
Reference in New Issue
Block a user