Prv8 Shell
Server : Apache
System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64
User : matalashes ( 1004)
PHP Version : 8.1.29
Disable Function : NONE
Directory :  /home/matalashes/.trash/app/Controllers/Report/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/matalashes/.trash/app/Controllers/Report/Reportservice.php
<?php

namespace App\Controllers\Report;

use \App\Controllers\Ps\PS_Controller;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

class Reportservice extends PS_Controller
{
    private $id_column_name = '';

    public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
    {
        parent::initController($request, $response, $logger); // TODO: Change the autogenerated stub
        parent::setPageTitleBreadcrumb(true, 'Laporan Service', array('l1' => 'Laporan', 'l2' => 'Laporan Service'));
        parent::setURLActionTable($this->class);
        parent::setContentView($this->class);
        parent::setBaseContAndModel($this->class, 'ReportService');
        $this->validation_input = $this->validation->setRules([
            "role_name" => ['label' => 'Role', 'rules' => 'required']
        ]);
    }

    public function index()
    {
        parent::filterStoreLoad();
        $this->session->set('trash', false);
        $this->session->set('keyword', '');
        $start = date('Y-m-01');
        $end = date('Y-m-t');
        $show = false;

        if ($_POST) {
            $start = $this->request->getVar('start');
            $end = $this->request->getVar('end');
            if ($_POST['rpt'] == 'export') {
                $this->export($start, $end);
            }
            if ($_POST['rpt'] == 'show') {
                 $show = true;
            }
        }
        $dtl = new \App\Models\ReportService();
        $service = $dtl->get_report_store($start,$end);

        // $temp = array();
        // $result = array();
        // foreach ($pembelian as $d) {
        //     $json = json_decode($d->pf_item);
        //     $sum = 0;
        //     foreach($json as $j){
        //         $o = $j->item;
        //         $v = $j->qty;
        //         $p = $j->price;
        //         $sum += $v*$p;

        //         $data = array(
        //             'item' => $o,
        //             'qty' => $v,
        //             'price' => $p,
        //         );
        //         array_push($temp, $data); 

        //     }
        // }
        // foreach ($temp as $sub_array) {
        //     if (empty($result[$sub_array['item']])) {
        //         $result[$sub_array['item']] = $sub_array;
        //         $result[$sub_array['item']]['price'] = $sub_array['qty']* $sub_array['price'];
        //     } else {
        //         $result[$sub_array['item']]['qty'] += $sub_array['qty'];
        //         $result[$sub_array['item']]['price'] += $sub_array['qty']*$sub_array['price'];
        //     }
        // }
        // echo json_encode($result);
        
        // $this->view_data['_data'] = $result;
        $this->view_data['show'] = $show;
        $this->view_data['_service'] = $service;
        $this->view_data['start'] = $start;
        $this->view_data['end'] = $end;
        $this->render->viewAdmin($this->content_views['table_view'], $this);
    }

