$n) { $e = ( array ) $n; $new[] = str_replace("{no}",$start+$key, $e[$name]); } return $new; } public static function do($tahun = "2023", $bulan="09"){ $thn = $tahun."-".$bulan; $thn2 = ($tahun-1)."-12"; $thnsekarang = $tahun; $thnlalu = $tahun-1; $th1 = date('Y-m-t', strtotime( $thn ) ); $th2 = date('Y-m-t', strtotime( $thn2 ) ); $bulanData = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; ini_set('display_errors', 1); $file = SETUP_PATH.'tunggakan-'.date('Y-m-d h:i:s').'.xlsx'; $filex = SETUP_PATH.'/excel/tunggakan.xlsx'; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); $simp = ["sp","sw","sm","tk","bw"]; $pj = ["reg","khusus","usp1","usp2","usp3"]; $condSimp = ""; $condPJ = ""; foreach ($simp as $key => $simpan) { $condSimp .= ", round(sum(if(kodesp = '$simpan', pokok, 0))) $simpan"; } foreach ($pj as $key => $pinjam) { $condPJ .= ", round(sum(if(kodesp = '$pinjam', pokok, 0))) $pinjam"; $condPJ .= ", round(sum(if(kodesp = '$pinjam', jasa, 0))) ".$pinjam."jasa "; } $qr = " SELECT '{no}' no , a.kode , a.nama , a.kodesp , a.tgl , concat(max(bln),' bln') tgk , sum(IF(a.kodesp = 'sm', pokok, 0)) sm , sum(IF(a.kodesp = 'sw', pokok, 0)) sw , sum(IF(a.kodesp = 'sp', pokok, 0)) sp , sum(IF(a.kodesp = 'bw', pokok, 0)) bw , sum(IF(a.kodesp = 'swp', pokok, 0)) swp , sum(IF(a.kodesp = 'tk', pokok, 0)) tk , sum(IF(a.kodesp = 'sm', bln, 0)) jsm , sum(IF(a.kodesp = 'sw', bln, 0)) jsw , sum(IF(a.kodesp = 'sp', bln, 0)) jsp , sum(IF(a.kodesp = 'bw', bln, 0)) jbw , sum(IF(a.kodesp = 'swp', bln, 0)) jswp , sum(IF(a.kodesp = 'tk', bln, 0)) jtk , sum(IF(a.kodesp = 'usp1', pokok, 0)) usp1 , sum(IF(a.kodesp = 'usp1', bunga, 0)) busp1 , sum(IF(a.kodesp = 'usp1', bln, 0)) jusp1 , sum(IF(a.kodesp = 'usp2', pokok, 0)) usp2 , sum(IF(a.kodesp = 'usp2', bunga, 0)) busp2 , sum(IF(a.kodesp = 'usp2', bln, 0)) jusp2 , sum(IF(a.kodesp = 'usp3', pokok, 0)) usp3 , sum(IF(a.kodesp = 'usp3', bunga, 0)) busp3 , sum(IF(a.kodesp = 'usp3', bln, 0)) jusp3 , sum(IF(a.kodesp = 'khusus', pokok, 0)) khusus , sum(IF(a.kodesp = 'khusus', bunga, 0)) bkhusus , sum(IF(a.kodesp = 'khusus', bln, 0)) jkhusus , sum(IF(a.kodesp = 'reg', pokok, 0)) reg , sum(IF(a.kodesp = 'reg', bunga, 0)) breg , sum(IF(a.kodesp = 'reg', bln, 0)) jreg , sum(IF(a.kodesp = 'pt', pokok, 0)) pt , sum(IF(a.kodesp = 'pt', bunga, 0)) bpt , sum(IF(a.kodesp = 'pt', bln, 0)) jpt FROM ( SELECT concat( TranslateMonth(month(max(tgl))),' ', year(max(tgl)),' - ', TranslateMonth(month(now())),' ', year(now())) tgl, a.kode, a.nama, a.kodesp, sum(bln) bln, sum(pokok) pokok , sum(bunga) bunga FROM ( SELECT substring_index(m.tgl,'-',2) th , count(1) bln , m.tgl , m.kode , a.nama , m.kodesp , sum(IF(m.jumlah = 0, m.pokok, m.jumlah)) pokok , sum(m.bunga) bunga FROM mgagalbayar m LEFT JOIN anggota a ON m.kode = a.kode WHERE m.tgl <= '$th1' GROUP BY th, kodesp, kode HAVING pokok <> 0 ) a GROUP BY a.kode, a.kodesp ORDER BY bln DESC ) a GROUP BY kode "; $qr2 = " SELECT '{no}' no , a.kode , a.nama , a.kodesp , sum(IF(a.kodesp = 'sm', pokok, 0)) sm , sum(IF(a.kodesp = 'sw', pokok, 0)) sw , sum(IF(a.kodesp = 'sp', pokok, 0)) sp , sum(IF(a.kodesp = 'bw', pokok, 0)) bw , sum(IF(a.kodesp = 'swp', pokok, 0)) swp , sum(IF(a.kodesp = 'tk', pokok, 0)) tk , sum(IF(a.kodesp = 'sm', bln, 0)) jsm , sum(IF(a.kodesp = 'sw', bln, 0)) jsw , sum(IF(a.kodesp = 'sp', bln, 0)) jsp , sum(IF(a.kodesp = 'bw', bln, 0)) jbw , sum(IF(a.kodesp = 'swp', bln, 0)) jswp , sum(IF(a.kodesp = 'tk', bln, 0)) jtk , sum(IF(a.kodesp = 'usp1', pokok, 0)) usp1 , sum(IF(a.kodesp = 'usp1', bunga, 0)) busp1 , sum(IF(a.kodesp = 'usp1', bln, 0)) jusp1 , sum(IF(a.kodesp = 'usp2', pokok, 0)) usp2 , sum(IF(a.kodesp = 'usp2', bunga, 0)) busp2 , sum(IF(a.kodesp = 'usp2', bln, 0)) jusp2 , sum(IF(a.kodesp = 'usp3', pokok, 0)) usp3 , sum(IF(a.kodesp = 'usp3', bunga, 0)) busp3 , sum(IF(a.kodesp = 'usp3', bln, 0)) jusp3 , sum(IF(a.kodesp = 'khusus', pokok, 0)) khusus , sum(IF(a.kodesp = 'khusus', bunga, 0)) bkhusus , sum(IF(a.kodesp = 'khusus', bln, 0)) jkhusus , sum(IF(a.kodesp = 'reg', pokok, 0)) reg , sum(IF(a.kodesp = 'reg', bunga, 0)) breg , sum(IF(a.kodesp = 'reg', bln, 0)) jreg , sum(IF(a.kodesp = 'pt', pokok, 0)) pt , sum(IF(a.kodesp = 'pt', bunga, 0)) bpt , sum(IF(a.kodesp = 'pt', bln, 0)) jpt FROM ( SELECT a.kode, a.nama, a.kodesp, sum(bln) bln, sum(pokok) pokok , sum(bunga) bunga FROM ( SELECT substring_index(m.tgl,'-',2) th , count(1) bln , m.kode , a.nama , m.kodesp , sum(IF(m.jumlah = 0, m.pokok, m.jumlah)) pokok , sum(m.bunga) bunga FROM mgagalbayar m LEFT JOIN anggota a ON m.kode = a.kode WHERE m.tgl <= '$th2' GROUP BY th, kodesp, kode HAVING pokok <> 0 ) a GROUP BY a.kode, a.kodesp ORDER BY bln DESC ) a GROUP BY kode "; $data = DB::query_result_object($qr); $data2 = DB::query_result_object($qr2); $dataParse = []; $newPar = new Param(); // $dataParse['no'] = (new self)->toArray2($data, "no"); $newPar->add('no', $dataParse); for ($i=1; $i <= 3 ; $i++) { $q = $i+2; $dataParse["p$q"] = (new self)->toArray2($data, "usp$i"); $newPar->add("p$q", $dataParse); $dataParse["j$q"] = (new self)->toArray2($data, "busp$i"); $newPar->add("j$q", $dataParse); $dataParse["l$q"] = (new self)->toArray2($data, "jusp$i"); $newPar->add("l$q", $dataParse); } $dataParse["nama"] = (new self)->toArray2($data, "nama"); $newPar->add("nama", $dataParse); $dataParse["tunggakan"] = (new self)->toArray2($data, "tgl"); $newPar->add("tunggakan", $dataParse); // $dataParse["tunggakan"] = (new self)->toArray2($data, "tgk"); // $newPar->add("tunggakan", $dataParse); $dataParse["p1"] = (new self)->toArray2($data, "reg"); $newPar->add("p1", $dataParse); $dataParse["j1"] = (new self)->toArray2($data, "breg"); $newPar->add("j1", $dataParse); $dataParse["l1"] = (new self)->toArray2($data, "jreg"); $newPar->add("l1", $dataParse); $dataParse["p2"] = (new self)->toArray2($data, "khusus"); $newPar->add("p2", $dataParse); $dataParse["j2"] = (new self)->toArray2($data, "bkhusus"); $newPar->add("j2", $dataParse); $dataParse["l2"] = (new self)->toArray2($data, "jkhusus"); $newPar->add("l2", $dataParse); $datasm = ["sm", "sw", "swp", "bw", "sp", "tk"]; foreach ($datasm as $sx => $sxv) { $dataParse[$sxv."2"] = (new self)->toArray2($data, $sxv); $newPar->add($sxv."2", $dataParse); $dataParse[$sxv."1"] = (new self)->toArray2($data2, $sxv); $newPar->add($sxv."1", $dataParse); } $w = explode("-", date('t-m-Y', strtotime( $th1 ) )); $newPar->single('per', $w[0]." ". strtoupper( $bulanData[ $w[1] -1 ] )." ".$w[2] ); $newPar->single('th2', $thnsekarang); $newPar->single('th1', $thnlalu); // encopy $params = $newPar->get(); $callbacks = []; PhpExcelTemplator::outputToFile($filex, $file, $params, $callbacks); } }