Cara Membuat ARUS KAS Debit Kredit di MYSQL dan PHP

Selamat siang, kali ini saya akan berbagi kode tentang membuat arus kas debit kredit di mysql dan php, tentunya kodenya di padukan saja ya, langsung saja.
logikanya, jika ada uang masuk itu di kredit, jika ada uang keluar itu di debit, disini saya menggunakan prinsip bank , bukan prinsip akuntansi.
kode mysql :

<html>
    <head>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
 <script>
  $( function() {
    $( "#date" ).datepicker({
      dateFormat: "yy-mm-dd"
    });
  } );
  </script>
    </head>
    <body>
         
        <fieldset>
          <legend>Laporan Arus Kas Barang</legend>
        </fieldset>
        
        
         <?php
function tgl_indo($tanggal){
	$bulan = array (
		1 =>   'Januari',
		'Februari',
		'Maret',
		'April',
		'Mei',
		'Juni',
		'Juli',
		'Agustus',
		'September',
		'Oktober',
		'November',
		'Desember'
	);
	$pecahkan = explode('-', $tanggal);
	
	// variabel pecahkan 0 = tanggal
	// variabel pecahkan 1 = bulan
	// variabel pecahkan 2 = tahun
 
	return $pecahkan[2] . ' ' . $bulan[ (int)$pecahkan[1] ] . ' ' . $pecahkan[0];
}
    ?>
           <?php
    function rupiah($angka){
	
	$hasil_rupiah = "" . number_format($angka,2,',','.');
	return $hasil_rupiah;
 
}?><div class="table-responsive">
  <table class="table table-bordered table-hover">
		<caption class="title"><b>LAPORAN ARUS KAS</b></caption>
 <tr>
  <th scope="col">No.</th>
  <th scope="col">Tanggal</th>
  <th scope="col">Keterangan</th>
  <th scope="col">Debit</th>
  <th scope="col">Kredit</th>
  <th scope="col">Saldo</th>
 </tr>

<?php  
 $conn = mysqli_connect('localhost','root','','dbmu');
 
 $query1 = mysqli_query($conn, "select a.id,a.tgl,a.keterangan,a.debit,a.kredit,(sum(a.kredit-a.debit) over(partition by a.kode order by a.tgl,a.id asc)) as saldo from
(select id,tglModal as tgl,kode,keterangan,0 as debit,jumlah as kredit,jumlah as saldo from
Modal
union all
select id,tglKeluar as tgl,kode,keterangan,jumlah as debit,0 as kredit,jumlah as saldo from
pengeluaran
union all
select x.id_trans as id,tgl,'301' as kode,concat('Penjualan Inv.',x.noInvoice) as keterangan,0 as debit, sum(xx.qty_item*xx.harga_jual) as kredit,sum(xx.qty_item*xx.harga_jual) as jumlah from trans x left join sub_trans xx on x.id_trans=xx.id_trans where x.status='Approve'
group by id,tgl,kode,keterangan
) a
order by a.tgl,a.kode asc;");

 $no_urut = 0;
 
echo '<form method="post" action="'.Yii::app()->baseUrl.'/arus.php"><input type="hidden" name="search"">
<button class="btn-search" type="submit" name="submit" value="search">Download Excel</button>&nbsp;&nbsp;&nbsp;&nbsp;

'.CHtml::link('Kembali',array('Trans/arus'),array('class'=>'btn bg-maroon btn-flat margin')).'
</form>';

 while($data = mysqli_fetch_assoc($query1)) {
  $no_urut++;
  echo "<tr>
     <td  data-header='No.'>".$no_urut."</td>
     <td  data-header='Tanggal'>".$data['tgl']."</td>
     <td  data-header='Keterangan'>".$data['keterangan']."</td>
     <td  data-header='Debit'>Rp. ".rupiah($data['debit'])."</td>
     <td  data-header='Kredit'>Rp. ".rupiah($data['kredit'])."</td>
     <td  data-header='Saldo'>Rp. ".rupiah($data['saldo'])."</td>
   
  </tr>
  ";
 }
  

?>
</table>
</div>
    </body>
</html>

kode di atas benar benar full mysql dan php serta html, 1 file, sehingga jika kalian buka halaman tersebut ,kode akan langsung tampil.

logika di atas, saya menyatukan 3 tabel, yaitu tabel modal, pengeluaran, dan trans (untuk mengambil transaksi), di satukan agar tidak ganda hasilnya di dalam from, strukturnya seperti ini :

select .a... from ( select tabel modal .. union all .. select tabel pengeluaran .. union all .. select tabel transaksi) a ,, jadi a itu sebagai tabel / hasil pengganti untuk memanggil di select awal., jangan lupa untuk menambahkan group by , ingat group by itu yang ada sum() nya tidak perlu di cantumkan di group by nya.

logika untuk saldo yaitu dengan rumus, debit-kredit , disini saya menggunakan over(partition by yang berfungsi untuk melakukan rumus debit-kredit ke bawah sesuai jumlah rows secara otomatis, dan diurutkan dengan a.kode order by a.tgl,a.id asc (tanggal dulu, lalu id secara asc (ascending))

pengurutan a.kode harus sama, untuk menghindari error saldo, misal, kode di isikan 103 , semua row kodenya harus 103.

maka hasil dari kode tersebut seperti ini :

semoga bermanfaat, baca juga info lainnya di blog kami :

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Scroll to Top