$file, "filex" => $filex ]; } private function setup2(){ $file = SETUP_PATH.'excel/simpanan-akhir-tahun'.date('Y-m-d h:i:s').'.xlsx'; $filex = SETUP_PATH.'excel/simpplus.xlsx'; return [ "file" => $file, "filex" => $filex ]; } private function toArray($data = null, $name = ""){ $new = []; $start = 3; foreach ($data as $key => $n) { $e = ( array ) $n; $new[] = str_replace("{no}",$start+$key, $e[$name]); } return $new; } private function toArray2($data = null, $name = ""){ $new = []; $start = 4; foreach ($data as $key => $n) { $e = ( array ) $n; $new[] = str_replace("{no}",$start+$key, $e[$name]); } return $new; } public static function do($tahun = "2023",$type = "1"){ define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); ini_set('display_errors', 1); $setup = (new self)->setup(); if($type != "1"){ $setup = (new self)->setup2(); } $file = $setup['file']; $filex = $setup['filex']; $dataNama = []; $dataNama[] = [ "name" => "kode" ]; $dataNama[] = [ "name" => "nama" ]; $dataNama[] = [ "name" => "reg" ]; $dataNama[] = [ "name" => "usp1" ]; $dataNama[] = [ "name" => "usp2" ]; $dataNama[] = [ "name" => "usp3" ]; $dataNama[] = [ "name" => "bt" ]; $dataNama[] = [ "name" => "bn" ]; $dataNama[] = [ "name" => "pp" ]; $dataNama[] = [ "name" => "tot" ]; $dataNama[] = [ "name" => "bw" ]; $qr = " SELECT '{no}' `no` , '=SUM(F{no}:J{no})' jml , concat('\'',a.kode) kode , a.nama , if(a.kota = '', a.tgllahir, concat(a.kota,',',a.tgllahir)) temtala , a.jk , a.telp , a.alamat , a.unitkerja , a.masuk , ( ifnull(IF(b.kodesp = 'REG', b.pokok, 0 ),0) + ifnull(IF(b1.kodesp = 'USP1', b1.pokok, 0 ),0) + ifnull(IF(b2.kodesp = 'USP2', b2.pokok, 0 ),0) + ifnull(IF(b3.kodesp = 'USP3', b3.pokok, 0 ),0) + ifnull(IF(c.bank = 'cash', c.lunas, 0 ),0) + ifnull(bbw.total,0) + ifnull(d.lunas,0) ) `all` , ifnull(h.total,0) pdt , ifnull(IF(tk.kodesp = 'tk', tk.jumlah, 0 ),0) tk , ifnull(IF(sm.kodesp = 'sm', sm.jumlah, 0 ),0) sm , ifnull(IF(sw.kodesp = 'sw', sw.jumlah, 0 ),0) sw , ifnull(IF(sp.kodesp = 'sp', sp.jumlah, 0 ),0) sp , ifnull(IF(swp.kodesp = 'swp', swp.jumlah, 0 ),0) swp , ifnull(bbw.total,0) bw , ifnull(IF(b.kodesp = 'REG', b.pokok, 0 ),0) reg , ifnull(IF(b1.kodesp = 'USP1', b1.pokok, 0 ),0) usp1 , ifnull(IF(b2.kodesp = 'USP2', b2.pokok, 0 ),0) usp2 , ifnull(IF(b3.kodesp = 'USP3', b3.pokok, 0 ),0) usp3 , ifnull(IF(c.bank = 'cash', c.lunas, 0 ),0) bt , ifnull(IF(w.bank <> 'cash', w.lunas, 0 ),0) bn , ifnull(d.lunas,0) pp , '=SUM(C{no}:J{no})' tot FROM anggota a LEFT JOIN ( SELECT kode, kodesp, sum(if(dk = 'd', jumlah, jumlah * -1 )) jumlah FROM msimpan WHERE tgl LIKE '$tahun%' AND kodesp = 'sm' GROUP BY kode,kodesp ) sm ON sm.kode = a.kode LEFT JOIN ( SELECT kode, kodesp, sum(if(dk = 'd', jumlah, jumlah * -1 )) jumlah FROM msimpan WHERE tgl LIKE '$tahun%' AND kodesp = 'tk' GROUP BY kode,kodesp ) tk ON tk.kode = a.kode LEFT JOIN ( SELECT kode, kodesp, sum(if(dk = 'd', jumlah, jumlah * -1 )) jumlah FROM msimpan WHERE tgl LIKE '$tahun%' AND kodesp = 'sw' GROUP BY kode,kodesp ) sw ON sw.kode = a.kode LEFT JOIN ( SELECT kode, kodesp, sum(if(dk = 'd', jumlah, jumlah * -1 )) jumlah FROM msimpan WHERE tgl LIKE '$tahun%' AND kodesp = 'swp' GROUP BY kode,kodesp ) swp ON swp.kode = a.kode LEFT JOIN ( SELECT kode, kodesp, sum(if(dk = 'd', jumlah, jumlah * -1 )) jumlah FROM msimpan WHERE tgl LIKE '$tahun%' AND kodesp = 'sp' GROUP BY kode,kodesp ) sp ON sp.kode = a.kode LEFT JOIN ( SELECT kodesc kode, 'BW' kodesp, sum(kredit) jumlah FROM totsl WHERE kredit <> 0 GROUP BY kodesc ) bw ON bw.kode = a.kode LEFT JOIN ( SELECT kodesc kode, sum(debet) total FROM totsl WHERE debet <> 0 AND tgl LIKE '$tahun%' GROUP BY kode ) bbw ON bbw.kode = a.kode LEFT JOIN ( SELECT * FROM ( SELECT kode, kodesp, sum(pokok) pokok FROM ( SELECT kode, kodesp, sum(partisipasi) pokok FROM spartisipasi WHERE tgl LIKE '$tahun%' GROUP BY kode, kodesp UNION ALL SELECT mags.kode, m.kodesp, sum(mags.shu) pokok FROM mags LEFT JOIN mpinjam m ON m.faktur = mags.fkt WHERE mags.tgl LIKE '$tahun%' AND mags.keterangan NOT LIKE 'Posting: Data Awal%' GROUP BY kode, kodesp ) a GROUP BY kode, kodesp HAVING kodesp = 'reg' ) a ) b ON b.kode = a.kode LEFT JOIN ( SELECT * FROM ( SELECT kode, kodesp, sum(pokok) pokok FROM ( SELECT kode, kodesp, sum(partisipasi) pokok FROM spartisipasi WHERE tgl LIKE '$tahun%' GROUP BY kode, kodesp UNION ALL SELECT mags.kode, m.kodesp, sum(mags.shu) pokok FROM mags LEFT JOIN mpinjam m ON m.faktur = mags.fkt WHERE mags.tgl LIKE '$tahun%' AND mags.keterangan NOT LIKE 'Posting: Data Awal%' GROUP BY kode, kodesp ) a GROUP BY kode, kodesp HAVING kodesp = 'USP1' ) a ) b1 ON b1.kode = a.kode LEFT JOIN ( SELECT * FROM ( SELECT kode, kodesp, sum(pokok) pokok FROM ( SELECT kode, kodesp, sum(partisipasi) pokok FROM spartisipasi WHERE tgl LIKE '$tahun%' GROUP BY kode, kodesp UNION ALL SELECT mags.kode, m.kodesp, sum(mags.shu) pokok FROM mags LEFT JOIN mpinjam m ON m.faktur = mags.fkt WHERE mags.tgl LIKE '$tahun%' AND mags.keterangan NOT LIKE 'Posting: Data Awal%' GROUP BY kode, kodesp ) a GROUP BY kode, kodesp HAVING kodesp = 'USP2' ) a ) b2 ON b2.kode = a.kode LEFT JOIN ( SELECT * FROM ( SELECT kode, kodesp, sum(pokok) pokok FROM ( SELECT kode, kodesp, sum(partisipasi) pokok FROM spartisipasi WHERE tgl LIKE '$tahun%' GROUP BY kode, kodesp UNION ALL SELECT mags.kode, m.kodesp, sum(mags.shu) pokok FROM mags LEFT JOIN mpinjam m ON m.faktur = mags.fkt WHERE mags.tgl LIKE '$tahun%' AND mags.keterangan NOT LIKE 'Posting: Data Awal%' GROUP BY kode, kodesp ) a GROUP BY kode, kodesp HAVING kodesp = 'USP3' ) a ) b3 ON b3.kode = a.kode LEFT JOIN ( SELECT 'cash' bank, kodesc kode, sum(tunai - ifnull(kembali,0) ) lunas FROM totsl WHERE tr = 2 AND tgl LIKE '$tahun%' GROUP BY kode ) c ON c.kode = a.kode LEFT JOIN ( SELECT 'bank' bank, kodesc kode, sum(tunai - ifnull(kembali,0) ) lunas FROM totsl WHERE tr <> 2 AND tgl LIKE '$tahun%' GROUP BY kode ) w ON w.kode = a.kode LEFT JOIN ( SELECT totptg.kodesc kode , sum(ptg.lunas) lunas FROM ptg LEFT JOIN totptg ON ptg.faktur = totptg.faktur WHERE ptg.tgl LIKE '$tahun%' GROUP BY kode ) d ON d.kode = a.kode LEFT JOIN ( SELECT * FROM ( SELECT kodesc kode, sum(kredit) total FROM totsl WHERE kredit <> 0 GROUP BY kode UNION ALL SELECT totsl.kodesc kode, sum(ptg.lunas) * -1 total FROM ptg LEFT JOIN totsl ON totsl.faktur = ptg.fkt WHERE totsl.kredit <> 0 GROUP BY kode ) a ) h ON h.kode = a.kode WHERE a.status = 0 AND a.laporan = 1 GROUP BY a.kode "; // echo $qr; // die(); $data = DB::query_result_object($qr); if($type == "1"){ $dataParse = []; $newPar = new Param(); foreach($dataNama as $key => $nm){ $dataParse[ $nm['name'] ] = (new self)->toArray($data, $nm['name']); $newPar->add( $nm['name'] , $dataParse); } $params = $newPar->get(); // encopy $callbacks = []; PhpExcelTemplator::outputToFile($filex, $file, $params, $callbacks); }else{ $dataParse = []; $newPar = new Param(); $dataParse[ 'no' ] = (new self)->toArray2($data, 'no'); $newPar->add( 'no' , $dataParse); $dataParse[ 'nama' ] = (new self)->toArray2($data, 'nama'); $newPar->add( 'nama' , $dataParse); $dataParse[ 'telp' ] = (new self)->toArray2($data, 'telp'); $newPar->add( 'telp' , $dataParse); $dataParse[ 'alamat' ] = (new self)->toArray2($data, 'alamat'); $newPar->add( 'alamat' , $dataParse); $dataParse[ 'unitkerja' ] = (new self)->toArray2($data, 'unitkerja'); $newPar->add( 'unitkerja' , $dataParse); $dataParse[ 'bw' ] = (new self)->toArray2($data, 'bw'); $newPar->add( 'bw' , $dataParse); $dataParse[ 'sm' ] = (new self)->toArray2($data, 'sm'); $newPar->add( 'sm' , $dataParse); $dataParse[ 'swp' ] = (new self)->toArray2($data, 'swp'); $newPar->add( 'swp' , $dataParse); $dataParse[ 'sp' ] = (new self)->toArray2($data, 'sp'); $newPar->add( 'sp' , $dataParse); $dataParse[ 'sw' ] = (new self)->toArray2($data, 'sw'); $newPar->add( 'sw' , $dataParse); $dataParse[ 'tk' ] = (new self)->toArray2($data, 'tk'); $newPar->add( 'tk' , $dataParse); $dataParse[ 'pt' ] = (new self)->toArray2($data, 'pdt'); $newPar->add( 'pt' , $dataParse); $dataParse[ 'tot' ] = (new self)->toArray2($data, 'all'); $newPar->add( 'tot' , $dataParse); $dataParse[ 'simp' ] = (new self)->toArray2($data, 'jml'); $newPar->add( 'simp' , $dataParse); $params = $newPar->get(); // encopy $callbacks = []; PhpExcelTemplator::outputToFile($filex, $file, $params, $callbacks); } } }