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.
258 lines
8.0 KiB
PHP
258 lines
8.0 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 Kekayaan {
|
|
|
|
private function setup(){
|
|
set_time_limit(300);
|
|
$file = SETUP_PATH.'excel/kekayaan'.date('Y').'.xlsx';
|
|
$filex = SETUP_PATH.'/excel/kekayaan.xlsx';
|
|
return [
|
|
"file" => $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
|
|
,a.masuk
|
|
$slc
|
|
FROM anggota a
|
|
$join
|
|
GROUP BY a.kode ORDER BY a.kode ASC
|
|
";
|
|
|
|
$data = DB::query_result_object($qr);
|
|
$dataParse = [];
|
|
$newPar = new Param();
|
|
|
|
foreach($pjname as $pjnm){
|
|
foreach ($bln as $ky => $blna) {
|
|
$dataParse[ $pjnm."angshu".$blna ] = (new self)->toArray($data, $pjnm."angshu".$blna);
|
|
$newPar->add( $pjnm."angshu".$blna , $dataParse);
|
|
$dataParse[ $pjnm."angnon".$blna ] = (new self)->toArray($data, $pjnm."angnon".$blna);
|
|
$newPar->add( $pjnm."angnon".$blna , $dataParse);
|
|
}
|
|
}
|
|
|
|
foreach($dataNama as $key => $nm){
|
|
$dataParse[ $nm['name'] ] = (new self)->toArray($data, $nm['name']);
|
|
$newPar->add( $nm['name'] , $dataParse);
|
|
}
|
|
|
|
foreach ($simpanan as $ky => $val) {
|
|
foreach ($bln as $ky => $blnx) {
|
|
$dataParse[$val->kode.$blnx] = (new self)->toArray($data, $val->kode.$blnx);
|
|
$newPar->add( $val->kode.$blnx , $dataParse);
|
|
}
|
|
}
|
|
|
|
foreach ($simpanan as $ky => $val) {
|
|
$dataParse[$val->kode."a"] = (new self)->toArray($data, $val->kode."a");
|
|
$newPar->add( $val->kode."a" , $dataParse);
|
|
$dataParse[$val->kode."totb"] = (new self)->toArray($data, $val->kode."totb");
|
|
$newPar->add( $val->kode."totb" , $dataParse);
|
|
$dataParse[$val->kode."tota"] = (new self)->toArray($data, $val->kode."tota");
|
|
$newPar->add( $val->kode."tota" , $dataParse);
|
|
}
|
|
|
|
$params = $newPar->get();
|
|
// encopy
|
|
$callbacks = [];
|
|
// PhpExcelTemplator::saveToFile($filex, $file, $params, $callbacks);
|
|
PhpExcelTemplator::outputToFile($filex, $file, $params, $callbacks);
|
|
}
|
|
} |