From 3eb402ae0885a846ab42b4a0954068dcf50e2949 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 11 Jul 2025 17:01:50 +0700 Subject: [PATCH] feat: add export functionality and simplify laporan user report refactor: update laporan user service and views for simplified report style: improve daftar pustaka views and remove unused code fix: correct date field names in laporan sla penilai service --- app/Exports/LaporanUserLimitExport.php | 232 +++++++++++++++ .../Controllers/LaporanUserController.php | 10 + app/Services/LaporanBiayaService.php | 21 ++ app/Services/LaporanSLAPenilaiService.php | 209 +++++++------ app/Services/LaporanUserService.php | 81 +---- .../views/daftar-pustaka/index.blade.php | 61 ++-- resources/views/daftar-pustaka/show.blade.php | 41 ++- .../views/laporan-biaya/external.blade.php | 279 +++--------------- .../views/laporan-biaya/internal.blade.php | 275 +++-------------- .../views/laporan-monitoring/show.blade.php | 39 +-- .../views/laporan-sla-penilai/index.blade.php | 16 +- resources/views/laporan-user/index.blade.php | 266 ++--------------- routes/web.php | 1 + 13 files changed, 560 insertions(+), 971 deletions(-) create mode 100644 app/Exports/LaporanUserLimitExport.php create mode 100644 app/Services/LaporanBiayaService.php diff --git a/app/Exports/LaporanUserLimitExport.php b/app/Exports/LaporanUserLimitExport.php new file mode 100644 index 0000000..eb2ac46 --- /dev/null +++ b/app/Exports/LaporanUserLimitExport.php @@ -0,0 +1,232 @@ +request = $request; + } + + public function collection() + { + $query = Permohonan::query(); + $query = $query->where('status', 'done'); + + // Apply date range filter if provided + if ($this->request->has('start_date') || $this->request->has('end_date')) { + $startDate = $this->request->start_date ?? '1900-01-01'; + $endDate = $this->request->end_date ?? now()->toDateString(); + + $query->where(function ($q) use ($startDate, $endDate) { + + $q->whereHas('penilaian', function ($q2) use ($startDate, $endDate) { + $q2->whereBetween('tanggal_kunjungan', [$startDate, $endDate]); + }); + + // OR check if has penawaran with date in range + $q->orWhereHas('penawaran', function ($q3) use ($startDate, $endDate) { + $q3->whereBetween('tanggal_penilaian_sebelumnya', [$startDate, $endDate]); + }); + }); + } + + // Apply branch filter if provided + if ($this->request->has('branch_id') && !empty($this->request->branch_id)) { + $query->where('branch_id', $this->request->branch_id); + } + + if ($this->request->has('penilai_id') && !empty($this->request->penilai_id)) { + $request = $this->request; // Store in a local variable + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function ($q) use ($request) { + $q->where('user_id', $request->penilai_id); + }); + } + + // Apply search filter if provided + if ($this->request->has('search') && !empty($this->request->search)) { + $search = $this->request->search; + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', DB::raw('LOWER(name)'), 'LIKE', '%' . strtolower($search) . '%'); + + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Default ordering + $query->orderBy('nomor_registrasi', 'asc'); + + return $query->get(); + } + + protected $rowNumber = 0; + + public function map($permohonan): array + { + $this->rowNumber++; + $npw = 0; + + if (isset($permohonan->penilai->lpj)) { + $lpj = json_decode($permohonan->penilai->lpj, true); + $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); + } + + return [ + $this->rowNumber, + $permohonan->nomor_registrasi, + $permohonan->debiture->branch->name ?? '', + $permohonan->debiture->name ?? '', + $permohonan->user->name ?? $permohonan->mig_nama_ao ?? '', + $permohonan->tanggal_permohonan ?? '', + $permohonan->penilaian->_user_penilai->userPenilaiTeam->name ?? '', + $permohonan->penilaian && $permohonan->penilaian->tanggal_kunjungan + ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) + : '', + formatRupiah($npw, 2), + ]; + } + + public function headings(): array + { + return [ + 'No', + 'Nomor Registrasi', + 'Cabang', + 'Nama Debitur', + 'Pemohon', + 'Tanggal Permohonan', + 'Nama Penilai', + 'Tanggal Laporan', + 'Nilai Pasar Wajar', + + ]; + } + + /** + * @return string + */ + public function title(): string + { + return 'Laporan User Limit'; + } + + /** + * @return string + */ + public function startCell(): string + { + return 'A7'; + } + + /** + * @return array + */ + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + // Get the sheet + $sheet = $event->sheet->getDelegate(); + + // Set the title + $sheet->setCellValue('A1', 'LAPORAN PENILAIAN JAMINAN'); + $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16); + + // Merge cells for title + $sheet->mergeCells('A1:AH1'); + $sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set the branch information if filtered + $branchInfo = ''; + if ($this->request->has('branch_id') && !empty($this->request->branch_id)) { + $branch = Branch::find($this->request->branch_id); + if ($branch) { + $branchInfo = 'Cabang: ' . $branch->name; + $sheet->setCellValue('A2', $branchInfo); + $sheet->mergeCells('A2:AH2'); + $sheet->getStyle('A2')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + $sheet->getStyle('A2')->getFont()->setBold(true); + } + } + + // Set the period + $startDate = $this->request->start_date ?? ''; + $endDate = $this->request->end_date ?? ''; + + $rowIndex = $branchInfo ? 3 : 2; + + if ($startDate && $endDate) { + $startDateFormatted = Carbon::parse($startDate)->format('d F Y'); + $endDateFormatted = Carbon::parse($endDate)->format('d F Y'); + $sheet->setCellValue('A' . $rowIndex, 'Periode: ' . $startDateFormatted . ' - ' . $endDateFormatted); + } else { + $sheet->setCellValue('A' . $rowIndex, 'Periode: Semua Data'); + } + $sheet->mergeCells('A' . $rowIndex . ':AH' . $rowIndex); + $sheet->getStyle('A' . $rowIndex)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set the date of export + $rowIndex++; + $sheet->setCellValue('A' . $rowIndex, 'Tanggal Export: ' . Carbon::now()->format('d F Y H:i:s')); + + // Set the user who exported + $rowIndex++; + $userName = Auth::user() ? Auth::user()->name : 'System'; + $sheet->setCellValue('A' . $rowIndex, 'Diexport oleh: ' . $userName); + + // Add a blank line + $rowIndex++; + $sheet->setCellValue('A' . $rowIndex, ''); + + // Style the header row + $headerRange = 'A7:' . $sheet->getHighestColumn() . '7'; + $sheet->getStyle($headerRange)->getFont()->setBold(true); + $sheet->getStyle($headerRange)->getFill() + ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) + ->getStartColor()->setARGB('FFCCCCCC'); + + // Auto-size columns - fixed to handle columns beyond Z + $highestColumn = $sheet->getHighestColumn(); + $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); + + for ($i = 1; $i <= $highestColumnIndex; $i++) { + $currentColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($i); + $sheet->getColumnDimension($currentColumn)->setAutoSize(true); + } + + // Add borders to all cells with data + $dataRange = 'A7:' . $sheet->getHighestColumn() . $sheet->getHighestRow(); + $sheet->getStyle($dataRange)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN); + + // Center align the header row + $sheet->getStyle($headerRange)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); + + // Set text wrap for header cells + $sheet->getStyle($headerRange)->getAlignment()->setWrapText(true); + }, + ]; + } +} diff --git a/app/Http/Controllers/LaporanUserController.php b/app/Http/Controllers/LaporanUserController.php index 7d48559..3d6801b 100644 --- a/app/Http/Controllers/LaporanUserController.php +++ b/app/Http/Controllers/LaporanUserController.php @@ -4,6 +4,8 @@ namespace Modules\Lpj\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; + use Maatwebsite\Excel\Facades\Excel; +use Modules\Lpj\Exports\LaporanUserLimitExport; use Modules\Lpj\Services\LaporanUserService; class LaporanUserController extends Controller @@ -38,4 +40,12 @@ class LaporanUserController extends Controller return $this->laporanUserService->dataForDatatables($request); } + public function export(Request $request) + { + $startDate = $request->start_date; + $endDate = $request->end_date; + // name of the file + $fileName = 'laporan_user_limit' . $startDate . '_' . $endDate . '.xlsx'; + return Excel::download(new LaporanUserLimitExport($request), $fileName); + } } diff --git a/app/Services/LaporanBiayaService.php b/app/Services/LaporanBiayaService.php new file mode 100644 index 0000000..049ab91 --- /dev/null +++ b/app/Services/LaporanBiayaService.php @@ -0,0 +1,21 @@ +where('status', 'done'); + { + // Retrieve data from the database + $query = Permohonan::query(); + $query = $query->where('status', 'done'); - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = json_decode($request->get('search')); + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = json_decode($request->get('search')); - if (isset($search->start_date) || isset($search->end_date)) { - $query->whereBetween('tanggal_permohonan', [ - $search->start_date ?? '1900-01-01', - $search->end_date ?? now()->toDateString() - ]); - } - - - if (isset($search->penilai_id) && !empty($search->penilai_id)) { - $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($search) { - $q->where('user_id', $search->penilai_id); - }); - } - - if (isset($search->search)) { - - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search->search . '%'); - }); - } + if (isset($search->start_date) || isset($search->end_date)) { + $query->whereBetween('tanggal_permohonan', [ + $search->start_date ?? '1900-01-01', + $search->end_date ?? now()->toDateString() + ]); } - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); + + if (isset($search->penilai_id) && !empty($search->penilai_id)) { + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function ($q) use ($search) { + $q->where('user_id', $search->penilai_id); + }); } - // Get the total count of records - $totalRecords = $query->count(); + if (isset($search->search)) { - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search->search . '%'); + }); } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - $data = $query->with(['debiture.branch'])->get(); - - $data = $data->map(function ($permohonan) { - $luas_tanah = 0; - $luas_bangunan = 0; - $nilai_tanah = 0; - $nilai_bangunan = 0; - $npw = 0; - $nilai_liquidasi = 0; - if (isset($permohonan->penilai->lpj)) { - $lpj = json_decode($permohonan->penilai->lpj, true); - $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); - - $luas_tanah = $lpj['luas_tanah'] ?? 0; - $luas_bangunan = $lpj['luas_bangunan'] ?? 0; - // Calculate nilai_tanah dynamically by looking for all keys that start with 'nilai_tanah_' - $nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0); - - $nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0); - $nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0); - } - - return [ - 'id' => $permohonan->id, - 'nomor_registrasi' => $permohonan->nomor_registrasi, - 'tanggal_permohonan' => $permohonan->tanggal_permohonan, - 'branch' => $permohonan->debiture?->branch?->name, - 'name' => $permohonan->debiture?->name, - 'pemohon' => $permohonan->creator?->name, - 'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name, - 'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name')->unique()->implode(', '), - - 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', - 'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '', - 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, - ]; - }); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = $request->get('page', 1); - - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['documents','debiture.branch'])->get(); + + $data = $data->map(function ($permohonan) { + + $tgl_kunjungan = $permohonan->penilaian?->tanggal_kunjungan; + $tgl_otorisator = $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? $permohonan->approval_so_at; + $jangkaWaktu = $this->hitungTotalJangkaWaktuSla($tgl_kunjungan, $tgl_otorisator); + + + + return [ + 'id' => $permohonan->id, + 'nomor_registrasi' => $permohonan->nomor_registrasi, + 'tanggal_permohonan' => $permohonan->tanggal_permohonan, + 'branch' => $permohonan->debiture?->branch?->name, + 'name' => $permohonan->debiture?->name, + 'pemohon' => $permohonan->creator?->name, + 'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name, + 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', + 'tanggal_approval' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', + 'tanggal_kunjungan' => $permohonan->penilaian?->tanggal_kunjungan ?? '', + 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, + 'jangka_waktu' => $jangkaWaktu, + 'keterangan' => $permohonan->keterangan + ]; + }); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 1); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + private function hitungTotalJangkaWaktuSla($tgl_kunjungan,$tgl_otorisator){ + $countHariKerja = hitungHariKerja($tgl_kunjungan, $tgl_otorisator); + return $countHariKerja; + } } diff --git a/app/Services/LaporanUserService.php b/app/Services/LaporanUserService.php index c53dd59..9890aaa 100644 --- a/app/Services/LaporanUserService.php +++ b/app/Services/LaporanUserService.php @@ -85,96 +85,25 @@ class LaporanUserService $data = $query->with(['debiture.branch'])->get(); $data = $data->map(function ($permohonan) { - $luas_tanah = 0; - $luas_bangunan = 0; - $nilai_tanah = 0; - $nilai_bangunan = 0; + $npw = 0; - $nilai_liquidasi = 0; + if (isset($permohonan->penilai->lpj)) { $lpj = json_decode($permohonan->penilai->lpj, true); $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); - - $luas_tanah = $lpj['luas_tanah'] ?? 0; - $luas_bangunan = $lpj['luas_bangunan'] ?? 0; - // Calculate nilai_tanah dynamically by looking for all keys that start with 'nilai_tanah_' - $nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0); - - $nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0); - $nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0); } return [ 'id' => $permohonan->id, 'nomor_registrasi' => $permohonan->nomor_registrasi, - 'jenis_penilaian' => $permohonan->jenisPenilaian?->name, - 'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name, - 'jenis_fasilitas_kredit' => $permohonan->jenisFasilitasKredit?->name, 'branch' => $permohonan->debiture->branch?->name, - 'pemohon' => $permohonan->creator?->name, - 'cif' => $permohonan->debiture->cif, 'name' => $permohonan->debiture?->name, - 'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name') - ->unique() - ->implode(', '), - 'alamat_agunan' => $permohonan->documents?->map(function ($document) { - return formatAlamat($document); - })->unique()->implode(', '), - 'bukti_kepemilikan' => (function () use ($permohonan) { - $legalitasItems = $permohonan->documents?->flatMap(function ($document) { - return $document->detail->map(function ($detail) { - // Jika tidak ada jenis legalitas jaminan, lewati - if (empty($detail->jenisLegalitasJaminan)) { - return null; - } - - // Hanya tampilkan detail yang memiliki dokumen_jaminan - if (empty($detail->dokumen_jaminan)) { - return null; - } - - // Tampilkan nama legalitas jaminan saja - return $detail->jenisLegalitasJaminan->name ?? ''; - }); - })->filter()->unique()->values()->toArray(); - - // Buat daftar bernomor - $result = ''; - foreach ($legalitasItems as $index => $item) { - $result .= ($index + 1) . '. ' . $item . "\n"; - } - - return $result; - })(), - 'nama_pemilik' => $permohonan->documents?->pluck('pemilik.name') - ->unique() - ->implode(', '), - 'luas_tanah' => $luas_tanah . ' m²', - 'nilai_tanah' => formatRupiah($nilai_tanah, 2), - 'luas_bangunan' => $luas_bangunan . ' m²', - 'nilai_bangunan' => formatRupiah($nilai_bangunan, 2), - 'nilai_njop' => formatRupiah($permohonan->nilai_njop, 2), - 'nilai_pasar_wajar' => formatRupiah($npw, 2), - 'nilai_likuidasi' => formatRupiah($nilai_liquidasi, 2), - 'tanggal_documen_diterima' => $permohonan->documents?->map(function ($document) { - return $document->created_at->format('d-m-Y'); - }), - 'tanggal_spk' => '', - 'nomor_spk' => '', - 'tanggal_rencana_kunjunagn' => '', - 'tanggal_kunjungan' => '', - 'taggal_delivered' => '', - 'jangka_waktu_sla' => '', - 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, - 'nama_team_leader' => $permohonan->penilaian?->teams, - 'saran' => '', - 'catatan' => '', - - + 'pemohon' => $permohonan->creator?->name, 'tanggal_permohonan' => $permohonan->tanggal_permohonan, + 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', - 'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '', + 'nilai_pasar_wajar' => formatRupiah($npw, 2) ]; }); diff --git a/resources/views/daftar-pustaka/index.blade.php b/resources/views/daftar-pustaka/index.blade.php index 847a640..057c59f 100644 --- a/resources/views/daftar-pustaka/index.blade.php +++ b/resources/views/daftar-pustaka/index.blade.php @@ -5,6 +5,15 @@ @endsection @section('content') +
@@ -66,10 +75,12 @@ @if (isset($daftar_pustaka)) @foreach ($daftar_pustaka as $item)
-
-
+
+ +
@@ -84,18 +95,18 @@

-

+

# {{ $item->category->name }}

@auth @if (auth()->user()->hasRole(['administrator', 'admin']))

@@ -202,7 +215,6 @@ @endsection @push('scripts') - -@endpush +@endpush --}} diff --git a/resources/views/laporan-biaya/external.blade.php b/resources/views/laporan-biaya/external.blade.php index bc59c17..b39e173 100644 --- a/resources/views/laporan-biaya/external.blade.php +++ b/resources/views/laporan-biaya/external.blade.php @@ -44,15 +44,6 @@ @endforeach

