diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 5ce58a0..c5c2eb7 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -106,11 +106,14 @@ use Modules\Lpj\Models\HolidayCalendar; // generate last penawaran.code 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=''; + + // nomor di set 0001 $noUrutAkhirString = sprintf("%04s", 1); if($penawaran) { @@ -121,10 +124,124 @@ use Modules\Lpj\Models\HolidayCalendar; { $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 diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php index 6b69cd0..c6e80b2 100644 --- a/app/Http/Controllers/RegistrasiController.php +++ b/app/Http/Controllers/RegistrasiController.php @@ -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'; diff --git a/app/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index d5ce566..8f2b521 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -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++; @@ -151,6 +150,7 @@ use Illuminate\Support\Facades\Auth; $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') ->where('detail_penawaran.status','=',1) ->where('penawaran.id','=', $id) ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', @@ -159,7 +159,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', + 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', + 'jenis_laporan.code as jenis_laporan_code' )->first(); $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) @@ -168,19 +170,30 @@ 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; + } + + // generate no spk + return view('lpj::spk.edit', compact('data', 'penawaran')); } 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') @@ -194,7 +207,8 @@ 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' )->first(); $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) @@ -202,7 +216,7 @@ 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(); if($penawaran->detail_penawaran_tgl_proposal) $penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y'); @@ -213,15 +227,33 @@ 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; + 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; + + } + $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')); - + $pdf->setPaper('A4', 'portrait'); $content = $pdf->download()->getOriginalContent(); Storage::put('public/'.$newFileNameWithPath,$content); @@ -260,8 +292,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)); } } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 81b94b7..f8d57da 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -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); + } } diff --git a/database/migrations/2024_11_21_114000_update_permohonan_table.php b/database/migrations/2024_11_21_114000_update_permohonan_table.php new file mode 100644 index 0000000..587fb4e --- /dev/null +++ b/database/migrations/2024_11_21_114000_update_permohonan_table.php @@ -0,0 +1,28 @@ +integer('sla')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropColumn('sla'); + }); + } +}; diff --git a/database/migrations/2024_11_24_024345_update_penawaran_table.php b/database/migrations/2024_11_24_024345_update_penawaran_table.php new file mode 100644 index 0000000..90b2809 --- /dev/null +++ b/database/migrations/2024_11_24_024345_update_penawaran_table.php @@ -0,0 +1,32 @@ +string('spk_no')->nullable()->after('status'); + $table->string('spk_no_core')->nullable()->after('spk_no'); + $table->string('spk_dokumen_path')->nullable()->after('spk_no_core'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penawaran', function (Blueprint $table) { + $table->dropColumn('spk_no'); + $table->dropColumn('spk_no_core'); + $table->dropColumn('spk_dokumen_path'); + }); + } +}; diff --git a/resources/views/registrasi/edit.blade.php b/resources/views/registrasi/edit.blade.php index c606451..be2b136 100644 --- a/resources/views/registrasi/edit.blade.php +++ b/resources/views/registrasi/edit.blade.php @@ -72,6 +72,15 @@ +