$file, "filex" => $filex ]; } private function toArray($data = null, $name = ""){ $new = []; $start = 7; foreach ($data as $key => $n) { $e = ( array ) $n; $new[] = str_replace("{no}",$start+$key, $e[$name]); } return $new; } public static function do(){ ini_set('display_errors', 1); $setup = (new self)->setup(); $file = $setup['file']; $filex = $setup['filex']; $pjname = ['reg','khusus', 'usp1','usp2','usp3']; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); $bln = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']; // config $dataNama = []; $dataNama[] = [ "name" => "no" ]; $dataNama[] = [ "name" => "kode" ]; $dataNama[] = [ "name" => "nama" ]; $dataNama[] = [ "name" => "temtala" ]; $dataNama[] = [ "name" => "jk" ]; $dataNama[] = [ "name" => "telp" ]; $dataNama[] = [ "name" => "alamat" ]; $dataNama[] = [ "name" => "unitkerja" ]; $dataNama[] = [ "name" => "masuk" ]; // config $simpanan = DB::query_result_object("SELECT lower(kode) kode FROM jpinjam WHERE typetransaksi = 'simpanan' HAVING kode <> 'pt'"); $join =""; $slc = ""; $year = date('Y'); foreach ($simpanan as $ky => $val) { $join .= " LEFT JOIN ( SELECT concat( year(tgl),'-', lpad(month(tgl),2,0) ) dy, lpad(month(tgl),2,0) mnt, kode, kodesp, sum(jumlah) total FROM msimpan WHERE tgl LIKE '$year%' AND kodesp = '$val->kode' GROUP BY dy, kode, kodesp ORDER BY kodesp ASC, dy ASC, kode ASC ) $val->kode ON a.kode = $val->kode.kode "; $join .= "\n LEFT JOIN ( SELECT kode , sum(jumlah) total FROM msimpan WHERE tgl < '$year-01-01' AND kodesp = '$val->kode' GROUP BY kode ORDER BY kode ASC ) ".$val->kode."a ON a.kode = ".$val->kode."a.kode "; $join .= "\n LEFT JOIN ( SELECT kode , sum(jumlah) total FROM msimpan WHERE tgl LIKE '$year%' AND kodesp = '$val->kode' GROUP BY kode ORDER BY kode ASC ) ".$val->kode."totb ON a.kode = ".$val->kode."totb.kode "; $join .= "\n LEFT JOIN ( SELECT kode , sum(jumlah) total FROM msimpan WHERE tgl <= '".date("Y-m-t", strtotime($year."-12") )."' AND kodesp = '$val->kode' GROUP BY kode ORDER BY kode ASC ) ".$val->kode."tota ON a.kode = ".$val->kode."tota.kode "; $join .= "\n"; foreach ($bln as $ky => $blnd) { $slc .= ",ifnull((IF( $val->kode.mnt = '$blnd', $val->kode.total, 0 )),0) $val->kode$blnd "; $slc .= "\n"; } $slc .= ",ifnull(".$val->kode."a.total,0) ".$val->kode."a "; $slc .= "\n"; $slc .= ",ifnull(".$val->kode."totb.total,0) ".$val->kode."totb "; $slc .= "\n"; $slc .= ",ifnull(".$val->kode."tota.total,0) ".$val->kode."tota "; $slc .= "\n"; } foreach ($pjname as $key => $vv) { foreach ($bln as $ky => $blnn) { $slc .= ", ifnull(sum(if( mags.tr = 'G', if( mags.kodesp = '$vv', if( mags.bln = '$blnn', mags.pokok, 0 ) , 0 ) , 0 )),0) ".$vv."angshu".$blnn." "; $slc .= "\n"; $slc .= ", ifnull(sum(if( mags.tr <> 'G', if( mags.kodesp = '$vv', if( mags.bln = '$blnn', mags.pokok, 0 ) , 0 ) , 0 )),0) ".$vv."angnon".$blnn." "; $slc .= "\n"; } } $join .= " LEFT JOIN ( SELECT mags.kode , LPAD(month(mags.tgl),2,0) bln , m.tr , substring_index(substring_index(mags.fkt, \"/\",2),\"/\",-1) kodesp , sum(mags.pokok) pokok , sum(mags.bunga) bunga FROM mags LEFT JOIN mpinjam m ON m.faktur = mags.fkt WHERE mags.tgl like '$year%' GROUP BY kode, tr, kodesp,bln ) mags ON mags.kode = a.kode "; $qr = " SELECT '{no}' `no` , a.kode ,a.nama , if(a.kota = '', a.tgllahir, concat(a.kota,',',a.tgllahir)) temtala ,a.jk ,a.telp ,a.alamat ,a.unitkerja ,year(a.masuk) masuk $slc FROM anggota a $join GROUP BY a.kode ORDER BY a.kode ASC "; $data = DB::query_result_object($qr); echo json_encode($data); } }