| 
				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.bak.13/Controllers/Report/  | 
Upload File :  | 
<?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 Reportmutasihasilproduksi 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, 'Mutasi Hasil Produksi', array('l1' => 'Laporan', 'l2' => 'Mutasi Hasil Produksi'));
        parent::setURLActionTable($this->class);
        parent::setContentView($this->class);
        parent::setBaseContAndModel($this->class, 'ReportMutasibahanbaku');
        $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');
        $barangId = '';
        $show = false;
        if ($_POST) {
            $start = $this->request->getVar('start');
            $end = $this->request->getVar('end');
            $barangId = $this->request->getVar('item');
            if ($_POST['rpt'] == 'export') {
                $this->export($start, $end, $barangId);
            }            
            if ($_POST['rpt'] == 'exportpdf') {
                $this->exportpdf($start, $end, $barangId);
            }
            if ($_POST['rpt'] == 'show') {
                 $show = true;
            }
        }
        
        $dtl = new \App\Models\MasterBulumata();
        $data = $dtl->where('mbm_id', $barangId)->first();
        $barang = new  \App\Models\MasterBulumata();
        $this->view_data['_barang'] = $barang->where('deleted_at', null)->findAll();
        $this->view_data['show'] = $show;
        $this->view_data['data'] = $data;
        $this->view_data['start'] = $start;
        $this->view_data['end'] = $end;
        $this->view_data['barangId'] = $barangId;
        $this->render->viewAdmin($this->content_views['table_view'], $this);
    }
    public function exportpdf($start, $end, $barang)
    {
        $dtl = new \App\Models\MasterBulumata();
        $data = $dtl->where('mbm_id', $barang)->first();
        $barang = new  \App\Models\MasterBulumata();
        $this->view_data['_barang'] = $barang->where('deleted_at', null)->findAll();
        $this->view_data['data'] = $data;
        $this->view_data['start'] = $start;
        $this->view_data['end'] = $end;
                
        $html = view('admin/pages/custom/report/reportmutasihasilproduksi/printpdf', $this->view_data);
        $filename = 'Laporan_mutasi_hasil_produksi_' . time().'.pdf';
        $mpdf = new \Mpdf\Mpdf(['orientation' => 'L', 'mode' => 'utf-8', 'format' => [215.9, 330]]);
        $mpdf->WriteHTML($html);
        $this->response->setHeader('Content-Type', 'application/pdf');
        $mpdf->Output($filename, 'D');
    }
       public function export($start, $end, $barang)
    {
        $spreadsheet = new Spreadsheet();
        $spreadsheet->getDefaultStyle()->getFont()->setName('Arial Narrow');
        $spreadsheet->getDefaultStyle()->getFont()->setSize(10);
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setTitle('Laporan Mutasi Hasil Produksi');
        $sheet->mergeCells('A1:M1');
        $sheet->setCellValue('A1', 'Laporan Mutasi Hasil Produksi');
        $sheet->mergeCells('A2:A3');
        $sheet->setCellValue('A2', 'No');
        $sheet->mergeCells('B2:B3');
        $sheet->setCellValue('B2', 'Kode FGI');
        $sheet->mergeCells('C2:C3');
        $sheet->setCellValue('C2', 'FGI');
        $sheet->mergeCells('D2:D3');
        $sheet->setCellValue('D2', 'Satuan');
        $sheet->mergeCells('E2:E3');
        $sheet->setCellValue('E2', 'Saldo Awal');
        $sheet->mergeCells('F2:H2');
        $sheet->setCellValue('F2', 'Pemasukan');
        $sheet->setCellValue('F3', 'Tanggal F.PRO.02');
        $sheet->setCellValue('G3', 'Nomor F.PRO.02');
        $sheet->setCellValue('H3', 'Jumlah');
        $sheet->mergeCells('I2:K2');
        $sheet->setCellValue('I2', 'Pengeluaran');
        $sheet->setCellValue('I3', 'Tanggal F.IC.13');
        $sheet->setCellValue('J3', 'Nomor F.IC.13');
        $sheet->setCellValue('K3', 'Jumlah');
        $sheet->mergeCells('L2:L3');
        $sheet->setCellValue('L2', 'Saldo Akhir');
        $sheet->mergeCells('M2:M3');
        $sheet->setCellValue('M2', 'Gudang');
        $row = 4;
        $no = 1;
        $dtl = new \App\Models\MasterBulumata();
        $data = $dtl->where('mbm_id', $barang)->first();
        
 $no = 1;
                    $begin = new \DateTime($start);
                    $ends = new \DateTime($end);
                    $interval = \DateInterval::createFromDateString('1 day');
                    $period = new \DatePeriod($begin, $interval, $ends);
                    // for($i = $begin; $i <= $end; $i->modify('+1 day')){
                    $saldo = 0;
                    foreach ($period as $dt) {
                        $dateRange = $dt->format("Y-m-d");
                        $id = $data->mbm_id;
                        // //masuk dari sc
                        $qty_pemasukan = 0;
                        $npbdno = '';
                        $npbddate = '';
                        $fprono = '';
                        $frpodate = '';
                        $fgicno = '';
                        $fgicdate = '';
                        $datasc = new \App\Models\KirimBarangPro();
                        $_datasc = $datasc->where('deleted_at', null)
                        ->where('tkb_pro_status', 1)
                        ->where('tkb_pro_status_ic', 1)
                        ->where('date(created_at)', $dateRange)
                        ->findAll();
                        foreach($_datasc as $s){
                        // echo $s->tkb_pro_id.'-'.json_encode($s->tkb_pro_item);
                            $json = json_decode($s->tkb_pro_item);                           
                            foreach($json as $j){
                                $i = $j->bulumata;
                                // $b = $j->bulumata;
                                $q = $j->qty_bm;
                                if($id == $i){
                                    $qty_pemasukan = $q;
                                    $fprono = $s->tkb_pro_fpro_no;
                                    $frpodate = date("d/m/Y", strtotime($s->tkb_pro_fpro_date ?? ''));
                        $sheet->setCellValue('A' . $row, $no);
                        $sheet->setCellValue('B' . $row, $data->mbm_kode);
                        $sheet->setCellValue('C' . $row, $data->mbm_item);
                        $sheet->setCellValue('D' . $row, $data->mbm_satuan);
                         $saldoTemp = '-';
                        if($saldo > 0){
                            $saldoTemp = $saldo;
                        }
                        $sheet->setCellValue('E' . $row, $saldoTemp);
                        $sheet->setCellValue('F' . $row, $frpodate);
                        $sheet->setCellValue('G' . $row, $fprono);
                        $qty_pemasukanTemp = '-';
                        if($qty_pemasukan > 0){
                            $qty_pemasukanTemp = $qty_pemasukan;
                        }
                        $sheet->setCellValue('H' . $row, $qty_pemasukan);
                        $sheet->setCellValue('I' . $row, '-');
                        $sheet->setCellValue('J' . $row, '-');
                        $sheet->setCellValue('K' . $row, '-');
                        $saldo += $qty_pemasukan;
                        $saldoTemp = '-';
                        if($saldo > 0){
                            $saldoTemp = $saldo;
                        }
                        $sheet->setCellValue('L' . $row, $saldoTemp);
                        $sheet->setCellValue('M' . $row, 'PT Mahkota Tri Angjaya');
                        $no++;
                        $row++;
                    }
                }
            }
                        //pemasukan adjustment
                        $dataadjustadd = new \App\Models\MasterStokbulumata();
                        $_dataadjustadd = $dataadjustadd->where('deleted_at', null)
                            ->where('msb_stok >', 0)
                            ->where('is_adjusted', 1)
                            ->where('date(created_at)', $dateRange)
                            ->findAll();
                        foreach($_dataadjustadd as $s){
                            if($id == $s->mbm_id){
                                    $qty_pemasukan = $s->msb_stok;
                                    $sheet->setCellValue('A' . $row, $no);
                                    $sheet->setCellValue('B' . $row, $data->mbm_kode);
                                    $sheet->setCellValue('C' . $row, $data->mbm_item);
                                    $sheet->setCellValue('D' . $row, $data->mbm_satuan);
                                     $saldoTemp = '-';
                                    if($saldo > 0){
                                        $saldoTemp = $saldo;
                                    }
                                    $sheet->setCellValue('E' . $row, $saldoTemp);
                                    $sheet->setCellValue('F' . $row, '-');
                                    $sheet->setCellValue('G' . $row, '-');
                                    $qty_pemasukanTemp = '-';
                                    if($qty_pemasukan > 0){
                                        $qty_pemasukanTemp = $qty_pemasukan;
                                    }
                                    $sheet->setCellValue('H' . $row, $qty_pemasukan);
                                    $sheet->setCellValue('I' . $row, '-');
                                    $sheet->setCellValue('J' . $row, '-');
                                    $sheet->setCellValue('K' . $row, '-');
                                    $saldo += $qty_pemasukan;
                                    $saldoTemp = '-';
                                    if($saldo > 0){
                                        $saldoTemp = $saldo;
                                    }
                                    $sheet->setCellValue('L' . $row, $saldoTemp);
                                    $sheet->setCellValue('M' . $row, 'PT Mahkota Tri Angjaya');
                                    $no++;
                                    $row++;
                                }
                            }
                        $qty_pengeluaran = 0;
                        //pengeluaran adjustment
                        $dataadjustdec = new \App\Models\MasterStokbulumata();
                        $_dataadjustdec = $dataadjustdec->where('deleted_at', null)
                            ->where('msb_stok <', 0)
                            ->where('is_adjusted', 1)
                            ->where('date(created_at)', $dateRange)
                            ->findAll();
                        foreach($_dataadjustdec as $s){
                            if($id == $s->mbm_id){
                                $qty_pengeluaran = abs($s->msb_stok);
                                $sheet->setCellValue('A' . $row, $no);
                                $sheet->setCellValue('B' . $row, $data->mbm_kode);
                                $sheet->setCellValue('C' . $row, $data->mbm_item);
                                $sheet->setCellValue('D' . $row, $data->mbm_satuan);
                                 $saldoTemp = '-';
                                if($saldo > 0){
                                    $saldoTemp = $saldo;
                                }
                                $sheet->setCellValue('E' . $row, $saldo);
                                $sheet->setCellValue('F' . $row, '-');
                                $sheet->setCellValue('G' . $row, '-');
                                $sheet->setCellValue('H' . $row, '-');
                                $sheet->setCellValue('I' . $row, '-');
                                $sheet->setCellValue('J' . $row, '-');
                                $qty_pengeluaranTemp = '-';
                                if($qty_pengeluaran > 0){
                                    $qty_pengeluaranTemp = $qty_pengeluaran;
                                }
                                $sheet->setCellValue('K' . $row, $qty_pengeluaranTemp);
                                $saldo -= $qty_pengeluaran;
                                $saldoTemp = '-';
                                if($saldo > 0){
                                    $saldoTemp = $saldo;
                                }
                                $sheet->setCellValue('L' . $row, $saldoTemp);
                                $sheet->setCellValue('M' . $row, 'PT Mahkota Tri Angjaya');
                                $no++;
                                $row++;
                            }
                        }
                        //keluar ke pro
                        $datapro = new \App\Models\KirimBarangFgiIc();
                        $_datapro = $datapro->where('deleted_at', null)
                        ->where('tkb_fgiic_status', 1)
                        ->where('tkb_fgiic_status_mkt', 1)
                        ->where('tkb_fgiic_status_sc', 1)
                        ->where('date(created_at)', $dateRange)
                        ->findAll();
                        foreach($_datapro as $p){
                        // echo json_encode($p->tkb_fgiic_item);
                            $jsons = json_decode($p->tkb_fgiic_item);                           
                            foreach($jsons as $js){
                                $is = $js->barang;
                                $bm = $js->bulumata;
                                $qs = $js->qty_bm;
                                
                                $barang = $is;
                                // foreach($barang as $h){
                                    if($id == $bm){
                                        $qty_pengeluaran = (int)$qs;
                                        $fgicno = $p->tkb_fgiic_fic_no;
                                        $fgicdate = date("d/m/Y", strtotime($p->tkb_fgiic_fic_date ?? ''));
                        $sheet->setCellValue('A' . $row, $no);
                        $sheet->setCellValue('B' . $row, $data->mbm_kode);
                        $sheet->setCellValue('C' . $row, $data->mbm_item);
                        $sheet->setCellValue('D' . $row, $data->mbm_satuan);
                         $saldoTemp = '-';
                        if($saldo > 0){
                            $saldoTemp = $saldo;
                        }
                        $sheet->setCellValue('E' . $row, $saldo);
                        $sheet->setCellValue('F' . $row, '-');
                        $sheet->setCellValue('G' . $row, '-');
                        $sheet->setCellValue('H' . $row, '-');
                        $sheet->setCellValue('I' . $row, $fgicdate);
                        $sheet->setCellValue('J' . $row, $fgicno);
                        $qty_pengeluaranTemp = '-';
                        if($qty_pengeluaran > 0){
                            $qty_pengeluaranTemp = $qty_pengeluaran;
                        }
                        $sheet->setCellValue('K' . $row, $qty_pengeluaranTemp);
                        $saldo -= $qty_pengeluaran;
                        $saldoTemp = '-';
                        if($saldo > 0){
                            $saldoTemp = $saldo;
                        }
                        $sheet->setCellValue('L' . $row, $saldoTemp);
                        $sheet->setCellValue('M' . $row, 'PT Mahkota Tri Angjaya');
                        $no++;
                        $row++;
                    }
                // }
            }
        }
        }
        // $sheet->mergeCells('A' . $row . ':D' . $row);
        $this->setCenter($sheet, 1, 3, 'A', 'M');
        $this->setBold($sheet, $row, $row, 'A', 'M');
        $this->setBold($sheet, 1, 3, 'A', 'M');
        $this->setBorderAutoFit($sheet, 1, $row, 0, 'A', 'M');
        $filename = 'Laporan Mutasi Hasil Produksi - '. $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;
            }
        }
    }
}