data = $data; $this->$start_date = $start_date; $this->end_date = $end_date; $this->year = date('Y', strtotime($start_date)); if($month == '01'){ $this->title = 'JAN'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 31/'.$month.'/'.$this->year; }else if($month == '02'){ $this->title = 'FEB'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 28/'.$month.'/'.$this->year; }else if($month == '03'){ $this->title = 'MAC'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 31/'.$month.'/'.$this->year; }else if($month == '04'){ $this->title = 'APRIL'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 30/'.$month.'/'.$this->year; }else if($month == '05'){ $this->title = 'MEI'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 31/'.$month.'/'.$this->year; }else if($month == '06'){ $this->title = 'JUN'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 30/'.$month.'/'.$this->year; }else if($month == '07'){ $this->title = 'JULY'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 31/'.$month.'/'.$this->year; }else if($month == '08'){ $this->title = 'OGOS'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 31/'.$month.'/'.$this->year; }else if($month == '09'){ $this->title = 'SEPT'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 30/'.$month.'/'.$this->year; }else if($month == '10'){ $this->title = 'OKT'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 30/'.$month.'/'.$this->year; }else if($month == '11'){ $this->title = 'NOV'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 30/'.$month.'/'.$this->year; }else if($month == '12'){ $this->title = 'DIS'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN 01/'.$month.'/'.$this->year.' HINGGA 31/'.$month.'/'.$this->year; }else if($month == 'All'){ $this->title = 'ALL'; $this->subtitle = 'LAPORAN PENGELUARAN KOMPAUN MENGIKUT KESALAHAN BERDASARKAN TARIKH KOMPAUN '.date('d/m/Y', strtotime($start_date)).' HINGGA '.date('d/m/Y', strtotime($end_date)); } } public function collection() { return collect($this->data); } public function headings(): array { return [ 'BIL', 'KESALAHAN', 'JUMLAH KOMPAUN KELUAR', 'AMAUN KOMPAUN (RM)', 'JUMLAH BAYAR', 'AMAUN BAYAR (RM)', 'JUMLAH KOMPAUN BELUM BAYAR', 'AMAUN TUNGGAKAN (RM)', 'KOMPAUN BATAL', 'AMAUN BATAL (RM)', 'KOMPAUN KURANG', 'AMAUN KURANG (RM)', ]; } public function title(): string { return $this->title; } public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { $column = ['C','D','E','F','G','H','I','J','K','L','M']; foreach ($column as $key => $c) { $event->sheet->getDelegate()->getColumnDimension($c)->setWidth(8.43); } $event->sheet->getDelegate()->getColumnDimension('B')->setWidth(52); // set up a style array for cell formatting $style_bold_text_center = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 8, 'name' => 'Arial' ], ]; $style_bold_text_left = [ 'alignment' => [ 'horizontal' => 'left', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 8, 'name' => 'Arial' ] ]; $style_normal_text_left = [ 'alignment' => [ 'horizontal' => 'left', 'vertical' => 'center', ], 'font' => [ 'bold' => false, 'size' => 8, 'name' => 'Arial' ] ]; $style_normal_text_center = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => false, 'size' => 8, 'name' => 'Arial' ] ]; $style_border = [ 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_MEDIUM, 'color' => ['argb' => '000000'], ], ], ]; // at row 1, insert 2 rows $event->sheet->insertNewRowBefore(1, 2); // merge cells for full-width $event->sheet->mergeCells('A1:L1'); $event->sheet->mergeCells('A2:L2'); // assign cell values $event->sheet->setCellValue('A1', $this->subtitle); $event->sheet->setCellValue('A2',''); // last column as letter value (e.g., D) if($this->data != null){ $last_column = Coordinate::stringFromColumnIndex(count($this->data[0])); $second_last_column = Coordinate::stringFromColumnIndex(count($this->data[0])-1); // calculate last row + 1 (total results + header rows + column headings row + new row) $last_row = count($this->data) + 2 + 1 + 1 + 2; $event->sheet->setCellValue(sprintf('B%d',$last_row-2), 'JUMLAH'); $event->sheet->setCellValue(sprintf('C%d',$last_row-2), '=SUM(C4:C'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('D%d',$last_row-2), '=SUM(D4:D'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('E%d',$last_row-2), '=SUM(E4:E'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('F%d',$last_row-2), '=SUM(F4:F'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('G%d',$last_row-2), '=SUM(G4:G'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('H%d',$last_row-2), '=SUM(H4:H'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('I%d',$last_row-2), '=SUM(I4:I'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('J%d',$last_row-2), '=SUM(J4:J'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('K%d',$last_row-2), '=SUM(K4:K'.($last_row-3).')'); $event->sheet->setCellValue(sprintf('L%d',$last_row-2), '=SUM(L4:L'.($last_row-3).')'); for($i = 0; $i < count($this->data); $i++){ $event->sheet->setCellValue(sprintf('A%d',$i+4), $i+1); $event->sheet->setCellValue(sprintf('H%d',$i+4), '=D'.($i+4).'-F'.($i+4).'-L'.($i+4)); } // assign cell styles $event->sheet->getStyle('A1:A2')->applyFromArray($style_bold_text_center); $event->sheet->getStyle(sprintf('A3:L3',$last_column))->applyFromArray($style_bold_text_center); $event->sheet->getStyle(sprintf('A3:L3',$last_column))->getAlignment()->setWrapText(true); $event->sheet->getStyle(sprintf('B4:B%d',($last_row-2)))->getAlignment()->setWrapText(true); $event->sheet->getStyle(sprintf('A4:A%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('B4:B%d',($last_row-2)))->applyFromArray($style_normal_text_left); $event->sheet->getStyle(sprintf('C4:C%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('D4:D%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('E4:E%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('F4:F%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('G4:G%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('H4:H%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('I4:I%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('J4:J%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('K4:K%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('L4:L%d',($last_row-2)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('B%d:L%d',($last_row-2),($last_row-2)))->applyFromArray($style_bold_text_center); //assign border styles $event->sheet->getStyle(sprintf('A3:A%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('B3:B%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('C3:C%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('D3:D%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('E3:E%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('F3:F%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('G3:G%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('H3:H%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('I3:I%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('J3:J%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('K3:K%d',($last_row-2)))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('L3:L%d',($last_row-2)))->applyFromArray($style_border); } }, ]; } }