1635 lines
82 KiB
PHP
1635 lines
82 KiB
PHP
<?php
|
|
defined('BASEPATH') or exit('No direct script access allowed');
|
|
require_once APPPATH . "/third_party/pdf/fpdm.php";
|
|
require_once APPPATH . "/third_party/fpdf.php";
|
|
class MyPDF extends FPDF
|
|
{
|
|
public $HeaderText = "Report Header Goes Here";
|
|
public $SubHeaderText = "";
|
|
public $HeaderColumns = array();
|
|
public $printedBy;
|
|
public $pages = "";
|
|
function Header()
|
|
{
|
|
$this->Image(site_url("images/logo.png"), 8, 10, 40);
|
|
$this->SetFont('Helvetica', 'B', 12);
|
|
$this->Cell(0, 10, $this->HeaderText, 0, 1, 'C');
|
|
$this->SetFont('Helvetica', 'B', 10);
|
|
$this->Cell(0, 10, $this->SubHeaderText, 0, 1, 'C');
|
|
$this->SetFont('Helvetica', '', 8);
|
|
$this->Cell(0, 10, "Printed On: " . Today() . " / " . NepaliDate(Today()), 0, 0, 'R');
|
|
if (isset($this->HeaderColumns)) {
|
|
$this->Ln();
|
|
$this->SetFillColor(232, 232, 232);
|
|
$this->SetFont('Helvetica', 'B', 10);
|
|
//$pdf->SetXY(10, 40);
|
|
foreach ($this->HeaderColumns as $column) {
|
|
$this->Cell($column['width'], 10, strtoupper($column['name']), 1, 0, 'L', 1);
|
|
}
|
|
$this->Ln();
|
|
}
|
|
// Line break
|
|
// $this->Ln(20);
|
|
}
|
|
function Footer()
|
|
{
|
|
// Page footer
|
|
//$this->SetY(-70);
|
|
$this->ln(20);
|
|
$this->SetFont('Helvetica', 'I', 8);
|
|
$this->Cell(25, 1, $this->printedBy, 0, 1, 'C');
|
|
$this->Cell(25, 1, '_________________', 0, 0, 'C');
|
|
$this->setX(95);
|
|
$this->Cell(25, 1, '_________________', 0, 0, 'C');
|
|
$this->setX(170);
|
|
$this->Cell(25, 1, '_________________', 0, 1, 'C');
|
|
$this->Cell(25, 10, 'Printed By', 0, 0, 'C');
|
|
$this->setX(95);
|
|
$this->Cell(25, 10, 'Checked By', 0, 0, 'C');
|
|
$this->setX(170);
|
|
$this->Cell(25, 10, 'Approved By', 0, 1, 'C');
|
|
$this->SetFont('Helvetica', 'I', 8);
|
|
$this->SetTextColor(128);
|
|
$this->Cell(0, 10, 'Page ' . $this->PageNo(), 0, 0, 'C');
|
|
}
|
|
}
|
|
class myaccounts
|
|
{
|
|
public function __construct()
|
|
{
|
|
// die;
|
|
$this->initDatabase();
|
|
}
|
|
function voucherPDF($voucher_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$CI->load->library("numbertoword");
|
|
$q = "select *,(select voucher_no from tbl_vouchers where tbl_vouchers.voucher_id=tbl_voucherdetails.voucher_id) as voucher_no, (select account_name from tbl_accounts where tbl_accounts.account_id=tbl_voucherdetails.account_id) as account_name from tbl_voucherdetails where voucher_id='$voucher_id'";
|
|
$VoucherDetails = $CI->db->query($q)->result();
|
|
$i = 0;
|
|
$crTotal = 0;
|
|
$drTotal = 0;
|
|
$fields = array();
|
|
foreach ($VoucherDetails as $VoucherDetail) :
|
|
$i++;
|
|
$fields['account_name_' . $i] = $VoucherDetail->account_name;
|
|
$fields['narration_' . $i] = $VoucherDetail->narration;
|
|
$fields['debit_amount_' . $i] = ($VoucherDetail->dr == 0) ? "" : N2($VoucherDetail->dr);
|
|
$fields['credit_amount_' . $i] = ($VoucherDetail->cr == 0) ? "" : N2($VoucherDetail->cr);
|
|
$crTotal += $VoucherDetail->cr;
|
|
$drTotal += $VoucherDetail->dr;
|
|
endforeach;
|
|
$fields['voucher_no'] = $VoucherDetails[0]->voucher_no;
|
|
$fields['transaction_date_ad'] = $VoucherDetails[0]->transaction_date;
|
|
$fields['transaction_date_bs'] = NepaliDate($VoucherDetails[0]->transaction_date);
|
|
$fields['prepared_by'] = $VoucherDetails[0]->created_by;
|
|
$fields['voucher_no'] = $VoucherDetails[0]->voucher_no;
|
|
$fields['debit_total'] = N2($drTotal);
|
|
$fields['credit_total'] = N2($crTotal);
|
|
if ($CI->session->userdata("language") == "np")
|
|
$fields['amount_in_words'] = trim($CI->numbertoword->nepali_word($crTotal));
|
|
else
|
|
$fields['amount_in_words'] = trim($CI->numbertoword->english_word($crTotal));
|
|
$file = APPPATH . "/../pdf/e_voucher1.pdf";
|
|
$pdf = new FPDM($file);
|
|
//pre($pdf->getContent($file,"PDF"));
|
|
$pdf->Load($fields, true);
|
|
$pdf->Merge();
|
|
//$pdf->Flatten();
|
|
$OutputFileLocation = APPPATH . "/../pdf/vouchers/";
|
|
$OutputFile = "Voucher_" . $VoucherDetails[0]->voucher_no . ".pdf";
|
|
$pdf->Output("F", $OutputFileLocation . $OutputFile);
|
|
return $OutputFile;
|
|
}
|
|
function getVoucherTypes()
|
|
{
|
|
$CI = &get_instance();
|
|
$VoucherType = $CI->db->query("select * from tbl_vouchertypes where status=1 order by voucher_name asc");
|
|
return ($VoucherType->num_rows() > 0) ? $VoucherType->result() : false;
|
|
}
|
|
function getVoucherType($vouchertype_alias)
|
|
{
|
|
$CI = &get_instance();
|
|
if (ctype_digit($vouchertype_alias)) {
|
|
$t = "select * from tbl_vouchertypes where vouchertype_id='$vouchertype_alias'";
|
|
$VoucherType = $CI->db->query($t);
|
|
// echo $t;
|
|
} else {
|
|
$t = "select * from tbl_vouchertypes where voucher_alias='$vouchertype_alias'";
|
|
$VoucherType = $CI->db->query($t);
|
|
// echo $t;
|
|
}
|
|
return ($VoucherType->num_rows() > 0) ? $VoucherType->row() : false;
|
|
}
|
|
function getAccountDetails($account_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$Account = $CI->db->query("select * from tbl_accounts where account_id='$account_id'")->row();
|
|
$Account->Balance = $this->getBalance($account_id);
|
|
return $Account;
|
|
}
|
|
function getBalance($account_id)
|
|
{
|
|
$drTotal = getDrTotal($account_id);
|
|
$crTotal = getCrTotal($account_id);
|
|
return $drTotal - $crTotal;
|
|
}
|
|
function getOldBalance($account_id, $tillDate)
|
|
{
|
|
if ($tillDate == "") $tillDate = NepalitoEnglishDate(FYStart());
|
|
$t = "select sum(dr) as debitBalance, sum(cr) as creditBalance from tbl_voucherdetails where account_id='$account_id' and transaction_date< '$tillDate'";
|
|
$CI = &get_instance();
|
|
$Query = $CI->db->query($t);
|
|
$Result = $Query->row();
|
|
$oldBalance = new stdClass;
|
|
$oldBalance->debitBalance = $Result->debitBalance;
|
|
$oldBalance->creditBalance = $Result->creditBalance;
|
|
$oldBalance->balance = ($oldBalance->debitBalance - $oldBalance->creditBalance);
|
|
return $oldBalance;
|
|
}
|
|
function getDrTotal($account_id)
|
|
{
|
|
$ci = &get_instance();
|
|
return $ci->db->where("status", 1)->where("account_id", $account_id)->select_sum('dr')->get("tbl_voucherdetails")->row()->dr;
|
|
}
|
|
function getCrTotal($account_id)
|
|
{
|
|
$ci = &get_instance();
|
|
return $ci->db->where("status", 1)->where("account_id", $account_id)->select_sum('cr')->get("tbl_voucherdetails")->row()->cr;
|
|
}
|
|
function getAllAccountsTable($accategory_id = "", $full = "")
|
|
{
|
|
$CI = &get_instance();
|
|
if ($accategory_id != "") {
|
|
$CI->db->where("status", 1)->where("accategory_id", $accategory_id);
|
|
}
|
|
if (isset($_GET['accategory_id'])) {
|
|
$CI->db->where("status", 1)->where("accategory_id", $_GET['accategory_id']);
|
|
} else {
|
|
$CI->db->where("status", 1);
|
|
}
|
|
$CI->db->order_by("account_name ASC");
|
|
$Accounts = $CI->db->get("tbl_accounts")->result();
|
|
foreach ($Accounts as $Account) {
|
|
$Account->Group = $CI->db->query("select * from tbl_acgroups where acgroup_id=(select acgroup_id from tbl_accategories where accategory_id = $Account->accategory_id)")->row();
|
|
$Account->Category = $CI->db->query("select * from tbl_accategories where accategory_id = $Account->accategory_id")->row();
|
|
}
|
|
//$q=$CI->db->get_compiled_select();
|
|
//print($q);
|
|
?>
|
|
<div class="row mb-3">
|
|
<?php if ($accategory_id == "") : ?>
|
|
<div class="col">
|
|
<form method="get">
|
|
<div class="row">
|
|
<div class="col-5">
|
|
<?php $this->showAccountsCategoriesCombo("accategory_id", "", "accategory_id"); ?>
|
|
</div>
|
|
<div class="col-3">
|
|
<input type="submit" value="Show Accounts" class="form-control btn btn-success">
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div> <?php endif; ?>
|
|
<!-- <div id="dataTable_commands" class="col text-right"></div> -->
|
|
</div>
|
|
<?php
|
|
$html = "";
|
|
$html .= "<table class='table table-bordered table-striped longdataTable'>";
|
|
$html .= "<thead>";
|
|
$html .= "<tr><th>Account</th><th class='text-center'>Account Group</th><th class='text-center'>Dr</th><th class='text-center'>Cr</th><th class='text-center'>Action</th></tr>";
|
|
$html .= "</thead><tbody>";
|
|
$sn = 0;
|
|
$BalanceTotal = 0;
|
|
foreach ($Accounts as $Account) : $sn++;
|
|
$balance = getBalance($Account->account_id);
|
|
$BalanceTotal += $balance;
|
|
// pre($Account);
|
|
$html .= "<tr><td><a href='#' onClick='showLedger(" . $Account->account_id . ")'>" . $Account->account_name . "</a></td><td class='col-2'>" . $Account->Category->accategory_name . "</td><td class='col-1'>" . (($balance >= 0) ? myCurrency($balance) : "") . "</td><td class='col-1'>" . (($balance < 0) ? myCurrency(abs($balance)) : "") . "</td><td class='col-2 text-center'><a title='Show Ledger' class='btn btn-info btn-xs ' onClick='showLedger(" . $Account->account_id . ")'><i class='fa fa-eye'></i></a></td></tr>";
|
|
endforeach;
|
|
$html .= "</tbody><tfoot>";
|
|
if ($full==""){
|
|
$html .= "<tr><th colspan=2 class='text-right '>Total</th><th class='text-right'>" . myCurrency($BalanceTotal) . "</th><th class='text-right'>" . myCurrency($BalanceTotal) . "</th><th></th><th></th></tr>";
|
|
}
|
|
$html .= "</tfoot></table>\n";
|
|
$html .= " <div class=\"modal fade\" id=\"ledgerdetails_box\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"ledgerdetails_box\" aria-hidden=\"true\">
|
|
<div class=\"modal-dialog modal-xl\" role=\"document\">
|
|
<div class=\"modal-content\">
|
|
<div class=\"modal-header\">
|
|
<h5 class=\"modal-title\" id=\"exampleModalLabel\">Ledger Details</h5>
|
|
<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">
|
|
<span aria-hidden=\"true\">×</span>
|
|
</button>
|
|
</div>
|
|
<div class=\"modal-body\" id=\"details_container\">
|
|
Ledger Details Goes Here
|
|
</div>
|
|
<!--<div class=\"modal-footer\">
|
|
<button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">Close</button>
|
|
<button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\">Print</button>
|
|
</div>-->
|
|
</div>
|
|
</div>
|
|
</div>";
|
|
$html .= '<script>function showLedger(id) {$.ajax({url: \'';
|
|
$html .= site_url("accounts/reports/ajax/getledgersummary/");
|
|
$html .= '\' + id,success: function(data) {$(\'#ledgerdetails_box #details_container\').html(data);$(\'#ledgerdetails_box\').modal(\'show\');}});}</script>';
|
|
echo $html;
|
|
}
|
|
function getAccountsTableByCategory($accategory_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$Accounts = $CI->db->where("accategory_id", $accategory_id)->where("status", 1)->order_by("account_name ASC")->get("tbl_accounts")->result();
|
|
$html = "<h5 class='text-center'>Accounts Under " . getFieldfromValue("tbl_accategories", "accategory_name", "accategory_id", $accategory_id) . "</h5>";
|
|
$html .= "<table class='table table-bordered dataTable'>";
|
|
$html .= "<thead>";
|
|
$html .= "<tr><th>Sn</th><th>Account</th><th>Dr/Cr</th><th>Action</th></tr>";
|
|
$html .= "</thead><tbody>";
|
|
$sn = 0;
|
|
foreach ($Accounts as $Account) : $sn++;
|
|
$html .= "<tr><td class='col-1'>" . $sn . "</td><td>" . $Account->account_name . "</td><td class='col-3'>" . myCurrency(getBalance($Account->account_id)) . "</td><td class='col-2'><a title='Show Ledger' class='btn btn-success btn-xs ' onClick='showLedger(" . $Account->account_id . ")'><i class='fa fa-eye'></i></a></td></tr>";
|
|
endforeach;
|
|
$html .= "</tbody></table>";
|
|
echo $html;
|
|
}
|
|
//ACCOUNT HEADS
|
|
function getCrAccountOpeningBalance($account_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$CI->db->select('*');
|
|
$CI->db->from('tbl_voucherdetails');
|
|
$CI->db->where('account_id', $account_id);
|
|
$CI->db->where('voucher_id', 0);
|
|
$query = $CI->db->get();
|
|
if ($query->num_rows() > 0) {
|
|
$result = $query->row();
|
|
$balance = $result->cr;
|
|
return $balance;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
function getDrAccountOpeningBalance($account_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$CI->db->select('*');
|
|
$CI->db->from('tbl_voucherdetails');
|
|
$CI->db->where('account_id', $account_id);
|
|
$CI->db->where('voucher_id', 0);
|
|
$query = $CI->db->get();
|
|
if ($query->num_rows() > 0) {
|
|
$result = $query->row();
|
|
$balance = $result->dr;
|
|
return $balance;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
function getAccountBalanceByAccountCategory($accategory_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where
|
|
status=1 and
|
|
account_id in (select account_id from tbl_accounts where accategory_id ='$accategory_id') or
|
|
account_id in (select account_id from tbl_accounts where accategory_id in (select accategory_id from tbl_accategories where tbl_accategories.parent_category_id = '$accategory_id'))
|
|
";
|
|
$Vouchers = $CI->db->query($t)->result();
|
|
$DrBalance = 0;
|
|
$CrBalance = 0;
|
|
foreach ($Vouchers as $Voucher) {
|
|
//pre($Voucher);die;
|
|
$DrBalance += $Voucher->dr;
|
|
$CrBalance += $Voucher->cr;
|
|
}
|
|
return ($DrBalance) - ($CrBalance);
|
|
}
|
|
function getAccountBalanceByAccountCategoryBothSide($accategory_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where account_id in (select account_id from tbl_accounts where accategory_id ='$accategory_id')";
|
|
$Vouchers = $CI->db->query($t)->result();
|
|
$DrBalance = 0;
|
|
$CrBalance = 0;
|
|
foreach ($Vouchers as $Voucher) {
|
|
$DrBalance += $Voucher->dr;
|
|
$CrBalance += $Voucher->cr;
|
|
}
|
|
return ["DrBalance" => $DrBalance, "CrBalance" => $CrBalance];
|
|
}
|
|
function getAccountBalance($account_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where account_id ='$account_id'"; //in (select account_id from tbl_accounts where accategory_id ='$accategory_id')";
|
|
$Vouchers = $CI->db->query($t)->result();
|
|
$DrBalance = 0;
|
|
$CrBalance = 0;
|
|
foreach ($Vouchers as $Voucher) {
|
|
$DrBalance += $Voucher->dr;
|
|
$CrBalance += $Voucher->cr;
|
|
}
|
|
return ($DrBalance) - ($CrBalance);
|
|
}
|
|
function getAccountBalanceBothSide($account_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where account_id ='$account_id'"; //in (select account_id from tbl_accounts where accategory_id ='$accategory_id')";
|
|
$Vouchers = $CI->db->query($t)->result();
|
|
$DrBalance = 0;
|
|
$CrBalance = 0;
|
|
foreach ($Vouchers as $Voucher) {
|
|
$DrBalance += $Voucher->dr;
|
|
$CrBalance += $Voucher->cr;
|
|
}
|
|
return ["DrBalance" => $DrBalance, "CrBalance" => $CrBalance];
|
|
}
|
|
function getAccountGroups()
|
|
{
|
|
$CI = &get_instance();
|
|
$t = "select * from tbl_acgroups where status=1";
|
|
$AccountGroups = $CI->db->query($t)->result();
|
|
foreach ($AccountGroups as $AccountGroup) :
|
|
$AccountGroup->dr = 0;
|
|
$AccountGroup->cr = 0;
|
|
// $TotalBalance = $this->getTotalBalanceByAccountGroup($AccountGroup->acgroup_id);
|
|
$ACBalances = array();
|
|
$TotalBalance = $this->getAccountBalanceR("Types", $AccountGroup->acgroup_id, $ACBalances);
|
|
if ($AccountGroup->posting_side == "DR") {
|
|
$AccountGroup->dr = ($TotalBalance);
|
|
} else {
|
|
$AccountGroup->cr = ($TotalBalance);
|
|
}
|
|
endforeach;
|
|
$dr = 0;
|
|
$cr = 0;
|
|
return $AccountGroups;
|
|
}
|
|
public function getParentAccountCategories($acgroup_id = 0)
|
|
{
|
|
if (isset($_GET['group'])) {
|
|
$acgroup_id = ($_GET['group']) ? $_GET['group'] : $acgroup_id;
|
|
}
|
|
$ci = &get_instance();
|
|
if ($acgroup_id == 0)
|
|
$t = "select * from tbl_accategories as b where status=1 and parent_category_id=0";
|
|
else
|
|
$t = "select * from tbl_accategories as b where status=1 and parent_category_id=0 and acgroup_id='$acgroup_id'";
|
|
$AccountCategories = $ci->db->query($t)->result();
|
|
foreach ($AccountCategories as $AccountCategory) :
|
|
$AccountCategory->dr = 0;
|
|
$AccountCategory->cr = 0;
|
|
$AccountCategory->AccountGroup = $ci->db->query("select * from tbl_acgroups where acgroup_id = '$AccountCategory->acgroup_id'")->row();
|
|
if ($AccountCategory->parent_category_id <> 0) {
|
|
$AccountCategory->Parent = $ci->db->query("select * from tbl_accategories where accategory_id = '$AccountCategory->parent_category_id'")->row();
|
|
}
|
|
// $AccountCategory->Balance = $this->getAccountBalanceByAccountCategory($AccountCategory->accategory_id);
|
|
$AccountCategory->Balance = $this->getAccountBalanceR("Category", $AccountCategory->accategory_id);
|
|
$AccountCategory->posting_side = getFieldfromValue("tbl_acgroups", "posting_side", "acgroup_id", $AccountCategory->acgroup_id);
|
|
if ($AccountCategory->posting_side == "DR")
|
|
$AccountCategory->dr = $AccountCategory->Balance;
|
|
else
|
|
$AccountCategory->cr = $AccountCategory->Balance;
|
|
endforeach;
|
|
return $AccountCategories;
|
|
}
|
|
public function getChildAccountCategories($accategory_id = 0)
|
|
{
|
|
if (isset($_GET['category'])) {
|
|
$accategory_id = ($_GET['category']) ? $_GET['category'] : $accategory_id;
|
|
}
|
|
$ci = &get_instance();
|
|
if ($accategory_id == 0)
|
|
$t = "select * from tbl_accategories as b where status=1 and parent_category_id<>0";
|
|
else
|
|
$t = "select * from tbl_accategories as b where status=1 and parent_category_id='$accategory_id'";
|
|
$AccountCategories = $ci->db->query($t)->result();
|
|
foreach ($AccountCategories as $AccountCategory) :
|
|
$AccountCategory->dr = 0;
|
|
$AccountCategory->cr = 0;
|
|
if ($AccountCategory->parent_category_id <> 0) {
|
|
$AccountCategory->Parent = $ci->db->query("select * from tbl_accategories where accategory_id = '$AccountCategory->parent_category_id'")->row();
|
|
}
|
|
// $AccountCategory->Balance = $this->getAccountBalanceByAccountCategory($AccountCategory->accategory_id);
|
|
$AccountCategory->Balance = $this->getAccountBalanceR("Group", $AccountCategory->accategory_id);
|
|
$AccountCategory->posting_side = getFieldfromValue("tbl_acgroups", "posting_side", "acgroup_id", $AccountCategory->acgroup_id);
|
|
if ($AccountCategory->posting_side == "DR")
|
|
$AccountCategory->dr = $AccountCategory->Balance;
|
|
else
|
|
$AccountCategory->cr = $AccountCategory->Balance;
|
|
endforeach;
|
|
return $AccountCategories;
|
|
}
|
|
function getTotalBalanceByAccountGroup($acgroup_id)
|
|
{
|
|
$CI = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where account_id in (select account_id from tbl_accounts where accategory_id in (select accategory_id from tbl_accategories where acgroup_id='$acgroup_id'))";
|
|
$Vouchers = $CI->db->query($t)->result();
|
|
$DrBalance = 0;
|
|
$CrBalance = 0;
|
|
foreach ($Vouchers as $Voucher) {
|
|
//pre($Voucher);die;
|
|
$DrBalance += $Voucher->dr;
|
|
$CrBalance += $Voucher->cr;
|
|
}
|
|
return ($DrBalance) - ($CrBalance);
|
|
}
|
|
function getParentAccountCategoriesByGroup($acgroup_id, $both = false)
|
|
{
|
|
$CI = &get_instance();
|
|
$AccountCategories = $CI->db
|
|
->where("acgroup_id", $acgroup_id)
|
|
->where("status", 1)
|
|
->where("parent_category_id", 0)
|
|
->order_by("accategory_name ASC")->get("tbl_accategories")->result();
|
|
foreach ($AccountCategories as $AccountCategory) {
|
|
$AccountCategory->dr = 0;
|
|
$AccountCategory->cr = 0;
|
|
if ($both) {
|
|
$TotalBalance = $this->getAccountBalanceByAccountCategoryBothSide($AccountCategory->accategory_id);
|
|
$AccountCategory->dr = $TotalBalance['DrBalance'];
|
|
$AccountCategory->cr = $TotalBalance['CrBalance'];
|
|
} else {
|
|
$AccountCategory->posting_side = getFieldfromValue("tbl_acgroups", "posting_side", "acgroup_id", $AccountCategory->acgroup_id);
|
|
$TotalBalance = $this->getAccountBalanceByAccountCategory($AccountCategory->accategory_id);
|
|
if ($AccountCategory->posting_side == "DR") {
|
|
$AccountCategory->dr = abs($TotalBalance);
|
|
} else {
|
|
$AccountCategory->cr = abs($TotalBalance);
|
|
}
|
|
}
|
|
}
|
|
return $AccountCategories;
|
|
}
|
|
function getChildAccountCategoriesByGroupAndParentCategory($acgroup_id, $accategory_id, $both = false)
|
|
{
|
|
$CI = &get_instance();
|
|
$AccountCategories = $CI->db
|
|
->where("acgroup_id", $acgroup_id)
|
|
->where("parent_category_id", $accategory_id)
|
|
->where("status", 1)
|
|
->order_by("accategory_name ASC")->get("tbl_accategories")->result();
|
|
foreach ($AccountCategories as $AccountCategory) {
|
|
$AccountCategory->dr = 0;
|
|
$AccountCategory->cr = 0;
|
|
if ($both) {
|
|
$TotalBalance = $this->getAccountBalanceByAccountCategoryBothSide($AccountCategory->accategory_id);
|
|
$AccountCategory->dr = $TotalBalance['DrBalance'];
|
|
$AccountCategory->cr = $TotalBalance['CrBalance'];
|
|
} else {
|
|
$TotalBalance = $this->getAccountBalanceByAccountCategory($AccountCategory->accategory_id);
|
|
$AccountCategory->posting_side = getFieldfromValue("tbl_acgroups", "posting_side", "acgroup_id", $AccountCategory->acgroup_id);
|
|
if ($AccountCategory->posting_side == "DR") {
|
|
$AccountCategory->dr = abs($TotalBalance);
|
|
} else {
|
|
$AccountCategory->cr = abs($TotalBalance);
|
|
}
|
|
}
|
|
}
|
|
return $AccountCategories;
|
|
}
|
|
function getAccountsByCategory($accategory_id, $getOldBalance = false)
|
|
{
|
|
$CI = &get_instance();
|
|
$AccountHeads = $CI->db
|
|
->where("accategory_id", $accategory_id)
|
|
->where("status", 1)
|
|
->order_by("account_name ASC")->get("tbl_accounts")->result();
|
|
foreach ($AccountHeads as $AccountHead) {
|
|
$AccountHead = $this->CompileAccount($AccountHead, $getOldBalance);
|
|
}
|
|
return $AccountHeads;
|
|
}
|
|
function getAccountHeads($getOldBalance = false)
|
|
{
|
|
$CI = &get_instance();
|
|
$AccountHeads = $CI->db->query("select * from tbl_accounts where status=1 order by accategory_id asc,account_name asc ")->result();
|
|
foreach ($AccountHeads as $AccountHead) {
|
|
$AccountHead = $this->CompileAccount($AccountHead, $getOldBalance);
|
|
}
|
|
return $AccountHeads;
|
|
}
|
|
function CompileAccount($AccountHead, $getOldBalance = false)
|
|
{
|
|
$CI = &get_instance();
|
|
$AccountHead->Group = $CI->db->query("select * from tbl_accategories where accategory_id='$AccountHead->accategory_id'")->row();
|
|
if ($AccountHead->Group) {
|
|
if ($AccountHead->Group->parent_category_id != 0)
|
|
$AccountHead->Category = $CI->db->query("select * from tbl_accategories where accategory_id='" . $AccountHead->Group->parent_category_id . "'")->row();
|
|
else
|
|
$AccountHead->Category = $CI->db->query("select * from tbl_accategories where accategory_id='" . $AccountHead->Group->accategory_id . "'")->row();
|
|
$AccountHead->Type = $CI->db->query("select * from tbl_acgroups where acgroup_id='" . $AccountHead->Group->acgroup_id . "'")->row();
|
|
}
|
|
if ($getOldBalance) {
|
|
$AccountHead->dr_opening_balance = $this->getDrAccountOpeningBalance($AccountHead->account_id);
|
|
$AccountHead->cr_opening_balance = $this->getCrAccountOpeningBalance($AccountHead->account_id);
|
|
}
|
|
$TotalBalances = array();
|
|
$TotalBalance = $this->getAccountBalanceR("Account", $AccountHead->account_id, $TotalBalances);
|
|
$AccountHead->cr = $TotalBalances["DrBalance"];
|
|
$AccountHead->dr = $TotalBalances["CrBalance"];
|
|
return $AccountHead;
|
|
}
|
|
function listAccountHeads()
|
|
{
|
|
?>
|
|
<?php $d = 0;
|
|
$c = 0;
|
|
$TableData = $this->getAccountHeads(true); ?>
|
|
<!-- <div id="dataTable_wrapper" class="mb-20">
|
|
<div class="col"></div>
|
|
<div class="col text-right"></div>
|
|
</div> -->
|
|
<table class="table table-striped table-bordered longdataTable">
|
|
<thead>
|
|
<tr>
|
|
<!-- <th class="col-1.5" rowspan="2"><?php //myLang(" Category");
|
|
?></th> -->
|
|
|
|
<th class="col-1.5" rowspan="2"><?php myLang("Ledger"); ?></th>
|
|
<th class="col-1.5" rowspan="2"><?php myLang(" Group"); ?></th>
|
|
<th colspan="2" class="col-3 text-center">Opening Balance</th>
|
|
<th class="col-2 text-center" rowspan="2"><?php myLang("Action"); ?></th>
|
|
</tr>
|
|
<tr>
|
|
<!-- <th class="col-1"><?php //myLang(" Type");
|
|
?></th> -->
|
|
<!-- <th class="col-1.5"><?php //myLang(" Category");
|
|
?></th> -->
|
|
<!-- <th class="col-1.5"><?php //myLang(" Group");
|
|
?></th> -->
|
|
<!-- <th class="col-1.5"><?php //myLang("Ledger");
|
|
?></th> -->
|
|
<th class="col-1 text-center"><?php myLang("Dr"); ?></th>
|
|
<th class="col-1 text-center"><?php myLang("Cr"); ?></th>
|
|
<!-- <th class="col-1"><?php //myLang("Party Name");
|
|
?></th> -->
|
|
<!-- <th class="col-1"><?php //myLang("Party Contact");
|
|
?></th> -->
|
|
<!-- <th class="col-1"><?php //myLang("PAN");
|
|
?></th> -->
|
|
<!-- <th class="col-1 text-center"><?php //myLang("Action");
|
|
?></th> -->
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php $sn = 0;
|
|
foreach ($TableData as $TableRow) : $sn++; ?>
|
|
<?php foreach ($TableRow as $cols) : $id = $cols;
|
|
break;
|
|
endforeach; ?><tr>
|
|
<!-- <td><?php //echo isset($TableRow->Type) ? linkGroup($TableRow->Type) : "";
|
|
?></td> -->
|
|
<!-- <td><?php //echo isset($TableRow->Category) ? linkCategory($TableRow->Category) : '';
|
|
?></td> -->
|
|
<td><?php echo linkLedger($TableRow); ?></td>
|
|
<td><?php echo linkCategory($TableRow->Group); ?></td>
|
|
<td><?php $d += doubleval($TableRow->dr_opening_balance);
|
|
echo ($TableRow->dr_opening_balance > 0) ? myCurrency($TableRow->dr_opening_balance) : ""; ?></td>
|
|
<td><?php $c += doubleval($TableRow->cr_opening_balance);
|
|
echo ($TableRow->cr_opening_balance > 0) ? myCurrency($TableRow->cr_opening_balance) : ""; ?></td>
|
|
<!-- <td><?php //echo $TableRow->account_partyname;
|
|
?></td> -->
|
|
<!-- <td><?php //echo $TableRow->account_partycontact;
|
|
?></td> -->
|
|
<!-- <td><?php //echo $TableRow->account_partypan;
|
|
?></td> -->
|
|
<td class="text-center">
|
|
<a onClick="javascript:showDetails(<?php echo $id; ?>);" class="btn btn-primary btn-xs"><i class="fas fa-copy"></i> </a>
|
|
<a href="<?php echo site_url("accounts/accountheads/edit/$id"); ?>" class="btn btn-info btn-xs"><i class="fas fa-edit"></i> </a>
|
|
<a onClick="javascript:doDelete(<?php echo $id; ?>);" class="btn btn-danger btn-xs"><i class="fas fa-trash"></i> </a>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="accountdetails_box" tabindex="-1" role="dialog" aria-labelledby="accountdetails_box" aria-hidden="true">
|
|
<div class="modal-dialog modal-xl" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="exampleModalLabel">Account Details</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body" id="details_container">
|
|
Account Details Goes Here
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
<a class="btn btn-primary" id="details_edit_btn" href="">Edit</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
function doDelete(id) {
|
|
if (confirm('Are you sure to delete?')) {
|
|
window.location = '<?php echo site_url("accounts/accountheads/delete/"); ?>' + id;
|
|
}
|
|
}
|
|
|
|
function showDetails(id) {
|
|
$.ajax({
|
|
url: "<?php echo site_url("accounts/accountheads/getdetails/"); ?>" + id,
|
|
success: function(data) {
|
|
$("#details_container").html(data);
|
|
$("#details_edit_btn").attr("href", "<?php echo site_url("accounts/accountheads/edit/"); ?>" + id);
|
|
$("#accountdetails_box").modal('show');
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
<?php
|
|
}
|
|
function getLedgerData($account_id, $fromDate = "", $toDate = "")
|
|
{
|
|
$oldBalance = $this->getOldBalance($account_id, $fromDate);
|
|
$fromDate = ($fromDate == "") ? NepaliToEnglishDate(firstDayOfNepaliMonth()) : $fromDate;
|
|
$toDate = ($toDate == "") ? Today() : $toDate;
|
|
$ci = &get_instance();
|
|
$q = "select *,(select bs_date from tbl_nepengcalendar where ad_date=tbl_voucherdetails.transaction_date) as transaction_date_bs from tbl_voucherdetails where status=1 and account_id='$account_id' and transaction_date>='$fromDate' and transaction_date<='$toDate'";
|
|
// echo $q;
|
|
$Transactions = $ci->db->query($q)->result();
|
|
// $Transactions = $ci->db->where("transaction_date>='$fromDate'")->where("transaction_date<='$toDate'")->where("status", 1)->where("account_id", $account_id)->get("tbl_voucherdetails")->result();
|
|
$Account = $ci->db->where("status", 1)->where("account_id", $account_id)->get("tbl_accounts")->row();
|
|
foreach ($Transactions as $T) {
|
|
//$T->AccountCategory=$this->db->where("status",1)->where("accategory_id",$AccountGroup->acgroup_id)->get("tbl_accategories")->result();
|
|
$T->Voucher = $ci->db->where("status", 1)->where("voucher_id", $T->voucher_id)->get("tbl_vouchers")->row();
|
|
}
|
|
$data['Transactions'] = $Transactions;
|
|
$data['Account'] = $Account;
|
|
$data['account_id'] = $account_id;
|
|
$data['oldBalance'] = $oldBalance;
|
|
return $data;
|
|
}
|
|
function showLedger($account_id, $fromDate = "", $toDate = "")
|
|
{
|
|
|
|
$oldBalance = $this->getOldBalance($account_id, FYStart());
|
|
$fromDate = ($fromDate == "") ? NepaliToEnglishDate(FYStart()) : $fromDate;
|
|
$toDate = ($toDate == "") ? Today() : $toDate;
|
|
$ci = &get_instance();
|
|
$Transactions = $ci->db->where("transaction_date between '$fromDate' AND '$toDate'")->where("status", 1)->where("account_id", $account_id)->get("tbl_voucherdetails")->result();
|
|
|
|
$Account = $ci->db->where("status", 1)->where("account_id", $account_id)->get("tbl_accounts")->row();
|
|
foreach ($Transactions as $T) {
|
|
$T->Voucher = $ci->db->where("status", 1)->where("voucher_id", $T->voucher_id)->get("tbl_vouchers")->row();
|
|
}
|
|
$data['Transactions'] = $Transactions;
|
|
$data['Account'] = $Account;
|
|
$data['account_id'] = $account_id;
|
|
?>
|
|
<div class="card-primary card-outline ">
|
|
<div class="card-header">
|
|
<h5 class="m-0">Leger for Account : <?php echo $Account->account_name; ?> <a href="<?php echo site_url("accounts/ledger/print/" . $Account->account_id . "/?" . $_SERVER['QUERY_STRING']); ?>" class="btn btn-success btn-sm float-right">Print</a></h5>
|
|
</div>
|
|
<div class="card-body p-0 mb-20" id="printableDiv">
|
|
<h3 class="text-center"><?php echo $ci->session->userdata("CompanyName"); ?></h3>
|
|
<h5 class="text-center">Ledger Details for <?php echo $Account->account_name; ?> </h5>
|
|
<?php $TableData = $Transactions; ?>
|
|
<?php $TotalCols = 7; ?>
|
|
<table class="table table-bordered table-head-fixed text-nowrap table-striped ">
|
|
<thead>
|
|
<tr>
|
|
<th class="col-1"><?php myLang("Date"); ?></th>
|
|
<!-- <th class="col-1">Date (A.D)</th> -->
|
|
<th class="col-1"><?php myLang("Account"); ?></th>
|
|
<!-- <th class="col-5">Narration</th> -->
|
|
<th class="col-1"><?php myLang("Voucher Type"); ?></th>
|
|
<th class="col-1 text-right"><?php myLang("Debit"); ?></th>
|
|
<th class="col-1 text-right"><?php myLang("Credit"); ?></th>
|
|
<th class="col-1"><?php myLang("Balance"); ?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php $r = 1;
|
|
$drTotal = 0;
|
|
$crTotal = 0;
|
|
$balance = 0;
|
|
|
|
foreach ($TableData as $TableRow) : $r++;
|
|
?>
|
|
<tr>
|
|
<td><?php echo NepaliDate(($TableRow->transaction_date)); ?></td>
|
|
|
|
<td>
|
|
<?php
|
|
if ($TableRow->voucher_id != 0) :
|
|
$Tr = $ci->myaccounts->getVoucherTransactions($TableRow->Voucher->voucher_id);
|
|
foreach ($Tr as $T) :
|
|
if ($T->account_id != $account_id) {
|
|
echo $T->account_name;
|
|
break;
|
|
}
|
|
|
|
endforeach;
|
|
|
|
// pre($Tr);
|
|
else :
|
|
echo "Opening Balance";
|
|
endif;
|
|
?></td>
|
|
<!-- <td><?php //echo $TableRow->narration;
|
|
?></td> -->
|
|
<td>
|
|
<?php linkVoucher($TableRow->voucher_id); ?>
|
|
|
|
</td>
|
|
<td><?php echo myCurrency($TableRow->dr);
|
|
$drTotal += $TableRow->dr; ?></td>
|
|
<td><?php echo myCurrency($TableRow->cr);
|
|
$crTotal += $TableRow->cr; ?></td>
|
|
<?php $balance += $TableRow->dr;
|
|
$balance -= $TableRow->cr; ?>
|
|
<td><?php echo ($balance != 0) ? myCurrency($balance) : showNill(); ?></td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php while ($r < 15) : ?>
|
|
<tr>
|
|
<td> </td>
|
|
<!-- <td></td> -->
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<?php $r++;
|
|
endwhile; ?>
|
|
<tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="3" class="text-right text-bold">Total</td>
|
|
<td><?php echo myCurrency($drTotal); ?></td>
|
|
<td><?php echo myCurrency($crTotal); ?></td>
|
|
<td><?php echo myCurrency($balance); ?></td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
<!-- <div class="container ">
|
|
<div class="row mt-100 ">
|
|
<div class="col-2"><span class="underline-text"><?php echo $ci->session->userdata("loggedUser"); ?></span></div>
|
|
<div class="col-2 offset-3">______________</div>
|
|
<div class="col-2 offset-3">______________</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-2">Entered By</div>
|
|
<div class="col-2 offset-3">Checked By</div>
|
|
<div class="col-2 offset-3">Approved By</div>
|
|
</div>
|
|
<div class="divFooter">UNCLASSIFIED</div>
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
function ledgerPDF_FPDM($account_id, $fromDate, $toDate)
|
|
{
|
|
$CI = &get_instance();
|
|
$CI->load->library("numbertoword");
|
|
$ledgerData = $this->getLedgerData($account_id, $fromDate, $toDate);
|
|
$file = APPPATH . "/../pdf/e_ledger1.pdf";
|
|
$pdf = new FPDM($file);
|
|
$i = 0;
|
|
$crTotal = 0;
|
|
$drTotal = 0;
|
|
$fields = array();
|
|
$lineBalance = 0;
|
|
// pre($ledgerData);
|
|
//die;
|
|
$fields['account_name'] = $ledgerData['Account']->account_name;
|
|
$fields['from_date_ad'] = NepaliToEnglishDate($fromDate);
|
|
$fields['to_date_ad'] = NepaliToEnglishDate($toDate);
|
|
$fields['from_date_bs'] = $fromDate;
|
|
$fields['to_date_bs'] = $toDate;
|
|
$printedDate = NepaliDate(Today()) . "(AD: " . Today() . ")";
|
|
foreach ($ledgerData['Transactions'] as $VoucherDetail) :
|
|
$i++;
|
|
$fields['date' . $i] = $VoucherDetail->transaction_date . chr(13) . NepaliDate($VoucherDetail->transaction_date);
|
|
$fields['voucher_no' . $i] = isset($VoucherDetail->Voucher->voucher_no) ? $VoucherDetail->Voucher->voucher_no : "B/F";
|
|
$fields['narration' . $i] = $VoucherDetail->narration;
|
|
$fields['debit' . $i] = ($VoucherDetail->dr == 0) ? "" : N2($VoucherDetail->dr);
|
|
$fields['credit' . $i] = ($VoucherDetail->dr == 0) ? N2($VoucherDetail->cr) : "";
|
|
$drTotal += $VoucherDetail->dr;
|
|
$crTotal += $VoucherDetail->cr;
|
|
$lineBalance += $VoucherDetail->dr - $VoucherDetail->cr;
|
|
$fields['balance' . $i] = N2($lineBalance);
|
|
$fields['debit_total'] = $drTotal;
|
|
$fields['credit_total'] = $crTotal;
|
|
$fields['balance_total'] = $crTotal - $drTotal;
|
|
$fields['printed_by'] = $CI->session->userdata("loggedUser");
|
|
$fields['printed_on'] = $printedDate;
|
|
$pdf->Load($fields, true);
|
|
if ($i > 20) {
|
|
//$pdf->AddPage();
|
|
$i = 0;
|
|
}
|
|
endforeach;
|
|
//$pdf->Load($fields, true);
|
|
$pdf->Merge();
|
|
//$pdf->Flatten();
|
|
$OutputFileLocation = APPPATH . "/../pdf/ledgers/";
|
|
$OutputFile = "Ledger_" . $ledgerData['Account']->account_id . ".pdf";
|
|
$pdf->Output("F", $OutputFileLocation . $OutputFile);
|
|
return $OutputFile;
|
|
}
|
|
function ledgerPDF($account_id, $fromDate, $toDate)
|
|
{
|
|
$CI = &get_instance();
|
|
$CI->load->library("numbertoword");
|
|
$ledgerData = $this->getLedgerData($account_id, $fromDate, $toDate);
|
|
if ($_SERVER['HTTP_HOST'] == 'localhost')
|
|
$file = "ledger_$account_id.wpdf";
|
|
else
|
|
$file = "ledger_$account_id.pdf";
|
|
$pdf = new MyPDF();
|
|
$pdf->HeaderText = "Account Ledger for " . $ledgerData['Account']->account_name;
|
|
$pdf->SubHeaderText = "Period of $fromDate to $toDate";
|
|
$pdf->printedBy = $CI->session->userdata('loggedUser');
|
|
$i = 0;
|
|
$crTotal = 0;
|
|
$drTotal = 0;
|
|
$fields = array();
|
|
$lineBalance = 0;
|
|
// pre($ledgerData);
|
|
//die;
|
|
$columns = array(
|
|
array("name" => "Date", "width" => 20, "align" => "C"),
|
|
array("name" => "VN", "width" => 10, "align" => "L"),
|
|
array("name" => "Narration", "width" => 80, "align" => "L"),
|
|
array("name" => "Debit", "width" => 25, "align" => "L"),
|
|
array("name" => "Credit", "width" => 25, "align" => "L"),
|
|
array("name" => "Balance", "width" => 25, "align" => "L")
|
|
);
|
|
$pdf->HeaderColumns = $columns;
|
|
$pdf->SetAutoPageBreak(true, 50);
|
|
$pdf->AddPage("P", "A4");
|
|
$pdf->SetFont('Helvetica', '', 8);
|
|
$y = 50;
|
|
$rowHeight = 8;
|
|
foreach ($ledgerData['Transactions'] as $VoucherDetail) :
|
|
$pdf->cell($columns[0]['width'], $rowHeight, $VoucherDetail->transaction_date, 1, 0, "C");
|
|
$pdf->cell($columns[1]['width'], $rowHeight, isset($VoucherDetail->Voucher->voucher_no) ? $VoucherDetail->Voucher->voucher_no : "B/F", 1, 0, "C");
|
|
$pdf->cell($columns[2]['width'], $rowHeight, character_limiter($VoucherDetail->narration, 35, " ..."), 1, 0, "J");
|
|
$pdf->cell($columns[3]['width'], $rowHeight, ($VoucherDetail->dr == 0) ? "" : N2($VoucherDetail->dr), 1, 0, "R");
|
|
$pdf->cell($columns[4]['width'], $rowHeight, ($VoucherDetail->dr == 0) ? N2($VoucherDetail->cr) : "", 1, 0, "R");
|
|
$drTotal += $VoucherDetail->dr;
|
|
$crTotal += $VoucherDetail->cr;
|
|
$lineBalance += $VoucherDetail->dr - $VoucherDetail->cr;
|
|
$pdf->cell($columns[5]['width'], $rowHeight, N2($lineBalance), 1, 0, "R");
|
|
$pdf->Ln();
|
|
// $x = 10;
|
|
// $pdf->SetXY($x, $y);
|
|
// $pdf->Cell($columns[0]['width'], $rowHeight, $VoucherDetail->transaction_date, 1, "C");
|
|
// $pdf->SetXY($x += $columns[0]['width'], $y);
|
|
// $pdf->MultiCell($columns[1]['width'], $rowHeight, isset($VoucherDetail->Voucher->voucher_no) ? $VoucherDetail->Voucher->voucher_no : "B/F", 1, "C");
|
|
// $pdf->SetXY($x += $columns[1]['width'], $y);
|
|
// $pdf->MultiCell($columns[2]['width'], $rowHeight, $VoucherDetail->narration, 1, "J", false, 1);
|
|
// $pdf->SetXY($x += $columns[2]['width'], $y);
|
|
// $pdf->MultiCell($columns[3]['width'], $rowHeight, ($VoucherDetail->dr == 0) ? "" : N2($VoucherDetail->dr), 1,"R");
|
|
// $pdf->SetXY($x += $columns[3]['width'], $y);
|
|
// $pdf->MultiCell($columns[4]['width'], $rowHeight, ($VoucherDetail->dr == 0) ? N2($VoucherDetail->cr) : "", 1,"R");
|
|
// $drTotal += $VoucherDetail->dr;
|
|
// $crTotal += $VoucherDetail->cr;
|
|
// $lineBalance += $VoucherDetail->dr - $VoucherDetail->cr;
|
|
// $pdf->SetXY($x += $columns[4]['width'],$y);
|
|
// $pdf->MultiCell($columns[5]['width'], $rowHeight, N2($lineBalance), 1,"R");
|
|
// $pdf->Ln();
|
|
// $y += $rowHeight;
|
|
// if($y>280)$pdf->AddPage();
|
|
endforeach;
|
|
$pdf->Output(APPPATH . "/../pdf/ledgers/" . $file, "F");
|
|
return $file;
|
|
// $printedDate = NepaliDate(Today()) . "(AD: " . Today() . ")";
|
|
// foreach ($ledgerData['Transactions'] as $VoucherDetail) :
|
|
// $i++;
|
|
// $fields['date' . $i] = $VoucherDetail->transaction_date . chr(13) . NepaliDate($VoucherDetail->transaction_date);
|
|
// $fields['voucher_no' . $i] = isset($VoucherDetail->Voucher->voucher_no) ? $VoucherDetail->Voucher->voucher_no : "B/F";
|
|
// $fields['narration' . $i] = $VoucherDetail->narration;
|
|
// $fields['debit' . $i] = ($VoucherDetail->dr == 0) ? "" : N2($VoucherDetail->dr);
|
|
// $fields['credit' . $i] = ($VoucherDetail->dr == 0) ? N2($VoucherDetail->cr) : "";
|
|
// $drTotal += $VoucherDetail->dr;
|
|
// $crTotal += $VoucherDetail->cr;
|
|
// $lineBalance += $VoucherDetail->dr - $VoucherDetail->cr;
|
|
// $fields['balance' . $i] = N2($lineBalance);
|
|
// $fields['debit_total'] = $drTotal;
|
|
// $fields['credit_total'] = $crTotal;
|
|
// $fields['balance_total'] = $crTotal - $drTotal;
|
|
// $fields['printed_by'] = $CI->session->userdata("loggedUser");
|
|
// $fields['printed_on'] = $printedDate;
|
|
// $pdf->Load($fields, true);
|
|
// if ($i > 20) {
|
|
// //$pdf->AddPage();
|
|
// $i = 0;
|
|
// }
|
|
// endforeach;
|
|
// //$pdf->Load($fields, true);
|
|
// $pdf->Merge();
|
|
// //$pdf->Flatten();
|
|
// $OutputFileLocation = APPPATH . "/../pdf/ledgers/";
|
|
// $OutputFile = "Ledger_" . $ledgerData['Account']->account_id . ".pdf";
|
|
// $pdf->Output("F", $OutputFileLocation . $OutputFile);
|
|
// return $OutputFile;
|
|
}
|
|
function listVouchers($fromDate = "", $toDate = "", $account_id = "", $vouchertype_id = "", $showAccounts = false, $showVoucherTypes = false)
|
|
{
|
|
// echo $toDate;
|
|
$ci = &get_instance();
|
|
$fromDate = ($fromDate == "") ? NepaliToEnglishDate(firstDayOfNepaliMonth()) : $fromDate;
|
|
$toDate = ($toDate == "") ? Today() : $toDate;
|
|
$q = "select *, (select narration from tbl_voucherdetails where tbl_voucherdetails.voucher_id=tbl_vouchers.voucher_id limit 1) as narration from tbl_vouchers where status=1 and voucher_date>='$fromDate' and voucher_date<='$toDate'";
|
|
if ($account_id != "") $q .= " and voucher_id in (select voucher_id from tbl_voucherdetails where account_id='$account_id')";
|
|
if ($vouchertype_id != "") $q .= " and voucher_type ='$vouchertype_id'";
|
|
$q .= " order by voucher_date desc";
|
|
// echo $q;
|
|
$Vouchers = $ci->db->query($q)->result();
|
|
$TableData = $Vouchers;
|
|
if ($showAccounts) :
|
|
foreach ($TableData as $Row) {
|
|
$q = "select * from tbl_voucherdetails where voucher_id='" . $Row->voucher_id . "'";
|
|
$Row->Transactions = $ci->db->query($q)->result();
|
|
$Row->VoucherType = $this->getVoucherType($Row->voucher_type);
|
|
}
|
|
endif;
|
|
?>
|
|
<table class="table table-bordered table-striped longdataTable" id="voucherList1">
|
|
<thead>
|
|
<tr>
|
|
<!-- <th class="col-1"><?php myLang("Sn"); ?></th> -->
|
|
<th class="" width="20" data-sortable="true"><?php myLang("#"); ?></th>
|
|
<th class="" width="70"><?php myLang("Date (B.S)"); ?></th>
|
|
<?php if ($showAccounts) : ?>
|
|
<th><?php myLang("Particulars"); ?></th>
|
|
<?php endif; ?>
|
|
<?php if ($showVoucherTypes) : ?>
|
|
<th><?php myLang("Voucher Type"); ?></th>
|
|
<?php endif; ?>
|
|
<th width="90"><?php myLang("Dr"); ?></th>
|
|
<th width="90"><?php myLang("Cr"); ?></th>
|
|
<!--<th><?php myLang("Voucher State"); ?></th> -->
|
|
<th class="table-col col-2">Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php $a = 0; $drTotal=0;$crTotal=0;
|
|
foreach ($TableData as $TableRow) : $a++; ?>
|
|
|
|
<tr data-id="<?php echo $TableRow->voucher_id; ?>" class="<?php echo ($TableRow->voucher_state == "Reversed") ? "table-danger" : ""; ?>">
|
|
<!-- <td><?php echo $TableRow->voucher_id; ?></td> -->
|
|
<td><?php echo $TableRow->voucher_no; ?></td>
|
|
<td><?php echo NepaliDate($TableRow->voucher_date); ?></td>
|
|
<td>
|
|
<?php foreach ($TableRow->Transactions as $Transaction) : ?>
|
|
<div><?php echo (($Transaction->cr) ? " " : "") . $this->getAccountDetails($Transaction->account_id)->account_name; ?></div>
|
|
<?php endforeach; ?>
|
|
(<span class="narration_display"><?php echo $TableRow->narration; ?></span>)
|
|
</td>
|
|
<?php if ($showVoucherTypes) : ?>
|
|
<td>
|
|
|
|
<?php echo $TableRow->VoucherType->voucher_name; ?>
|
|
|
|
</td>
|
|
<?php endif; ?>
|
|
<td>
|
|
<?php foreach ($TableRow->Transactions as $Transaction) : $drTotal+=$Transaction->dr; ?>
|
|
<?php echo myCurrency($Transaction->dr); ?>
|
|
<?php endforeach; ?>
|
|
</td>
|
|
<td>
|
|
<?php foreach ($TableRow->Transactions as $Transaction) : $crTotal+=$Transaction->cr; ?>
|
|
<?php echo myCurrency($Transaction->cr); ?>
|
|
<?php endforeach; ?>
|
|
</td>
|
|
<!-- <td><?php echo $TableRow->voucher_type; ?></td> -->
|
|
<!-- <td><?php echo $TableRow->voucher_state; ?></td> -->
|
|
<td class="col-1">
|
|
<a onClick="javascript:showDetails(<?php echo $TableRow->voucher_id; ?>);" class="btn btn-success btn-xs" title="View Details"><i class="fa fa-eye"></i></a>
|
|
<a onClick="javascript:showPDF(<?php echo $TableRow->voucher_id; ?>);" class="btn btn-primary btn-xs" title="View PDF"><i class="fa fa-file-pdf"></i></a>
|
|
<a onClick="javascript:deleteVoucher(<?php echo $TableRow->voucher_id; ?>);" class="btn btn-danger btn-xs" title="Delete Voucher"><i class="fa fa-trash"></i></a>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
<?php if ($showVoucherTypes) : ?>
|
|
<td></td>
|
|
<?php endif; ?>
|
|
<td class="text-right text-bold">Total</td>
|
|
<td class="text-right text-bold"><?php echo myCurrency($drTotal); ?></td>
|
|
<td class="text-right text-bold"><?php echo myCurrency($crTotal); ?></td>
|
|
<td></td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
<div class="modal fade" id="voucherdetails_box" tabindex="-1" role="dialog" aria-labelledby="voucherdetails_box" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<!-- <h5 class="modal-title" id="exampleModalLabel">Voucher Details</h5> -->
|
|
<!-- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button> -->
|
|
</div>
|
|
<div class="modal-body" id="details_container">
|
|
Voucher Details Goes Here
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" onClick='reversalEntry()' id="reversalBtn" class="btn btn-secondary" data-dismiss="modal" data-id="">Revarsal Entry</button>
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
function showPDF(id) {
|
|
$.ajax({
|
|
url: "<?php echo site_url("accounts/vouchers/print/"); ?>" + id + "?modal=true",
|
|
success: function(data) {
|
|
$("#details_container").html(data);
|
|
$("#reversalBtn").data("id", id);
|
|
$("#voucherdetails_box").modal('show');
|
|
}
|
|
});
|
|
}
|
|
|
|
function showDetails(id) {
|
|
$.ajax({
|
|
url: "<?php echo site_url("accounts/vouchers/voucherdetails/"); ?>" + id,
|
|
success: function(data) {
|
|
$("#details_container").html(data);
|
|
$("#reversalBtn").data("id", id);
|
|
$("#voucherdetails_box").modal('show');
|
|
}
|
|
});
|
|
}
|
|
|
|
function reversalEntry() {
|
|
var id = $("#reversalBtn").data("id");
|
|
if (confirm("Are you sure you want to post reversal for this voucher?")) {
|
|
window.location = "<?php echo site_url("accounts/vouchers/reversal/"); ?>" + id;
|
|
}
|
|
}
|
|
</script>
|
|
<?php
|
|
function footerfunctions()
|
|
{
|
|
?>
|
|
<script>
|
|
$(document).ready(function() {
|
|
var table = $('#voucherList').DataTable();
|
|
var tableRows = $('table#voucherList tbody').find('tr');
|
|
tableRows.each(function() {
|
|
async: false;
|
|
var jqueryRow = $(this);
|
|
var row = table.row(jqueryRow);
|
|
var id = $(this).data("id");
|
|
var Transactions = "<table class='table table-resonsive'><tr><th>Account<\/th><th>Narration<\/th><th>Dr<\/th><th>Cr<\/th><\/tr><tr><td>Billable Projects<\/td><td>Website Development<\/td><td>50000<\/td><td>0<\/td><\/tr><tr><td>Larke Himal Jadibuti Udhyog<\/td><td>Website Development<\/td><td>0<\/td><td>50000<\/td><\/tr><\/table>";
|
|
Transactions = getVoucherDetails(id);
|
|
row.child(Transactions).show();
|
|
});
|
|
});
|
|
|
|
function getVoucherDetails(id) {
|
|
$.data;
|
|
$.ajax({
|
|
url: "<?php echo site_url("ajax/getVoucherDetailsTable/"); ?>" + id,
|
|
async: false,
|
|
success: function(data) {
|
|
$.data = data;
|
|
}
|
|
});
|
|
return ($.data);
|
|
}
|
|
|
|
function deleteVoucher(id) {
|
|
// Show confirmation dialog
|
|
if (confirm("Are you sure you want to delete this voucher?")) {
|
|
$.ajax({
|
|
url: "<?php echo site_url("ajax/deleteVoucher/"); ?>" + id,
|
|
async: false,
|
|
success: function(data) {
|
|
alert("Voucher deleted successfully.");
|
|
// Reload the page
|
|
location.reload();
|
|
},
|
|
error: function() {
|
|
alert("Failed to delete voucher.");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
</script>
|
|
<?php
|
|
}
|
|
?>
|
|
<?php
|
|
}
|
|
function showVoucherType($vouchertype_id)
|
|
{
|
|
$ci = &get_instance();
|
|
$ci->db->where("status", 1)->where("vouchertype_id", $vouchertype_id);
|
|
return $ci->db->get("tbl_vouchertypes")->row();
|
|
}
|
|
function deleteVoucher($voucher_id)
|
|
{
|
|
$ci = &get_instance();
|
|
$ci->db->where("status", 1)->where("voucher_id", $voucher_id)->delete("tbl_vouchers");
|
|
$ci->db->where("status", 1)->where("voucher_id", $voucher_id)->delete("tbl_voucherdetails");
|
|
}
|
|
function showVoucher($voucher_id)
|
|
{
|
|
$ci = &get_instance();
|
|
$Voucher = $ci->db->where("status", 1)->where("voucher_id", $voucher_id)->get("tbl_vouchers")->row();
|
|
$Voucher->Details = $ci->db->where("status", 1)->where("voucher_id", $voucher_id)->get("tbl_voucherdetails")->result();
|
|
$Voucher->Type = $ci->db->where("status", 1)->where("vouchertype_id", $Voucher->voucher_type)->get("tbl_vouchertypes")->row();
|
|
?>
|
|
<div class="card card-primary card-outline">
|
|
<div class="card-header">
|
|
<h5 class="m-0"><?php echo $Voucher->Type->voucher_type; ?> Voucher No. <?php echo $Voucher->voucher_no; ?> <a onclick="javascript:showPDF(<?php echo $voucher_id; ?>);//printDiv('printableDiv');" class="btn btn-primary btn-sm float-right">Print</a></h5>
|
|
</div>
|
|
<div class="card-body" id="printableDiv">
|
|
<div class="row mt-5">
|
|
<div class="col">
|
|
<h3 class="text-center"><?php echo $ci->session->userdata("CompanyName"); ?></h3>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-5">
|
|
<div class="col">
|
|
<h5 class="text-center"> <?php echo $Voucher->Type->voucher_type; ?> Voucher </h5>
|
|
</div>
|
|
</div>
|
|
<!-- <p class="text-right">Date (AD): <?php echo $Voucher->voucher_date; ?></p>
|
|
<p class="text-right">Date (BS): <?php echo NepaliDate($Voucher->voucher_date); ?></p> -->
|
|
<?php $TableData = $Voucher->Details; ?>
|
|
<?php $TotalCols = 4; ?>
|
|
<table class="table table-bordered ">
|
|
<thead>
|
|
<tr>
|
|
<!-- <th class="col-1"><?php myLang("Sn"); ?></th> -->
|
|
<th width="150px"><?php myLang("Date (B.S)"); ?></th>
|
|
<!-- <th class="col-1"><?php myLang("Date (A.D)"); ?></th> -->
|
|
<th><?php myLang("Account"); ?></th>
|
|
<!-- <th><?php //myLang("Narration");
|
|
?></th> -->
|
|
<th class="text-right" width="150px"><?php myLang("Debit"); ?></th>
|
|
<th class="text-right" width="150px"><?php myLang("Credit"); ?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php $r = 0;
|
|
$drTotal = 0;
|
|
$crTotal = 0;
|
|
foreach ($TableData as $TableRow) : $r++; ?>
|
|
<?php foreach ($TableRow as $cols) : $id = $cols;
|
|
break;
|
|
endforeach; ?><tr>
|
|
<!-- <td><?php echo $r; ?></td> -->
|
|
<td><?php echo NepaliDate($TableRow->transaction_date); ?></td>
|
|
<!-- <td><?php echo $TableRow->transaction_date; ?></td> -->
|
|
<td><?php echo getFieldfromValue("tbl_accounts", "account_name", "account_id", $TableRow->account_id); ?></td>
|
|
<!-- <td><?php //echo $TableRow->narration;
|
|
?></td> -->
|
|
<td><?php echo myCurrency($TableRow->dr);
|
|
$drTotal += $TableRow->dr; ?></td>
|
|
<td><?php echo myCurrency($TableRow->cr);
|
|
$crTotal += $TableRow->cr; ?></td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php while ($r < 15) : ?>
|
|
<tr>
|
|
<?php for ($i = 0; $i < $TotalCols; $i++) : ?>
|
|
<td> </td>
|
|
<?php endfor; ?>
|
|
</tr>
|
|
<?php $r++;
|
|
endwhile; ?>
|
|
<tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="<?php echo $TotalCols - 2; ?>" class="text-right text-bold">Total</td>
|
|
<td><?php echo myCurrency($drTotal); ?></td>
|
|
<td><?php echo myCurrency($drTotal); ?></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="<?php echo $TotalCols; ?>" class="text-left" height=100>Narration: <?php echo $TableRow->narration; ?></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="<?php echo $TotalCols; ?>" class="text-center" height=200>
|
|
<div class="row mt-100">
|
|
<div class="col-2"><span class="underline-text"><?php echo $Voucher->created_by; ?></span></div>
|
|
<div class="col-2 offset-3">______________</div>
|
|
<div class="col-2 offset-3">______________</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-2">Entered By</div>
|
|
<div class="col-2 offset-3">Checked By</div>
|
|
<div class="col-2 offset-3">Approved By</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
function showAccountsCombo($fieldName, $displayName, $fieldID, $condition = "", $default = "", $CSSclass = "")
|
|
{
|
|
$ci = &get_instance();
|
|
?>
|
|
<?php if ($displayName != "") : ?>
|
|
<label for="<?php echo $fieldID; ?>"><?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></label>
|
|
<?php endif; ?>
|
|
<select name="<?php echo $fieldName; ?>" class="form-control select2 <?php echo $CSSclass; ?>" id="<?php echo $fieldID; ?>">
|
|
<option value="">Select <?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></option>
|
|
<?php
|
|
$q = "select *,(select accategory_name from tbl_accategories where tbl_accategories.accategory_id=tbl_accounts.accategory_id) as accategory_name from tbl_accounts";
|
|
$q .= ($condition != "") ? " where $condition" : " where status=1";
|
|
$q .= " order by accategory_id, account_name";
|
|
// echo $q;
|
|
$Values = $ci->db->query($q)->result();
|
|
$current_category = "";
|
|
foreach ($Values as $value) : ?>
|
|
<?php if ($current_category != $value->accategory_name) : ?>
|
|
<optgroup label="<?php echo $value->accategory_name; ?>">
|
|
<?php endif; ?>
|
|
<option value="<?php echo $value->account_id; ?>" <?php echo ($value->account_id == $default) ? 'SELECTED' : ''; ?>>
|
|
<?php echo $value->accategory_name; ?> >>
|
|
<?php echo $value->account_name; ?>
|
|
</option>
|
|
<?php if ($current_category != $value->accategory_name) : ?>
|
|
</optgroup>;
|
|
<?php $current_category = $value->accategory_name;
|
|
endif; ?>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
<?php
|
|
}
|
|
function showAccountsComboForVoucher($fieldName, $displayName, $fieldID, $condition = "", $default = "", $CSSclass = "", $defaultCategories = array())
|
|
{
|
|
$ci = &get_instance();
|
|
?>
|
|
<?php if ($displayName != "") : ?>
|
|
<label for="<?php echo $fieldID; ?>"><?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></label>
|
|
<?php endif; ?>
|
|
<select name="<?php echo $fieldName; ?>" class="form-control select2 <?php echo $CSSclass; ?>" id="<?php echo $fieldID; ?>">
|
|
<option value="">Select <?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></option>
|
|
<?php
|
|
$q = "select *,(select accategory_name from tbl_accategories where tbl_accategories.accategory_id=tbl_accounts.accategory_id) as accategory_name from tbl_accounts";
|
|
$q .= ($condition != "") ? " where $condition" : " where status=1";
|
|
$q .= " order by accategory_id, account_name";
|
|
// echo $q;
|
|
$Values = $ci->db->query($q)->result();
|
|
$current_category = "";
|
|
foreach ($Values as $value) : ?>
|
|
<?php if (!empty($defaultCategories)) : ?>
|
|
<?php if (in_array($value->accategory_id, $defaultCategories)) : ?>
|
|
<option value="<?php echo $value->account_id; ?>" <?php echo ($value->account_id == $default) ? 'SELECTED' : ''; ?>>
|
|
<?php echo $value->accategory_name; ?> >>
|
|
<?php echo $value->account_name; ?>
|
|
</option>
|
|
<?php endif; ?>
|
|
<?php else : ?>
|
|
<option value="<?php echo $value->account_id; ?>" <?php echo ($value->account_id == $default) ? 'SELECTED' : ''; ?>>
|
|
<?php echo $value->accategory_name; ?> >>
|
|
<?php echo $value->account_name; ?>
|
|
</option>
|
|
<?php endif; ?>
|
|
<?php endforeach; ?>
|
|
|
|
</select>
|
|
<button type="button" class="btn input-group-text addplus" data-toggle="modal" data-target="#exampleModal"><i class="fas fa-plus"></i></button>
|
|
|
|
|
|
|
|
|
|
<?php
|
|
}
|
|
function showAccountsCategoriesCombo($fieldName, $displayName, $fieldID, $condition = "", $default = "", $CSSclass = "")
|
|
{
|
|
$ci = &get_instance();
|
|
?>
|
|
<?php if ($displayName != "") : ?>
|
|
<label for="<?php echo $fieldID; ?>"><?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></label>
|
|
<?php endif; ?>
|
|
<select name="<?php echo $fieldName; ?>" class="form-control select2 <?php echo $CSSclass; ?>" id="<?php echo $fieldID; ?>">
|
|
<option value="">Select </option>
|
|
<!-- <option value="">Select <?php //echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></option> -->
|
|
<?php
|
|
$q = "select *,(select acgroup_name from tbl_acgroups where tbl_accategories.acgroup_id=tbl_acgroups.acgroup_id) as acgroup_name from tbl_accategories";
|
|
$q .= ($condition != "") ? " where $condition" : " where status=1";
|
|
$q .= " order by accategory_name";
|
|
// echo $q;
|
|
$Values = $ci->db->query($q)->result();
|
|
$current_acgroup = "";
|
|
/*
|
|
foreach ($Values as $value) : ?>
|
|
<?php if ($current_acgroup != $value->acgroup_name) : ?>
|
|
<optgroup label="<?php echo $value->acgroup_name; ?>">
|
|
<?php endif; ?>
|
|
<option value="<?php echo $value->accategory_id; ?>" <?php echo ($value->accategory_id == $default) ? 'SELECTED' : ''; ?>>
|
|
<?php echo $value->acgroup_name; ?> >>
|
|
<?php echo $value->accategory_name; ?>
|
|
</option>
|
|
<?php if ($current_acgroup != $value->acgroup_name) : ?>
|
|
</optgroup>;
|
|
<?php $current_acgroup = $value->acgroup_name;
|
|
endif;
|
|
endforeach;
|
|
|
|
*/
|
|
foreach ($Values as $value) : ?>
|
|
|
|
|
|
<option value="<?php echo $value->accategory_id; ?>" <?php echo ($value->accategory_id == $default) ? 'SELECTED' : ''; ?>>
|
|
|
|
<?php echo $value->accategory_name; ?>
|
|
</option>
|
|
|
|
<?php
|
|
endforeach;
|
|
?>
|
|
</select>
|
|
|
|
<?php
|
|
}
|
|
function showFixedAccountsCategoriesCombo($fieldName, $displayName, $fieldID, $condition = "", $default = "", $CSSclass = "")
|
|
{
|
|
$ci = &get_instance();
|
|
?>
|
|
<?php if ($displayName != "") : ?>
|
|
<label for="<?php echo $fieldID; ?>"><?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></label>
|
|
<?php endif; ?>
|
|
<select name="<?php echo $fieldName; ?>" class="form-control select2 <?php echo $CSSclass; ?>" id="<?php echo $fieldID; ?>">
|
|
<option value="">Select </option>
|
|
<!-- <option value="">Select <?php //echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></option> -->
|
|
<?php
|
|
$q = "select *,(select acgroup_name from tbl_acgroups where tbl_accategories.acgroup_id=tbl_acgroups.acgroup_id) as acgroup_name from tbl_accategories";
|
|
$q .= ($condition != "") ? " where $condition" : " where status=1";
|
|
$q .= " and parent_category_id=0";
|
|
$q .= " order by accategory_name";
|
|
// echo $q;
|
|
$Values = $ci->db->query($q)->result();
|
|
$current_acgroup = "";
|
|
/*
|
|
foreach ($Values as $value) : ?>
|
|
<?php if ($current_acgroup != $value->acgroup_name) : ?>
|
|
<optgroup label="<?php echo $value->acgroup_name; ?>">
|
|
<?php endif; ?>
|
|
<option value="<?php echo $value->accategory_id; ?>" <?php echo ($value->accategory_id == $default) ? 'SELECTED' : ''; ?>>
|
|
<?php echo $value->acgroup_name; ?> >>
|
|
<?php echo $value->accategory_name; ?>
|
|
</option>
|
|
<?php if ($current_acgroup != $value->acgroup_name) : ?>
|
|
</optgroup>;
|
|
<?php $current_acgroup = $value->acgroup_name;
|
|
endif;
|
|
endforeach;
|
|
|
|
*/
|
|
foreach ($Values as $value) : ?>
|
|
|
|
|
|
<option value="<?php echo $value->accategory_id; ?>" <?php echo ($value->accategory_id == $default) ? 'SELECTED' : ''; ?>>
|
|
|
|
<?php echo $value->accategory_name; ?>
|
|
</option>
|
|
|
|
<?php
|
|
endforeach;
|
|
?>
|
|
</select>
|
|
|
|
<?php
|
|
}
|
|
function showAccountsCategoriesWithParentsCombo($fieldName, $displayName, $fieldID, $condition = "", $default = "", $CSSclass = "", $extras = "")
|
|
{
|
|
$ci = &get_instance();
|
|
?>
|
|
<?php if ($displayName != "") : ?>
|
|
<label for="<?php echo $fieldID; ?>"><?php echo function_exists("myLang") ? myLang($displayName) : $displayName; ?></label>
|
|
<?php endif; ?>
|
|
<select name="<?php echo $fieldName; ?>" class="form-control select2 <?php echo $CSSclass; ?>" id="<?php echo $fieldID; ?>" <?php echo $extras; ?>>
|
|
<option value="">Select </option>
|
|
<?php
|
|
$q = "select *,(select acgroup_name from tbl_acgroups where tbl_accategories.acgroup_id=tbl_acgroups.acgroup_id) as acgroup_name from tbl_accategories";
|
|
$q .= ($condition != "") ? " where $condition" : " where status=1";
|
|
$q .= " order by accategory_name";
|
|
//echo $q;
|
|
$Values = $ci->db->query($q)->result();
|
|
$current_acgroup = "";
|
|
foreach ($Values as $value) : ?>
|
|
<?php if ($current_acgroup != $value->acgroup_name) : ?>
|
|
<!--optgroup label="<?php echo $value->acgroup_name; ?>"-->
|
|
<?php endif; ?>
|
|
<option value="<?php echo $value->accategory_id; ?>" <?php echo ($value->accategory_id == $default) ? 'SELECTED' : ''; ?>><?php echo $value->accategory_name; ?></option>
|
|
<?php if ($current_acgroup != $value->acgroup_name) : ?><!--/optgroup-->
|
|
<?php $current_acgroup = $value->acgroup_name;
|
|
endif; ?>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
<?php
|
|
}
|
|
private function getVoucherAmount($voucher_id)
|
|
{
|
|
$ci = &get_instance();
|
|
$t = "select sum(dr) as amount from tbl_voucherdetails where voucher_id='$voucher_id'";
|
|
$Transaction = $ci->db->query($t)->row();
|
|
return $Transaction->amount;
|
|
}
|
|
private function getVoucherTransactions($voucher_id)
|
|
{
|
|
$ci = &get_instance();
|
|
$t = "select *,(select account_name from tbl_accounts where tbl_accounts.account_id=tbl_voucherdetails.account_id) as account_name from tbl_voucherdetails where voucher_id='$voucher_id'";
|
|
$Transactions = $ci->db->query($t)->result();
|
|
return $Transactions;
|
|
}
|
|
public function getAccountCategories()
|
|
{
|
|
$ci = &get_instance();
|
|
$t = "select * from tbl_accategories as b where status=1";
|
|
$AccountCategories = $ci->db->query($t)->result();
|
|
foreach ($AccountCategories as $AccountCategory) :
|
|
$AccountCategory->AccountGroup = $ci->db->query("select * from tbl_acgroups where acgroup_id = '$AccountCategory->acgroup_id'")->row();
|
|
if ($AccountCategory->parent_category_id <> 0) {
|
|
$AccountCategory->Parent = $ci->db->query("select * from tbl_accategories where accategory_id = '$AccountCategory->parent_category_id'")->row();
|
|
}
|
|
endforeach;
|
|
return $AccountCategories;
|
|
}
|
|
//NEW METHODS
|
|
function getAccountBalanceR($BalanceBy, $ReferenceValue, &$ACBalances = array())
|
|
{
|
|
$ci = &get_instance();
|
|
if ($BalanceBy == "Account") {
|
|
$account_id = $ReferenceValue;
|
|
$t = "SELECT * FROM tbl_voucherdetails WHERE account_id = '$account_id' AND status <> -1";
|
|
// echo $t;die;
|
|
$Vouchers = $ci->db->query($t)->result();
|
|
$DrBalance = 0;
|
|
$CrBalance = 0;
|
|
foreach ($Vouchers as $Voucher) {
|
|
$DrBalance += $Voucher->dr;
|
|
$CrBalance += $Voucher->cr;
|
|
}
|
|
$ACBalances['DrBalance'] = $DrBalance;
|
|
$ACBalances['CrBalance'] = $CrBalance;
|
|
$ACBalances['Balance'] = $DrBalance - $CrBalance;
|
|
return $ACBalances['Balance'];
|
|
}
|
|
if ($BalanceBy == "Group") {
|
|
$accategory_id = $ReferenceValue;
|
|
$t = "SELECT * FROM tbl_accounts WHERE accategory_id = '$accategory_id'";
|
|
$Accounts = $ci->db->query($t)->result();
|
|
$groupBalance = 0;
|
|
foreach ($Accounts as $Account) {
|
|
$groupBalance += $this->getAccountBalanceR("Account", $Account->account_id, $ACBalances);
|
|
}
|
|
return $groupBalance;
|
|
}
|
|
if ($BalanceBy == "Category") {
|
|
$accategory_id = $ReferenceValue;
|
|
$t = "SELECT * FROM tbl_accategories WHERE parent_category_id = '$accategory_id'";
|
|
$Categories = $ci->db->query($t)->result();
|
|
$categoryBalance = 0;
|
|
foreach ($Categories as $Category) {
|
|
$categoryBalance += $this->getAccountBalanceR("Account", $Category->accategory_id, $ACBalances);
|
|
}
|
|
return $categoryBalance;
|
|
}
|
|
if ($BalanceBy == "Types") {
|
|
$acgroup_id = $ReferenceValue;
|
|
$t = "SELECT * FROM tbl_accategories WHERE acgroup_id = '$acgroup_id'";
|
|
$Categories = $ci->db->query($t)->result();
|
|
$typesBalance = 0;
|
|
foreach ($Categories as $Category) {
|
|
$typesBalance += $this->getAccountBalanceR("Group", $Category->accategory_id, $ACBalances);
|
|
}
|
|
return $typesBalance;
|
|
}
|
|
return 0;
|
|
}
|
|
function backupDatabase()
|
|
{
|
|
$ci = &get_instance();
|
|
$ci->load->database();
|
|
$dumpFilePath = __DIR__ . '/../../backup/' . $ci->db->database . '-backup-' . date('y-m-d-h-i-s') . '.sql';
|
|
$Filename = $ci->db->database . '-backup-' . date('y-m-d-h-i-s') . '.sql';
|
|
$command = "mysqldump -u " . $ci->db->username . " -p" . $ci->db->password . " -h " . $ci->db->hostname . " " . $ci->db->database . " > $dumpFilePath";
|
|
$output = shell_exec($command);
|
|
if ($output === null) {
|
|
// echo "Database dump successful. File saved at: $Filename";
|
|
mail("prajwalbro@gmail.com", "Account Database Backup", "Database dump successful. File saved at: $Filename");
|
|
} else {
|
|
echo "Error: Database dump failed. Please check your configuration and try again.";
|
|
}
|
|
}
|
|
function initDatabase()
|
|
{
|
|
$ci = &get_instance();
|
|
$ci->load->database();
|
|
$ci->load->dbforge();
|
|
if (!$ci->db->table_exists('tbl_vouchertypes')) {
|
|
return; // Table doesn't exist, no need to proceed
|
|
}
|
|
$fields = $ci->db->list_fields('tbl_vouchertypes');
|
|
// Check if 'default_credits' column exists
|
|
if (!in_array('default_credits', $fields)) {
|
|
$ci->dbforge->add_column('tbl_vouchertypes', array('default_credits' => array('type' => 'VARCHAR', 'constraint' => 255)));
|
|
}
|
|
// Check if 'default_debits' column exists
|
|
if (!in_array('default_debits', $fields)) {
|
|
$ci->dbforge->add_column('tbl_vouchertypes', array('default_debits' => array('type' => 'VARCHAR', 'constraint' => 255)));
|
|
}
|
|
}
|
|
|
|
function hasTransaction($type, $id)
|
|
{
|
|
switch ($type) {
|
|
case 'fiscalyear':
|
|
$ci = &get_instance();
|
|
$transactions = $ci->db->where("fiscalyear_id", $id)->get("tbl_voucherdetails");
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
case 'branch':
|
|
$ci = &get_instance();
|
|
$transactions = $ci->db->where("branch_id", $id)->get("tbl_voucherdetails");
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
case 'accategory':
|
|
$ci = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where account_id in (select account_id from tbl_accounts where accategory_id=$id) or account_id in (select account_id from tbl_accounts where accategory_id in (select accategory_id from tbl_accategories where parent_category_id=$id))";
|
|
$transactions = $ci->db->query($t);
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
case 'account':
|
|
$ci = &get_instance();
|
|
$t = "select * from tbl_voucherdetails where voucher_id<>0 and account_id =$id";
|
|
$transactions = $ci->db->query($t);
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
case 'units':
|
|
$ci = &get_instance();
|
|
$t = "select * from tbl_items where units_id=$id";
|
|
$transactions = $ci->db->query($t);
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
case 'itemcategory':
|
|
$ci = &get_instance();
|
|
$t = "select * from tbl_items where itemcategories_id=$id";
|
|
$transactions = $ci->db->query($t);
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
case 'items':
|
|
$ci = &get_instance();
|
|
$t = "select * from tbl_items where item_id in (select items_id from tbl_salesdetails where items_id=$id) or item_id in (select item_id from tbl_purchasedetails where items_id=$id)";
|
|
// echo $t;die;
|
|
$transactions = $ci->db->query($t);
|
|
// pre($transactions);die;
|
|
if ($transactions->num_rows() > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|