Merge remote-tracking branch 'composer/andydev' into staging

# Conflicts:
#	resources/views/spk/documentSPK.blade.php
#	resources/views/spk/edit.blade.php
This commit is contained in:
Daeng Deni Mardaeni
2024-11-21 15:21:55 +07:00
17 changed files with 829 additions and 474 deletions

View File

@@ -36,7 +36,8 @@ use Modules\Lpj\Models\HolidayCalendar;
$start_date = strtotime($penawaran->start_date); $start_date = strtotime($penawaran->start_date);
$end_date = strtotime($penawaran->end_date); $end_date = strtotime($penawaran->end_date);
$todays_date = strtotime(now()); // $todays_date = strtotime(now());
$todays_date = strtotime("+1 day", strtotime(now()));
$allow = true; $allow = true;
if ($todays_date >= $start_date && $todays_date <= $end_date) { if ($todays_date >= $start_date && $todays_date <= $end_date) {

View File

@@ -141,11 +141,12 @@
public function edit($id) public function edit($id)
{ {
// id ==> penawaran.id
return view('lpj::otorisasipenawaran.edit', compact('id')); return view('lpj::otorisasipenawaran.edit', compact('id'));
} }
public function setData(Request $request) public function setData(Request $request): JsonResponse
: JsonResponse { {
$data = []; $data = [];
$penawaran = []; $penawaran = [];
$penawrandetails = []; $penawrandetails = [];
@@ -156,54 +157,56 @@
$penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id); $penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id);
if ($penawaran) { if ($penawaran) {
$penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id', $id)->leftJoin( $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id)
'kjpp', ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id')
'kjpp.id', ->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
'=', ->get();
'detail_penawaran_logs.kjpp_rekanan_id', $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id)
)->select( ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
'detail_penawaran_logs.*', ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"), ->where('detail_penawaran.status','=',1)
'kjpp.code AS kjpp_code', ->get();
'kjpp.name AS kjpp_name',
)->get();
$penawrandetails = PenawaranDetailTender::where('penawaran_id', '=', $id)->leftJoin(
'kjpp',
'kjpp.id',
'=',
'detail_penawaran.kjpp_rekanan_id',
)->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')->where(
'detail_penawaran.status',
'=',
1,
)->get();
if (sizeof($penawarandetailLogs) > 0) { if(sizeof($penawarandetailLogs)>0)
{
$h=0; $h=0;
foreach ($penawarandetailLogs as $obj1) { foreach($penawarandetailLogs as $obj1)
if ($obj1->dokumen_persetujuan && Storage::disk('public')->exists( {
$obj1->dokumen_persetujuan, // tgl_proposal
)) { if ($obj1->tgl_proposal) {
$penawarandetailLogs_path = Storage::url( $penawarandetailLogs[$h]->tgl_proposal = Carbon::parse($obj1->tgl_proposal)->format('d M Y');
$obj1->dokumen_persetujuan, }
);
if($obj1->dokumen_persetujuan && Storage::disk('public')->exists($obj1->dokumen_persetujuan))
{
$penawarandetailLogs_path = Storage::url($obj1->dokumen_persetujuan);
$penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path; $penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path;
} }
$h++; $h++;
} }
} }
$i=0; $i=0;
foreach ($penawrandetails as $obj) { foreach($penawrandetails as $obj)
if ($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) { {
// tgl_proposal
if ($obj->tgl_proposal) {
$penawrandetails[$i]->tgl_proposal = Carbon::parse($obj->tgl_proposal)->format('d M Y');
}
if($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan))
{
$penawrandetails_path = Storage::url($obj->dokumen_persetujuan); $penawrandetails_path = Storage::url($obj->dokumen_persetujuan);
$penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path;
} }
$i++; $i++;
} }
$penawaranString = ""; $penawaranString = "";
if ($penawaran->status) { if($penawaran->status)
{
$penawaranString = convertSlug($penawaran->status); $penawaranString = convertSlug($penawaran->status);
$penawaran->status = $penawaranString; $penawaran->status = $penawaranString;
} }
@@ -214,34 +217,37 @@
$data['penawrandetails'] = $penawrandetails; $data['penawrandetails'] = $penawrandetails;
$data['penawarandetailLogs'] = $penawarandetailLogs; $data['penawarandetailLogs'] = $penawarandetailLogs;
$data['status'] = 'success'; $data['status'] = 'success';
$data['message']['message_success'] = ["data successfully found"]; $data['message']['message_success'] = array("data successfully found");
} else { } else {
$data['status'] = 'error'; $data['status'] = 'error';
$data['penawaran'] = null; $data['penawaran'] = null;
$data['penawrandetails'] = null; $data['penawrandetails'] = null;
$data['message']['message_data'] = ["data not found"]; $data['message']['message_data'] = array("data not found");
} }
} else { } else {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message']['message_ajax'] = ["no ajax request"]; $data['message']['message_ajax'] = array("no ajax request");
} }
return response()->json($data); return response()->json($data);
} }
public function otorisasiPenawaranKJPP(Request $request, $id) public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse
: JsonResponse { {
$data = []; $data = [];
$dataDetailPenawaranLog = []; $dataDetailPenawaranLog = [];
if (request()->ajax()) { if (request()->ajax()) {
// cek masa aktif penawaran // cek masa aktif penawaran
$detailpenawaran = PenawaranDetailTender::find($id); $detailpenawaran = PenawaranDetailTender::find($id);
$penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id); $penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id);
$checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id);
// cek masa aktif penawaran // cek masa aktif penawaran
if ($checkActiveDateRange) { if($checkActiveDateRange)
{
DB::beginTransaction(); DB::beginTransaction();
try { try {
// update status KJPP yg tidak terpilih menjadi 2 -> kalah // update status KJPP yg tidak terpilih menjadi 2 -> kalah
// update status Penawaran menjadi SPK // update status Penawaran menjadi SPK
// update status Permohonan menjadi SPK // update status Permohonan menjadi SPK
@@ -250,14 +256,13 @@
PenawaranDetailTender::where('status', 1) PenawaranDetailTender::where('status', 1)
->where('penawaran_id', $request->penawaran_id) ->where('penawaran_id', $request->penawaran_id)
->whereNotIn('id', [$id]) ->whereNotIn('id', [$id])
->update([ ->update(['status' => 2,
'status' => 2,
'updated_by' => Auth::id(), 'updated_by' => Auth::id(),
'updated_at' => now(), 'updated_at' => now()
]); ]);
PenawaranTender::where('id', $request->penawaran_id)->update([ PenawaranTender::where('id', $request->penawaran_id)
'status' => 'spk', ->update(['status'=>'spk',
'nama_kjpp_sebelumnya'=>$request->kjppName, 'nama_kjpp_sebelumnya'=>$request->kjppName,
'biaya_kjpp_sebelumnya'=>$request->biaya_penawaran, 'biaya_kjpp_sebelumnya'=>$request->biaya_penawaran,
'tanggal_penilaian_sebelumnya'=>now(), 'tanggal_penilaian_sebelumnya'=>now(),
@@ -265,23 +270,27 @@
'authorized_at'=>now(), 'authorized_at'=>now(),
'authorized_by'=>Auth::id(), 'authorized_by'=>Auth::id(),
'updated_by' => Auth::id(), 'updated_by' => Auth::id(),
'updated_at' => now(), 'updated_at' => now()
]); ]);
Permohonan::where('nomor_registrasi', $request->noReg)->update([ Permohonan::where('nomor_registrasi',$request->noReg)
'status' => 'persetujuan-penawaran', ->update(['status'=>'persetujuan-penawaran',
'updated_by' => Auth::id(), 'updated_by' => Auth::id(),
'updated_at' => now(), 'updated_at' => now()
]); ]);
// log // log
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get(); $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get();
if (sizeof($detailPenawaran) > 0) { if(sizeof($detailPenawaran)>0)
{
foreach ($detailPenawaran as $model) { foreach ($detailPenawaran as $model) {
array_push($dataDetailPenawaranLog, [ array_push($dataDetailPenawaranLog, [
'detail_penawaran_id' =>$model->id, 'detail_penawaran_id' =>$model->id,
'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id,
'penawaran_id' =>$model->penawaran_id, 'penawaran_id' =>$model->penawaran_id,
'no_proposal' =>$model->no_proposal,
'tgl_proposal' =>$model->tgl_proposal,
'biaya_penawaran' =>$model->biaya_penawaran, 'biaya_penawaran' =>$model->biaya_penawaran,
'attachment' =>$model->attachment, 'attachment' =>$model->attachment,
'dokumen_persetujuan' =>$model->dokumen_persetujuan, 'dokumen_persetujuan' =>$model->dokumen_persetujuan,
@@ -294,8 +303,9 @@
'deleted_at' =>$model->deleted_at, 'deleted_at' =>$model->deleted_at,
'created_by' =>$model->created_by, 'created_by' =>$model->created_by,
'updated_by' =>$model->updated_by, 'updated_by' =>$model->updated_by,
'deleted_by' => $model->deleted_by, 'deleted_by' =>$model->deleted_by
]); ]);
} }
PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); PenawaranDetailTenderLog::insert($dataDetailPenawaranLog);
@@ -304,19 +314,22 @@
DB::commit(); DB::commit();
$data['status'] = 'success'; $data['status'] = 'success';
$data['message']['message_success'] = ['Otorisasi Penawaran KJPP ' . $request->kjppName . ' successfully']; $data['message']['message_success'] = array('Otorisasi Penawaran KJPP '.$request->kjppName.' successfully');
} catch (Exception $e) { } catch (Exception $e) {
DB::rollBack(); DB::rollBack();
$data['status'] = 'error'; $data['status'] = 'error';
$data['message']['message_error'] = ["Otorisasi Penawaran KJPP failed.."]; $data['message']['message_error'] = array("Otorisasi Penawaran KJPP failed..");
} }
}
else
{
$data['status'] = 'error';
$data['message']['message_error'] = array("Penawaran sudah di tutup");
}
} else { } else {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] ['active_date_range'] = ["Penawaran sudah di tutup"]; $data['message']['message_error'] = array("no ajax request");
}
} else {
$data['status'] = 'error';
$data['message']['message_ajax'] = ["no ajax request"];
} }
return response()->json($data); return response()->json($data);
} }
@@ -326,4 +339,92 @@
$prosespenawaran = PenawaranTender::find($id); $prosespenawaran = PenawaranTender::find($id);
return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran')); return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran'));
} }
public function penawaranulang(Request $request, $id): JsonResponse
{
// $id ==> penawaran.id
$data = [];
$dataDetailPenawaranLog=[];
if (request()->ajax()) {
DB::beginTransaction();
try {
// update detail_penawaran => detail_penawaran.status = 1 (untuk all KJPP)
// update penawaran => penawaran.status ="tender", penawaran.updated_at, penawaran.updated_by
// update permohonan => permohonan.status ="tender", permohonan.updated_at, permohonan.updated_by
// insert detail_permohonan_log
PenawaranDetailTender::where('penawaran_id', $id)
->update(['status' => 1,
'updated_by' => Auth::id(),
'updated_at' => now()
]);
PenawaranTender::where('id', $id)
->update(['status'=>'tender',
'updated_by' => Auth::id(),
'updated_at' => now()
]);
Permohonan::where('nomor_registrasi',$request->noReg)
->update(['status'=>'tender',
'updated_by' => Auth::id(),
'updated_at' => now()
]);
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $id)
->distinct()
->get();
// log
if(sizeof($detailPenawaran)>0)
{
foreach ($detailPenawaran as $model) {
array_push($dataDetailPenawaranLog, [
'detail_penawaran_id' =>$model->id,
'kjpp_rekanan_id' =>$model->kjpp_rekanan_id,
'penawaran_id' =>$model->penawaran_id,
'no_proposal' =>$model->no_proposal,
'tgl_proposal' =>$model->tgl_proposal,
'biaya_penawaran' =>$model->biaya_penawaran,
'attachment' =>$model->attachment,
'dokumen_persetujuan' =>$model->dokumen_persetujuan,
'status' =>$model->status,
'authorized_status' =>$model->authorized_status,
'authorized_at' =>$model->authorized_at,
'authorized_at' =>$model->authorized_at,
'created_at' =>$model->created_at,
'updated_at' =>$model->updated_at,
'deleted_at' =>$model->deleted_at,
'created_by' =>$model->created_by,
'updated_by' =>$model->updated_by,
'deleted_by' =>$model->deleted_by
]);
}
PenawaranDetailTenderLog::insert($dataDetailPenawaranLog);
}
// log
DB::commit();
$data['detailPenawaran'] = $detailPenawaran;
$data['status'] = 'success';
$data['message']['message_success'] = array('Penawaran ulang successfully');
} catch (Exception $e) {
DB::rollBack();
$data['status'] = 'error';
$data['message']['message_error'] = array("Penawaran ulang failed..");
}
} else {
$data['status'] = 'error';
$data['message']['message_error'] = array("no ajax request");
}
return response()->json($data);
}
} }