    public function export($start, $end)
    {
        $spreadsheet = new Spreadsheet();
        $spreadsheet->getDefaultStyle()->getFont()->setName('Arial Narrow');
        $spreadsheet->getDefaultStyle()->getFont()->setSize(10);
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setTitle('Laporan Penjualan Service');
        $sheet->mergeCells('A1:G1');
        $sheet->setCellValue('A1', 'Laporan Penjualan Service '. date("d M Y", strtotime($start)) . ' - ' . date("d M Y", strtotime($end)));
        $sheet->setCellValue('A2', 'Tgl');
        $sheet->setCellValue('B2', 'No Faktur');
        $sheet->setCellValue('C2', 'Konsumen');
        $sheet->setCellValue('D2', 'Barang/Jasa');
        $sheet->setCellValue('E2', 'Jml Penjualan');
        $sheet->setCellValue('F2', 'Harga Satuan');
        $sheet->setCellValue('G2', 'Total');
        $row = 3;
        $no = 1;
        $total = 0;
        $dtl = new \App\Models\ReportService();
        $data = $dtl->get_report_store($start,$end);
        foreach ($data as $d) {
            $created_at = date("d M Y H:i", strtotime($d->created_at ?? ''));
            $ps_customer = $d->ps_customer;
            $json = json_decode($d->ps_item_wo2);
            foreach($json as $j){
                $o = $j->item;
                $os = $j->item_service;
                $q = $j->qty;
                $p = $j->price;
                $v = $j->mekanik;
                $s = $j->result;

                if(isset($o) && $o != ''){
                    $barang = new  \App\Models\MasterBarang();
                    $_item = $barang->find($o);
                    $_item_name = $_item->mb_merk.'-'.$_item->mb_name;
                }else{
                    $service = new  \App\Models\MasterService();
                    $_item = $service->find($os);  
                    $_item_name = $_item->msc_type;
                }

                $sheet->setCellValue('A' . $row, $created_at);
                $sheet->setCellValue('B' . $row, $d->ps_no);
                $sheet->setCellValue('C' . $row, $ps_customer);
                $sheet->setCellValue('D' . $row, $_item_name);
                $sheet->setCellValue('E' . $row, $q);
                $sheet->setCellValue('F' . $row, $p);
                $sheet->setCellValue('G' . $row, $q*$p);
                $total += $q*$p;
                $no++;
                $row++;
                if(!empty($created_at)){
                    $created_at = '';
                }
                if(!empty($ps_customer)){
                    $ps_customer = '';
                }
            }
        }
        $sheet->mergeCells('A' . $row . ':F' . $row);
        $sheet->setCellValue('A' . $row, 'Total ');
        $sheet->setCellValue('G' . $row, $total);

        $this->setCenter($sheet, 1, 2, 'A', 'G');
        $this->setBold($sheet, $row, $row, 'A', 'G');
        $this->setBold($sheet, 1, 2, 'A', 'G');
        $this->setBorderAutoFit($sheet, 1, $row, 0, 'A', 'G');
        $filename = 'Laporan Penjualan Service - ' . $start . ' - ' . $end;
        $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $filename . '.xls"');
        header('Cache-Control: max-age=0');
//            ob_end_clean();
        $writer->save('php://output');

    }

    public function setBorderAutoFit($sheet, $start, $row, $minus, $l_start, $l_end, $ls_start = '', $ls_end = '', $repeat = 0)
    {
        $styleArray = array(
            'borders' => [
                'top' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
                'left' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
                'right' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
                'bottom' => [
                    'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                ],
            ],
        );
        $temp = $l_start;
        foreach (range($l_start, $l_end) as $letter) {
            for ($m = $start; $m <= $row - $minus; $m++) {
                $sheet->getStyle($letter . $m)->applyFromArray($styleArray);
            }
        }

        $l_start = $temp;
        foreach (range($l_start, $l_end) as $columnID) {
            $sheet->getColumnDimension($columnID)
                ->setAutoSize(true);
        }

        unset($styleArray);
    }

    public function setBold($sheet, $row, $end, $l_start, $l_end, $ls_start = '', $ls_end = '', $repeat = 0)
    {
        $style = array(
            'font' => [
                'bold' => true,
            ],
        );
        foreach (range($l_start, $l_end) as $letter) {
            for ($m = $row; $m <= $end; $m++) {
                $sheet->getStyle($letter . $m)->applyFromArray($style);
            }
        }
        if ($ls_start != '') {
            foreach (range($l_start, $l_end) as $letter) {
                $sheet->getStyle($letter . $row)->applyFromArray($style);

            }
            foreach (range($l_start, $l_end) as $letter1) {
                foreach (range($ls_start, $ls_end) as $letter2) {
                    $sheet->getStyle($letter1 . $letter2 . $row)->applyFromArray($style);
                }
                break;
            }
            foreach (range($l_start, $l_end) as $letter) {
                $sheet->getStyle($letter . $end)->applyFromArray($style);
            }
            if ($repeat == 0) {
                foreach (range($l_start, $l_end) as $letter1) {
                    foreach (range($ls_start, $ls_end) as $letter2) {
                        $sheet->getStyle($letter1 . $letter2 . $row)->applyFromArray($style);
                    }
                    break;
                }
                foreach (range($l_start, $l_end) as $letter1) {
                    foreach (range($ls_start, $ls_end) as $letter2) {
                        $sheet->getStyle($letter1 . $letter2 . $end)->applyFromArray($style);
                    }
                    break;
                }
            } else {
                for ($i = 0; $i <= $repeat; $i++) {
                    foreach (range($l_start, $l_end) as $letter1) {
                        foreach (range($ls_start, $ls_end) as $letter2) {
                            $sheet->getStyle($letter1 . $letter2 . $row)->applyFromArray($style);
                        }
                        break;
                    }
                    foreach (range($l_start, $l_end) as $letter1) {
                        foreach (range($ls_start, $ls_end) as $letter2) {
                            $sheet->getStyle($letter1 . $letter2 . $end)->applyFromArray($style);
                        }
                        break;
                    }
                    $l_start++;
                }
            }
        }
    }

    public function setCenter($sheet, $row, $end, $l_start, $l_end, $ls_start = '', $ls_end = '', $repeat = 0)
    {
        $style = array(
            'alignment' => array(
                'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
            )
        );
        foreach (range($l_start, $l_end) as $letter) {
            for ($m = $row; $m <= $end; $m++) {
                $sheet->getStyle($letter . $m)->applyFromArray($style);
            }
        }
        if ($ls_start != '') {
            foreach (range($l_start, $l_end) as $letter) {
                $sheet->getStyle($letter . $row)->applyFromArray($style);

            }
            foreach (range($l_start, $l_end) as $letter1) {
                foreach (range($ls_start, $ls_end) as $letter2) {
                    $sheet->getStyle($letter1 . $letter2 . $row)->applyFromArray($style);
                }
                break;
            }
            foreach (range($l_start, $l_end) as $letter) {
                $sheet->getStyle($letter . $end)->applyFromArray($style);

            }
            if ($repeat == 0) {
                foreach (range($l_start, $l_end) as $letter1) {
                    foreach (range($ls_start, $ls_end) as $letter2) {
                        $sheet->getStyle($letter1 . $letter2 . $row)->applyFromArray($style);
                    }
                    break;
                }
                foreach (range($l_start, $l_end) as $letter1) {
                    foreach (range($ls_start, $ls_end) as $letter2) {
                        $sheet->getStyle($letter1 . $letter2 . $end)->applyFromArray($style);
                    }
                    break;
                }
            } else {
                for ($i = 0; $i <= $repeat; $i++) {
                    foreach (range($l_start, $l_end) as $letter1) {
                        foreach (range($ls_start, $ls_end) as $letter2) {
                            $sheet->getStyle($letter1 . $letter2 . $row)->applyFromArray($style);
                        }
                        break;
                    }
                    foreach (range($l_start, $l_end) as $letter1) {
                        foreach (range($ls_start, $ls_end) as $letter2) {
                            $sheet->getStyle($letter1 . $letter2 . $end)->applyFromArray($style);
                        }
                        break;
                    }
                    $l_start++;
                }
            }
        }
    }

    public function setNumber($sheet, $row, $l_start, $l_end, $ls_start = '', $ls_end = '')
    {
        foreach (range($l_start, $l_end) as $letter) {
            $sheet->getStyle($letter . $row)->getNumberFormat()
                ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1);

        }
        if ($ls_start != '') {
            foreach (range('A', $l_end) as $letter1) {
                foreach (range($ls_start, $ls_end) as $letter2) {
                    $sheet->getStyle($letter1 . $letter2 . $row)->getNumberFormat()
                        ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1);
                }
                break;
            }
        }
    }

}


haha - 2025