| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- <?php
- namespace App\Exports;
-
- use Maatwebsite\Excel\Concerns\FromCollection;
- use Maatwebsite\Excel\Concerns\WithHeadings;
- use Maatwebsite\Excel\Concerns\WithTitle;
- use Maatwebsite\Excel\Concerns\ShouldAutoSize;
- use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
- use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
-
- use Maatwebsite\Excel\Concerns\WithEvents;
- use Maatwebsite\Excel\Events\BeforeExport;
- use Maatwebsite\Excel\Events\AfterSheet;
-
- use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
-
- class FaultyStatisticSheet implements FromCollection, WithHeadings, WithTitle, WithEvents, WithStrictNullComparison, WithCalculatedFormulas
- {
- protected $data, $year, $title, $subtitle, $start_date, $end_date;
-
- public function __construct($data, $month, $start_date, $end_date)
- {
- $this->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);
- }
-
- },
- ];
- }
- }
|