View File

@@ -168,6 +168,7 @@ class ProsesPenawaranController extends Controller
public function edit($id) public function edit($id)
{ {
// $id => penawaran.id
return view('lpj::prosespenawaran.edit', compact('id')); return view('lpj::prosespenawaran.edit', compact('id'));
} }
@@ -232,11 +233,19 @@ class ProsesPenawaranController extends Controller
*/ */
public function update(Request $request, $id): JsonResponse public function update(Request $request, $id): JsonResponse
{ {
// $id => detail_penawaran.id
// init // init
$data = array(); $data = array();
$dataPenawaranDetail = array(); $dataPenawaranDetail = array();
if (request()->ajax()) { if (request()->ajax()) {
$penawarandetail = PenawaranDetailTender::find($id);
// cek masa aktif penawaran
$checkActiveDateRange = checkActiveDateRangePenawaran($penawarandetail->penawaran_id);
// cek status (penawaran.status = tender)
$penawaran = PenawaranTender::find($penawarandetail->penawaran_id);
if($checkActiveDateRange && ('tender'==$penawaran->status))
{
try { try {
$dataPenawaranDetail = ['updated_by' => Auth::id(), $dataPenawaranDetail = ['updated_by' => Auth::id(),
@@ -282,6 +291,12 @@ class ProsesPenawaranController extends Controller
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.'); $data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.');
} }
}
else
{
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
} else { } else {
$data['status'] = 'error'; $data['status'] = 'error';
@@ -319,15 +334,17 @@ class ProsesPenawaranController extends Controller
*/ */
public function updateAll(Request $request, $id): JsonResponse public function updateAll(Request $request, $id): JsonResponse
{ {
// $id = penawaran.id
// init // init
$data = array(); $data = array();
$dataPermohonan = array(); $dataPermohonan = array();
$dataPenawaran = array(); $dataPenawaran = array();
$penawaran = PenawaranTender::find($id);
$checkActiveDateRange = checkActiveDateRangePenawaran($id);
// cek masa aktif penawaran // cek masa aktif penawaran
if($checkActiveDateRange) $checkActiveDateRange = checkActiveDateRangePenawaran($id);
// cek status (penawaran.status = tender)
$penawaran = PenawaranTender::find($id);
if($checkActiveDateRange && ('tender'==$penawaran->status))
{ {
$checkKelengkapanDetailKJPP = checkKelengkapanDetailKJPP($id); $checkKelengkapanDetailKJPP = checkKelengkapanDetailKJPP($id);
@@ -376,13 +393,21 @@ class ProsesPenawaranController extends Controller
public function updateKJPPStatus(Request $request, $id): JsonResponse public function updateKJPPStatus(Request $request, $id): JsonResponse
{ {
// $id => detail_penawaran.id
// init // init
$data = array(); $data = array();
$dataDetailPenawaran = array(); $dataDetailPenawaran = array();
$detailpenawaran = PenawaranDetailTender::find($id);
// cek masa aktif penawaran
$checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id);
// cek status (penawaran.status = tender)
$penawaran = PenawaranTender::find($detailpenawaran->penawaran_id);
if($checkActiveDateRange && ('tender'==$penawaran->status))
{
try { try {
$detailpenawaran = PenawaranDetailTender::findOrFail($id);
$data['id']=$id; // $data['id']=$id;
$dataDetailPenawaran = ['status' => '0', $dataDetailPenawaran = ['status' => '0',
'updated_by' => Auth::id(), 'updated_by' => Auth::id(),
@@ -396,7 +421,13 @@ class ProsesPenawaranController extends Controller
} catch (Exception $e) { } catch (Exception $e) {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array("Gagal delete Penawaran KJPP ".$request->kjppName); $data['message'] ['message_error'] = array("Gagal delete Penawaran KJPP ".$request->kjppName);
}
}
else
{
$data['status'] = 'error';
$data['message']['message_error'] = array("Penawaran sudah di tutup");
} }
return response()->json($data); return response()->json($data);
@@ -416,6 +447,12 @@ class ProsesPenawaranController extends Controller
$dataPenawaranDetail = array(); $dataPenawaranDetail = array();
$failed = 0; $failed = 0;
// cek masa aktif penawaran
$checkActiveDateRange = checkActiveDateRangePenawaran($id);
// cek status (penawaran.status = tender)
$penawaran = PenawaranTender::find($id);
if($checkActiveDateRange && ('tender'==$penawaran->status))
{
DB::beginTransaction(); DB::beginTransaction();
try try
{ {
@@ -501,6 +538,12 @@ class ProsesPenawaranController extends Controller
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Draft Penawaran KJPP failed.'); $data['message'] ['message_error_try_catch'] = array('Proses Draft Penawaran KJPP failed.');
} }
}
else
{
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
return response()->json($data); return response()->json($data);
} }
@@ -511,6 +554,12 @@ class ProsesPenawaranController extends Controller
$data = array(); $data = array();
// $data['request']=$request->all(); // $data['request']=$request->all();
$dataPenawaranDetail = array(); $dataPenawaranDetail = array();
// cek masa aktif penawaran
$checkActiveDateRange = checkActiveDateRangePenawaran($request->penawaran_id);
// cek status (penawaran.status = tender)
$penawaran = PenawaranTender::find($request->penawaran_id);
if($checkActiveDateRange && ('tender'==$penawaran->status))
{
try try
{ {
$dataPenawaranDetail = [ $dataPenawaranDetail = [
@@ -531,6 +580,12 @@ class ProsesPenawaranController extends Controller
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP failed.'); $data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP failed.');
} }
}
else
{
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
return response()->json($data); return response()->json($data);
} }
@@ -964,6 +1019,7 @@ class ProsesPenawaranController extends Controller
public function showPermohonan($id) public function showPermohonan($id)
{ {
// $id => permohonan.id
$permohonan = Permohonan::find($id); $permohonan = Permohonan::find($id);
return view('lpj::prosespenawaran.showPermohonan', compact('id', 'permohonan')); return view('lpj::prosespenawaran.showPermohonan', compact('id', 'permohonan'));
} }

View File

@@ -34,8 +34,10 @@ use Illuminate\Support\Facades\Auth;
} }
// Retrieve data from the database // Retrieve data from the database
$query =Permohonan::query()->with(['penawaran','penawaran.tujuanPenilaianKjpp']) // $query =Permohonan::query()->with(['penawaran','penawaran.tujuanPenilaianKjpp'])->where('permohonan.status','=','spk');
->where('permohonan.status','=','spk'); // $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian','penilaian'])->get();
$query =Permohonan::query()->with(['user', 'debiture', 'branch', 'tujuanPenilaian','penilaian','penawaran','penawaran.tujuanPenilaianKjpp'])->where('permohonan.status','=','spk');
// 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'))) {
@@ -78,21 +80,27 @@ use Illuminate\Support\Facades\Auth;
$i=0; $i=0;
foreach($data as $obj) foreach($data as $obj)
{ {
if($obj->tanggal_penilaian_sebelumnya) // tanggal_permohonan
{ if ($obj->tanggal_permohonan) {
$data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); $data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
} }
if($obj->biaya_kjpp_sebelumnya) if($obj->penawaran->tanggal_penilaian_sebelumnya)
{ {
$data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya); $data[$i]->penawaran->tanggal_penilaian_sebelumnya = Carbon::parse($obj->penawaran->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s');
}
if($obj->penawaran->biaya_kjpp_sebelumnya)
{
$data[$i]->penawaran->biaya_kjpp_sebelumnya = formatRupiah($obj->penawaran->biaya_kjpp_sebelumnya);
} }
// date_range // date_range
if($obj->start_date && $obj->end_date) if($obj->penawaran->start_date && $obj->penawaran->end_date)
{ {
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y').' - '.Carbon::parse($obj->end_date)->format('d M Y'); $data[$i]->date_range = Carbon::parse($obj->penawaran->start_date)->format('d M Y').' - '.
Carbon::parse($obj->penawaran->end_date)->format('d M Y');
} }
@@ -107,7 +115,6 @@ use Illuminate\Support\Facades\Auth;
$i++; $i++;
} }
// Calculate the page count // Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size')); $pageCount = ceil($totalRecords / $request->get('size'));
@@ -147,6 +154,8 @@ use Illuminate\Support\Facades\Auth;
->where('detail_penawaran.status','=',1) ->where('detail_penawaran.status','=',1)
->where('penawaran.id','=', $id) ->where('penawaran.id','=', $id)
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
'detail_penawaran.no_proposal as detail_penawaran_no_proposal',
'detail_penawaran.tgl_proposal as detail_penawaran_tgl_proposal',
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
'kjpp.name as kjpp_name', 'kjpp.name as kjpp_name',
'kjpp.address as kjpp_address', 'kjpp.address as kjpp_address',
@@ -161,6 +170,9 @@ use Illuminate\Support\Facades\Auth;
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
if($penawaran->detail_penawaran_tgl_proposal)
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
return view('lpj::spk.edit', compact('data', 'penawaran')); return view('lpj::spk.edit', compact('data', 'penawaran'));
} }
@@ -177,6 +189,9 @@ use Illuminate\Support\Facades\Auth;
->where('detail_penawaran.status','=',1) ->where('detail_penawaran.status','=',1)
->where('penawaran.id','=', $id) ->where('penawaran.id','=', $id)
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
'detail_penawaran.no_proposal as detail_penawaran_no_proposal',
'detail_penawaran.tgl_proposal as detail_penawaran_tgl_proposal',
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
'kjpp.name as kjpp_name', 'kjpp.name as kjpp_name',
'kjpp.address as kjpp_address', 'kjpp.address as kjpp_address',
'jenis_laporan.name as jenis_laporan_name' 'jenis_laporan.name as jenis_laporan_name'
@@ -189,6 +204,9 @@ use Illuminate\Support\Facades\Auth;
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
if($penawaran->detail_penawaran_tgl_proposal)
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
$folderPath = 'uploads/spk/'; $folderPath = 'uploads/spk/';
$extension = '.pdf'; $extension = '.pdf';
$newFileName = "SPK_".$penawaran->nomor_registrasi."_".Auth::user()->id."_".time(). $extension; $newFileName = "SPK_".$penawaran->nomor_registrasi."_".Auth::user()->id."_".time(). $extension;

View File

@@ -11,6 +11,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">
<!-- $id ==> penawaran.id -->
<input type="hidden" id="id" name="id" value="{{ $id }}"> <input type="hidden" id="id" name="id" value="{{ $id }}">
<div class="card pb-2.5"> <div class="card pb-2.5">
<div class="card-header" id="basic_settings"> <div class="card-header" id="basic_settings">
@@ -63,6 +64,9 @@
<div class="card min-w-full"> <div class="card min-w-full">
<div class="card-header"> <div class="card-header">
<h3 class="card-title">Data KJPP</h3> <h3 class="card-title">Data KJPP</h3>
<button type="button" class="btn btn-sm btn-danger" id="{{$route[1]}}_toPenawaranUlang">
<i class="ki-filled ki-wrench"></i>Penawaran Ulang
</button>
</div> </div>
<div class="card-table scrollable-x-auto"> <div class="card-table scrollable-x-auto">
<table class="table table-border align-middle text-gray-700 font-medium text-sm"> <table class="table table-border align-middle text-gray-700 font-medium text-sm">

View File

@@ -177,11 +177,12 @@
actions: { actions: {
title: 'Status', title: 'Status',
render: (item, data) => { render: (item, data) => {
// data.id ==> penawaran.id
return `<div class="flex flex-nowrap justify-center"> return `<div class="flex flex-nowrap justify-center">
<a onclick="showOtorisasiPenawaranData(${data.id})" class="btn btn-sm btn-icon btn-clear btn-primary" title="Detail"> <a onclick="showOtorisasiPenawaranData(${data.id})" class="btn btn-sm btn-icon btn-clear btn-primary" title="Detail">
<i class="ki-outline ki-eye"></i> <i class="ki-outline ki-eye"></i>
</a> </a>
<a class="btn btn-sm btn-icon btn-clear btn-info" title="Proses Penawaran" href="otorisasitender/penawaran/${data.id}/edit"> <a class="btn btn-sm btn-icon btn-clear btn-info" title="Otorisasi Penawaran" href="otorisasitender/penawaran/${data.id}/edit">
<i class="ki-outline ki-notepad-edit"></i> <i class="ki-outline ki-notepad-edit"></i>
</a> </a>
</div>`; </div>`;

View File

@@ -75,7 +75,7 @@ function otorisasiKJPP(penawaran_id, id, kjpp_id, kjppName, biaya_penawaran) {
} }
else else
{ {
Swal.fire('Error!', response.message.message_error_try_catch[0], 'error'); Swal.fire('Error!', response.message.message_error[0], 'error');
} }

View File

@@ -146,18 +146,33 @@
i++; i++;
}); });
} }
/*
// update proses penawaran ulang & permohonan status // update status
$("#{{$route[1]}}_toEdit").click(function(e) { $("#{{$route[1]}}_toPenawaranUlang").click(function(e) {
e.preventDefault(); e.preventDefault();
Swal.fire({
title: ' ',
text: "Yakin akan Penawaran ulang?",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes'
}).then((result) => {
if (result.isConfirmed)
{
//define variable //define variable
// $id ==> penawaran.id
let token = "{{ csrf_token() }}"; let token = "{{ csrf_token() }}";
let useURL = ""; let noReg = $("#textReg").text();
let useURL = "{{ route($route[0].'.'.$route[1].'.penawaranulang',$id) }}";
var input_data = new Object(); var input_data = new Object();
input_data._token = token; input_data._token = token;
input_data.id = "{{ $id }}"; input_data.id = "{{ $id }}";
input_data.noReg =noReg;
// alert('url = ' + useURL);
$.ajax({ $.ajax({
url: useURL, url: useURL,
type: "PUT", type: "PUT",
@@ -168,19 +183,16 @@
console.log(response); console.log(response);
if('success' == response.status) if('success' == response.status)
{ {
// toastr.success(response.message); swal.fire('Sukses Penawaran ulang!', response.message.message_success[0], 'success').then(() => {
toastrSuccess(response.message); var url = "{{ route('otorisasitender.penawaran.index') }}";
setTimeout(function () {
var url = "{{ route('tender.prosespenawaran.index') }}";
$(location).attr('href',url); $(location).attr('href',url);
// window.location.href = "https://www.newurl.com"; });
}, 2000);
} }
else else
{ {
// toastr.error(response.message); Swal.fire('Error!', response.message.message_error[0], 'error');
toastrError(response.message);
} }
}, },
error: function(response, textStatus, errorThrown) { error: function(response, textStatus, errorThrown) {
// var errors = response.responseJSON.errors; // var errors = response.responseJSON.errors;
@@ -189,8 +201,10 @@
} }
}); });
}
})
}); });
*/
</script> </script>
@endpush @endpush

View File

@@ -65,6 +65,9 @@
<div class="card min-w-full"> <div class="card min-w-full">
<div class="card-header"> <div class="card-header">
<h3 class="card-title">Data KJPP</h3> <h3 class="card-title">Data KJPP</h3>
<button type="button" class="btn btn-sm btn-danger" id="{{$route[1]}}_toProsesPenawaran">
<i class="ki-filled ki-wrench"></i>Penawaran Ulang
</button>
</div> </div>
<div class="card-table scrollable-x-auto"> <div class="card-table scrollable-x-auto">
<table class="table table-border align-middle text-gray-700 font-medium text-sm"> <table class="table table-border align-middle text-gray-700 font-medium text-sm">

View File

@@ -128,6 +128,9 @@
<div class="card min-w-full"> <div class="card min-w-full">
<div class="card-header"> <div class="card-header">
<h3 class="card-title">Data KJPP</h3> <h3 class="card-title">Data KJPP</h3>
<button type="button" class="btn btn-sm btn-danger" id="{{$route[1]}}_toPenawaranUlang">
<i class="ki-filled ki-wrench"></i>Penawaran Ulang
</button>
</div> </div>
<div class="card-table scrollable-x-auto"> <div class="card-table scrollable-x-auto">
<table class="table table-border align-middle text-gray-700 font-medium text-sm"> <table class="table table-border align-middle text-gray-700 font-medium text-sm">

View File

@@ -34,6 +34,7 @@
} }
function updateData(id, kjpp_id, kjppName){ function updateData(id, kjpp_id, kjppName){
// id => detail_penawaran.id
removeErrorCssMsg(); removeErrorCssMsg();
let no_proposal = $("#{{$route[1]}}_no_proposal_"+id).val(); let no_proposal = $("#{{$route[1]}}_no_proposal_"+id).val();
let tgl_proposal = $("#{{$route[1]}}_tgl_proposal_"+id).val(); let tgl_proposal = $("#{{$route[1]}}_tgl_proposal_"+id).val();
@@ -92,6 +93,7 @@
} }
function deleteData(data, kjppName) { function deleteData(data, kjppName) {
// data => detail_penawaran.id
Swal.fire({ Swal.fire({
title: 'Are you sure?', title: 'Are you sure?',
text: "You won't be able to revert KJPP "+kjppName+"!", text: "You won't be able to revert KJPP "+kjppName+"!",
@@ -126,7 +128,7 @@
} }
else else
{ {
Swal.fire('Error!', response.message.message_error_try_catch[0], 'error'); Swal.fire('Error!', response.message.message_error[0], 'error');
} }

View File

@@ -66,6 +66,7 @@
function setTablesKJPP1(datas) function setTablesKJPP1(datas)
{ {
// value.id => detail_penawaran.id
let i=1; let i=1;
$.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;
@@ -288,6 +289,65 @@
}); });
} }
});
// update status
$("#{{$route[1]}}_toProsesPenawaran").click(function(e) {
e.preventDefault();
Swal.fire({
title: ' ',
text: "Yakin akan Penawaran ulang?",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes'
}).then((result) => {
if (result.isConfirmed)
{
//define variable
// $id ==> penawaran.id
let token = "{{ csrf_token() }}";
let noReg = $("#textReg").text();
let useURL = "{{ route('otorisasitender.penawaran.penawaranulang',$id) }}";
var input_data = new Object();
input_data._token = token;
input_data.id = "{{ $id }}";
input_data.noReg =noReg;
// alert('url = ' + useURL);
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
dataType: "json",
success: function(response) {
console.log(response);
if('success' == response.status)
{
swal.fire('Sukses Penawaran ulang!', response.message.message_success[0], 'success').then(() => {
var url = "{{ route('tender.prosespenawaran.index') }}";
$(location).attr('href',url);
});
}
else
{
Swal.fire('Error!', response.message.message_error[0], 'error');
}
},
error: function(response, textStatus, errorThrown) {
// var errors = response.responseJSON.errors;
// console.log(errors);
console.log(response);
}
});
}
})
}); });
</script> </script>
@endpush @endpush

