⚝
One Hat Cyber Team
⚝
Your IP:
192.168.31.6
Server IP:
192.168.1.11
Server:
Linux pams 6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
PHP Version:
8.2.28
Buat File
|
Buat Folder
Upload File
Eksekusi
Dir :
~
/
var
/
www
/
miu
/
modules
/
Keuangan
/
Controllers
/
Edit File: Keuangan.php
<?php namespace Modules\Keuangan\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; require_once(APPPATH . 'ThirdParty/tcpdf/config/tcpdf_config.php'); require_once(APPPATH . 'ThirdParty/tcpdf/tcpdf.php'); //use TCPDF; class Keuangan extends BaseController { public function index(){ $data['title'] = 'Jurnal Keuangan'; $data['li_1'] = 'Daftar Transaksi'; $data['body'] = 'Modules\Keuangan\Views\list'; return view('template', $data); } public function loadData(){ $request = \Config\Services::request(); // Ambil tgl dari AJAX POST request $start_datetime = $request->getPost('start_date'); $end_datetime = $request->getPost('end_date'); // Cek apakah tgl valid, jika tidak, gunakan hari ini sebagai default if (empty($start_datetime) || empty($end_datetime)) { $start_datetime = date('Y-m-d 00:00:00'); $end_datetime = date('Y-m-d 23:59:59'); } $id_sp = session('id_sp'); // Query untuk transaksi masuk (jenis = 1) dengan filter tgl $sql_masuk = "SELECT p.nama AS nama_transaksi, SUM(t.jumlah) AS jumlah, MIN(t.tgl) AS tgl, 1 AS jenis, batch_id FROM transaksi t JOIN pd p ON t.id_pd = p.id WHERE t.jenis = '1' AND t.id_sp = '{$id_sp}' AND t.tgl >= '{$start_datetime}' AND t.tgl <= '{$end_datetime}' GROUP BY t.batch_id, p.nama ORDER BY MIN(t.tgl) ASC"; $query_masuk = $this->db->query($sql_masuk); $data_masuk = $query_masuk->getResultArray(); // Query untuk transaksi keluar (jenis = 0) dengan filter tgl $sql_keluar = "SELECT t.id_pd, t.jumlah, t.tgl, t.batch_id, t.jenis, t.nama as nama_transaksi, batch_id, t.id FROM transaksi t WHERE t.jenis = '0' AND t.id_sp = '{$id_sp}' AND t.tgl >= '{$start_datetime}' AND t.tgl <= '{$end_datetime}' ORDER BY t.tgl ASC"; $query_keluar = $this->db->query($sql_keluar); $data_keluar = $query_keluar->getResultArray(); // Menggabungkan dan mengurutkan $semua_transaksi = array_merge($data_masuk, $data_keluar); usort($semua_transaksi, function ($a, $b) { return strtotime($a['tgl']) - strtotime($b['tgl']); }); // Logika penghitungan saldo $saldo = 0; $data_tabel = []; foreach ($semua_transaksi as $transaksi) { $debit = ($transaksi['jenis'] == 1) ? $transaksi['jumlah'] : 0; $kredit = ($transaksi['jenis'] == 0) ? $transaksi['jumlah'] : 0; $saldo += ($debit - $kredit); if($transaksi['jenis'] == '1'){ $nama = 'Pembayaran Siswa a.n '.$transaksi['nama_transaksi']; $aksi = '<a class="btn btn-sm btn-primary" onclick="detail(`'.$transaksi['batch_id'].'`)">Detail</a> <a class="btn btn-sm btn-success" href="'.base_url('keuangan/kwitansi/').$transaksi['batch_id'].'" target="_blank">Kwitansi</a>'; }else{ $nama = $transaksi['nama_transaksi']; $aksi = ' <a class="btn btn-sm btn-danger" onclick="hapus(`'.base_url('keuangan/delete_transaksi/').$transaksi['id'].'`, `transaksi`)" >Hapus</a> <a class="btn btn-sm btn-warning" onclick="edit(`'.$transaksi['id'].'`)">Edit</a>'; } $data_tabel[] = [ 'tgl' => date('d F Y H:i:s', strtotime($transaksi['tgl'])), 'keterangan' => $nama, 'debit' => number_format($debit, 0, ',', '.'), 'kredit' => number_format($kredit, 0, ',', '.'), 'saldo' => number_format($saldo, 0, ',', '.'), 'aksi' => $aksi ]; } // Kembalikan data dalam format JSON return $this->response->setJSON([ 'data' => $data_tabel, 'csrf_token_hash' => csrf_hash(), 'saldo_akhir' => number_format($saldo, 0, ',', '.') ]); } public function delete_transaksi($id = null){ if($this->db->table('transaksi')->where(['id' => $id])->delete()){ session()->setFlashData(success('Berhasil Menghapus Data')); return redirect()->to(base_url('keuangan')); }else{ session()->setFlashData(gagal('Gagal Menghapus Data')); return redirect()->to(base_url('keuangan')); } } public function get_transaksi($id = null){ $d = $this->db->table('transaksi'); $d->select('transaksi.*, pemasukan.nama as nama_pemasukan, jenis, tahun, bulan, frekuensi'); $d->join('pemasukan', 'transaksi.id_pemasukan = pemasukan.id', 'inner'); $d->join('tagihan', 'transaksi.id_tagihan = tagihan.id', 'inner'); $d->where(['transaksi.batch_id' => $id]); $dt = $d->get()->getResult(); $t = ''; foreach ($dt as $k) { //$b = ['', 'Pertahun', '1x', 'Perbulan', 'Persemester']; $nama_pemasukan = $k->nama_pemasukan; if($k->frekuensi == '3'){ $nama_pemasukan = $k->nama_pemasukan.' Bulan '.$k->bulan.'-'.$k->tahun; }elseif($k->frekuensi == '1'){ $nama_pemasukan = $k->nama_pemasukan.' Tahun '.$k->tahun; }elseif($k->frekuensi == '4'){ if($k->bulan < '7'){ $tahun = $k->tahun -1; $gg = $tahun.'/'.$k->tahun.' Genap'; }else{ $tahun = $k->tahun + 1; $gg = $k->tahun.'/'.$tahun.' Ganjil'; } $nama_pemasukan = $k->nama_pemasukan.' Tahun '.$gg; } $t .= '<tr> <td>'.$k->tgl.'</td> <td>'.$nama_pemasukan.'</td> <td>'.$k->jumlah.'</td> <td><a class="btn btn-sm btn-danger" onclick="hapus(`'.base_url('keuangan/delete_transaksi/').$k->id.'`, `transaksi`)" >Hapus</a></td> </tr>'; } $out['t'] = $t; return json_encode($out); } public function kwitansi($id = null){ $sp = $this->db->table('sp') ->select('sp.*, user.nama as nm_keuangan') ->join('user','sp.nama_keuangan = user.id', 'inner') ->Where('sp.id', session('id_sp'))->get()->getRow(); //print_r($sp); $d = $this->db->table('transaksi'); $d->select('transaksi.*, pemasukan.nama as nama_pemasukan, jenis, tahun, bulan, frekuensi'); $d->join('pemasukan', 'transaksi.id_pemasukan = pemasukan.id', 'inner'); $d->join('tagihan', 'transaksi.id_tagihan = tagihan.id', 'inner'); $d->where(['transaksi.batch_id' => $id]); $dt = $d->get()->getResult(); $id_pd = $dt[0]->id_pd; $pd = $this->db->table('pd')->where('id', $id_pd)->get()->getRow(); $t = ''; foreach ($dt as $k) { //$b = ['', 'Pertahun', '1x', 'Perbulan', 'Persemester']; $nama_pemasukan = $k->nama_pemasukan; if($k->frekuensi == '3'){ $nama_pemasukan = $k->nama_pemasukan.' Bulan '.$k->bulan.'-'.$k->tahun; }elseif($k->frekuensi == '1'){ $nama_pemasukan = $k->nama_pemasukan.' Tahun '.$k->tahun; }elseif($k->frekuensi == '4'){ if($k->bulan < '7'){ $tahun = $k->tahun -1; $gg = $tahun.'/'.$k->tahun.' Genap'; }else{ $tahun = $k->tahun + 1; $gg = $k->tahun.'/'.$tahun.' Ganjil'; } $nama_pemasukan = $k->nama_pemasukan.' Tahun '.$gg; } $tgl = new \DateTime($k->tgl); $t .= '<tr> <td align="center">'.tgl_indo($tgl, TRUE).'</td> <td>'.$nama_pemasukan.'</td> <td align="right">'.number_format($k->jumlah).'</td> </tr>'; $total[] = $k->jumlah; }; $kertas = [210, 140]; $pdf = new \TCPDF("L", PDF_UNIT, $kertas, false, 'UTF-8', false); $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('SIPADAT'); $pdf->SetTitle('Kwitansi'); $pdf->SetSubject('Buyas Apps'); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(25, 10, 20); $pdf->AddPage(); $head = '<table border="0" cellpadding="1" align="center"> <tr> <td width="100%"><font size="12"><b>'.strtoupper(env('yys_name')).'</b></font></td> </tr> <tr> <td width="100%"><font size="16"><b>'.$sp->nama.'</b></font></td> </tr> <tr> <td width="100%"><font size="10">'.$sp->alamat.'</font></td> </tr> </table>'; $pdf->Line(20, 30, 200, 30); $pdf->Line(20, 31, 200, 31, ['width' => 0.5]); $pdf->writeHTML($head, true, false, true, false, ''); $b = '<table border="0" cellpadding="1" align="left"> <tr> <td width="10%">Nama</td> <td width="2%">:</td> <td width="40%">'.$pd->nama.'</td> <td width="3%"></td> <td width="7%">NIS</td> <td width="5%">:</td> <td width="33%">'.$pd->nis.'</td> </tr></table>'; $pdf->writeHTML($b, true, false, true, false, ''); $pdf->SetFont('helvetica', '', 10); $isi = '<table border="1" cellpadding="3"> <tr> <td align="center" width="30%"><b>Tanggal - Jam</b></td> <td align="center" width="50%"><b>Jenis Pembayaran</b></td> <td align="center" width="20%"><b>Jumlah</b></td> </tr> '; $isi .= $t; $isi .= '<tr> <td align="center" colspan="2"><b>Jumlah</b></td> <td align="right"><b>'.number_format(array_sum($total)).'</b></td> </tr></table>'; $pdf->writeHTML($isi, true, false, true, false, ''); $ttd = '<table border="0" cellpadding="3"> <tr> <td align="center"></td> <td align="center"><b>Tata Usaha</b></td> </tr> <tr> <td align="center"></td> <td align="center"></td> </tr> <tr> <td align="center"></td> <td align="center"></td> </tr> <tr> <td align="center"></td> <td align="center"><b>'.$sp->nm_keuangan.'</b></td> </tr> </table>'; $pdf->writeHTML($ttd, true, false, true, false, ''); $pdf->Output('contoh.pdf', 'I'); exit(); } }
Simpan