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.
232 lines
9.0 KiB
PHP
232 lines
9.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 Tunggakan {
|
|
|
|
private function toArray2($data = null, $name = ""){
|
|
$new = [];
|
|
$start = 5;
|
|
foreach ($data as $key => $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);
|
|
}
|
|
|
|
} |