Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender
This commit is contained in:
@@ -5,10 +5,16 @@
|
|||||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
use Maatwebsite\Excel\Concerns\WithMapping;
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithTitle;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||||
|
use Maatwebsite\Excel\Events\AfterSheet;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\Branch;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
class LaporanPenilaianJaminanExport implements FromCollection, WithHeadings, WithMapping
|
class LaporanPenilaianJaminanExport implements FromCollection, WithHeadings, WithMapping, WithTitle, WithCustomStartCell, WithEvents
|
||||||
{
|
{
|
||||||
protected $request;
|
protected $request;
|
||||||
|
|
||||||
@@ -56,8 +62,11 @@
|
|||||||
return $query->with(['debiture.branch'])->get();
|
return $query->with(['debiture.branch'])->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected $rowNumber = 0;
|
||||||
|
|
||||||
public function map($permohonan): array
|
public function map($permohonan): array
|
||||||
{
|
{
|
||||||
|
$this->rowNumber++;
|
||||||
$luas_tanah = 0;
|
$luas_tanah = 0;
|
||||||
$luas_bangunan = 0;
|
$luas_bangunan = 0;
|
||||||
$nilai_tanah = 0;
|
$nilai_tanah = 0;
|
||||||
@@ -77,7 +86,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
$permohonan->id,
|
$this->rowNumber,
|
||||||
$permohonan->nomor_registrasi,
|
$permohonan->nomor_registrasi,
|
||||||
$permohonan->tanggal_permohonan,
|
$permohonan->tanggal_permohonan,
|
||||||
$permohonan->debiture->branch->name,
|
$permohonan->debiture->branch->name,
|
||||||
@@ -92,8 +101,10 @@
|
|||||||
formatRupiah($nilai_tanah, 2),
|
formatRupiah($nilai_tanah, 2),
|
||||||
$luas_bangunan . ' m²',
|
$luas_bangunan . ' m²',
|
||||||
formatRupiah($nilai_bangunan, 2),
|
formatRupiah($nilai_bangunan, 2),
|
||||||
'', // tanggal_laporan
|
($permohonan->approval_dd_at || $permohonan->approval_eo_at) ?
|
||||||
'', // tanggal_review
|
formatTanggalIndonesia($permohonan->approval_dd_at ?? $permohonan->approval_eo_at) : '',
|
||||||
|
$permohonan->penilaian->tanggal_kunjungan ?
|
||||||
|
formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '',
|
||||||
formatRupiah($npw, 2),
|
formatRupiah($npw, 2),
|
||||||
formatRupiah($nilai_liquidasi, 2),
|
formatRupiah($nilai_liquidasi, 2),
|
||||||
$permohonan->penilaian->_user_penilai->userPenilaiTeam->name,
|
$permohonan->penilaian->_user_penilai->userPenilaiTeam->name,
|
||||||
@@ -103,7 +114,7 @@
|
|||||||
public function headings(): array
|
public function headings(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'ID',
|
'No',
|
||||||
'Nomor Registrasi',
|
'Nomor Registrasi',
|
||||||
'Tanggal Permohonan',
|
'Tanggal Permohonan',
|
||||||
'Cabang',
|
'Cabang',
|
||||||
@@ -123,4 +134,105 @@
|
|||||||
'Nama Penilai',
|
'Nama Penilai',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function title(): string
|
||||||
|
{
|
||||||
|
return 'Laporan Penilaian Jaminan';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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:R1');
|
||||||
|
$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:R2');
|
||||||
|
$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 . ':R' . $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
|
||||||
|
foreach(range('A', $sheet->getHighestColumn()) as $column) {
|
||||||
|
$sheet->getColumnDimension($column)->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);
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,8 +122,8 @@
|
|||||||
'nilai_tanah' => formatRupiah($nilai_tanah,2),
|
'nilai_tanah' => formatRupiah($nilai_tanah,2),
|
||||||
'luas_bangunan' => $luas_bangunan . ' m²',
|
'luas_bangunan' => $luas_bangunan . ' m²',
|
||||||
'nilai_bangunan' => formatRupiah($nilai_bangunan,2),
|
'nilai_bangunan' => formatRupiah($nilai_bangunan,2),
|
||||||
'tanggal_laporan' => '',
|
'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
||||||
'tanggal_review' => '',
|
'tanggal_review' => $permohonan->penilaian->tanggal_kunjungan ?? '',
|
||||||
'nilai_pasar_wajar' => formatRupiah($npw,2),
|
'nilai_pasar_wajar' => formatRupiah($npw,2),
|
||||||
'nilai_likuidasi' => formatRupiah($nilai_liquidasi,2),
|
'nilai_likuidasi' => formatRupiah($nilai_liquidasi,2),
|
||||||
'nama_penilai' => $permohonan->penilaian->_user_penilai->userPenilaiTeam->name,
|
'nama_penilai' => $permohonan->penilaian->_user_penilai->userPenilaiTeam->name,
|
||||||
|
|||||||
17
module.json
17
module.json
@@ -81,6 +81,23 @@
|
|||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
"senior-officer"
|
"senior-officer"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Laporan Pernilaan Jaminan",
|
||||||
|
"path": "laporan-penilaian-jaminan",
|
||||||
|
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": [
|
||||||
|
"administrator",
|
||||||
|
"pemohon-ao",
|
||||||
|
"pemohon-eo",
|
||||||
|
"admin",
|
||||||
|
"DD Appraisal",
|
||||||
|
"EO Appraisal",
|
||||||
|
"senior-officer"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"otorisator": [
|
"otorisator": [
|
||||||
|
|||||||
Reference in New Issue
Block a user