<?php $this->load->library("NewAcc"); $Acc = new NewAcc(); $CI = &get_instance(); $txt = "SELECT g.acgroup_id AS group_id, g.acgroup_name AS group_name, cp.accategory_id AS parent_id, cp.acgroup_id AS group_id, cp.accategory_name AS parent_category_name, cc.accategory_id AS child_id, cc.accategory_name AS child_category_name, ccc.accategory_id AS child_child_id, ccc.accategory_name AS child_child_category_name, a.account_id, a.account_name FROM tbl_acgroups g LEFT JOIN tbl_accategories cp ON g.acgroup_id = cp.acgroup_id AND cp.parent_category_id = 0 LEFT JOIN tbl_accategories cc ON cp.accategory_id = cc.parent_category_id LEFT JOIN tbl_accategories ccc ON cc.accategory_id = ccc.parent_category_id LEFT JOIN tbl_accounts a ON ccc.accategory_id = a.accategory_id ORDER BY g.display_order, cp.accategory_id, cc.accategory_id, ccc.accategory_id; "; $AccountTree = $CI->db->query($txt)->result(); function displayAccountTree($accountTree, $parentCategory = 0) { echo '<ul>'; foreach ($accountTree as $row) { if ($row->parent_id == $parentCategory) { echo '<li>'; echo 'Category Name: ' . $row->parent_category_name; echo ' | Account Name: ' . $row->account_name; displayAccountTree($accountTree, $row->child_id); echo '</li>'; } } echo '</ul>'; } $IncomeCategories = $Acc->getAccountCategories(3); $IncomeAccounts = $this->acc->getAccountsByGroup(3); $ExpenseAccounts = $this->acc->getAccountsByGroup(4); $IncomesTotal = $this->acc->getAccountBalanceByGroup(3); $ExpensesTotal = $this->acc->getAccountBalanceByGroup(4); $PL = $IncomesTotal - $ExpensesTotal; ?> <div class="content-wrapper"> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0"><?php echo $pageTitle; ?></h1> </div> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="<?php echo base_url(); ?>">Dashboard </a></li> <li class="breadcrumb-item active"><?php echo $pageTitle; ?></li> </ol> </div> </div> </div> </div> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col"> <div class="card card-primary card-outline"> <div class="card-header"> <h5 class="m-0"><?php echo $pageTitle; ?> </h5> </div> <div class="card-body"> <?php displayAccountTree($AccountTree); ?> <?php pre($AccountTree); ?> </div> <div class="card-body"> <div class="col-6"> <div id="accordion"> <?php displayCategories($IncomeCategories); ?> </div> <?php function displayCategories($categories, $level = 0) { $CI = &get_instance(); $CI->load->library("NewAcc"); $Acc = new NewAcc(); echo '<div id="accordion_' . $level . '">'; foreach ($categories as $category) { ?> <div class="card"> <div class="card-header" id="heading<?php echo $category->accategory_id; ?>_<?php echo $level; ?>"> <h5 class="mb-0"> <?php // Add column offset for child categories if ($level > 0) { echo '<div class="offset-1">'; } ?> <div class="row" data-toggle="collapse" data-target="#collapse<?php echo $category->accategory_id; ?>_<?php echo $level; ?>" aria-expanded="true" aria-controls="collapse<?php echo $category->accategory_id; ?>_<?php echo $level; ?>"> <div class="col-6"><?php echo $category->accategory_name; ?></div> <div class="col-3"><?php echo myCurrency($category->dr); ?></div> <div class="col-3"><?php echo myCurrency($category->cr); ?></div> </div> <?php if ($level > 0) { echo '</div>'; } ?> </h5> </div> <div id="collapse<?php echo $category->accategory_id; ?>_<?php echo $level; ?>" class="collapse show" aria-labelledby="heading<?php echo $category->accategory_id; ?>_<?php echo $level; ?>" data-parent="#accordion_<?php echo $level; ?>"> <div class="card-body"> <?php $category->children = $Acc->getChildCategories($category->accategory_id); if (!empty($category->children)) { // Increase the level for child categories $childLevel = $level + 1; displayCategories($category->children, $childLevel); } ?> </div> </div> </div> <?php } echo '</div>'; } ?> </div> <table class="table table-bordered table-hover"> <thead> <tr> <th colspan="4">Profit & Loss Statement</th> </tr> </thead> <tbody> <tr class="bg-dark"> <th>Incomes</th> <th>Amount</th> <th>Expenses</th> <th>Amount</th> </tr> <tr class="bg-light"> <td colspan="2"> <?php showTable($IncomeAccounts); ?> </td> <td colspan="2"> <?php showTable($ExpenseAccounts); ?> </td> </tr> </tbody> <tfoot> <?php if ($PL < 0) : ?> <tr class="bg-light"> <th>Net Loss:</th> <th><?php echo myCurrency($PL); ?></th> <th></th> <th></th> </tr> <?php else : ?> <tr class="bg-light"> <th></th> <th></th> <th>Net Profit:</th> <th><?php echo myCurrency($PL); ?></th> </tr> <?php endif; ?> <?php if ($PL < 0) : ?> <tr class="bg-light"> <th>Total Loss:</th> <th><?php echo myCurrency($PL + $IncomesTotal); ?></th> <th>Total: </th> <th><?php echo myCurrency($IncomesTotal); ?></th> </tr> <?php else : ?> <tr class="bg-light"> <th>Total:</th> <th><?php echo myCurrency($IncomesTotal); ?></th> <th>Total:</th> <th><?php echo myCurrency($PL + $ExpensesTotal); ?></th> </tr> <?php endif; ?> </tfoot> </table> </div> </div> </div> </div> </div> </div> <?php function showTable($Accounts) { $total = 0; ?> <table class="table table-bordered table-hover"> <thead> <tr> <th>Account</th> <th>Balance</th> </tr> </thead> <tbody> <?php foreach ($Accounts as $Account) : $total += abs($Account->balance) ?> <tr> <td><?php echo $Account->account_name; ?></td> <td><?php echo myCurrency(abs($Account->balance)); ?></td> </tr> <?php endforeach; ?> </tbody> <!-- <tfoot> <tr> <th>Total</th> <th><?php echo myCurrency($total); ?></th> </tr> </tfoot> --> </table> <?php }