⚝
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
/
apik
/
modules
/
Pemasukan
/
Controllers
/
Edit File: Pemasukan.php
<?php namespace Modules\Pemasukan\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; use TCPDF; class Pemasukan extends BaseController { public function index() { $data['title'] = 'Pemasukan'; $data['li_1'] = 'Daftar Pemasukan'; $data['body'] = 'Modules\Pemasukan\Views\list.php'; $data['pembayaran'] = $this->db->table('pembayaran')->get()->getResult(); $data['mhs'] = $this->db->table('mhs')->get()->getResult(); return view('template', $data); } public function add(){ $p = $this->request->getPost(); $rules = [ 'id_pembayaran' => [ 'label' => 'Jenis pembayaran', // Mengizinkan Huruf (A-z), Spasi, Titik (.), dan Koma (,) 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'id_mhs' => [ 'label' => 'Nama Mahasiswa', // Label untuk pesan error 'rules' => 'required', 'errors' => [ 'required' => '{field} wajib diisi.', ], ], 'smt' => [ 'label' => 'Semester', // Label untuk pesan error 'rules' => 'required', 'errors' => [ 'required' => '{field} wajib diisi.', ], ], 'jumlah' => [ 'label' => 'Jumlah Pembayaran', // Label untuk pesan error 'rules' => 'required', 'errors' => [ 'required' => '{field} wajib diisi.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pemasukan')); } $idProdukArray = $p['id_pembayaran']; $dataToInsert = []; $currentIndex = 0; $batch_id = Uuid::uuid4()->toString(); $db_pembayaran = $this->db->table('pembayaran')->get()->getResult(); foreach ($db_pembayaran as $k) { $nama_pembayaran[$k->id_pembayaran] = base64_encode($k->nama); } $db_mhs = $this->db->table('mhs')->where('id', $p['id_mhs'])->get()->getRow(); $jurusan = $db_mhs->jurusan; foreach ($idProdukArray as $index => $id_p) { $id = Uuid::uuid4()->toString(); $dataToInsert[] =[ 'id' => $id, 'batch_id' => $batch_id, 'tgl' => date('Y-m-d H:i:s'), 'status' => 1, 'id_pembayaran' => $p['id_pembayaran'][$index], 'id_mhs' => $p['id_mhs'], 'jumlah' => $p['jumlah'][$index], 'smt' => $p['smt'][$index], 'nama_admin' => session('nama'), ]; $dataToApi[] = [ 'id_transaksi' => $id, 'batch_id' => $batch_id, 'tgl' => date('Y-m-d H:i:s'), 'status' => 1, 'nama_pembayaran' => $nama_pembayaran[$p['id_pembayaran'][$index]], 'id_mhs' => $p['id_mhs'], 'jumlah' => $p['jumlah'][$index], 'smt' => $p['smt'][$index], 'nama_admin' => session('nama'), 'jurusan' => $jurusan, ]; } if($this->db->table('transaksi')->insertBatch($dataToInsert)){ $url = link_api().'/api/insertTransaksiMhs'; $tr = json_decode(api_siak($url, $dataToApi), true); return $this->response->setJSON([ 'status' => 'success', 'message' => 'Transaksi berhasil disimpan.', 'data' => $tr ]); session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->back(); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect('pemasukan'); } echo '<pre>'; print_r($dataToInsert); echo '</pre>'; } public function delete($id = null){ if($this->db->table('transaksi')->where('id', enc($id))->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('pemasukan')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pemasukan')); } } public function getDetailTr($id = null){ $d = $this->db->table('transaksi t') ->select('t.*, p.nama ') ->join('pembayaran p', 't.id_pembayaran = p.id_pembayaran') ->where('t.batch_id', $id) ->get()->getResult(); $t = ''; foreach ($d as $k) { /* */ $t .= '<tr> <td>'.tgl_indo($k->tgl,true).'</td> <td>'.$k->nama.'</td> <td>'.$k->smt.'</td> <td>'.number_format($k->jumlah).'</td> <td align="center"><a class="btn btn-sm btn-danger" onclick="hapus(`pemasukan/delete/'.dc($k->id).'`)">Hapus</a></td> </tr>'; } echo $t; } public function get($id = null){ $d = $this->db->table('tagihan t') ->select('t.*, p.nama as nm_p, p.frek') ->join('pembayaran p', 't.id_pembayaran = p.id_pembayaran') ->orderBy('p.nama', 'ASC') ->where('t.id_mhs', $id)->get()->getResult(); /* $beasiswa = $this->db->table('penerima_beasiswa b') ->select('beasiswa.*, p.nama as nm_p') ->join('mhs m', 'b.id_mhs = m.id') ->join('beasiswa', 'b.id_beasiswa = beasiswa.id') ->join('pembayaran p', 'beasiswa.id_pembayaran = p.id_pembayaran') ->where('b.id_mhs', $id)->get()->getResult(); */ $beasiswa = []; $out['beasiswa'] = ''; foreach ($beasiswa as $k) { $jenis_potongan[$k->id_pembayaran] = $k->jenis; $potongan_beasiswa[$k->id_pembayaran] = $k->jumlah; $out['beasiswa'] .= $k->nama.' ('.$k->nm_p.'-'.number_format($k->jumlah).'),'; } $out['table_transaksi'] = ''; $transaksi = $this->db->table('transaksi t') ->select('t.*, p.nama as nm_p, p.frek') ->join('pembayaran p', 't.id_pembayaran = p.id_pembayaran') ->join('mhs', 't.id_mhs = mhs.id') ->where('t.status', 1) ->where('t.id_mhs', $id) ->orderBy('t.tgl', 'DESC') ->get()->getResult(); $riwayat = []; foreach ($transaksi as $k) { if($k->frek == '5'){ $tr1x[$k->id_pembayaran][] = $k->jumlah; }else{ $tr[$k->id_pembayaran][$k->smt][] = $k->jumlah; } $riwayat[$k->batch_id]['tgl'] = tgl_indo($k->tgl, true); $riwayat[$k->batch_id]['jumlah'][] = $k->jumlah; } foreach ($riwayat as $batch_id => $value) { $out['table_transaksi'] .= '<tr> <td align="center">'.$value['tgl'].'</td> <td align="right">'.number_format(array_sum($value['jumlah'])).'</td> <td align="center"><a class="btn btn-sm btn-primary" onclick="detail(`'.$batch_id.'`)">Detail</a> <a class="btn btn-sm btn-success" target="_blank" href="'.base_url('pemasukan/cetakKwitansi/').$batch_id.'">Cetak</a></td> </tr> '; } $out['beasiswa'] = rtrim($out['beasiswa'], ', '); $m = $this->db->table('mhs')->where('id', $id)->get()->getRow(); $table = ''; $array_id_p = []; foreach ($d as $k) { $jp[$k->id_pembayaran][$k->smt] = $k->jumlah; $array_nama[$k->id_pembayaran] = $k->nm_p; $array_frek[$k->id_pembayaran] = $k->frek; $array_id_p[$k->id_pembayaran] = $k->id_pembayaran; } for($i=1; $i<=14; $i++){ $jml_smt[$i] = []; } foreach ($array_id_p as $key => $value) { $table .= '<tr><td>'.$array_nama[$key].'</td>'; for($i=1; $i<=14; $i++){ $jml_smt[$i][] = 0; $class = ''; if($i <= $m->smt){ $class = 'bg-danger text-light'; } $tr[$key][$i][] = 0; $tr1x[$key][] = 0; $jml = $jp[$key][$i] ?? 0; $jml_tagihan = $jml; if($jml > 0){ if($i == '5' && $key == '60b5f67befa08'){ $monitor = array_sum($tr[$key][$i]); } if($array_frek[$key] == '5'){ $jml_bayar = array_sum($tr1x[$key]); }else{ $jml_bayar = array_sum($tr[$key][$i]); } //Kurangi Tagihan dengan Jumlah Bayar $jml = $jml - $jml_bayar; //Beri Status Warna if($jml_bayar > 0 && $jml_bayar < $jml_tagihan){ $class = 'bg-warning text-light'; }else if($jml_bayar >= $jml ){ $class = 'bg-success text-light'; } //Kurangi Potongan Beasiswa if(jenjang($m->jurusan) == "S1"){ if($i < 9){ if(isset($jenis_potongan[$key])){ if($jenis_potongan[$key] == 1){ $pb = $jml_tagihan * $potongan_beasiswa[$key] / 100; }else{ $pb = $potongan_beasiswa[$key]; } $jml = $jml - $pb; } } }else{ if($i < 5){ if(isset($jenis_potongan[$key])){ if($jenis_potongan[$key] == 1){ $pb = $jml_tagihan * $potongan_beasiswa[$key] / 100; }else{ $pb = $potongan_beasiswa[$key]; } $jml = $jml - $pb; } } } $jml_smt[$i][] = $jml; $table .= '<td class="'.$class.'"><a onclick="keranjang(`'.$key.'`, `'.$i.'`, `'.$jml.'`, `'.$array_nama[$key].'`)">'.number_format($jml).'</a></td>'; }else{ $table .= '<td>-</td>'; } } $table .= '</tr>'; } $table .= '<tr style="font-weight:bold"><td>Total</td>'; for ($i=1; $i <= count($jml_smt); $i++) { $table .= '<td>'.number_format(array_sum($jml_smt[$i])).'</td>'; } $table .= '</tr>'; $out['table'] = $table; $out['smt'] = $m->smt; $out['jurusan'] = jur($m->jurusan); //$out['monitor'] = (string)$monitor; //echo $table; return json_encode($out); } public function cetakKwitansi($id) { $dt = $this->db->table('transaksi t') ->select('t.*, p.nama as nm_p') ->join('pembayaran p', 't.id_pembayaran = p.id_pembayaran') ->where('t.batch_id', $id) ->get()->getResult(); if (empty($dt)) return "Data tidak ditemukan"; $id_mhs = $dt[0]->id_mhs; $nama_admin = $dt[0]->nama_admin; $dt_mhs = $this->db->table('mhs')->where('id', $id_mhs)->get()->getRow(); $paperSize = [210, 148.5]; $pdf = new \TCPDF('L', 'mm', $paperSize, true, 'UTF-8', false); $pdf->SetCreator('APIK UID'); $pdf->SetTitle('Kwitansi Pembayaran '.$dt_mhs->nama); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(10, 5, 10); $pdf->SetAutoPageBreak(TRUE, 5); // Bagi data menjadi kelompok maksimal 6 baris per halaman $data_chunks = array_chunk($dt, 5); foreach ($data_chunks as $index => $chunk) { $pdf->AddPage(); // --- HEADER --- $pdf->SetFont('helvetica', 'B', 14); $pdf->Cell(0, 7, 'UNIVERSITAS ISLAM DEPOK', 0, 1, 'C'); $pdf->SetFont('helvetica', '', 9); $pdf->Cell(0, 5, 'Jl. H. Ma`sum No. 23 Sawangan Baru Kota Depok Telp. 0813-8542-4189', 0, 1, 'C'); $pdf->Cell(0, 5, 'Website: https://uidepok.ac.id', 0, 1, 'C'); $pdf->SetLineWidth(0.5); $pdf->Line(10, 24, 200, 24); $pdf->SetLineWidth(0.1); $pdf->Line(10, 25, 200, 25); $pdf->Ln(5); $pdf->SetFont('helvetica', 'BU', 11); $pdf->Cell(0, 7, 'KWITANSI PEMBAYARAN', 0, 1, 'C'); $pdf->Ln(3); // --- DATA MAHASISWA --- $pdf->SetFont('helvetica', 'B', 11); $y_pos = $pdf->GetY(); $pdf->SetXY(10, $y_pos); $pdf->Cell(20, 7, 'Nama', 0, 0, 'L'); $pdf->Cell(5, 7, ':', 0, 0, 'C'); $pdf->Cell(70, 7, $dt_mhs->nama, 0, 0, 'L'); $pdf->SetXY(110, $y_pos); $pdf->Cell(20, 7, 'Jurusan', 0, 0, 'L'); $pdf->Cell(5, 7, ':', 0, 0, 'C'); $pdf->Cell(70, 7, jur($dt_mhs->jurusan), 0, 0, 'L'); $y_row2 = $y_pos + 5; $pdf->SetXY(10, $y_row2); $pdf->Cell(20, 7, 'NIM', 0, 0, 'L'); $pdf->Cell(5, 7, ':', 0, 0, 'C'); $pdf->Cell(60, 7, $dt_mhs->nim, 0, 0, 'L'); $pdf->SetXY(110, $y_row2); $pdf->Cell(20, 7, 'SMT', 0, 0, 'L'); $pdf->Cell(5, 7, ':', 0, 0, 'C'); $pdf->Cell(60, 7, $dt_mhs->smt, 0, 0, 'L'); $pdf->Ln(10); // --- TABEL ITEM --- $html_table = '<table border="1" cellpadding="3"> <tr bgcolor="#eeeeee"> <td width="18%" align="center"><b>Tanggal</b></td> <td width="52%" align="center"><b>Nama</b></td> <td width="10%" align="center"><b>SMT</b></td> <td width="20%" align="right"><b>Jumlah</b></td> </tr>'; $total_per_halaman = 0; foreach ($chunk as $item) { $html_table .= '<tr> <td align="center">'.tgl_indo($item->tgl).'</td> <td> '.$item->nm_p.'</td> <td align="center">'.$item->smt.'</td> <td align="right">'.number_format($item->jumlah).'</td> </tr>'; $total_per_halaman += $item->jumlah; } // Tampilkan Total untuk data yang ada di halaman ini saja $html_table .= '<tr> <td colspan="3" align="center"><b>Total</b></td> <td align="right"><b>'.number_format($total_per_halaman).'</b></td> </tr>'; $html_table .= '</table>'; $pdf->SetFont('helvetica', '', 10); $pdf->writeHTML($html_table, true, false, true, false, ''); // --- TANDA TANGAN (Sekarang muncul di SETIAP halaman) --- $pdf->Ln(2); $pdf->SetX(130); $pdf->SetFont('helvetica', '', 10); // Mengambil tanggal dari data pertama di kelompok ini $pdf->Cell(70, 5, 'Depok, ' . tgl_indo($chunk[0]->tgl), 0, 1, 'C'); $pdf->SetX(130); $pdf->Cell(70, 5, 'Bagian Keuangan,', 0, 1, 'C'); $pdf->Ln(12); $pdf->SetX(130); $pdf->SetFont('helvetica', 'BU', 10); $pdf->Cell(70, 5, $nama_admin, 0, 1, 'C'); // Opsional: Keterangan Halaman di pojok kiri bawah $pdf->SetY(-10); $pdf->SetFont('helvetica', 'I', 7); $pdf->Cell(0, 5, 'APIK UID : Lembar ' . ($index + 1) . ' dari ' . count($data_chunks), 0, 0, 'L'); } $this->response->setContentType('application/pdf'); $pdf->Output('Kwitansi-'.$dt_mhs->nama.'.pdf', 'I'); } public function edit(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Pemasukan', // Mengizinkan Huruf (A-z), Spasi, Titik (.), dan Koma (,) 'rules' => 'required|regex_match[/^[a-zA-Z\s.,]*$/]|min_length[3]|max_length[255]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'regex_match' => '{field} hanya boleh berisi huruf, spasi, titik, atau koma.', // Pesan error baru 'min_length' => '{field} minimal {param} karakter.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'tgl' => [ 'label' => 'Format tanggal tidak sesuai', // Label untuk pesan error 'rules' => 'required|valid_date[Y-m-d H:i:s]', 'errors' => [ 'valid_date' => '{field} harus dalam format database yang benar.', 'required' => '{field} wajib diisi.', ], ], 'sumber_dana' => [ 'label' => 'Sumber Dana', // Label untuk pesan error 'rules' => 'required', 'errors' => [ 'required' => '{field} wajib diisi.', ], ], 'jumlah' => [ 'label' => 'Jumlah Pemasukan', // Label untuk pesan error 'rules' => 'required|numeric', 'errors' => [ 'required' => '{field} wajib diisi.', 'numeric' => '{field} Hanya boleh berisi angka' ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pengeluaran')); } $d = [ 'id_pembayaran' => $p['sumber_dana'], 'nama' => $p['nama'], 'tanggal' => $p['tgl'], 'jumlah' => $p['jumlah'], ]; if($this->db->table('pengeluaran')->where('id', enc($p['data_id']))->update($d)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('pengeluaran')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pengeluaran')); } } public function addTagihan() { $p = $this->request->getPost(); $smtArray = $p['smt']; $dataToInsert = []; foreach ($smtArray as $smt) { $id = Uuid::uuid4()->toString(); $dataToInsert[] = [ 'id' => $id, 'id_pembayaran' => $p['jenis'], 'jumlah' => $p['jumlah'], 'smt' => $smt, 'id_mhs' => $p['data_id'], 'ta' => '' ]; } $this->db->table('tagihan')->insertBatch($dataToInsert); return $this->response->setJSON([ 'status' => 'success', 'message' => 'Data tagihan berhasil disimpan.', 'data_received' => $dataToInsert ]); } public function editTagihan($id = null){ $d = $this->db->table('tagihan t') ->select('t.*, p.nama as nm_p') ->join('pembayaran p', 't.id_pembayaran = p.id_pembayaran') ->where('t.id_mhs', $id)->get()->getResult(); $table = ''; $array_id_p = []; foreach ($d as $k) { $jp[$k->id_pembayaran][$k->smt] = $k->jumlah; $id_t[$k->id_pembayaran][$k->smt] = $k->id; $array_nama[$k->id_pembayaran] = $k->nm_p; $array_id_p[$k->id_pembayaran] = $k->id_pembayaran; } foreach ($array_id_p as $key => $value) { $table .= '<tr><td>'.$array_nama[$key].'</td>'; for($i=1; $i<=14; $i++){ $jml = $jp[$key][$i] ?? 0; $id = $id_t[$key][$i] ?? ''; if($jml != 0){ $table .= '<td style="max-width:100px"> <input type="text" style="max-width:100%" name="jml[]" value="'.$jml.'" /> <div class="d-none"> <input type="text" name="id_t[]" value="'.$id.'" /> </div> </td>'; }else{ $table .= '<td align="center">-</td>'; } } $table .= '</tr>'; } echo $table; } public function saveEditTagihan(){ $p = $this->request->getPost(); $db = $this->db->table('tagihan'); $jml_update = 0; $jml_hapus = 0; for( $i=0; $i < count($p['id_t']); $i ++ ){ if($p['jml'][$i] == 0){ $db->where('id', $p['id_t'][$i])->delete(); $jml_hapus++; }else{ $db->where('id', $p['id_t'][$i])->update(['jumlah' => $p['jml'][$i]]); $jml_update++; } } return $this->response->setJSON([ 'status' => 'success', 'message' => $jml_update.' Data tagihan berhasil disimpan dan '. $jml_hapus.' Berhasil dihapus', ]); } }
Simpan