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

This commit is contained in:
Daeng Deni Mardaeni
2024-11-28 11:35:59 +07:00
13 changed files with 481 additions and 91 deletions

View File

@@ -107,24 +107,141 @@
function onLastnumberCodePenawaran()
: string
{
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
// ambil code terakhir
$maxCode = PenawaranTender::max('code');
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
// $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);
$penawaran = PenawaranTender::where('code','=',$maxCode)->first();
$code_penawaran_last='';
// nomor di set 0001
$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));
}
// jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001
}
return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString;
}
// generate last penawaran.no_spk
function onLastnumberCodePenawaranSPK($jenis_laporan_code): string
{
// 20241124_001 ==> spk_no_core
// XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024
// 001 / PJ / JKT / XI / FR / 2024
$maxCode = PenawaranTender::max('spk_no_core');
$penawaran = PenawaranTender::where('spk_no_core','=',$maxCode)->first();
$no_spk_penawaran_last='';
$year_penawaran_last='';
$year_now = Carbon::now()->year;
// nomor di set 001
$noUrutAkhirString = sprintf("%03s", 1);
if($penawaran)
{
$no_spk_penawaran_last = substr ($maxCode, -3);
$year_penawaran_last = substr ($maxCode, 0, 4);
if($year_now == $year_penawaran_last)
{
$noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1));
}
// jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001
}
$month = onRomawi(Carbon::now()->month);
$lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now;
return $lastSPK;
}
function onRomawi(int $bln): string
{
switch ($bln){
case 1:
return "I";
break;
case 2:
return "II";
break;
case 3:
return "III";
break;
case 4:
return "IV";
break;
case 5:
return "V";
break;
case 6:
return "VI";
break;
case 7:
return "VII";
break;
case 8:
return "VIII";
break;
case 9:
return "IX";
break;
case 10:
return "X";
break;
case 11:
return "XI";
break;
case 12:
return "XII";
break;
}
}
function penyebut($nilai) {
$nilai = abs($nilai);
$huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
$temp = "";
if ($nilai < 12) {
$temp = " ". $huruf[$nilai];
} else if ($nilai <20) {
$temp = penyebut($nilai - 10). " belas";
} else if ($nilai < 100) {
$temp = penyebut($nilai/10)." puluh". penyebut($nilai % 10);
} else if ($nilai < 200) {
$temp = " seratus" . penyebut($nilai - 100);
} else if ($nilai < 1000) {
$temp = penyebut($nilai/100) . " ratus" . penyebut($nilai % 100);
} else if ($nilai < 2000) {
$temp = " seribu" . penyebut($nilai - 1000);
} else if ($nilai < 1000000) {
$temp = penyebut($nilai/1000) . " ribu" . penyebut($nilai % 1000);
} else if ($nilai < 1000000000) {
$temp = penyebut($nilai/1000000) . " juta" . penyebut($nilai % 1000000);
} else if ($nilai < 1000000000000) {
$temp = penyebut($nilai/1000000000) . " milyar" . penyebut(fmod($nilai,1000000000));
} else if ($nilai < 1000000000000000) {
$temp = penyebut($nilai/1000000000000) . " trilyun" . penyebut(fmod($nilai,1000000000000));
}
return $temp;
}
function terbilang($nilai) {
if($nilai<0) {
$hasil = "minus ". trim(penyebut($nilai));
} else {
$hasil = trim(penyebut($nilai));
}
return $hasil;
}
// andy add

View File

