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.
180 lines
6.2 KiB
PHP
180 lines
6.2 KiB
PHP
<?php
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
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;
|
|
|
|
if (!function_exists('array_cond')) {
|
|
function array_cond(array $data, string $search = '', string $name = '')
|
|
{
|
|
if ($search != '') {
|
|
$search = strtolower($search);
|
|
|
|
return array_filter($data, function ($dat) use ($name, $search) {
|
|
if (is_object($dat)) {
|
|
$g = $dat->{$name} ?? null;
|
|
$numcek = 0;
|
|
if ($g !== null) {
|
|
$g = strtolower(is_numeric($g) ? strval($g) : $g);
|
|
if ($numcek == 0 && $g == $search) {
|
|
$numcek = 1;
|
|
}
|
|
}
|
|
if ($numcek == 1) {
|
|
return $dat;
|
|
}
|
|
} else {
|
|
if ($dat !== null) {
|
|
$dat = strtolower(is_numeric($dat) ? strval($dat) : $dat);
|
|
if ($dat == $search) {
|
|
return $dat;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
return $data;
|
|
}
|
|
}
|
|
}
|
|
|
|
class Kekayaanbaru {
|
|
|
|
public static function getData($tahun){
|
|
$data['anggota'] = DB::query_result_object("SELECT * FROM anggota a ORDER BY jurubayar DESC, kode DESC");
|
|
$data['simp'] = DB::query_result_object("SELECT kode, nama FROM jpinjam WHERE typetransaksi = 'simpanan' AND rw <> '-'");
|
|
$data['simplast'] = DB::query_result_object("
|
|
SELECT kode, kodesp, sum(jumlah) jumlah FROM (
|
|
SELECT
|
|
kode
|
|
, kodesp
|
|
, month(tgl) bulan
|
|
, sum(jumlah) jumlah
|
|
FROM msimpan WHERE tgl < '$tahun-01-01'
|
|
AND faktur LIKE 'BKM%'
|
|
GROUP BY kode, kodesp
|
|
UNION ALL
|
|
SELECT kode, kodesp, bulan, sum(jumlah) jumlah FROM (
|
|
SELECT
|
|
kode
|
|
, kodesp
|
|
, month(tgl) bulan
|
|
, sum(jumlah * -1) jumlah
|
|
FROM msimpan WHERE tgl < '$tahun-01-01'
|
|
AND faktur LIKE 'BKK%'
|
|
GROUP BY kode, kodesp
|
|
UNION ALL
|
|
SELECT kode, kodesp, bulan, jumlah FROM (
|
|
SELECT kodesc kode, 'BW' kodesp, lpad( month(tgl), 2,0) bulan, sum(debet) * -1 jumlah FROM totsl
|
|
WHERE debet <> 0 AND tgl < '$tahun-01-01' AND faktur NOT LIKE 'FS%'
|
|
GROUP BY kode, bulan
|
|
) a
|
|
) a GROUP BY a.kode, a.kodesp, a.bulan
|
|
) a GROUP BY a.kode, a.kodesp
|
|
");
|
|
$data['simpanan'] = DB::query_result_object("
|
|
SELECT kode, kodesp, bulan, sum(jumlah) jumlah FROM (
|
|
SELECT
|
|
kode
|
|
, kodesp
|
|
, month(tgl) bulan
|
|
, sum(jumlah) jumlah
|
|
FROM msimpan WHERE tgl like '$tahun%'
|
|
AND faktur LIKE 'BKM%'
|
|
GROUP BY bulan, kode, kodesp
|
|
UNION ALL
|
|
SELECT a.kode, a.kodesp, a.bulan, sum(a.jumlah) jumlah FROM (
|
|
SELECT
|
|
kode
|
|
, kodesp
|
|
, month(tgl) bulan
|
|
, sum(jumlah * -1) jumlah
|
|
FROM msimpan WHERE tgl like '$tahun%'
|
|
AND faktur LIKE 'BKK%' AND kodesp <> 'TK'
|
|
GROUP BY bulan, kode, kodesp
|
|
UNION ALL
|
|
SELECT kode, kodesp, bulan, jumlah FROM (
|
|
SELECT kodesc kode, 'BW' kodesp, month(tgl) bulan, sum(debet) * -1 jumlah FROM totsl
|
|
WHERE debet <> 0 AND tgl LIKE '$tahun%' AND faktur NOT LIKE 'FS%'
|
|
GROUP BY kode, bulan
|
|
) a
|
|
) a GROUP BY a.kode, a.kodesp, a.bulan
|
|
) a GROUP BY a.kode, a.kodesp, a.bulan
|
|
");
|
|
$data['pinjaman'] = DB::query_result_object("SELECT * FROM (
|
|
SELECT tr, kode, kodesp, sum(mpinjam.pokok) pokok, b.pokok angpokok, b.bunga angbunga FROM mpinjam
|
|
LEFT JOIN (
|
|
SELECT m.faktur, sum(mags.pokok) pokok, sum(mags.bunga) bunga FROM mags
|
|
LEFT JOIN mpinjam m ON m.faktur = mags.fkt GROUP BY faktur
|
|
) b ON b.faktur = mpinjam.faktur
|
|
GROUP BY kode, kodesp, tr
|
|
) a ");
|
|
$data['tk'] = DB::query_result_object("
|
|
SELECT
|
|
kode
|
|
, kodesp
|
|
, month(tgl) bulan
|
|
, sum(jumlah) jumlah
|
|
FROM msimpan WHERE tgl like '$tahun%'
|
|
AND faktur LIKE 'BKK%' AND kodesp = 'TK'
|
|
GROUP BY bulan, kode, kodesp
|
|
");
|
|
return $data;
|
|
}
|
|
|
|
public static function output($spreadsheet = null){
|
|
if($spreadsheet){
|
|
$filename = 'hello world.xlsx';
|
|
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
header('Content-Disposition: attachment;filename="' . $filename . '"');
|
|
header('Cache-Control: max-age=0');
|
|
|
|
$writer = new Xlsx($spreadsheet);
|
|
$writer->save('php://output');
|
|
}
|
|
}
|
|
|
|
public static function do($thn=null){
|
|
View::render('kekayaan2', [
|
|
"total" => json_encode(DB::query_result_object("
|
|
SELECT kode, kodesp, `status`, sum(jumlah) jumlah FROM (
|
|
SELECT
|
|
kode
|
|
, kodesp
|
|
, IF(left(faktur,3) = 'BKM', 'masuk', 'keluar') `status`
|
|
, sum(IF(left(faktur,3) = 'BKM', jumlah, jumlah*-1)) jumlah
|
|
FROM msimpan
|
|
GROUP BY kode, kodesp
|
|
UNION ALL
|
|
SELECT kode, kodesp, 'masuk' status, jumlah FROM (
|
|
SELECT kodesc kode, 'BW' kodesp, sum(debet) * -1 jumlah FROM totsl
|
|
WHERE debet <> 0 AND faktur NOT LIKE 'FS%'
|
|
GROUP BY kode
|
|
) a
|
|
) a GROUP BY kode, kodesp
|
|
")),
|
|
"tahun" => $thn? $thn : date('Y'),
|
|
"data" => self::getData($thn? $thn : date('Y'))
|
|
]);
|
|
}
|
|
|
|
public static function print(){
|
|
$spreadsheet = new Spreadsheet();
|
|
$activeWorksheet = $spreadsheet->getActiveSheet();
|
|
$activeWorksheet->setCellValueByColumnAndRow(2,1, 'Hello World !');
|
|
|
|
}
|
|
|
|
|
|
|
|
} |