-
- - -
@@ -73,7 +64,7 @@

- Laporan Hasil Penilaian Jaminan Internal & External + Rekap Penyelesaian External

@@ -89,130 +80,53 @@ Nomor Registrasi - - Tanggal Permohonan - - Cabang - - Pemohon - - - - CIF - - - + Nama Debitur + + Tanggal KSL + + + + + Nomor KSL + + + + Nominal KSL + + + - Jenis Penilaian + Tanggal Penyelesaian - Tujuan Penilaian + Nominal Penyelesaian - Jenis Fasilitas Kredit + No. Rekening (Tujuan Akhir) + + + + Sisa KSL - Jenis Agunan + Memo - Alamat Agunan + Status - - Bukti Kepemilikan - - - - Nama Pemilik - - - - Luas Tanah - - - - Nilai Tanah - - - - Luas Bangunan - - - - Nilai Bangunan - - - - Nilai NJOP - - - - Nilai Pasar Wajar - - - - Nilai Likuidasi - - - - Tanggal Dokumen Diterima - - - - Tanggal SPK - - - - Nomor SPK - - - - Tanggal Rencana Kunjungan - - - - Tanggal Kunjungan - - - - Tanggal Delivered - - - - Jangka Waktu SLA - - - - Tanggal Laporan - - - - Tanggal Review - - - - Nama Penilai - - - - Nama Team Leader - - - - Saran - - + Catatan @@ -266,144 +180,41 @@ nomor_registrasi: { title: 'Nomor Registrasi', }, - tanggal_permohonan: { + branch: { + title: 'Cabang', + }, + name: { + title: 'Nama Debitur', + }, + tanggal_ksl: { title: 'Tanggal Permohonan', render: (item, data) => { return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-'; }, }, - branch: { - title: 'Cabang', - }, - pemohon: { - title: 'Pemohon', - }, - cif: { + nomor_ksl: { title: 'CIF', }, - name: { - title: 'Nama Debitur', - }, - jenis_penilaian: { + nominal_ksl: { title: 'Jenis Penilaian', }, - tujuan_penilaian: { + tanggal_penyelesaian: { title: 'Tujuan Penilaian', }, - jenis_fasilitas_kredit: { + nominal_penyelesaian: { title: 'Jenis Fasilitas Kredit', }, - jenis_agunan: { + nomor_rekening: { + title: 'Nomor Rekening', + }, + sisa_ksl: { title: 'Jenis Agunan', }, - alamat_agunan: { - title: 'Alamat Agunan', + memo: { + title: 'Memo', }, - bukti_kepemilikan: { - title: 'Bukti Kepemilikan', - render: (item, data) => { - if (data.bukti_kepemilikan) { - // Ganti karakter baris baru dengan tag
untuk HTML - return data.bukti_kepemilikan.split('\n').join('
'); - } - return '-'; - }, - }, - nama_pemilik: { - title: 'Nama Pemilik', - }, - luas_tanah: { - title: 'Luas Tanah', - }, - nilai_tanah: { - title: 'Nilai Tanah', - render: (item, data) => { - return data.nilai_tanah ?? '-'; - }, - }, - luas_bangunan: { - title: 'Luas Bangunan', - }, - nilai_bangunan: { - title: 'Nilai Bangunan', - render: (item, data) => { - return data.nilai_bangunan ?? '-'; - }, - }, - nilai_njop: { - title: 'Nilai NJOP', - render: (item, data) => { - return data.nilai_njop ?? '-'; - }, - }, - nilai_pasar_wajar: { - title: 'Nilai Pasar Wajar', - render: (item, data) => { - return data.nilai_pasar_wajar ?? '-'; - }, - }, - nilai_likuidasi: { - title: 'Nilai Likuidasi', - render: (item, data) => { - return data.nilai_likuidasi ?? '-'; - }, - }, - tanggal_documen_diterima: { - title: 'Tanggal Dokumen Diterima', - render: (item, data) => { - return data.tanggal_documen_diterima ? window.formatTanggalIndonesia(data.tanggal_documen_diterima) : '-'; - }, - }, - tanggal_spk: { - title: 'Tanggal SPK', - render: (item, data) => { - return data.tanggal_spk ? window.formatTanggalIndonesia(data.tanggal_spk) : '-'; - }, - }, - nomor_spk: { - title: 'Nomor SPK', - }, - tanggal_rencana_kunjunagn: { - title: 'Tanggal Rencana Kunjungan', - render: (item, data) => { - return data.tanggal_rencana_kunjunagn ? window.formatTanggalIndonesia(data.tanggal_rencana_kunjunagn) : '-'; - }, - }, - tanggal_kunjungan: { - title: 'Tanggal Kunjungan', - render: (item, data) => { - return data.tanggal_kunjungan ? window.formatTanggalIndonesia(data.tanggal_kunjungan) : '-'; - }, - }, - taggal_delivered: { - title: 'Tanggal Delivered', - render: (item, data) => { - return data.taggal_delivered ? window.formatTanggalIndonesia(data.taggal_delivered) : '-'; - }, - }, - jangka_waktu_sla: { - title: 'Jangka Waktu SLA', - }, - tanggal_laporan: { - title: 'Tanggal Laporan', - render: (item, data) => { - return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-'; - }, - }, - tanggal_review: { - title: 'Tanggal Review', - render: (item, data) => { - return data.tanggal_review ? window.formatTanggalIndonesia(data.tanggal_review) : '-'; - }, - }, - nama_penilai: { - title: 'Nama Penilai', - }, - nama_team_leader: { - title: 'Nama Team Leader', - }, - saran: { - title: 'Saran', + status: { + title: 'Status', }, catatan: { title: 'Catatan', diff --git a/resources/views/laporan-biaya/internal.blade.php b/resources/views/laporan-biaya/internal.blade.php index 860f8cc..5f5658a 100644 --- a/resources/views/laporan-biaya/internal.blade.php +++ b/resources/views/laporan-biaya/internal.blade.php @@ -44,15 +44,7 @@ @endforeach
-
- - -
+
@@ -73,7 +65,7 @@

- Laporan Hasil Penilaian Jaminan Internal & External + Rekap Penyelesaian Internal

@@ -81,7 +73,7 @@
- + @@ -89,130 +81,49 @@ Nomor Registrasi - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - + + + - - - - - + + + + + + + + - @@ -189,20 +187,7 @@ return `${window.formatTanggalIndonesia(data.paparan)}`; } }, - approve: { - title: 'Approve', - render: (item, data) => { - // Gabungkan nama dengan
untuk pemisah baris baru - let dataHtml = ` - ${data.permohonan?.approve_so?.name || ''} -
- ${data.permohonan?.approve_eo?.name || ''} -
- ${data.permohonan?.approve_dd?.name || ''} - `; - return dataHtml; - }, - }, + keterangan: { diff --git a/resources/views/laporan-sla-penilai/index.blade.php b/resources/views/laporan-sla-penilai/index.blade.php index 7cead13..8e05868 100644 --- a/resources/views/laporan-sla-penilai/index.blade.php +++ b/resources/views/laporan-sla-penilai/index.blade.php @@ -104,10 +104,6 @@ Tujuan Penilaian - - + - - + + - - + - - - - - - - - - - - - - - - - - - - - - + + @@ -252,6 +157,15 @@ }, nomor_registrasi: { title: 'Nomor Registrasi', + }, + branch: { + title: 'Cabang', + }, + name: { + title: 'Nama Debitur', + }, + pemohon: { + title: 'Pemohon', }, tanggal_permohonan: { title: 'Tanggal Permohonan', @@ -259,68 +173,14 @@ return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-'; }, }, - branch: { - title: 'Cabang', + nama_penilai: { + title: 'Nama Penilai', }, - pemohon: { - title: 'Pemohon', - }, - cif: { - title: 'CIF', - }, - name: { - title: 'Nama Debitur', - }, - jenis_penilaian: { - title: 'Jenis Penilaian', - }, - tujuan_penilaian: { - title: 'Tujuan Penilaian', - }, - jenis_fasilitas_kredit: { - title: 'Jenis Fasilitas Kredit', - }, - jenis_agunan: { - title: 'Jenis Agunan', - }, - alamat_agunan: { - title: 'Alamat Agunan', - }, - bukti_kepemilikan: { - title: 'Bukti Kepemilikan', + + tanggal_laporan: { + title: 'Tanggal Dokumen Diterima', render: (item, data) => { - if (data.bukti_kepemilikan) { - // Ganti karakter baris baru dengan tag
untuk HTML - return data.bukti_kepemilikan.split('\n').join('
'); - } - return '-'; - }, - }, - nama_pemilik: { - title: 'Nama Pemilik', - }, - luas_tanah: { - title: 'Luas Tanah', - }, - nilai_tanah: { - title: 'Nilai Tanah', - render: (item, data) => { - return data.nilai_tanah ?? '-'; - }, - }, - luas_bangunan: { - title: 'Luas Bangunan', - }, - nilai_bangunan: { - title: 'Nilai Bangunan', - render: (item, data) => { - return data.nilai_bangunan ?? '-'; - }, - }, - nilai_njop: { - title: 'Nilai NJOP', - render: (item, data) => { - return data.nilai_njop ?? '-'; + return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-'; }, }, nilai_pasar_wajar: { @@ -328,72 +188,6 @@ render: (item, data) => { return data.nilai_pasar_wajar ?? '-'; }, - }, - nilai_likuidasi: { - title: 'Nilai Likuidasi', - render: (item, data) => { - return data.nilai_likuidasi ?? '-'; - }, - }, - tanggal_documen_diterima: { - title: 'Tanggal Dokumen Diterima', - render: (item, data) => { - return data.tanggal_documen_diterima ? window.formatTanggalIndonesia(data.tanggal_documen_diterima) : '-'; - }, - }, - tanggal_spk: { - title: 'Tanggal SPK', - render: (item, data) => { - return data.tanggal_spk ? window.formatTanggalIndonesia(data.tanggal_spk) : '-'; - }, - }, - nomor_spk: { - title: 'Nomor SPK', - }, - tanggal_rencana_kunjunagn: { - title: 'Tanggal Rencana Kunjungan', - render: (item, data) => { - return data.tanggal_rencana_kunjunagn ? window.formatTanggalIndonesia(data.tanggal_rencana_kunjunagn) : '-'; - }, - }, - tanggal_kunjungan: { - title: 'Tanggal Kunjungan', - render: (item, data) => { - return data.tanggal_kunjungan ? window.formatTanggalIndonesia(data.tanggal_kunjungan) : '-'; - }, - }, - taggal_delivered: { - title: 'Tanggal Delivered', - render: (item, data) => { - return data.taggal_delivered ? window.formatTanggalIndonesia(data.taggal_delivered) : '-'; - }, - }, - jangka_waktu_sla: { - title: 'Jangka Waktu SLA', - }, - tanggal_laporan: { - title: 'Tanggal Laporan', - render: (item, data) => { - return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-'; - }, - }, - tanggal_review: { - title: 'Tanggal Review', - render: (item, data) => { - return data.tanggal_review ? window.formatTanggalIndonesia(data.tanggal_review) : '-'; - }, - }, - nama_penilai: { - title: 'Nama Penilai', - }, - nama_team_leader: { - title: 'Nama Team Leader', - }, - saran: { - title: 'Saran', - }, - catatan: { - title: 'Catatan', } } }; diff --git a/routes/web.php b/routes/web.php index f082459..fd5dbce 100644 --- a/routes/web.php +++ b/routes/web.php @@ -746,6 +746,7 @@ Route::middleware(['auth'])->group(function () { // laporan user Route::prefix('laporan-user')->name('laporan-user.')->group(function () { Route::get('/', [LaporanUserController::class, 'index'])->name('index'); + Route::get('export', [LaporanUserController::class, 'export'])->name('export'); Route::get('api/user-pemohon', [LaporanUserController::class, 'searchUserPemohon'])->name('api.user-pemohon'); Route::get('datatables', [LaporanUserController::class, 'dataTableForUserPemohon'])->name('datatables'); });
- Tanggal Permohonan - - Cabang - Pemohon - - - CIF - - + Nama Debitur + Tanggal KSL + + + Nomor KSL + + + Nominal KSL + + - Jenis Penilaian + Tanggal Penyelesaian - Tujuan Penilaian + Nominal Penyelesaian - Jenis Fasilitas Kredit + Sisa KSL - Jenis Agunan + Memo - Alamat Agunan + Status - Bukti Kepemilikan - - - Nama Pemilik - - - Luas Tanah - - - Nilai Tanah - - - Luas Bangunan - - - Nilai Bangunan - - - Nilai NJOP - - - Nilai Pasar Wajar - - - Nilai Likuidasi - - - Tanggal Dokumen Diterima - - - Tanggal SPK - - - Nomor SPK - - - Tanggal Rencana Kunjungan - - - Tanggal Kunjungan - - - Tanggal Delivered - - - Jangka Waktu SLA - - - Tanggal Laporan - - - Tanggal Review - - - Nama Penilai - - - Nama Team Leader - - - Saran - - Catatan @@ -266,144 +177,38 @@ nomor_registrasi: { title: 'Nomor Registrasi', }, - tanggal_permohonan: { + branch: { + title: 'Cabang', + }, + name: { + title: 'Nama Debitur', + }, + tanggal_ksl: { title: 'Tanggal Permohonan', render: (item, data) => { return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-'; }, }, - branch: { - title: 'Cabang', - }, - pemohon: { - title: 'Pemohon', - }, - cif: { + nomor_ksl: { title: 'CIF', }, - name: { - title: 'Nama Debitur', - }, - jenis_penilaian: { + nominal_ksl: { title: 'Jenis Penilaian', }, - tujuan_penilaian: { + tanggal_penyelesaian: { title: 'Tujuan Penilaian', }, - jenis_fasilitas_kredit: { + nominal_penyelesaian: { title: 'Jenis Fasilitas Kredit', }, - jenis_agunan: { + sisa_ksl: { title: 'Jenis Agunan', }, - alamat_agunan: { - title: 'Alamat Agunan', + memo: { + title: 'Memo', }, - bukti_kepemilikan: { - title: 'Bukti Kepemilikan', - render: (item, data) => { - if (data.bukti_kepemilikan) { - // Ganti karakter baris baru dengan tag
untuk HTML - return data.bukti_kepemilikan.split('\n').join('
'); - } - return '-'; - }, - }, - nama_pemilik: { - title: 'Nama Pemilik', - }, - luas_tanah: { - title: 'Luas Tanah', - }, - nilai_tanah: { - title: 'Nilai Tanah', - render: (item, data) => { - return data.nilai_tanah ?? '-'; - }, - }, - luas_bangunan: { - title: 'Luas Bangunan', - }, - nilai_bangunan: { - title: 'Nilai Bangunan', - render: (item, data) => { - return data.nilai_bangunan ?? '-'; - }, - }, - nilai_njop: { - title: 'Nilai NJOP', - render: (item, data) => { - return data.nilai_njop ?? '-'; - }, - }, - nilai_pasar_wajar: { - title: 'Nilai Pasar Wajar', - render: (item, data) => { - return data.nilai_pasar_wajar ?? '-'; - }, - }, - nilai_likuidasi: { - title: 'Nilai Likuidasi', - render: (item, data) => { - return data.nilai_likuidasi ?? '-'; - }, - }, - tanggal_documen_diterima: { - title: 'Tanggal Dokumen Diterima', - render: (item, data) => { - return data.tanggal_documen_diterima ? window.formatTanggalIndonesia(data.tanggal_documen_diterima) : '-'; - }, - }, - tanggal_spk: { - title: 'Tanggal SPK', - render: (item, data) => { - return data.tanggal_spk ? window.formatTanggalIndonesia(data.tanggal_spk) : '-'; - }, - }, - nomor_spk: { - title: 'Nomor SPK', - }, - tanggal_rencana_kunjunagn: { - title: 'Tanggal Rencana Kunjungan', - render: (item, data) => { - return data.tanggal_rencana_kunjunagn ? window.formatTanggalIndonesia(data.tanggal_rencana_kunjunagn) : '-'; - }, - }, - tanggal_kunjungan: { - title: 'Tanggal Kunjungan', - render: (item, data) => { - return data.tanggal_kunjungan ? window.formatTanggalIndonesia(data.tanggal_kunjungan) : '-'; - }, - }, - taggal_delivered: { - title: 'Tanggal Delivered', - render: (item, data) => { - return data.taggal_delivered ? window.formatTanggalIndonesia(data.taggal_delivered) : '-'; - }, - }, - jangka_waktu_sla: { - title: 'Jangka Waktu SLA', - }, - tanggal_laporan: { - title: 'Tanggal Laporan', - render: (item, data) => { - return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-'; - }, - }, - tanggal_review: { - title: 'Tanggal Review', - render: (item, data) => { - return data.tanggal_review ? window.formatTanggalIndonesia(data.tanggal_review) : '-'; - }, - }, - nama_penilai: { - title: 'Nama Penilai', - }, - nama_team_leader: { - title: 'Nama Team Leader', - }, - saran: { - title: 'Saran', + status: { + title: 'Status', }, catatan: { title: 'Catatan', diff --git a/resources/views/laporan-monitoring/show.blade.php b/resources/views/laporan-monitoring/show.blade.php index 315106d..1dd2301 100644 --- a/resources/views/laporan-monitoring/show.blade.php +++ b/resources/views/laporan-monitoring/show.blade.php @@ -35,21 +35,19 @@
Nama DebiturTujuan PenilaianStatus BayarJenis AssetPenugasanJenis ReportTgl RegisterTgl AssignCabangLokasi JaminanTUjuan Penilaian Tgl KunjunganTgl ReportedProgressSLA LaporanSLA PaparanApproveTgl Lpj DoneSLA Buku KjppStatusPoinSLA INTERNALSLA PENDAMPINGAN KJPPAbsensiZabtu KeteranganAction
- Penilaian - - Tanggal Dokuemen @@ -199,20 +195,16 @@ tujuan_penilaian: { title: 'Tujuan Penilaian', }, - jenis_agunan: { - title: 'Jenis Agunan', - }, - tanggal_laporan: { title: 'Tanggal Laporan', render: (item, data) => { return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-'; }, }, - tanggal_review: { - title: 'Tanggal Review', + tanggal_approval: { + title: 'Tanggal Approval', render: (item, data) => { - return data.tanggal_review ? window.formatTanggalIndonesia(data.tanggal_review) : '-'; + return data.tanggal_approval ? window.formatTanggalIndonesia(data.tanggal_approval) : '-'; }, }, tanggal_kunjungan: { @@ -225,7 +217,7 @@ jangka_waktu: { title: 'Jangka Waktu', render: (item, data) => { - return data.jangka_waktu ?? '3'; + return data.jangka_waktu ?? '-'; }, }, keterangan: { diff --git a/resources/views/laporan-user/index.blade.php b/resources/views/laporan-user/index.blade.php index 5f2e629..dae9788 100644 --- a/resources/views/laporan-user/index.blade.php +++ b/resources/views/laporan-user/index.blade.php @@ -9,7 +9,7 @@
-

Laporan User Pemohon

+

Laporan User Penilai

@@ -49,7 +49,7 @@ Terapkan Filter - + Export to Excel @@ -77,132 +77,37 @@ Nomor Registrasi
- Tanggal Permohonan - - Cabang + + Nama Debitur + Pemohon - CIF - - - Nama Debitur - - - Jenis Penilaian + Tgl Terima - Tujuan Penilaian - - - Jenis Fasilitas Kredit - - - Jenis Agunan + Penilai - Alamat Agunan + Tgl Laporan - Bukti Kepemilikan - - - Nama Pemilik - - - Luas Tanah - - - Nilai Tanah - - - Luas Bangunan - - - Nilai Bangunan - - - Nilai NJOP - - - Nilai Pasar Wajar - - - Nilai Likuidasi - - - Tanggal Dokumen Diterima - - - Tanggal SPK - - - Nomor SPK - - - Tanggal Rencana Kunjungan - - - Tanggal Kunjungan - - - Tanggal Delivered - - - Jangka Waktu SLA - - - Tanggal Laporan - - - Tanggal Review - - - Nama Penilai - - - Nama Team Leader - - - Saran - - - Catatan + Nilai Pasar Wajar