$d) { $dtot = 0; $ktot = 0; $data["no"][] = $key + 1; $data["dk"][] = $d->dk; $data["kode"][] = $d->kode; $data["nama"][] = $d->nama; $data["sad"][] = $d->sad; $dtot += $d->sad; $data["sak"][] = $d->sak; $ktot += $d->sak; $data["jd"][] = $d->jd; $dtot += $d->jd; $data["jk"][] = $d->jk; $ktot += $d->jk; $data["fd"][] = $d->fd; $dtot += $d->fd; $data["fk"][] = $d->fk; $ktot += $d->fk; $data["md"][] = $d->md; $dtot += $d->md; $data["mk"][] = $d->mk; $ktot += $d->mk; $data["ad"][] = $d->ad; $dtot += $d->ad; $data["ak"][] = $d->ak; $ktot += $d->ak; $data["med"][] = $d->med; $dtot += $d->med; $data["mek"][] = $d->mek; $ktot += $d->mek; $data["jnd"][] = $d->jnd; $dtot += $d->jnd; $data["jnk"][] = $d->jnk; $ktot += $d->jnk; $data["jud"][] = $d->jud; $dtot += $d->jud; $data["juk"][] = $d->juk; $ktot += $d->juk; $data["agd"][] = $d->agd; $dtot += $d->agd; $data["agk"][] = $d->agk; $ktot += $d->agk; $data["sd"][] = $d->sd; $dtot += $d->sd; $data["sk"][] = $d->sk; $ktot += $d->sk; $data["od"][] = $d->od; $dtot += $d->od; $data["ok"][] = $d->ok; $ktot += $d->ok; $data["nd"][] = $d->nd; $dtot += $d->nd; $data["nk"][] = $d->nk; $ktot += $d->nk; $data["ded"][] = $d->ded; $dtot += $d->ded; $data["dek"][] = $d->dek; $ktot += $d->dek; $data["nmd"][] = $dtot; $data["nmk"][] = $ktot; } return $data; } public static function all($app=null, $status=null, $thn = null){ ini_set('display_errors', 1); $year = date('Y'); if($thn != null){ $year = $thn; } $akun = (new self)->akun($year, $app, $status); $file = SETUP_PATH.'excel/accounting-warpeka-'.$year.'.xlsx'; $filex = SETUP_PATH.'/excel/template.xlsx'; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); $newPar = new Param(); $newPar->add('no', $akun); $newPar->add('kode', $akun); $newPar->add('dk', $akun); $newPar->add('nama', $akun); $newPar->add('sad', $akun); $newPar->add('sak', $akun); $newPar->add('jd', $akun); $newPar->add('jk', $akun); $newPar->add('fd', $akun); $newPar->add('fk', $akun); $newPar->add('md', $akun); $newPar->add('mk', $akun); $newPar->add('ad', $akun); $newPar->add('ak', $akun); $newPar->add('med', $akun); $newPar->add('mek', $akun); $newPar->add('jnd', $akun); $newPar->add('jnk', $akun); $newPar->add('jud', $akun); $newPar->add('juk', $akun); $newPar->add('agd', $akun); $newPar->add('agk', $akun); $newPar->add('sd', $akun); $newPar->add('sk', $akun); $newPar->add('od', $akun); $newPar->add('ok', $akun); $newPar->add('nd', $akun); $newPar->add('nk', $akun); $newPar->add('ded', $akun); $newPar->add('dek', $akun); $newPar->add('nmd', $akun); $newPar->add('nmk', $akun); $params = $newPar->get(); $callbacks = [ ]; // PhpExcelTemplator::saveToFile($filex, $file, $params, $callbacks); PhpExcelTemplator::outputToFile($filex, $file, $params, $callbacks); } private function ubahFormatTanggal($tanggal = "2023-08-05") { $bulanIndonesia = [ '01' => 'Januari', '02' => 'Februari', '03' => 'Maret', '04' => 'April', '05' => 'Mei', '06' => 'Juni', '07' => 'Juli', '08' => 'Agustus', '09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Desember' ]; $tanggalArr = explode('-', $tanggal); $bulan = $bulanIndonesia[$tanggalArr[1]]; $bulan = strtoupper($bulan); $tahun = $tanggalArr[0]; return "$bulan $tahun"; } public static function tagihan($kode){ ini_set('display_errors', 1); $year = date('Y'); $file = SETUP_PATH.'excel/tagihan-'.$kode.'-'.$year.'.xlsx'; $filex = SETUP_PATH.'/excel/tagihan.xlsx'; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); // copy $l = DB::query_result_object(" SELECT tgl FROM mtagihan m WHERE m.kodetagihan = '$kode' LIMIT 1 "); $nama = DB::query_result_object(" SELECT jurubayar FROM mtagihan m WHERE m.kodetagihan = '$kode' LIMIT 1 "); $tgl = date('Y-m-d'); $jurubayar = ""; if( count($l) > 0 ){ $tgl = (new self)->ubahFormatTanggal( $l[0]->tgl ); } if( count($nama) > 0 ){ $jurubayar = $nama[0]->jurubayar; } $dataParse = []; $data = DB::query_result_object("SELECT m.kode ,a.nama ,ifnull(sum(if(m.kodesp = 'bw', jumlah,0)),0) bw ,ifnull(sum(if(m.kodesp = 'sp', jumlah,0)),0) sp ,ifnull(sum(if(m.kodesp = 'pt', m.pokok,0)),0) pt ,ifnull(sum(if(m.kodesp = 'sm', jumlah,0)),0) manasuka ,ifnull(sum(if(m.kodesp = 'tk', jumlah,0)),0) tk ,ifnull(sum(if(m.kodesp = 'sw', jumlah,0)),0) sw ,ifnull(sum(if(m.kodesp = 'swp', jumlah,0)),0) swp ,ifnull(sum(if(m.kodesp = 'usp1', m.pokok + m.bunga,0)),0) usp1 ,ifnull(sum(if(m.kodesp = 'usp2', m.pokok + m.bunga,0)),0) usp2 ,ifnull(sum(if(m.kodesp = 'usp3', m.pokok + m.bunga,0)),0) usp3 ,ifnull(sum(if(m.kodesp = 'reg', m.pokok,0)),0) pokok ,ifnull(sum(if(m.kodesp = 'reg', m.bunga,0)),0) jasa ,ifnull(sum(if(m.kodesp = 'reg', ( SELECT pokok tot from mpinjam where faktur = m.faktur ),0)),0) pinjaman , if(m.ke <> 0, selisih_bulan(x.mtgl , m.tgl), m.ke) ke ,ifnull(sum(if(m.kodesp = 'reg', ( SELECT lama from mpinjam where faktur = m.faktur ),0)),0) masa ,\"=C{no}-(G{no}*E{no})\" hsisa ,\"=SUM(G{no}:K{no})\" jmlusp ,\"=SUM(M{no}:S{no})\" jmlinuk ,\"=L{no}+T{no}\" totalall FROM mtagihan m LEFT JOIN anggota a ON m.kode = a.kode LEFT JOIN tglpinjaman x ON m.faktur = x.mfkt WHERE m.kodetagihan = '$kode' GROUP BY m.kode"); $newPar = new Param(); $dataParse['kode'] = (new self)->toArray($data, "kode"); $newPar->add('kode', $dataParse); $dataParse['nama'] = (new self)->toArray($data, "nama"); $newPar->add('nama', $dataParse); $dataParse['bw'] = (new self)->toArray($data, "bw"); $newPar->add('bw', $dataParse); $dataParse['sp'] = (new self)->toArray($data, "sp"); $newPar->add('sp', $dataParse); $dataParse['pt'] = (new self)->toArray($data, "pt"); $newPar->add('pt', $dataParse); $dataParse['manasuka'] = (new self)->toArray($data, "manasuka"); $newPar->add('manasuka', $dataParse); $dataParse['tk'] = (new self)->toArray($data, "tk"); $newPar->add('tk', $dataParse); $dataParse['sw'] = (new self)->toArray($data, "sw"); $newPar->add('sw', $dataParse); $dataParse['swp'] = (new self)->toArray($data, "swp"); $newPar->add('swp', $dataParse); $dataParse['usp1'] = (new self)->toArray($data, "usp1"); $newPar->add('usp1', $dataParse); $dataParse['usp2'] = (new self)->toArray($data, "usp2"); $newPar->add('usp2', $dataParse); $dataParse['usp3'] = (new self)->toArray($data, "usp3"); $newPar->add('usp3', $dataParse); $dataParse['pinjaman'] = (new self)->toArray($data, "pinjaman"); $newPar->add('pinjaman', $dataParse); $dataParse['masa'] = (new self)->toArray($data, "masa"); $newPar->add('masa', $dataParse); $dataParse['pokok'] = (new self)->toArray($data, "pokok"); $newPar->add('pokok', $dataParse); $dataParse['jasa'] = (new self)->toArray($data, "jasa"); $newPar->add('jasa', $dataParse); $dataParse['sisa'] = (new self)->toArray($data, "hsisa"); $newPar->add('sisa', $dataParse); $dataParse['ke'] = (new self)->toArray($data, "ke"); $newPar->add('ke', $dataParse); $dataParse['jmlusp'] = (new self)->toArray($data, "jmlusp"); $newPar->add('jmlusp', $dataParse); $dataParse['jmlinuk'] = (new self)->toArray($data, "jmlinuk"); $newPar->add('jmlinuk', $dataParse); $dataParse['totalall'] = (new self)->toArray($data, "totalall"); $newPar->add('totalall', $dataParse); $newPar->single('mounthy', $tgl); $newPar->single('jurubayar', strtoupper($jurubayar)); $params = $newPar->get(); // encopy $callbacks = []; PhpExcelTemplator::outputToFile($filex, $file, $params, $callbacks); } private function toArray($data = null, $name = ""){ $new = []; $start = 8; foreach ($data as $key => $n) { $e = ( array ) $n; $new[] = str_replace("{no}",$start+$key, $e[$name]); } return $new; } public static function test($kode){ ini_set('display_errors', 1); define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); // copy $dataParse = []; $data = DB::query_result_object("SELECT m.kode ,a.nama ,ifnull(sum(if(m.kodesp = 'reg', ( SELECT pokok + bunga tot from mpinjam where faktur = m.faktur ),0)),0) pinjaman ,ifnull(sum(if(m.kodesp = 'bw', jumlah,0)),0) bw ,ifnull(sum(if(m.kodesp = 'sp', jumlah,0)),0) sp ,ifnull(sum(if(m.kodesp = 'pt', jumlah,0)),0) pt ,ifnull(sum(if(m.kodesp = 'sm', jumlah,0)),0) manasuka ,\"=C{no}-(G{no}*E{no})\" hsisa FROM mtagihan m LEFT JOIN anggota a ON m.kode = a.kode WHERE m.kodetagihan = '$kode' GROUP BY m.kode"); $newPar = new Param(); $dataParse['pinjaman'] = (new self)->toArray($data, "pinjaman"); $newPar->add('pinjaman', $dataParse); $dataParse['kode'] = (new self)->toArray($data, "kode"); $newPar->add('kode', $dataParse); $dataParse['nama'] = (new self)->toArray($data, "nama"); $newPar->add('nama', $dataParse); $dataParse['bw'] = (new self)->toArray($data, "bw"); $newPar->add('bw', $dataParse); $dataParse['sp'] = (new self)->toArray($data, "sp"); $newPar->add('sp', $dataParse); $dataParse['pt'] = (new self)->toArray($data, "pt"); $newPar->add('pt', $dataParse); $dataParse['manasuka'] = (new self)->toArray($data, "manasuka"); $newPar->add('manasuka', $dataParse); $params = $newPar->get(); // encopy DD::view($params); } public static function neraca($tahun, $bulan, $type = 1, $all = ""){ $bulanData = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; ini_set('display_errors', 1); $file = SETUP_PATH.'excel/neraca-lajur-'.$tahun.'-'.$bulan.'-'.date('ymdhis').'.xlsx'; $filex = SETUP_PATH.'/excel/neracalajur_tahunan.xlsx'; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); $setc = $all == "usp"? "usp" : "acc"; $dx = DB::query_result_object_row("SELECT mainacc.nama a, acc.nama b FROM mainacc LEFT JOIN acc ON mainacc.kode = acc.main WHERE mainacc.nama LIKE '%shu belum%' AND acc.app = '$setc'"); $nm = " , acc.kode , acc.nama "; if($type == 1){ $nm = " , acc.main kode , acc.nama_main nama "; } $condition = ""; if($all == 'induk'){ $condition = " WHERE acc.app = 'acc' "; } if($all == 'usp'){ $condition = " WHERE acc.app = 'usp' "; } $p1 = "('PERHITUNGAN NERACA'!D{no}-'PERHITUNGAN NERACA'!E{no})"; $p2 = "('PERHITUNGAN NERACA'!E{no}-'PERHITUNGAN NERACA'!D{no})"; $qr = " SELECT '={no}-6' `no` ,\"='PERHITUNGAN NERACA'!A{no}\" `a1` ,\"='PERHITUNGAN NERACA'!B{no}\" `a2` ,\"='PERHITUNGAN NERACA'!C{no}\" `a3` , if(acc.dk = 'D' AND nr = 'N', \"=IF($p1<0,0,$p1)\", \"=0\") `a4` , if(acc.dk <> 'D' AND nr = 'N' , \"=IF(c{no}=\\\"$dx->a\\\",({shunoo}),( $p2 ))\", IF(nr='N', \"=IF($p1<0, $p1*-1,0)\", \"=0\" ) ) `a5` ,\"='PERHITUNGAN NERACA'!F{no}\" `a6` ,\"='PERHITUNGAN NERACA'!G{no}\" `a7` ,\"=D{no}+F{no}\" `a8` ,\"=E{no}+G{no}\" `a9` ,\"='PERHITUNGAN NERACA'!L{no}\" `a10` ,\"='PERHITUNGAN NERACA'!M{no}\" `a11` ,\"=IF(c{no}=\\\"$dx->a\\\", 0,('PERHITUNGAN NERACA'!N{no}))\" `a12` ,\"=IF(c{no}=\\\"$dx->a\\\", ('PERHITUNGAN NERACA'!N{no})-({shunoo})*-1,('PERHITUNGAN NERACA'!O{no}))\" `a13` ,\"='PERHITUNGAN NERACA'!P{no}\" `a14` ,\"='PERHITUNGAN NERACA'!Q{no}\" `a15` ,\"=IF(c{no}=\\\"$dx->a\\\", 0,('PERHITUNGAN NERACA'!R{no}))\" `a16` ,\"=IF(c{no}=\\\"$dx->a\\\", ('PERHITUNGAN NERACA'!R{no})-({shunoo})*-1,('PERHITUNGAN NERACA'!S{no}))\" `a17` $nm , sum(ifnull(na.debet,0)) nad , sum(ifnull(na.kredit,0)) nak , sum(ifnull(nm.debet,0)) nmd , sum(ifnull(nm.kredit,0)) nmk , if(acc.nr = 'N', '=D{no}+F{no}', '=F{no}') npd , if(acc.nr = 'N', '=E{no}+G{no}', '=G{no}') npk , '=IF(H{no}>I{no},H{no}-I{no},0)' nsd , '=IF(I{no}>H{no},I{no}-H{no},0)' nsk , '0' pyd , '0' pyk , '=IF(AND(J{no}>0,K{no}>0),0,IF(AND(J{no}>0,K{no}=0),(J{no}+L{no})-M{no},IF(AND(K{no}>0,F{no}=0),0,L{no})))' pnd , '=IF(AND(J{no}>0,K{no}>0),0,IF(AND(J{no}>0,K{no}=0),0,IF(AND(K{no}>0,J{no}=0),(K{no}+M{no})-L{no},M{no})))' pnk , '=IF(OR(LEFT(B{no},1)=\"4\",LEFT(B{no},1)=\"5\",LEFT(B{no},1)=\"6\",LEFT(B{no},1)=\"7\",LEFT(B{no},1)=\"8\"),N{no},0)' pld , '=IF(OR(LEFT(B{no},1)=\"4\",LEFT(B{no},1)=\"5\",LEFT(B{no},1)=\"6\",LEFT(B{no},1)=\"7\",LEFT(B{no},1)=\"8\"),O{no},0)' plk , '=IF(OR(LEFT(B{no},1)=\"1\",LEFT(B{no},1)=\"2\",LEFT(B{no},1)=\"3\"),N{no},0)' ned , '=IF(OR(LEFT(B{no},1)=\"1\",LEFT(B{no},1)=\"2\",LEFT(B{no},1)=\"3\"),O{no},0)' nek FROM acc LEFT JOIN ( SELECT a.kode, sum(a.debet) debet, sum(a.kredit) kredit FROM ( SELECT b.kode, if(b.dk = 'D', total, 0) debet, if(b.dk = 'K', total, 0) kredit FROM bbtahunan b LEFT JOIN acc ON acc.kode = b.kode WHERE tahun = '".($tahun-1)."' AND acc.nr = 'N' ".( ($tahun*1) > 1 ? " UNION ALL SELECT kode, sum(debet) debet, sum(kredit) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl >= '$tahun-01-01' AND tgl < '$tahun-$bulan-01' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl >= '$tahun-01-01' AND tgl < '$tahun-$bulan-01' GROUP BY rekkredit ) a GROUP BY a.kode ": "")." ) a GROUP BY a.kode ) na ON na.kode = acc.kode LEFT JOIN ( SELECT kode, sum(debet) debet, sum(kredit) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl >= '$tahun-$bulan-01' AND tgl <= '".date("Y-m-t",strtotime("$tahun-$bulan"))."' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl >= '$tahun-$bulan-01' AND tgl <= '".date("Y-m-t",strtotime("$tahun-$bulan"))."' GROUP BY rekkredit ) a GROUP BY a.kode ) nm ON nm.kode = acc.kode $condition GROUP BY kode ORDER BY acc.kode ASC "; // echo "
"; // echo $qr; // die(); $data = DB::query_result_object($qr); $endlaba = count($data) + 7 + 1; $startlaba = 7; foreach($data as $ceklaba){ if( intval( substr( $ceklaba->kode,0,1) ) < 4 ){ $startlaba++; } }; $dataParse = []; $newPar = new Param(); $newPar2 = new Param(); $dataParse['no'] = (new self)->toArray2($data, "no"); $newPar->add('no', $dataParse); $dataParse['kode'] = (new self)->toArray2($data, "kode"); $newPar->add('kode', $dataParse); $dataParse['nama'] = (new self)->toArray2($data, "nama"); $newPar->add('nama', $dataParse); $dataParse['nad'] = (new self)->toArray2($data, "nad"); $newPar->add('nad', $dataParse); $dataParse['nak'] = (new self)->toArray2($data, "nak"); $newPar->add('nak', $dataParse); $dataParse['nmd'] = (new self)->toArray2($data, "nmd"); $newPar->add('nmd', $dataParse); $dataParse['nmk'] = (new self)->toArray2($data, "nmk"); $newPar->add('nmk', $dataParse); $dataParse['npd'] = (new self)->toArray2($data, "npd"); $newPar->add('npd', $dataParse); $dataParse['npk'] = (new self)->toArray2($data, "npk"); $newPar->add('npk', $dataParse); $dataParse['nsd'] = (new self)->toArray2($data, "nsd"); $newPar->add('nsd', $dataParse); $dataParse['nsk'] = (new self)->toArray2($data, "nsk"); $newPar->add('nsk', $dataParse); $dataParse['pyd'] = (new self)->toArray2($data, "pyd"); $newPar->add('pyd', $dataParse); $dataParse['pyk'] = (new self)->toArray2($data, "pyk"); $newPar->add('pyk', $dataParse); $dataParse['pnd'] = (new self)->toArray2($data, "pnd"); $newPar->add('pnd', $dataParse); $dataParse['pnk'] = (new self)->toArray2($data, "pnk"); $newPar->add('pnk', $dataParse); $dataParse['pld'] = (new self)->toArray2($data, "pld"); $newPar->add('pld', $dataParse); $dataParse['plk'] = (new self)->toArray2($data, "plk"); $newPar->add('plk', $dataParse); $dataParse['ned'] = (new self)->toArray2($data, "ned"); $newPar->add('ned', $dataParse); $dataParse['nek'] = (new self)->toArray2($data, "nek"); $newPar->add('nek', $dataParse); $newPar->single('per', $bulanData[ $bulan - 1 ] ." ". $tahun ); $newPar2->single('per', $bulanData[ $bulan - 1 ] ." ". $tahun ); // $newPar2->single('shu', "=SUM('PERHITUNGAN NERACA'!E$startlaba:E$endlaba)-SUM('PERHITUNGAN NERACA'!D$startlaba:D$endlaba)" ); $newPar->single('shu', "=SUM('PERHITUNGAN NERACA'!E$startlaba:E$endlaba)-SUM('PERHITUNGAN NERACA'!D$startlaba:D$endlaba)+'PERHITUNGAN NERACA'!E".($startlaba-1)."-'PERHITUNGAN NERACA'!D".($startlaba-1)."" ); for ($ix = 1; $ix <= 17; $ix++) { $dataParse['a'.$ix] = (new self)->toArray2($data, "a".$ix, $startlaba, $endlaba, 1); $newPar2->add('a'.$ix, $dataParse); } // echo $endlaba; // die(); $lastDates = date("t/m/Y" , strtotime($tahun."-".$bulan."-01")); function ubahFormatTanggal($tanggal) { // Array bulan dalam bahasa Indonesia $bulan = array( 1 => 'Januari', 2 => 'Februari', 3 => 'Maret', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Agustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Desember' ); // Pecah tanggal menjadi array $tanggalArray = explode('/', $tanggal); // Ambil elemen tanggal, bulan, dan tahun $tanggal = $tanggalArray[0]; $bulanIndex = (int)$tanggalArray[1]; $tahun = $tanggalArray[2]; // Ubah bulan menjadi teks $bulanTeks = $bulan[$bulanIndex]; // Format ulang tanggal $tanggalFormatBaru = $tanggal . ' ' . $bulanTeks . ' ' . $tahun; return $tanggalFormatBaru; } $newPar->single('date', ubahFormatTanggal($lastDates) ); $params = $newPar->get(); $params2 = $newPar2->get(); // encopy $callbacks = []; $events = []; $spreadsheet = IOFactory::load($filex); $templateVarsArr = $spreadsheet->getSheet(1)->toArray(); $sheet1 = $spreadsheet->getSheet(1); PhpExcelTemplator::renderWorksheet($sheet1, $templateVarsArr, $params, $callbacks, $events); $sheet2 = $spreadsheet->getSheet(0); $templateVarsArr2 = $spreadsheet->getSheet(0)->toArray(); PhpExcelTemplator::renderWorksheet($sheet2, $templateVarsArr2, $params2, $callbacks, $events); PhpExcelTemplator::outputSpreadsheetToFile($spreadsheet, $file); } // backup code neraca public static function neraca_bc($tahun, $bulan, $type = 1, $all = ""){ $bulanData = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; ini_set('display_errors', 1); $file = SETUP_PATH.'excel/neraca-lajur-'.$tahun.'-'.$bulan.'-'.date('ymdhis').'.xlsx'; $filex = SETUP_PATH.'/excel/neracalajur.xlsx'; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); $nm = " , acc.kode , acc.nama "; if($type == 1){ $nm = " , acc.main kode , acc.nama_main nama "; } $condition = ""; if($all == 'induk'){ $condition = " WHERE acc.app = 'acc' "; } if($all == 'usp'){ $condition = " WHERE acc.app = 'usp' "; } $qr = " SELECT '={no}-6' `no` ,\"='PERHITUNGAN NERACA'!A{no}\" `a1` ,\"='PERHITUNGAN NERACA'!B{no}\" `a2` ,\"='PERHITUNGAN NERACA'!C{no}\" `a3` , if(acc.dk = 'D' AND nr = 'N', \"='PERHITUNGAN NERACA'!D{no}-'PERHITUNGAN NERACA'!E{no}\", \"=0\") `a4` , if(acc.dk <> 'D' AND nr = 'N' , \"='PERHITUNGAN NERACA'!E{no}-'PERHITUNGAN NERACA'!D{no}\", \"=0\") `a5` ,\"='PERHITUNGAN NERACA'!F{no}\" `a6` ,\"='PERHITUNGAN NERACA'!G{no}\" `a7` ,\"=D{no}+F{no}\" `a8` ,\"=E{no}+G{no}\" `a9` ,\"='PERHITUNGAN NERACA'!L{no}\" `a10` ,\"='PERHITUNGAN NERACA'!M{no}\" `a11` ,\"='PERHITUNGAN NERACA'!N{no}\" `a12` ,\"='PERHITUNGAN NERACA'!O{no}\" `a13` ,\"='PERHITUNGAN NERACA'!P{no}\" `a14` ,\"='PERHITUNGAN NERACA'!Q{no}\" `a15` ,\"='PERHITUNGAN NERACA'!R{no}\" `a16` ,\"='PERHITUNGAN NERACA'!S{no}\" `a17` $nm , sum(ifnull(na.debet,0)) nad , sum(ifnull(na.kredit,0)) nak , sum(ifnull(nm.debet,0)) nmd , sum(ifnull(nm.kredit,0)) nmk , if(acc.nr = 'N', '=D{no}+F{no}', '=F{no}') npd , if(acc.nr = 'N', '=E{no}+G{no}', '=G{no}') npk , '=IF(H{no}>I{no},H{no}-I{no},0)' nsd , '=IF(I{no}>H{no},I{no}-H{no},0)' nsk , '0' pyd , '0' pyk , '=IF(AND(J{no}>0,K{no}>0),0,IF(AND(J{no}>0,K{no}=0),(J{no}+L{no})-M{no},IF(AND(K{no}>0,F{no}=0),0,L{no})))' pnd , '=IF(AND(J{no}>0,K{no}>0),0,IF(AND(J{no}>0,K{no}=0),0,IF(AND(K{no}>0,J{no}=0),(K{no}+M{no})-L{no},M{no})))' pnk , '=IF(OR(LEFT(B{no},1)=\"4\",LEFT(B{no},1)=\"5\",LEFT(B{no},1)=\"6\",LEFT(B{no},1)=\"7\",LEFT(B{no},1)=\"8\"),N{no},0)' pld , '=IF(OR(LEFT(B{no},1)=\"4\",LEFT(B{no},1)=\"5\",LEFT(B{no},1)=\"6\",LEFT(B{no},1)=\"7\",LEFT(B{no},1)=\"8\"),O{no},0)' plk , '=IF(OR(LEFT(B{no},1)=\"1\",LEFT(B{no},1)=\"2\",LEFT(B{no},1)=\"3\"),N{no},0)' ned , '=IF(OR(LEFT(B{no},1)=\"1\",LEFT(B{no},1)=\"2\",LEFT(B{no},1)=\"3\"),O{no},0)' nek FROM acc LEFT JOIN ( SELECT a.kode, sum(a.debet) debet, sum(a.kredit) kredit FROM ( SELECT b.kode, if(b.dk = 'D', total, 0) debet, if(b.dk = 'K', total, 0) kredit FROM bbtahunan b LEFT JOIN acc ON acc.kode = b.kode WHERE tahun = '".($tahun-1)."' AND acc.nr = 'N' ".( ($tahun*1) > 1 ? " UNION ALL SELECT kode, sum(debet) debet, sum(kredit) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl >= '$tahun-01-01' AND tgl < '$tahun-$bulan-01' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl >= '$tahun-01-01' AND tgl < '$tahun-$bulan-01' GROUP BY rekkredit ) a GROUP BY a.kode ": "")." ) a GROUP BY a.kode ) na ON na.kode = acc.kode LEFT JOIN ( SELECT kode, sum(debet) debet, sum(kredit) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl >= '$tahun-$bulan-01' AND tgl <= '".date("Y-m-t",strtotime("$tahun-$bulan"))."' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl >= '$tahun-$bulan-01' AND tgl <= '".date("Y-m-t",strtotime("$tahun-$bulan"))."' GROUP BY rekkredit ) a GROUP BY a.kode ) nm ON nm.kode = acc.kode $condition GROUP BY kode ORDER BY acc.kode ASC "; // echo ""; // echo $qr; $data = DB::query_result_object($qr); $endlaba = count($data) + 7; $startlaba = 7; foreach($data as $ceklaba){ if( intval( substr( $ceklaba->kode,0,1) ) < 4 ){ $startlaba++; } }; $dataParse = []; $newPar = new Param(); $newPar2 = new Param(); $dataParse['no'] = (new self)->toArray2($data, "no"); $newPar->add('no', $dataParse); $dataParse['kode'] = (new self)->toArray2($data, "kode"); $newPar->add('kode', $dataParse); $dataParse['nama'] = (new self)->toArray2($data, "nama"); $newPar->add('nama', $dataParse); $dataParse['nad'] = (new self)->toArray2($data, "nad"); $newPar->add('nad', $dataParse); $dataParse['nak'] = (new self)->toArray2($data, "nak"); $newPar->add('nak', $dataParse); $dataParse['nmd'] = (new self)->toArray2($data, "nmd"); $newPar->add('nmd', $dataParse); $dataParse['nmk'] = (new self)->toArray2($data, "nmk"); $newPar->add('nmk', $dataParse); $dataParse['npd'] = (new self)->toArray2($data, "npd"); $newPar->add('npd', $dataParse); $dataParse['npk'] = (new self)->toArray2($data, "npk"); $newPar->add('npk', $dataParse); $dataParse['nsd'] = (new self)->toArray2($data, "nsd"); $newPar->add('nsd', $dataParse); $dataParse['nsk'] = (new self)->toArray2($data, "nsk"); $newPar->add('nsk', $dataParse); $dataParse['pyd'] = (new self)->toArray2($data, "pyd"); $newPar->add('pyd', $dataParse); $dataParse['pyk'] = (new self)->toArray2($data, "pyk"); $newPar->add('pyk', $dataParse); $dataParse['pnd'] = (new self)->toArray2($data, "pnd"); $newPar->add('pnd', $dataParse); $dataParse['pnk'] = (new self)->toArray2($data, "pnk"); $newPar->add('pnk', $dataParse); $dataParse['pld'] = (new self)->toArray2($data, "pld"); $newPar->add('pld', $dataParse); $dataParse['plk'] = (new self)->toArray2($data, "plk"); $newPar->add('plk', $dataParse); $dataParse['ned'] = (new self)->toArray2($data, "ned"); $newPar->add('ned', $dataParse); $dataParse['nek'] = (new self)->toArray2($data, "nek"); $newPar->add('nek', $dataParse); $newPar->single('per', $bulanData[ $bulan - 1 ] ." ". $tahun ); $newPar2->single('per', $bulanData[ $bulan - 1 ] ." ". $tahun ); $newPar2->single('shu', "=SUM('PERHITUNGAN NERACA'!E$startlaba:E$endlaba)-SUM('PERHITUNGAN NERACA'!D$startlaba:D$endlaba)" ); for ($ix = 1; $ix <= 17; $ix++) { $dataParse['a'.$ix] = (new self)->toArray2($data, "a".$ix); $newPar2->add('a'.$ix, $dataParse); } $lastDates = date("t/m/Y" , strtotime($tahun."-".$bulan."-01")); function ubahFormatTanggal($tanggal) { // Array bulan dalam bahasa Indonesia $bulan = array( 1 => 'Januari', 2 => 'Februari', 3 => 'Maret', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Agustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Desember' ); // Pecah tanggal menjadi array $tanggalArray = explode('/', $tanggal); // Ambil elemen tanggal, bulan, dan tahun $tanggal = $tanggalArray[0]; $bulanIndex = (int)$tanggalArray[1]; $tahun = $tanggalArray[2]; // Ubah bulan menjadi teks $bulanTeks = $bulan[$bulanIndex]; // Format ulang tanggal $tanggalFormatBaru = $tanggal . ' ' . $bulanTeks . ' ' . $tahun; return $tanggalFormatBaru; } $newPar->single('date', ubahFormatTanggal($lastDates) ); $params = $newPar->get(); $params2 = $newPar2->get(); // encopy $callbacks = []; $events = []; $spreadsheet = IOFactory::load($filex); $templateVarsArr = $spreadsheet->getSheet(1)->toArray(); $sheet1 = $spreadsheet->getSheet(1); PhpExcelTemplator::renderWorksheet($sheet1, $templateVarsArr, $params, $callbacks, $events); $sheet2 = $spreadsheet->getSheet(0); $templateVarsArr2 = $spreadsheet->getSheet(0)->toArray(); PhpExcelTemplator::renderWorksheet($sheet2, $templateVarsArr2, $params2, $callbacks, $events); PhpExcelTemplator::outputSpreadsheetToFile($spreadsheet, $file); } public static function neraca_tahunan($tahun, $bulan, $type = 1, $all = ""){ $bulanData = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; ini_set('display_errors', 1); $file = SETUP_PATH.'excel/neraca-lajur-'.$tahun.'-'.$bulan.'-'.date('ymdhis').'.xlsx'; $filex = SETUP_PATH.'/excel/neracalajur_tahunan.xlsx'; define('SPECIAL_ARRAY_TYPE', CellSetterArrayValueSpecial::class); $setc = $all == "usp"? "usp" : "acc"; $dx = DB::query_result_object_row("SELECT mainacc.nama a, acc.nama b FROM mainacc LEFT JOIN acc ON mainacc.kode = acc.main WHERE mainacc.nama LIKE '%shu belum%' AND acc.app = '$setc'"); $nm = " , acc.kode , acc.nama "; if($type == 1){ $nm = " , acc.main kode , acc.nama_main nama "; } $condition = ""; $condition2 = ""; $codename = ""; if($all == 'induk'){ $condition = " WHERE acc.app = 'acc' "; $condition2 = " AND acc.app = 'acc' "; $codename = "acc"; } if($all == 'usp'){ $condition = " WHERE acc.app = 'usp' "; $condition2 = " AND acc.app = 'usp' "; $codename = "usp"; } $p1 = "('PERHITUNGAN NERACA'!D{no}-'PERHITUNGAN NERACA'!E{no})"; $p2 = "('PERHITUNGAN NERACA'!E{no}-'PERHITUNGAN NERACA'!D{no})"; $qr = " SELECT '={no}-6' `no` ,\"='PERHITUNGAN NERACA'!A{no}\" `a1` ,\"='PERHITUNGAN NERACA'!B{no}\" `a2` ,\"='PERHITUNGAN NERACA'!C{no}\" `a3` , if(acc.dk = 'D' AND nr = 'N', \"=IF($p1<0,0,$p1)\", \"=0\") `a4` , if(acc.dk <> 'D' AND nr = 'N' , \"=IF(c{no}=\\\"$dx->a\\\", ('PERHITUNGAN NERACA'!E{no}-'PERHITUNGAN NERACA'!D{no})+({shuno}),('PERHITUNGAN NERACA'!E{no}-'PERHITUNGAN NERACA'!D{no}))\", \"=IF($p1<0, $p1*-1,0)\") `a5` ,\"='PERHITUNGAN NERACA'!F{no}\" `a6` ,\"='PERHITUNGAN NERACA'!G{no}\" `a7` ,\"=D{no}+F{no}\" `a8` ,\"=E{no}+G{no}\" `a9` ,\"='PERHITUNGAN NERACA'!L{no}\" `a10` ,\"='PERHITUNGAN NERACA'!M{no}\" `a11` ,\"=IF(c{no}=\\\"$dx->a\\\", ('PERHITUNGAN NERACA'!N{no})-({shuno}),('PERHITUNGAN NERACA'!N{no}))\" `a12` ,\"='PERHITUNGAN NERACA'!O{no}\" `a13` ,\"='PERHITUNGAN NERACA'!P{no}\" `a14` ,\"='PERHITUNGAN NERACA'!Q{no}\" `a15` ,\"=IF(c{no}=\\\"$dx->a\\\", ('PERHITUNGAN NERACA'!R{no})-({shuno}),('PERHITUNGAN NERACA'!R{no}))\" `a16` ,\"='PERHITUNGAN NERACA'!S{no}\" `a17` $nm , sum(ifnull(na.debet,0)) nad , sum(ifnull(na.kredit,0)) nak , sum(ifnull(nm.debet,0)) nmd , sum(ifnull(nm.kredit,0)) nmk , if(acc.nr = 'N', '=D{no}+F{no}', '=F{no}') npd , if(acc.nr = 'N', '=E{no}+G{no}', '=G{no}') npk , '=IF(H{no}>I{no},H{no}-I{no},0)' nsd , '=IF(I{no}>H{no},I{no}-H{no},0)' nsk , '0' pyd , '0' pyk , '=IF(AND(J{no}>0,K{no}>0),0,IF(AND(J{no}>0,K{no}=0),(J{no}+L{no})-M{no},IF(AND(K{no}>0,F{no}=0),0,L{no})))' pnd , '=IF(AND(J{no}>0,K{no}>0),0,IF(AND(J{no}>0,K{no}=0),0,IF(AND(K{no}>0,J{no}=0),(K{no}+M{no})-L{no},M{no})))' pnk , '=IF(OR(LEFT(B{no},1)=\"4\",LEFT(B{no},1)=\"5\",LEFT(B{no},1)=\"6\",LEFT(B{no},1)=\"7\",LEFT(B{no},1)=\"8\"),N{no},0)' pld , '=IF(OR(LEFT(B{no},1)=\"4\",LEFT(B{no},1)=\"5\",LEFT(B{no},1)=\"6\",LEFT(B{no},1)=\"7\",LEFT(B{no},1)=\"8\"),O{no},0)' plk , '=IF(OR(LEFT(B{no},1)=\"1\",LEFT(B{no},1)=\"2\",LEFT(B{no},1)=\"3\"),N{no},0)' ned , '=IF(OR(LEFT(B{no},1)=\"1\",LEFT(B{no},1)=\"2\",LEFT(B{no},1)=\"3\"),O{no},0)' nek FROM acc LEFT JOIN ( SELECT kode, sum(debet) debet, sum(kredit) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl < '$tahun-01-01' AND acc.nr = 'N' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl < '$tahun-01-01' AND acc.nr = 'N' GROUP BY rekkredit UNION ALL SELECT getKodeSHU('usp') kode, 0 debet, sum(kredit) - sum(debet) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl < '$tahun-01-01' AND acc.nr <> 'N' AND acc.app='$codename' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl < '$tahun-01-01' AND acc.nr <> 'N' AND acc.app='$codename' GROUP BY rekkredit ) a ) a GROUP BY a.kode ) na ON na.kode = acc.kode LEFT JOIN ( SELECT kode, sum(debet) debet, sum(kredit) kredit FROM ( SELECT rekdebit kode , sum(debit) debet , 0 kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekdebit WHERE tgl >= '$tahun-01-01' AND tgl <= '".date("Y-m-t",strtotime("$tahun-$bulan"))."' GROUP BY rekdebit UNION ALL SELECT rekkredit kode , 0 debet , sum(kredit) kredit FROM lap_bb LEFT JOIN acc ON acc.kode = lap_bb.rekkredit WHERE tgl >= '$tahun-01-01' AND tgl <= '".date("Y-m-t",strtotime("$tahun-$bulan"))."' GROUP BY rekkredit ) a GROUP BY a.kode ) nm ON nm.kode = acc.kode $condition GROUP BY kode ORDER BY acc.kode ASC "; // echo ""; // echo $qr; // die(); $data = DB::query_result_object($qr); $endlaba = count($data) + 7; $startlaba = 7; foreach($data as $ceklaba){ if( intval( substr( $ceklaba->kode,0,1) ) < 4 ){ $startlaba++; } }; $dataParse = []; $newPar = new Param(); $newPar2 = new Param(); $dataParse['no'] = (new self)->toArray2($data, "no"); $newPar->add('no', $dataParse); $dataParse['kode'] = (new self)->toArray2($data, "kode"); $newPar->add('kode', $dataParse); $dataParse['nama'] = (new self)->toArray2($data, "nama"); $newPar->add('nama', $dataParse); $dataParse['nad'] = (new self)->toArray2($data, "nad"); $newPar->add('nad', $dataParse); $dataParse['nak'] = (new self)->toArray2($data, "nak"); $newPar->add('nak', $dataParse); $dataParse['nmd'] = (new self)->toArray2($data, "nmd"); $newPar->add('nmd', $dataParse); $dataParse['nmk'] = (new self)->toArray2($data, "nmk"); $newPar->add('nmk', $dataParse); $dataParse['npd'] = (new self)->toArray2($data, "npd"); $newPar->add('npd', $dataParse); $dataParse['npk'] = (new self)->toArray2($data, "npk"); $newPar->add('npk', $dataParse); $dataParse['nsd'] = (new self)->toArray2($data, "nsd"); $newPar->add('nsd', $dataParse); $dataParse['nsk'] = (new self)->toArray2($data, "nsk"); $newPar->add('nsk', $dataParse); $dataParse['pyd'] = (new self)->toArray2($data, "pyd"); $newPar->add('pyd', $dataParse); $dataParse['pyk'] = (new self)->toArray2($data, "pyk"); $newPar->add('pyk', $dataParse); $dataParse['pnd'] = (new self)->toArray2($data, "pnd"); $newPar->add('pnd', $dataParse); $dataParse['pnk'] = (new self)->toArray2($data, "pnk"); $newPar->add('pnk', $dataParse); $dataParse['pld'] = (new self)->toArray2($data, "pld"); $newPar->add('pld', $dataParse); $dataParse['plk'] = (new self)->toArray2($data, "plk"); $newPar->add('plk', $dataParse); $dataParse['ned'] = (new self)->toArray2($data, "ned"); $newPar->add('ned', $dataParse); $dataParse['nek'] = (new self)->toArray2($data, "nek"); $newPar->add('nek', $dataParse); $newPar->single('per', $bulanData[ $bulan - 1 ] ." ". $tahun ); $newPar2->single('per', $bulanData[ $bulan - 1 ] ." ". $tahun ); $newPar->single('shu', "=SUM('PERHITUNGAN NERACA'!E$startlaba:E$endlaba)-SUM('PERHITUNGAN NERACA'!D$startlaba:D$endlaba)" ); for ($ix = 1; $ix <= 17; $ix++) { $dataParse['a'.$ix] = (new self)->toArray2($data, "a".$ix, $startlaba, $endlaba); $newPar2->add('a'.$ix, $dataParse); } // die(); $lastDates = date("t/m/Y" , strtotime($tahun."-".$bulan."-01")); function ubahFormatTanggal($tanggal) { // Array bulan dalam bahasa Indonesia $bulan = array( 1 => 'Januari', 2 => 'Februari', 3 => 'Maret', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Agustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Desember' ); // Pecah tanggal menjadi array $tanggalArray = explode('/', $tanggal); // Ambil elemen tanggal, bulan, dan tahun $tanggal = $tanggalArray[0]; $bulanIndex = (int)$tanggalArray[1]; $tahun = $tanggalArray[2]; // Ubah bulan menjadi teks $bulanTeks = $bulan[$bulanIndex]; // Format ulang tanggal $tanggalFormatBaru = $tanggal . ' ' . $bulanTeks . ' ' . $tahun; return $tanggalFormatBaru; } $newPar->single('date', ubahFormatTanggal($lastDates) ); $params = $newPar->get(); $params2 = $newPar2->get(); // encopy $callbacks = []; $events = []; $spreadsheet = IOFactory::load($filex); $templateVarsArr = $spreadsheet->getSheet(1)->toArray(); $sheet1 = $spreadsheet->getSheet(1); PhpExcelTemplator::renderWorksheet($sheet1, $templateVarsArr, $params, $callbacks, $events); $sheet2 = $spreadsheet->getSheet(0); $templateVarsArr2 = $spreadsheet->getSheet(0)->toArray(); PhpExcelTemplator::renderWorksheet($sheet2, $templateVarsArr2, $params2, $callbacks, $events); PhpExcelTemplator::outputSpreadsheetToFile($spreadsheet, $file); } private function toArray2($data = null, $name = "", $a="", $b="", $h=0){ $new = []; $start = 7; foreach ($data as $key => $n) { $e = ( array ) $n; $c = str_replace("{no}",$start+$key, $e[$name]); $d = str_replace("{shuno}","SUM('PERHITUNGAN NERACA'!E$a:E$b)-SUM('PERHITUNGAN NERACA'!D$a:D$b)", $c); if($h=1){ $d = str_replace("{shunoo}","'PERHITUNGAN NERACA'!E$b:E$b", $c); } $new[] = $d; } $secondCheck= array_map(function($n) use ($a,$b) { return str_replace("{shuno}","SUM('PERHITUNGAN NERACA'!E$a:E$b)-SUM('PERHITUNGAN NERACA'!D$a:D$b)", $n); }, $new); return $secondCheck; } }