Aplikasi Pembayaran SPP Berbasis Web dengan PHP dan MySQL #10 - Proses Batal dan Cetak

Banner Aplikasi pembayaran spp proses batal dan cetak

Aplikasi Pembayaran SPP - Hai berjumpa lagi dalam blog sederhana ini, masih dalam pembuatan Aplikasi Pembayaran SPP Berbasis Web dengan PHP dan MySQL.

Pada artikel sebelumnya kita sudah membuat fungsi untuk proses Bayar, dan selanjutnya kita akan membuat fungsi untuk proses Batal dan Cetak.

Jika klik tombol Batal maka data Tgl. Bayar, Keterangan dan Petugas pada baris tertentu akan kembali kosong seperti sebelumnya. Dan tombol Cekak akan mengarahkan kita ke halaman cetak data.

Pertama kita buka file transaksi.php yang ada dalam folder includes, ubah tanda pagar (#) pada link tombol Batal menjadi proses-transaksi.php?act=batal&id='.$dt['id_pembayaran'].' dan link tombol Cetak menjadi cetak-transaksi-perbulan.php?nis='.$_GET['nis'].'&id='.$dt['id_pembayaran'].'.



Maka lengkapnya akan seperti kode berikut:
<a href="proses-transaksi.php?act=batal&id='.$dt['id_pembayaran'].'"><button>Batal</button></a> | <a href="cetak-transaksi-perbulan.php?nis='.$_GET['nis'].'&id='.$dt['id_pembayaran'].'"><button>Cetak</button></a>

Method tambahan pada class Petugas:
  • batalBayar()
  • getPembayaranById()

File baru dalam folder petugas:
  • cetak-transaksi-perbulan.php

Lalu buka file proses-transaksi.php dan tambahkan kondisi ketika batal, berikut kode setelah ditambahkan kondisi batal pada file proses-transaksi.php:

proses-transaksi.php

<?php
session_start();
require_once 'Petugas.php';

$petugas = new Petugas;

if(!isset($_SESSION['id'])) {
 header('Location: ../');
} else {
 if($_GET['act'] == 'bayar') {
  // ambil id_pembayaran dari url
  $id_pembayaran = $_GET['id'];
  // tanggal bayar (hari ini)
  $tgl_bayar = date('Y-m-d');
  // dapatkan id_petugas yang saat ini login
  $id_petugas = $_SESSION['id'];

  $bayar = $petugas->prosesBayar($tgl_bayar, $id_petugas, $id_pembayaran);

  if($bayar) {
   $_SESSION['pesan'] = 'Pembayaran sukses';
   header('Location: index.php?nis='.$_SESSION['nis']);
  } else {
   $_SESSION['pesan'] = 'Pembayaran gagal';
   header('Location: index.php?nis='.$_SESSION['nis']);
  }
 } elseif($_GET['act'] == 'batal') {
  $id_pembayaran = $_GET['id'];

  $batal = $petugas->batalBayar($id_pembayaran);

  if($batal) {
   $_SESSION['pesan'] = 'Pembayaran dibatalkan';
   header('Location: index.php?nis='.$_SESSION['nis']);
  } else {
   $_SESSION['pesan'] = 'Pembayaran gagal dibatalkan';
   header('Location: index.php?nis='.$_SESSION['nis']);
  }
 }
}

Jika kita klik tombol Batal maka hasilnya adalah beberapa pesan error karena kita belum membuat method batalBayar().

Lanjut buka file Petugas.php dan tambahkan method dengan nama batalBayar() dan getPembayaranById():
public function batalBayar($id_pembayaran) {
  $stmt = mysqli_query($this->konek, "UPDATE tb_pembayaran SET tgl_bayar = NULL, keterangan = NULL, id_petugas = NULL WHERE id_pembayaran = '$id_pembayaran'");

  return $stmt;
 }

 public function getPembayaranById($id) {
  $stmt = mysqli_query($this->konek, "SELECT p.id_pembayaran, p.bulan_dibayar, s.tahun, s.nominal, p.tgl_bayar, p.keterangan, pt.nama_petugas FROM tb_pembayaran AS p INNER JOIN tb_spp AS s ON p.id_spp = s.id_spp LEFT JOIN tb_petugas AS pt ON p.id_petugas = pt.id_petugas WHERE p.id_pembayaran = '$id' ORDER BY p.id_pembayaran ASC");

  return $stmt;
 }

Sampai sini tombol Batal sudah berfungsi dan tinggal membuat halaman cetak saja.



cetak-transaksi-perbulan.php

<?php
session_start();
require_once 'Petugas.php';

if(!isset($_SESSION['id'])) {
 header('Location: ../');
}

$petugas = new Petugas;

?>

<!DOCTYPE html>
<html>
<head>
 <title>Cetak Transaksi</title>
</head>
<body>
 <h3>Laporan Pembayaran SPP</h3><br/>
 <hr/>

 <?php
 $siswa = $petugas->getDataSiswaByNIS($_GET['nis']);
 $dt_s = mysqli_fetch_assoc($siswa);
 ?>

 <table>
  <tr>
   <td>Nama Siswa</td>
   <td>:</td>
   <td><?= $dt_s['nama_lengkap']; ?></td>
  </tr>
  <tr>
   <td>NIS</td>
   <td>:</td>
   <td><?= $dt_s['nis']; ?></td>
  </tr>
  <tr>
   <td>Kelas</td>
   <td>:</td>
   <td><?= $dt_s['kelas']; ?></td>
  </tr>
 </table>

 <hr/>

 <table border="1" cellspacing="" cellpadding="4" width="100%">
  <tr>
   <th>No.</th>
   <th>ID Pembayaran</th>
   <th>Pembayaran Bulan</th>
   <th>Tgl. Bayra</th>
   <th>Nominal</th>
   <th>Keterangan</th>
  </tr>

  <?php
  $dt_pembayaran = $petugas->getPembayaranById($_GET['id']);

  $no = 1;
  while ($dt_p = mysqli_fetch_assoc($dt_pembayaran)) :
  ?>

  <tr>
   <td><?= $no++; ?></td>
   <td><?= $dt_p['id_pembayaran']; ?></td>
   <td><?= $dt_p['bulan_dibayar']; ?></td>
   <td><?= $dt_p['tgl_bayar']; ?></td>
   <td><?= $dt_p['nominal']; ?></td>
   <td><?= $dt_p['keterangan']; ?></td>
  </tr>

  <?php endwhile; ?>

 </table>

 <table width="100%">
  <tr>
   <td></td>
   <td width="200px">
    <br/>
    <p>Dermayu, <?= date('d/m/y'); ?><br/>
     Operator,
    <br/>
    <br/>
    <br/>
   <p>________________________</p>
   </td>
  </tr>
 </table>

 <a href="#" onclick="window.print();"><button>Cetak</button></a>

</body>
</html>

Posting Komentar

0 Komentar