Initial commit
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
<div class="container mt-4">
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
|
||||
<h4 class="mb-4 fw-bold text-center">Laporan Laba Rugi</h4>
|
||||
|
||||
<form id="filterForm" class="row g-2">
|
||||
|
||||
<div class="col-md-4">
|
||||
<label>Dari Tanggal</label>
|
||||
<input type="date" id="tanggal_dari" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label>Sampai Tanggal</label>
|
||||
<input type="date" id="tanggal_sampai" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 d-flex align-items-end">
|
||||
<button type="submit" class="btn btn-warning w-100">
|
||||
Tampilkan
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<div id="content" class="mt-3"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
function loadData(dari = '', sampai = ''){
|
||||
|
||||
$.get("<?= base_url('labarugi/get_data'); ?>", {
|
||||
tanggal_dari: dari,
|
||||
tanggal_sampai: sampai
|
||||
}, function(res){
|
||||
|
||||
let html = '<div class="row">';
|
||||
|
||||
// ================= PENDAPATAN
|
||||
html += `
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm h-100">
|
||||
<div class="card-body">
|
||||
<h5 class="text-success mb-3">Pendapatan</h5>
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Kode</th>
|
||||
<th>Akun</th>
|
||||
<th class="text-end">Jumlah</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
`;
|
||||
|
||||
res.data.forEach(r=>{
|
||||
if(r.tipe=='revenue'){
|
||||
let saldo = (parseFloat(r.kredit) - parseFloat(r.debit)) || 0;
|
||||
|
||||
html += `
|
||||
<tr>
|
||||
<td>${r.kode_akun}</td>
|
||||
<td>${r.nama_akun}</td>
|
||||
<td class="text-end">${saldo.toLocaleString()}</td>
|
||||
</tr>
|
||||
`;
|
||||
}
|
||||
});
|
||||
|
||||
html += `
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="fw-bold border-top">
|
||||
<td></td>
|
||||
<td>Total Pendapatan</td>
|
||||
<td class="text-end text-success">${Number(res.revenue).toLocaleString()}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// ================= BEBAN
|
||||
html += `
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm h-100">
|
||||
<div class="card-body">
|
||||
<h5 class="text-danger mb-3">Beban</h5>
|
||||
<table class="table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Kode</th>
|
||||
<th>Akun</th>
|
||||
<th class="text-end">Jumlah</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
`;
|
||||
|
||||
res.data.forEach(r=>{
|
||||
if(r.tipe=='expense'){
|
||||
let saldo = (parseFloat(r.debit) - parseFloat(r.kredit)) || 0;
|
||||
|
||||
html += `
|
||||
<tr>
|
||||
<td>${r.kode_akun}</td>
|
||||
<td>${r.nama_akun}</td>
|
||||
<td class="text-end">${saldo.toLocaleString()}</td>
|
||||
</tr>
|
||||
`;
|
||||
}
|
||||
});
|
||||
|
||||
html += `
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="fw-bold border-top">
|
||||
<td></td>
|
||||
<td>Total Beban</td>
|
||||
<td class="text-end text-danger">${Number(res.expense).toLocaleString()}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
html += '</div>';
|
||||
|
||||
// ================= LABA
|
||||
html += `
|
||||
<div class="mt-4">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body text-center">
|
||||
<h5 class="mb-2">Laba Bersih</h5>
|
||||
<h3 class="${res.laba >= 0 ? 'text-success' : 'text-danger'} fw-bold">
|
||||
${Number(res.laba).toLocaleString()}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
$('#content').html(html);
|
||||
|
||||
},'json');
|
||||
}
|
||||
|
||||
// LOAD AWAL
|
||||
loadData();
|
||||
|
||||
// FILTER
|
||||
$('#filterForm').on('submit', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
let dari = $('#tanggal_dari').val();
|
||||
let sampai = $('#tanggal_sampai').val();
|
||||
|
||||
loadData(dari, sampai);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,151 @@
|
||||
<div class="container mt-4">
|
||||
|
||||
<!-- ================= FILTER PERIODE -->
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
|
||||
<h4 class="mb-4 fw-bold text-center">NERACA</h4><hr>
|
||||
|
||||
<form id="filterForm" class="row g-2">
|
||||
|
||||
<div class="col-md-4">
|
||||
<label>Dari Tanggal</label>
|
||||
<input type="date" name="tanggal_dari" id="tanggal_dari" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label>Sampai Tanggal</label>
|
||||
<input type="date" name="tanggal_sampai" id="tanggal_sampai" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 d-flex align-items-end">
|
||||
<button type="submit" class="btn btn-warning w-100">
|
||||
Tampilkan
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<!-- ACTIVA -->
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<h5>ACTIVA</h5>
|
||||
|
||||
<table class="table">
|
||||
<tbody id="activaBody"></tbody>
|
||||
<tfoot>
|
||||
<tr class="fw-bold">
|
||||
<td>Total Activa</td>
|
||||
<td id="totalActiva"></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- PASIVA -->
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<h5>PASIVA</h5>
|
||||
|
||||
<table class="table">
|
||||
<tbody id="pasivaBody"></tbody>
|
||||
<tfoot>
|
||||
<tr class="fw-bold">
|
||||
<td>Total Pasiva</td>
|
||||
<td id="totalPasiva"></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
function loadData(tanggal_dari = '', tanggal_sampai = ''){
|
||||
|
||||
$.get("<?= base_url('neraca/get_data'); ?>", {
|
||||
tanggal_dari: tanggal_dari,
|
||||
tanggal_sampai: tanggal_sampai
|
||||
}, function(res){
|
||||
|
||||
let act = '', pas = '';
|
||||
|
||||
// ================= ACTIVA
|
||||
res.activa.forEach(a=>{
|
||||
act += `<tr>
|
||||
<td>${a.kode} - ${a.nama}</td>
|
||||
<td class="text-end">${Number(a.saldo).toLocaleString()}</td>
|
||||
</tr>`;
|
||||
});
|
||||
|
||||
// ================= PASIVA
|
||||
res.pasiva.forEach(p=>{
|
||||
pas += `<tr>
|
||||
<td>${p.kode} - ${p.nama}</td>
|
||||
<td class="text-end">${Number(p.saldo).toLocaleString()}</td>
|
||||
</tr>`;
|
||||
});
|
||||
|
||||
$('#activaBody').html(act);
|
||||
$('#pasivaBody').html(pas);
|
||||
|
||||
$('#totalActiva').text(Number(res.total_activa).toLocaleString());
|
||||
$('#totalPasiva').text(Number(res.total_pasiva).toLocaleString());
|
||||
|
||||
// reset warna dulu
|
||||
$('#totalActiva, #totalPasiva')
|
||||
.removeClass('text-danger text-success');
|
||||
|
||||
// ================= VALIDASI BALANCE
|
||||
if(Math.round(res.total_activa) !== Math.round(res.total_pasiva)){
|
||||
|
||||
$('#totalActiva').addClass('text-danger');
|
||||
$('#totalPasiva').addClass('text-danger');
|
||||
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Neraca Tidak Balance!',
|
||||
text: 'Selisih: ' + Number(res.selisih).toLocaleString()
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
$('#totalActiva').addClass('text-success');
|
||||
$('#totalPasiva').addClass('text-success');
|
||||
}
|
||||
|
||||
},'json');
|
||||
}
|
||||
|
||||
// ================= LOAD AWAL
|
||||
loadData();
|
||||
|
||||
// ================= SUBMIT FILTER
|
||||
$('#filterForm').on('submit', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
let dari = $('#tanggal_dari').val();
|
||||
let sampai = $('#tanggal_sampai').val();
|
||||
|
||||
loadData(dari, sampai);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,66 @@
|
||||
<div class="container mt-4">
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<h4 class="mb-0 fw-bold">Neraca Saldo</h4>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm table-striped table-hover align-middle">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th style="width: 120px;">Kode</th>
|
||||
<th>Akun</th>
|
||||
<th class="text-end">Debit</th>
|
||||
<th class="text-end">Kredit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tb"></tbody>
|
||||
<tfoot class="table-light">
|
||||
<tr class="fw-bold">
|
||||
<th colspan="2" class="text-end">Total</th>
|
||||
<th class="text-end text-primary" id="td"></th>
|
||||
<th class="text-end text-danger" id="tk"></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
$.get("<?= base_url('neracasaldo/get_data'); ?>", function(res){
|
||||
|
||||
let html = '';
|
||||
let td = 0, tk = 0;
|
||||
|
||||
res.forEach(r=>{
|
||||
|
||||
let debit = parseFloat(r.saldo_debit) || 0;
|
||||
let kredit = parseFloat(r.saldo_kredit) || 0;
|
||||
|
||||
td += debit;
|
||||
tk += kredit;
|
||||
|
||||
html += `
|
||||
<tr>
|
||||
<td class="fw-semibold text-muted">${r.kode_akun}</td>
|
||||
<td>${r.nama_akun}</td>
|
||||
<td class="text-end">${debit.toLocaleString()}</td>
|
||||
<td class="text-end">${kredit.toLocaleString()}</td>
|
||||
</tr>`;
|
||||
});
|
||||
|
||||
$('#tb').html(html);
|
||||
$('#td').text(td.toLocaleString());
|
||||
$('#tk').text(tk.toLocaleString());
|
||||
|
||||
}, 'json');
|
||||
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user