View File

@@ -147,5 +147,63 @@
$('#{{$route[1]}}_kjpps1').append(new Option(stringVal, value.id)); $('#{{$route[1]}}_kjpps1').append(new Option(stringVal, value.id));
}); });
} }
// update status
$("#{{$route[1]}}_toPenawaranUlang").click(function(e) {
e.preventDefault();
Swal.fire({
title: ' ',
text: "Yakin akan Penawaran ulang?",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes'
}).then((result) => {
if (result.isConfirmed)
{
//define variable
// $id ==> penawaran.id
let token = "{{ csrf_token() }}";
let noReg = $("#textReg").text();
let useURL = "{{ route('otorisasitender.penawaran.penawaranulang',$id) }}";
var input_data = new Object();
input_data._token = token;
input_data.id = "{{ $id }}";
input_data.noReg =noReg;
// alert('url = ' + useURL);
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
dataType: "json",
success: function(response) {
console.log(response);
if('success' == response.status)
{
swal.fire('Sukses Penawaran ulang!', response.message.message_success[0], 'success').then(() => {
var url = "{{ route('tender.prosespenawaran.index') }}";
$(location).attr('href',url);
});
}
else
{
Swal.fire('Error!', response.message.message_error[0], 'error');
}
},
error: function(response, textStatus, errorThrown) {
// var errors = response.responseJSON.errors;
// console.log(errors);
console.log(response);
}
});
}
})
});
</script> </script>
@endpush @endpush

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -36,18 +36,38 @@
<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_id">
<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="branch_id">
<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="debitur_id">
<span class="sort"> <span class="sort-label"> 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_id">
<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="nama_kjpp_sebelumnya"> <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="kjpp_data">
<span class="sort"> <span class="sort-label">KJPP Data</span> <span class="sort"> <span class="sort-label">KJPP Data</span>
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
@@ -84,15 +104,6 @@
var url = "{{ url('/') }}"+url1; var url = "{{ url('/') }}"+url1;
$(location).attr('href',url); $(location).attr('href',url);
} }
function formatTanggalIndonesia(dateString) {
const date = new Date(dateString);
const day = date.getDate().toString().padStart(2, '0');
const monthNames = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
const month = monthNames[date.getMonth()];
const year = date.getFullYear();
return `${day} ${month} ${year}`;
}
</script> </script>
<script type="module"> <script type="module">
const element = document.querySelector('#spk-table'); const element = document.querySelector('#spk-table');
@@ -117,7 +128,7 @@
title: 'Nomor Registrasi', title: 'Nomor Registrasi',
}, },
code: { code: {
title: 'Kode Penawaran', title: 'Nomor Penawaran',
render: (item, data) => { render: (item, data) => {
if(data.penawaran) { if(data.penawaran) {
return `${data.penawaran.code}`; return `${data.penawaran.code}`;
@@ -126,16 +137,41 @@
return '-'; return '-';
}, },
}, },
date_range: { tanggal_permohonan: {
title: 'Tanggal Penawaran', title: 'Tanggal Permohonan',
},
user_id: {
title: 'User Pemohon',
render: (item, data) => { render: (item, data) => {
const startDate = formatTanggalIndonesia(data.penawaran.start_date); return `${data.user.name}`;
const endDate = formatTanggalIndonesia(data.penawaran.end_date);
return `${startDate} - ${endDate}`;
}, },
}, },
tujuan_penilaian_kjpp_name: { branch_id: {
title: 'Cabang Pemohon',
render: (item, data) => {
return `${data.branch.name}`;
},
},
debitur_id: {
title: 'Debitur',
render: (item, data) => {
if (data.debiture) {
return `${data.debiture.name}`;
}
return "-";
},
},
date_range: {
title: 'Tanggal Penawaran'
},
tujuan_penilaian_id: {
title: 'Tujuan Penilaian', title: 'Tujuan Penilaian',
render: (item, data) => {
return `${data.tujuan_penilaian.name}`;
},
},
tujuan_penilaian_kjpp_id: {
title: 'Tujuan Penilaian KJPP',
render: (item, data) => { render: (item, data) => {
if(data.penawaran.tujuan_penilaian_kjpp) { if(data.penawaran.tujuan_penilaian_kjpp) {
return `${data.penawaran.tujuan_penilaian_kjpp.name}`; return `${data.penawaran.tujuan_penilaian_kjpp.name}`;
@@ -144,7 +180,7 @@
return '-'; return '-';
}, },
}, },
nama_kjpp_sebelumnya: { kjpp_data: {
title: 'Nama KJPP Terpilih', title: 'Nama KJPP Terpilih',
render: (item, data) => { render: (item, data) => {
return `${data.penawaran.nama_kjpp_sebelumnya}`+'<br />' return `${data.penawaran.nama_kjpp_sebelumnya}`+'<br />'

View File

@@ -96,6 +96,9 @@ 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');
// revisi penawaran ulang
Route::put('/penawaranulang/{penawaranulang}', 'penawaranulang')->name('penawaran.penawaranulang');
}); });
}); });