data = $data; $this->headerInfo = $headerInfo; } public function collection() { $rows = []; $nomor = 1; $fields = [ 'jenis_aset' => 'Jenis Aset', 'luas_tanah' => 'Luas Tanah (M²)', 'luas_bangunan' => 'Luas Bangunan (M²)', 'harga' => 'Harga Transaksi/Penawaran', 'tanggal_penawaran' => 'Tanggal Penawaran/Transaksi', 'diskon' => 'Diskon %', 'esitmasi_harga' => 'Esitmasi Harga Transaksi (Rp)', 'no_telepon' => 'Telepon Contact Person', 'nama_nara_sumbr' => 'Nama Nara Sumber', 'status_nara_sumbr' => 'Status Nara Sumber', 'waktu_transaksi' => 'Waktu Transaksi/Penawaran', 'alamat' => 'Alamat Titik Gps', 'jalan' => 'Jalan', 'desa' => 'Desa/Kelurahan', 'kecamatan' => 'Kecamatan', 'kabupaten' => 'Kabupaten', 'provinsi' => 'Provinsi', 'jarak_pembanding' => 'Jarak Pembanding dengan Objek', 'elevasi' => 'Estimasi Ranking Tanah', 'peruntukan' => 'Estiamsi Rangkin Bangunan' ]; foreach ($fields as $key => $label) { $rows[] = [ $nomor++, $label, $this->data['objek'][$key] ?? '', $this->data['pembanding1'][$key] ?? '', $this->data['pembanding2'][$key] ?? '', $this->data['pembanding3'][$key] ?? '' ]; } // B. Perhitungan Penyesuaian $rows[] = ['']; $rows[] = ['']; $rows[] = ['B. Estimasi Nilai Tanah Pembanding dengan Teknik Penyisaan Tanah untuk mendapatkan per meter persegi estimasi Nilai Tanah Pembanding']; $rows[] = ['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3']; $nostimasi = 1; $filedEstimasi = [ 'estimasi' => 'Estimasi Biaya Pengganti Baru Bangunan (Rp)', 'estimasi_spl' => 'Estimasi Biaya Pengganti Baru SPL (Rp)', 'penyusutan' => 'Penyusutan Fisik Banguna', 'a' => 'a. rincian ttipe bangunan (MAPPI)', 'b' => 'b. umur ekonomis (MAPPI)', 'c' => 'c. estimasi Tahun tahun visual dengan mempertimbangkan renovasi', 'd' => 'd. Sehingga sisa umur efektif', 'e' => 'e. kondisi bagunan', 'f' => 'f.sehinggan penyusutan fisik', 'penyusutan_fungsi' => 'Penyusutan fungsi Bangunan (%)', 'penyusutan_ekonomi' => 'Penyusutan Ekonomi Bangunan (%)', 'total_penyusutan' => 'Total Penyusutan (%)', 'estimasi_nilai' => 'Estimasi Nilai Bangunan dan SPL (Rp)', 'estimasi_tanah' => 'Estimasi Nilai Tanah Pembanding (Rp)', 'estimasi_nilai' => 'Estimasi Nilai Tanah Pembanding (Rp)', ]; foreach ($filedEstimasi as $key => $label) { $rows[] = [ $nostimasi++, $label, $this->data['estimasi'][$key] ?? '', $this->data['estimasi1'][$key] ?? '', $this->data['estimasi2'][$key] ?? '', $this->data['estimasi3'][$key] ?? '' ]; } $row[] = ['']; $row[] = ['']; $rows[] = ['INDIKASI NILAI TANAHATAS OBJEK PENILAIAN']; $indikasi=[ 'luas_tanah' => 'Luas Tanah ', 'indikasi_per' => 'INDIKASI TANAH PER M2 (RP/M2)', 'indikasi_total' => 'INDIKASI TANAH TOTAL(RP)', 'varian' => 'VARIANT(%)', ]; foreach ($indikasi as $key => $label) { $rows[] = [ $label, $this->data['indikasi'][$key] ?? '', ]; } // C. Peta Lokasi $rows[] = ['']; $rows[] = ['']; $rows[] = ['C. Peta Lokasi']; $rows[] = [$this->data['foto_objek']['foto_objek_peta'] ?? '']; // D. Foto Objek dan Data Pembanding $rows[] = ['']; $rows[] = ['D. Foto Objek dan Data Pembanding']; $rows[] = [ $this->data['foto_objek1']['foto_objek'] ?? '', $this->data['foto_objek2']['foto_objek'] ?? '', '', '', '' ]; // E. Foto Objek $rows[] = ['']; $rows[] = ['E. Foto Objek']; $rows[] = [ $this->data['foto']['foto_objek'] ?? '', $this->data['foto']['foto_objek'] ?? '', '', '', '' ]; return collect($rows); } public function headings(): array { return [ ['KERTAS KERJA PENILAIAN'], ['Pendekatan Pasar'], ['Metode Perbandingan Data Pasar'], ['Tanggal Penilaian: ' . ($this->headerInfo['tanggal_penilaian'] ?? '')], ['Nama Pemilik Aset: ' . ($this->headerInfo['nama_pemilik'] ?? '')], ['Nama Pemberi Tugas: ' . ($this->headerInfo['nama_pemberi_tugas'] ?? '')], ['Lokasi: ' . ($this->headerInfo['lokasi_lengkap'] ?? '')], ['Nama Debitur: ' . ($this->headerInfo['nama_debitur'] ?? '')], [''], ['A. INFORMASI UMUM'], ['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3'] ]; } public function registerEvents(): array { return [ AfterSheet::class => function (AfterSheet $event) { // Styling untuk header utama // Styling untuk setiap section header $sectionRows = [10, 34, 56, 46, 52]; // Sesuaikan dengan posisi setiap section foreach ($sectionRows as $row) { $event->sheet->getStyle("A{$row}:F{$row}")->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setRGB('E2EFDA'); } // Merge cells untuk headers $event->sheet->mergeCells('A1:E1'); $event->sheet->mergeCells('A2:E2'); $event->sheet->mergeCells('A4:E4'); $event->sheet->mergeCells('A5:E5'); $event->sheet->mergeCells('A6:E6'); $event->sheet->mergeCells('A7:E7'); $event->sheet->mergeCells('A8:E8'); // Alignment $event->sheet->getStyle('A1:E8')->getAlignment() ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT); } ]; } public function columnWidths(): array { return [ 'A' => 5, 'B' => 30, 'C' => 30, 'D' => 30, 'E' => 30, 'F' => 30, ]; } public function styles(Worksheet $sheet) { return [ // Style for the main header // Style for section headers 10 => ['font' => ['bold' => true]], // A. Informasi Umum 34 => ['font' => ['bold' => true]], // B. Estimasi Nilai Tanah 35 => ['font' => ['bold' => true]], // C. Peta Lokasi 57 => ['font' => ['bold' => true]], // D. Foto Objek dan Pembanding 60 => ['font' => ['bold' => true]], // E. Foto Objek // Default styling for columns 'A:J' => [ 'alignment' => ['horizontal' => 'left', 'vertical' => 'center'], 'wrapText' => true, ], // Style for other sections (like photo and map sections) // Style for the other headers 'A11:F11' => [ 'font' => ['bold' => true], 'fill' => ['fillType' => 'solid', 'color' => ['rgb' => 'E2EFDA']], 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN ] ] ], 'A12:F31' => [ 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN ] ] ], 'A35:F35' => [ 'font' => ['bold' => true], 'fill' => ['fillType' => 'solid', 'color' => ['rgb' => 'E2EFDA']], 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN ] ] ], 'A35:F49' => [ 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN ] ] ], // end header ]; } }