You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
335 lines
12 KiB
PHP
335 lines
12 KiB
PHP
<?php
|
|
|
|
use alhimik1986\PhpExcelTemplator\PhpExcelTemplator;
|
|
use alhimik1986\PhpExcelTemplator\params\ExcelParam;
|
|
use alhimik1986\PhpExcelTemplator\params\CallbackParam;
|
|
use alhimik1986\PhpExcelTemplator\setters\CellSetterArrayValueSpecial;
|
|
|
|
use NN\files;
|
|
use NN\Post;
|
|
use NN\Session;
|
|
use NN\Module\DB;
|
|
use NN\Module\Help;
|
|
use NN\Link;
|
|
use NN\Module\DD;
|
|
use NN\Enc;
|
|
use NN\module\View;
|
|
use xls\Param;
|
|
|
|
class Partisipasi {
|
|
|
|
public static function excel(){
|
|
return View::render("exceljs");
|
|
}
|
|
|
|
private function setup(){
|
|
$file = SETUP_PATH.'excel/partisipan'.date('Y-m-d h:i:s').'.xlsx';
|
|
$filex = SETUP_PATH.'excel/partisipan.xlsx';
|
|
return [
|
|
"file" => $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);
|
|
}
|
|
|
|
|
|
}
|
|
} |