464 lines
25 KiB
PHP
464 lines
25 KiB
PHP
<?php
|
|
$this->load->library("BIBAccounts");
|
|
$BIBAccounts = new BIBAccounts();
|
|
?>
|
|
<style>
|
|
table,
|
|
td,
|
|
tr {
|
|
padding: 0px;
|
|
margin: 0px;
|
|
}
|
|
|
|
.group-name {
|
|
width: 40%;
|
|
}
|
|
|
|
.group-total {
|
|
width: 10%;
|
|
}
|
|
|
|
.table-gray {
|
|
background-color: #eee;
|
|
}
|
|
|
|
.table td,
|
|
.table th {
|
|
padding: 0px;
|
|
margin: 0px;
|
|
}
|
|
|
|
.bg-darker {
|
|
background-color: #ddd;
|
|
}
|
|
|
|
td .table {
|
|
border: 0px !important;
|
|
margin-bottom: 0rem;
|
|
}
|
|
|
|
table td:first-child {
|
|
padding-left: 5px;
|
|
}
|
|
|
|
.table-bordered.vertical-borders td,
|
|
.table-bordered.vertical-borders th {
|
|
border-left: 1px solid #dee2e6;
|
|
border-right: 1px solid #dee2e6;
|
|
}
|
|
|
|
.table-bordered.vertical-borders thead th {
|
|
padding: 0.25rem;
|
|
border-top: none;
|
|
border-bottom: 2px solid #dee2e6;
|
|
}
|
|
|
|
.table-bordered.vertical-borders tfoot th {
|
|
padding: 0.25rem;
|
|
border-top: 2px solid #dee2e6;
|
|
border-bottom: none;
|
|
}
|
|
|
|
.currency {
|
|
font-weight: normal !important;
|
|
}
|
|
|
|
.underline {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.form-control {
|
|
display: block;
|
|
width: 100%;
|
|
height: calc(1.5rem + 1px);
|
|
padding: 0.375rem 0.75rem;
|
|
font-size: 1rem;
|
|
font-weight: 400;
|
|
line-height: 1.5;
|
|
color: #495057;
|
|
background-color: #fff;
|
|
background-clip: padding-box;
|
|
border: 1px solid #ced4da;
|
|
border-radius: 0.25rem;
|
|
box-shadow: inset 0 0 0 transparent;
|
|
transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
|
|
}
|
|
|
|
.table1 {
|
|
border: 0px !important;
|
|
padding: 0;
|
|
margin: 10 !important;
|
|
width: 100%;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.table-responsive {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.card-body {
|
|
-webkit-flex: 1 1 auto;
|
|
-ms-flex: 1 1 auto;
|
|
flex: 1 1 auto;
|
|
min-height: 1px;
|
|
padding: 0;
|
|
}
|
|
table {
|
|
border: 1px solid #ddd;
|
|
border-collapse: collapse;
|
|
}
|
|
</style>
|
|
<div class="content-wrapper">
|
|
<section class="content">
|
|
<div class="container-fluid">
|
|
<div class="card card-primary card-outline">
|
|
<div class="card-header">
|
|
<h3 class="card-title mt-1"><?php echo $pageTitle; ?> </h3>
|
|
<div class="card-tools">
|
|
<form method="post" action="" id="FilterForm">
|
|
<!-- button with a dropdown -->
|
|
<div class="btn-group">
|
|
<button type="button" class="btn btn-success btn-sm dropdown-toggle" data-toggle="dropdown" data-offset="-52">
|
|
Filters
|
|
</button>
|
|
<div class="dropdown-menu" role="menu">
|
|
<div class="form-group p-2 pb-0">
|
|
<div class="col">
|
|
<div class="form-group">
|
|
<label for="fromDate"><?php myLang("Starting Period"); ?></label>
|
|
<input type="text" class="form-control " name="fromDate" value="<?php echo (isset($_POST['fromDate'])) ? $_POST['fromDate'] : NepaliDate($this->session->FiscalYear->fiscalyear_from); ?>" data-start="<?php echo $fiscalStart; ?>" data-end="<?php echo $fiscalEnd; ?>" id="fromDate" aria-describedby="helpId_fromDate" placeholder="Starting Period">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="toDate"><?php myLang("Ending Period"); ?></label>
|
|
<input type="text" class="form-control " name="toDate" value="<?php echo (isset($_POST['toDate'])) ? $_POST['toDate'] : NepaliDate($this->session->FiscalYear->fiscalyear_to); ?>" data-start="<?php echo $fiscalStart; ?>" data-end="<?php echo $fiscalEnd; ?>" id="toDate" aria-describedby="helpId_toDate" placeholder="Ending Period">
|
|
</div>
|
|
</div>
|
|
<div class="dropdown-divider"></div>
|
|
|
|
<div class="form-check">
|
|
<!-- <input type="hidden" name="showOB" value="not"> -->
|
|
<input type="checkbox" class="form-check-input " name="showOB" id="showOB" aria-describedby="helpId_showOB" placeholder="Show Opening Balance" <?php echo (isset($_POST['showOB'])) ? "CHECKED" : ""; ?>>
|
|
<!-- <input class="form-check-input" type="checkbox"> -->
|
|
<label class="form-check-label" for="showOB">Opening</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<!-- <input class="form-check-input" type="checkbox"> -->
|
|
<input type="checkbox" class="form-check-input " name="showClosing" id="showClosing" aria-describedby="helpId_showClosing" placeholder="Show Closing Balance" <?php echo (isset($_POST['showClosing'])) ? "CHECKED" : ""; ?>>
|
|
<label class="form-check-label" for="showClosing">Closing</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<!-- <input class="form-check-input" type="checkbox" checked> -->
|
|
<input type="checkbox" class="form-check-input" name="showPeriod" id="showPeriod" aria-describedby="helpId_showPeriod" placeholder="Show Periodic Balance" <?php echo (isset($_POST['showPeriod'])) ? "CHECKED" : "CHECKED"; ?>>
|
|
<label class="form-check-label" for="showPeriod">Period</label>
|
|
</div>
|
|
</div>
|
|
<div class="dropdown-divider"></div>
|
|
<div class="form-group p-2 pb-0 text-right">
|
|
<button type="button" class="btn btn-info btn-sm " style="width:60px;height:30px;" onclick="resetForm()">Reset</button>
|
|
<button type="submit" class="btn btn-primary mr-2 btn-sm" style="width:60px;height:30px;">Search </button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="btn-group">
|
|
<button type="submit" class="btn btn-warning btn-sm " data-toggle="dropdown" data-offset="-52">
|
|
Export
|
|
</button>
|
|
|
|
</div>
|
|
|
|
<button class="btn btn-secondary toggle-collapse btn-sm" id="toggleShowAll">Toggle Collapse</button>
|
|
</form>
|
|
<script>
|
|
function resetForm() {
|
|
document.getElementById("fromDate").value = "<?php echo NepaliDate($this->session->FiscalYear->fiscalyear_from); ?>";
|
|
document.getElementById("toDate").value = "<?php echo NepaliDate($this->session->FiscalYear->fiscalyear_to); ?>";
|
|
document.getElementById("showOB").checked = <?php echo "false"; ?>;
|
|
document.getElementById("showClosing").checked = <?php echo "false"; ?>;
|
|
document.getElementById("FilterForm").submit();
|
|
}
|
|
</script>
|
|
</div>
|
|
<!-- /.card-tools -->
|
|
</div>
|
|
|
|
</div>
|
|
</div><!-- /.container-fluid -->
|
|
</section>
|
|
<div class="content">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col">
|
|
<!-- <button class="btn btn-secondary toggle-collapse mr-2" id="toggleShowAll">Toggle Collapse</button> -->
|
|
|
|
<div class="card card-primary card-outline">
|
|
<div class="card-body pl-2 pr-2">
|
|
|
|
<div class="row">
|
|
<?php
|
|
// echo $_POST['showClosing'];
|
|
$ReportOptions = array(
|
|
'showZeroBalances' => false,
|
|
'showOB' => false,
|
|
'showClosing' => true,
|
|
'showPeriod' => false,
|
|
);
|
|
?>
|
|
<?php $AccountGroups = $BIBAccounts->getAccountGroupsWithBalances(2); ?>
|
|
<?php $Side1Total = 0; ?>
|
|
<div class="col-6 p-0">
|
|
<div class="table-responsive">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th class="group-name pl-1">Particulars</th>
|
|
<th class="group-total text-center col-1">Amount</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<?php $AccountGroups = $BIBAccounts->getAccountGroupsWithBalances(2); ?>
|
|
<?php $Side1Total = 0; ?>
|
|
<?php
|
|
// Initialize variables for column totals
|
|
$incomes_totalOpeningDr = 0;
|
|
$incomes_totalOpeningCr = 0;
|
|
$incomes_totalThisYearDr = 0;
|
|
$incomes_totalThisYearCr = 0;
|
|
$incomes_totalClosingDr = 0;
|
|
$incomes_totalClosingCr = 0;
|
|
?>
|
|
<?php foreach ($AccountGroups as $group) : ?>
|
|
<tr class="group-heading" data-toggle="collapse" data-target="#group_<?php echo $group->acgroup_id; ?>">
|
|
<td><b><?php echo $group->acgroup_name; ?></b></td>
|
|
<td width="20%"><?php echo myCurrency(($group->posting_side == "CR") ? $group->closing_balance : 0); ?></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="7" class="group-details p-0">
|
|
<div id="group_<?php echo $group->acgroup_id; ?>" class="">
|
|
<?php $Accountcategories = $BIBAccounts->getRootCategoriesWithBalances($group->acgroup_id); ?>
|
|
<?php $BIBAccounts->renderAccountCategoriesTable($Accountcategories, $ReportOptions, false, array()); ?>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
// Update column totals
|
|
$Side1Total += $group->closing_balance;
|
|
?>
|
|
<?php endforeach; ?>
|
|
<?php $AccountGroups = $BIBAccounts->getAccountGroupsWithBalances(5); ?>
|
|
|
|
<?php
|
|
// Initialize variables for column totals
|
|
$incomes_totalOpeningDr = 0;
|
|
$incomes_totalOpeningCr = 0;
|
|
$incomes_totalThisYearDr = 0;
|
|
$incomes_totalThisYearCr = 0;
|
|
$incomes_totalClosingDr = 0;
|
|
$incomes_totalClosingCr = 0;
|
|
?>
|
|
<?php foreach ($AccountGroups as $group) : ?>
|
|
<tr class="group-heading" data-toggle="collapse" data-target="#group_<?php echo $group->acgroup_id; ?>">
|
|
<td class="group-name"><b><?php echo $group->acgroup_name; ?></b></td>
|
|
<td class="group-total"><?php echo myCurrency(($group->posting_side == "CR") ? $group->closing_balance : 0); ?></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="7" class="group-details p-0">
|
|
<div id="group_<?php echo $group->acgroup_id; ?>" class="">
|
|
<?php $Accountcategories = $BIBAccounts->getRootCategoriesWithBalances($group->acgroup_id); ?>
|
|
<?php $BIBAccounts->renderAccountCategoriesTable($Accountcategories, $ReportOptions, false, array()); ?>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
// Update column totals
|
|
$Side1Total += $group->closing_balance;
|
|
?>
|
|
<?php endforeach; ?>
|
|
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="col-6 p-0">
|
|
<div class="table-responsive">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th class="group-name pl-1">Particulars</th>
|
|
<th class="group-total text-center col-1">Amount</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php $AccountGroups = $BIBAccounts->getAccountGroupsWithBalances(1); ?>
|
|
|
|
<?php
|
|
// Initialize variables for column totals
|
|
$totalOpeningDr = 0;
|
|
$totalOpeningCr = 0;
|
|
$totalThisYearDr = 0;
|
|
$totalThisYearCr = 0;
|
|
$totalClosingDr = 0;
|
|
$totalClosingCr = 0;
|
|
?>
|
|
<?php foreach ($AccountGroups as $group) : ?>
|
|
<tr class="group-heading" data-toggle="collapse" data-target="#group_<?php echo $group->acgroup_id; ?>">
|
|
<td class="group-name"><b><?php echo $group->acgroup_name; ?></b></td>
|
|
<td class="group-total text-right pr-2"><?php echo myCurrency(($group->posting_side == "DR") ? $group->closing_balance : 0); ?></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="7" class="group-details p-0">
|
|
<div id="group_<?php echo $group->acgroup_id; ?>" class="">
|
|
<?php $Accountcategories = $BIBAccounts->getRootCategoriesWithBalances($group->acgroup_id); ?>
|
|
<?php $BIBAccounts->renderAccountCategoriesTable($Accountcategories, $ReportOptions, false, array()); ?>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
// Update column totals
|
|
$totalOpeningDr += ($group->posting_side == "DR") ? $group->opening_balance : 0;
|
|
$totalOpeningCr += ($group->posting_side == "CR") ? $group->opening_balance : 0;
|
|
$totalThisYearDr += ($group->posting_side == "DR") ? $group->regular_balance : 0;
|
|
$totalThisYearCr += ($group->posting_side == "CR") ? $group->regular_balance : 0;
|
|
$totalClosingDr += ($group->posting_side == "DR") ? $group->closing_balance : 0;
|
|
$totalClosingCr += ($group->posting_side == "CR") ? $group->closing_balance : 0;
|
|
?>
|
|
<?php endforeach; ?>
|
|
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 p-0">
|
|
<table class="table">
|
|
<?php
|
|
// pre($BIBAccounts->getAccountGroupsWithBalances(4));
|
|
$TotalIncomes = $BIBAccounts->getAccountGroupsWithBalances(3)[0]->closing_balance;
|
|
$TotalExpenses = $BIBAccounts->getAccountGroupsWithBalances(4)[0]->closing_balance;
|
|
$PL = $TotalIncomes - $TotalExpenses;
|
|
$Side1Total += $PL;
|
|
?>
|
|
<tr>
|
|
<td>Total Profit/Loss</td>
|
|
<td class="cr closing-cr"><?php echo myCurrency($PL); ?></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" class="p-0">
|
|
<table class="table">
|
|
<tr>
|
|
<th class="pl-1">Total Amount</th>
|
|
<th class="cr closing-cr">
|
|
<?php echo myCurrency($Side1Total); ?>
|
|
</th>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td colspan="2" class="p-0">
|
|
<table class="table">
|
|
<tr>
|
|
<th class="pl-1">Total Amount</th>
|
|
<th class="dr closing-dr">
|
|
<?php echo myCurrency($totalClosingDr); ?>
|
|
</th>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
function footerfunctions()
|
|
{
|
|
?>
|
|
<script>
|
|
$(document).ready(function() {
|
|
// Prevent the dropdown from closing when clicking inside
|
|
$('.dropdown-menu').on('click', function(event) {
|
|
event.stopPropagation();
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
document.getElementById("toggleShowAll").click();
|
|
});
|
|
document.getElementById("toggleShowAll").addEventListener("click", function(e) {
|
|
e.preventDefault();
|
|
var nestedRows = document.getElementsByClassName("collapse");
|
|
for (var i = 0; i < nestedRows.length; i++) {
|
|
if (nestedRows[i].classList.contains("show")) {
|
|
nestedRows[i].classList.remove("show");
|
|
} else {
|
|
nestedRows[i].classList.add("show");
|
|
}
|
|
}
|
|
});
|
|
var exportButton = document.getElementById("exportButton");
|
|
exportButton.addEventListener("click", function() {
|
|
exportTableToCSV("table.csv");
|
|
});
|
|
|
|
function exportTableToCSV(filename) {
|
|
var csv = [];
|
|
var rows = document.querySelectorAll("table tr:not(.hide)");
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var row = [];
|
|
var cols = rows[i].querySelectorAll("td:not(.hide), th:not(.hide)");
|
|
// Check if the parent row is collapsed or hidden
|
|
var parentRow = rows[i].closest(".collapse");
|
|
var isParentCollapsed = parentRow && (!parentRow.classList.contains("show"));
|
|
if (isParentCollapsed) {
|
|
continue; // Skip child table rows if parent is collapsed
|
|
}
|
|
for (var j = 0; j < cols.length; j++) {
|
|
var cellValue = cols[j].innerText.replace(/,/g, ""); // Remove commas from the cell value
|
|
row.push(cellValue);
|
|
}
|
|
csv.push(row.join(","));
|
|
}
|
|
// Create a CSV file
|
|
var csvContent = "data:text/csv;charset=utf-8," + csv.join("\n");
|
|
var encodedUri = encodeURI(csvContent);
|
|
var link = document.createElement("a");
|
|
link.setAttribute("href", encodedUri);
|
|
link.setAttribute("download", filename);
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
}
|
|
</script>
|
|
<script>
|
|
$("#fromDate").nepaliDatePicker({
|
|
dateFormat: "%y-%m-%d",
|
|
closeOnDateSelect: true,
|
|
minDate: $('#fromDate').data('start'),
|
|
maxDate: $('#fromDate').data('end'),
|
|
});
|
|
</script>
|
|
<script>
|
|
$("#toDate").nepaliDatePicker({
|
|
dateFormat: "%y-%m-%d",
|
|
closeOnDateSelect: true,
|
|
minDate: $('#toDate').data('start'),
|
|
maxDate: $('#toDate').data('end'),
|
|
});
|
|
</script>
|
|
|
|
<?php
|
|
}
|