@@ -120,7 +120,7 @@
}
} else {
$data['status'] = 'error';
$data['message'] ['message_ajax'] = ["no ajax request"];
$data['message']['message_ajax'] = ["no ajax request"];
}
return response()->json($data);
@@ -149,6 +149,7 @@
if ($tindakan == 0) {
$dataku['jenis_penilaian_id'] = $request->jenis_penilaian;
$dataku['region_id'] = $request->region;
$dataku['sla'] = $request->sla;
$dataku['status'] = 'registered';
if ($request->catatan2) {
$dataku['registrasi_catatan'] = $request->catatan2;
@@ -205,6 +206,12 @@
$validateIt['region'] = ['required'];
$messageIt ['region.required'] = 'Silahkan pilih Region';
}
else
{
$validateIt['sla'] = ['required'];
$messageIt ['sla.required'] = 'Silahkan isi SLA';
}
} elseif ($tindakan == 1) {
$validateIt['catatan'] = ['required'];
$messageIt ['catatan.required'] = 'Silahkan isi Catatan';

View File

@@ -104,12 +104,11 @@ use Illuminate\Support\Facades\Auth;
}
// data dokumen_spk
if($obj->dokumen)
// data spk_dokumen_path
if($obj->penawaran->spk_dokumen_path)
{
$spkpenawaran_path = Storage::url($obj->dokumen);
// dd($spkpenawaran_path);
$data[$i]->dokumen = $spkpenawaran_path;
$spk_dokumen_path = Storage::url($obj->penawaran->spk_dokumen_path);
$data[$i]->penawaran->spk_dokumen_path = $spk_dokumen_path;
}
$i++;
@@ -147,10 +146,14 @@ use Illuminate\Support\Facades\Auth;
}
public function edit($id)
{
{
// dd(Carbon::now()->addDays(1)->format('d F Y'));
// dd(Carbon::now()->subDays(1)->format('d F Y')); jenis_laporan_name
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi')
->where('detail_penawaran.status','=',1)
->where('penawaran.id','=', $id)
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
@@ -159,7 +162,10 @@ use Illuminate\Support\Facades\Auth;
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
'kjpp.name as kjpp_name',
'kjpp.address as kjpp_address',
'jenis_laporan.name as jenis_laporan_name'
'jenis_laporan.name as jenis_laporan_name',
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name',
'jenis_laporan.code as jenis_laporan_code',
'penilaian.waktu_penilaian as penilaian_waktu_penilain'
)->first();
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
@@ -168,24 +174,77 @@ use Illuminate\Support\Facades\Auth;
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name',
'dokumen_jaminan.address as dokumen_jaminan_address');
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian','dokumenjaminan'])->first();
if($penawaran->detail_penawaran_tgl_proposal)
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
// generate no spk
$spk_no_last=$penawaran->spk_no;
if(!$spk_no_last)
{
$spk_no_last = onLastnumberCodePenawaranSPK($penawaran->jenis_laporan_code);
$penawaran->spk_no = $spk_no_last;
}
return view('lpj::spk.edit', compact('data', 'penawaran'));
// pengecekan perubahan jenis report
$array_no_last = explode("/",$spk_no_last);
$jenis_report_old=trim($array_no_last[4]);
if($jenis_report_old!=$penawaran->jenis_laporan_code)
{
$penawaran->spk_no=str_replace($jenis_report_old,$penawaran->jenis_laporan_code,$spk_no_last);
}
// pengecekan perubahan jenis report
// generate no spk
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu='';
// Jangka Waktu
$persetujuan_no_proposal = $penawaran->detail_penawaran_no_proposal;
$persetujuan_tgl_proposal = $penawaran->detail_penawaran_tgl_proposal;
$persetujuan_sla_resume = '...';
$persetujuan_sla_final = '...';
if(null !==$penawaran->persetujuan)
{
$sla_resume_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume);
$sla_final_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_final);
$sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text));
$sla_final_text_terbilang = ucfirst(terbilang($sla_final_text));
$persetujuan_no_proposal = $penawaran->persetujuan->nomor_proposal_penawaran;
$persetujuan_tgl_proposal = Carbon::parse($penawaran->persetujuan->tanggal_proposal_penawaran)->format('d F Y');
$persetujuan_sla_resume = $sla_resume_text.' ('.$sla_resume_text_terbilang.')';
$persetujuan_sla_final = $sla_final_text.' ('.$sla_final_text_terbilang.')';
if($penawaran->penilaian_waktu_penilain)
{
$jangka_waktu_date_start=Carbon::parse($penawaran->penilaian_waktu_penilain)->addDays(1)->format('d F Y');
$jangka_waktu_date_end=Carbon::parse($penawaran->persetujuan->sla_final)->format('d F Y');
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu=$jangka_waktu_date_start.' - '.$jangka_waktu_date_end;
// Jangka Waktu
}
}
return view('lpj::spk.edit', compact('data', 'penawaran', 'persetujuan_no_proposal', 'persetujuan_tgl_proposal', 'persetujuan_sla_resume', 'persetujuan_sla_final', 'jangka_waktu'));
}
public function update(Request $request, $id): JsonResponse
{
// init
$data1 = array();
$dataPermohonan = array();
$data1 = [];
// $dataPermohonan = array();
$dataPenawaran = [];
// data
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi')
->where('detail_penawaran.status','=',1)
->where('penawaran.id','=', $id)
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
@@ -194,7 +253,9 @@ use Illuminate\Support\Facades\Auth;
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
'kjpp.name as kjpp_name',
'kjpp.address as kjpp_address',
'jenis_laporan.name as jenis_laporan_name'
'jenis_laporan.name as jenis_laporan_name',
'jenis_laporan.code as jenis_laporan_code',
'penilaian.waktu_penilaian as penilaian_waktu_penilain'
)->first();
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
@@ -202,8 +263,13 @@ use Illuminate\Support\Facades\Auth;
->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id')
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name');
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian','dokumenjaminan'])->first();
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu='';
// Jangka Waktu
if($penawaran->detail_penawaran_tgl_proposal)
$penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y');
@@ -213,15 +279,78 @@ use Illuminate\Support\Facades\Auth;
$newFileNameWithPath = $folderPath . $newFileName;
// update table permohonan
$dataPermohonan=['dokumen' => $newFileNameWithPath];
$data->update($dataPermohonan);
// $dataPermohonan=['dokumen' => $newFileNameWithPath];
// $data->update($dataPermohonan);
// update table permohonan
// update table penawaran
$dataPenawaran['spk_dokumen_path'] = $newFileNameWithPath;
// $spk_no_last=$penawaran->spk_no;
if(!$penawaran->spk_no)
{
$spk_no_last = onLastnumberCodePenawaranSPK($penawaran->jenis_laporan_code);
// $penawaran->no_spk = $no_spk_last;
$date_now = Carbon::now()->format('Ymd');// 20240124
$spk_number = substr ($spk_no_last, 0, 3);
$dataPenawaran['spk_no'] = $spk_no_last;
$dataPenawaran['spk_no_core'] = $date_now.'_'.$spk_number;
$penawaran->spk_no = $spk_no_last;
}
// pengecekan perubahan jenis report
$spk_no_old=$penawaran->spk_no;
$array_no_last = explode("/",$spk_no_old);
$jenis_report_old=trim($array_no_last[4]);
if($jenis_report_old!=$penawaran->jenis_laporan_code)
{
$penawaran_spk_no_new=str_replace($jenis_report_old,$penawaran->jenis_laporan_code,$spk_no_old);
$penawaran->spk_no=$penawaran_spk_no_new;
$dataPenawaran['spk_no'] = $penawaran_spk_no_new;
}
// pengecekan perubahan jenis report
$penawaranM = PenawaranTender::find($penawaran->id);
$penawaranM->update($dataPenawaran);
// update table penawaran
// pdf path
$spkpenawaran_path = Storage::url($newFileNameWithPath);
$pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran'));
$persetujuan_no_proposal = $penawaran->detail_penawaran_no_proposal;
$persetujuan_tgl_proposal = $penawaran->detail_penawaran_tgl_proposal;
$persetujuan_sla_resume = '...';
$persetujuan_sla_final = '...';
if(null !==$penawaran->persetujuan)
{
$sla_resume_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume);
$sla_final_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_final);
$sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text));
$sla_final_text_terbilang = ucfirst(terbilang($sla_final_text));
$persetujuan_no_proposal = $penawaran->persetujuan->nomor_proposal_penawaran;
$persetujuan_tgl_proposal = Carbon::parse($penawaran->persetujuan->tanggal_proposal_penawaran)->format('d F Y');
$persetujuan_sla_resume = $sla_resume_text.' ('.$sla_resume_text_terbilang.')';
$persetujuan_sla_final = $sla_final_text.' ('.$sla_final_text_terbilang.')';
if($penawaran->penilaian_waktu_penilain)
{
$jangka_waktu_date_start=Carbon::parse($penawaran->penilaian_waktu_penilain)->addDays(1)->format('d F Y');
$jangka_waktu_date_end=Carbon::parse($penawaran->persetujuan->sla_final)->format('d F Y');
// Jangka Waktu
// date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final)
$jangka_waktu=$jangka_waktu_date_start.' - '.$jangka_waktu_date_end;
// Jangka Waktu
}
}
$pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran', 'persetujuan_no_proposal', 'persetujuan_tgl_proposal', 'persetujuan_sla_resume', 'persetujuan_sla_final', 'jangka_waktu'));
$pdf->setPaper('A4', 'portrait');
$content = $pdf->download()->getOriginalContent();
Storage::put('public/'.$newFileNameWithPath,$content);
@@ -260,8 +389,10 @@ use Illuminate\Support\Facades\Auth;
}
public function download($id) {
$document = Permohonan::find($id);
return response()->download(storage_path('app/public/' .$document->dokumen));
// dokumen pdf diambil dari penawaran.spk_dokumen_path
$permohonan = Permohonan::find($id);
$document = PenawaranTender::where('nomor_registrasi','=',$permohonan->nomor_registrasi)->first();
return response()->download(storage_path('app/public/' .$document->spk_dokumen_path));
}
}

View File

@@ -40,6 +40,7 @@
'registrasi_at',
'jenis_penilaian_id',
'region_id',
'sla'
];
protected static function boot()
@@ -153,4 +154,9 @@
{
return $this->hasMany(PermohonanHistory::class, 'permohonan_id', 'id')->orderBy('created_at', 'desc');
}
public function dokumenjaminan()
{
return $this->hasMany(DokumenJaminan::class);
}
}