<?php $this->load->library("BIBAccounts"); $BIBAccounts = new BIBAccounts(); ?> <?php $IncomeAccounts = $this->acc->getAccountsByGroup(3); $ExpenseAccounts = $this->acc->getAccountsByGroup(4); $IncomesTotal = $this->acc->getAccountBalanceByGroup(3); $ExpensesTotal = $this->acc->getAccountBalanceByGroup(4); $PL = $IncomesTotal - $ExpensesTotal; ?> <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; } .table.table-head-fixed thead tr:nth-child(1) th { padding-left: 6px; ; } </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">Receipts And Payments <?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 class="form-check-input" type="checkbox"> <label class="form-check-label">Select All</label> </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 class="dropdown-menu" role="menu"> <a href="#" class="dropdown-item">Export</a> <a href="#" class="dropdown-item">Pdf</a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item">View calendar</a> </div> --> </div> <!-- <button type="button" class="btn btn-warning btn-sm" onclick="resetForm()">Reset</button> --> <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 class="card-body"> <form method="post" action="" id="FilterForm"> <div class="row align-items-end"> <div class="col-2"> <div class="form-group"> <label for="fromDate"><?php //myLang("Starting Period"); ?></label> <input type="text" class="form-control nepaliDatePicker" name="fromDate" value="<?php //echo (isset($_POST['fromDate'])) ? $_POST['fromDate'] : NepaliDate($this->session->FiscalYear->fiscalyear_from); ?>" id="fromDate" aria-describedby="helpId_fromDate" placeholder="Starting Period"> </div> </div> <div class="col-2"> <div class="form-group"> <label for="toDate"><?php //myLang("Ending Period"); ?></label> <input type="text" class="form-control nepaliDatePicker" name="toDate" value="<?php //echo (isset($_POST['toDate'])) ? $_POST['toDate'] : NepaliDate($this->session->FiscalYear->fiscalyear_to); ?>" id="toDate" aria-describedby="helpId_toDate" placeholder="Ending Period"> </div> </div> <div class="col-1 text-center"> <div class="form-group"> <label for="showOB"><?php //myLang("Opening"); ?></label> <input type="checkbox" class="form-control " name="showOB" id="showOB" aria-describedby="helpId_showOB" placeholder="Show Opening Balance" <?php echo (isset($_POST['showOB'])) ? "CHECKED" : "CHECKED"; ?>> </div> </div> <div class="col-1 text-center"> <div class="form-group"> <label for="showClosing"><?php //myLang("Closing"); ?></label> <input type="checkbox" class="form-control " name="showClosing" id="showClosing" aria-describedby="helpId_showClosing" placeholder="Show Closing Balance" <?php echo (isset($_POST['showClosing'])) ? "CHECKED" : "CHECKED"; ?>> </div> </div> <div class="col-1 text-center"> <div class="form-group"> <label for="showPeriod"><?php //myLang("Period"); ?></label> <input type="checkbox" class="form-control " name="showPeriod" id="showPeriod" aria-describedby="helpId_showPeriod" placeholder="Show Periodic Balance" <?php echo (isset($_POST['showPeriod'])) ? "CHECKED" : "CHECKED"; ?>> </div> </div> <div class="col"> <div class="form-group d-flex justify-content-end"> <button class="btn btn-secondary toggle-collapse mr-2" id="toggleShowAll">Toggle Collapse</button> <button type="submit" class="btn btn-primary mr-2">Filter</button> <button type="submit" class="btn btn-success mr-2">Export</button> <button type="button" class="btn btn-warning" onclick="resetForm()">Reset</button> </div> </div> </div> </form> <script> function resetForm() { document.getElementById("fromDate").value = "2078-4-1"; document.getElementById("toDate").value = "2079-3-32"; document.getElementById("showOB").checked = false; document.getElementById("showClosing").checked = false; document.getElementById("FilterForm").submit(); } </script> </div> --> </div> <div class="card"> <div class="card card-primary card-outline"> <?php $IncomesExpenses = $BIBAccounts->prepareIncomeExpenses() ?> <table class="table table-head-fixed table-bordered g-0" id="TrialBalanceTable"> <thead> <tr> <th class="" width="30%"><?php myLang("Receipts"); ?></th> <th class="text-right" width="10%"></th> <th class="text-right pr-2" width="10%"><?php myLang("Amount"); ?></th> <th class="" width="30%"><?php echo myLang("Payments"); ?></th> <th class="text-right" width="10%"></th> <th class="text-right pr-2" width="10%"><?php myLang("Amount"); ?></th> </tr> </thead> <tbody> <tr> <td colspan=3 class="p-0"> <table class="table g-0"> <?php $total1 = 0; $counter = 0; $index = 0; foreach ($IncomesExpenses['Incomes'] as $Incomes) { ?> <?php if ($Incomes['account'] == "GROUP TOTAL") : ?> <!--tr> <td class="" width="70%"><b><?php echo $Incomes['group']; ?></b></td> <td width="15%"></td> <td class="text-right" width="15%"><u><?php echo myCurrency($Incomes['amount']); ?></u></td> </tr--> <?php elseif ($Incomes['account'] == "CATEGORY TOTAL") : ?> <?php $index++; ?> <tr class="parent-row" class="group-heading" data-toggle="collapse" data-target="#group_<?php echo $index; ?>"> <td class="" width="60%"><b><?php echo $Incomes['category']; ?></b></td> <td width="20%"></td> <td class="text-right pr-2" width="20%"><?php echo myCurrency($Incomes['amount']); ?></td> </tr> <?php else : ?> <?php $total1 += $Incomes['amount']; ?> <tr class="collapse" data-target="#group_<?php echo $index; ?>"> <td class="pr-2" width="60%"> <?php echo $Incomes['account']; ?> </td> <td class="text-right pr-2" width="20%"><?php echo myCurrency($Incomes['amount']); ?></td> <td width="20%"></td> </tr> <?php endif; ?> <?php $counter = $index ?> <?php }; ?> </table> </td> <td colspan=3 class="p-0"> <table class="table g-0"> <?php $total = 0; foreach ($IncomesExpenses['Expenses'] as $Expenses) { if ($Expenses['account'] == "GROUP TOTAL") : ?> <!--tr> <td class="" width="70%"><b><?php echo $Expenses['group']; ?></b></td> <td width="15%"></td> <td class="text-right" width="15%"><u><?php echo myCurrency($Expenses['amount']); ?></u></td> </tr--> <?php elseif ($Expenses['account'] == "CATEGORY TOTAL") : ?> <?php $counter++; ?> <tr data-toggle="collapse" data-target="#group_<?php echo $counter; ?>"> <td class="pr-2" width="60%"><b><?php echo $Expenses['category']; ?></b></td> <td width="20%"></td> <td class="text-right pr-2" width="20%"><?php echo myCurrency($Expenses['amount']); ?></td> </tr> <?php else : ?> <?php $total += $Expenses['amount']; ?> <tr class="collapse" data-target="#group_<?php echo $counter; ?>"> <td class="" width="60%"> <?php echo $Expenses['account']; ?> </td> <td class="text-right pr-2" width="20%"><?php echo myCurrency($Expenses['amount']); ?></td> <td width="20%"></td> </tr> <?php endif; ?> <?php }; ?> </table> </td> </tr> <?php $balance_fi = $total1 - $total; ?> <?php if ($balance_fi < 0) : $total1 += $balance_fi; ?> <tr> <th class="pl-2"><?php echo myLang("Closing Balance"); ?></th> <th></th> <td><span class="text-red pr-2"><?php echo myCurrency($balance_fi); ?></span></td> <th></th> <th></th> <td></td> </tr> <?php elseif ($balance_fi > 0) : $total += $balance_fi; ?> <tr> <th></th> <th></th> <td></td> <th class="pl-2"><?php echo myLang("Closing Balance"); ?></th> <th></th> <td class="pr-2"><?php echo myCurrency($balance_fi); ?></td> </tr> <?php endif; ?> <tr> <th class="pl-2">Total</th> <th></th> <td class="pr-2"><?php echo myCurrency($total1); ?></td> <th class="pl-2">Total</th> <th></th> <td class="pr-2"><?php echo myCurrency($total); ?></td> </tr> </tbody> </table> </div> </div> </div><!-- /.container-fluid --> </section> <?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> // var exportButton = document.getElementById("exportButton"); // exportButton.addEventListener("click", function() { // exportTableToCSV("table.csv"); // }); document.addEventListener("DOMContentLoaded", function() { // Trigger click event on page load 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"); } } }); 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 } ?>