MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.53
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 7.4.33
Disable Function : show_source, system, shell_exec, passthru, popen, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/ctm/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/ctm/CanteenAccount.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


/**
 * 
 */
class CanteenAccount extends BaseAdminController
{
    protected $inst_id='';
    protected $inst_parent_id='';
    protected $inst_code='';
    protected $inst_type='';
    protected $ctm_access='';

    function __construct()
    {
        parent::__construct();

        $institute_data=check_institute($this->data['userdata']);
        $this->inst_id=$institute_data['institute_id'];
        $this->inst_parent_id=$institute_data['inst_parent_id'];
        $this->inst_code=$institute_data['inst_code'];
        $this->inst_type=$institute_data['inst_type'];

        $this->ctms_access=$institute_data['ctms_access'];

        $this->load->model('ctm/vendor_model','ctvm');
        $this->load->model('ctm/payment_model','ctpm');
    }


    public function index(){

        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Canteen Accounts';

            if($this->ctms_access=='yes'){


                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_accounts', $this->data);

            }else{
                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_permission_denied', $this->data);
            }


        }else{

            redirect($this->data['base_url']);
        }
    }


    public function indexCategory(){

        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Canteen Accounts Category';

            if($this->ctms_access=='yes'){


                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_accounts_category', $this->data);

            }else{
                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_permission_denied', $this->data);
            }


        }else{

            redirect($this->data['base_url']);
        }
    }


    public function indexBankBalance(){

        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Canteen Accounts Bank Balance';

            if($this->ctms_access=='yes'){

                $this->data['fiscal_year']=fiscalyear(2000);

                $this->data['banks']=$this->sm->get_banks(array('bank_inst_id'=>$this->inst_id,'bank_inst_type'=>$this->inst_type),FALSE);

                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_bank_balance', $this->data);

            }else{
                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_permission_denied', $this->data);
            }


        }else{

            redirect($this->data['base_url']);
        }
    }


    public function indexCashBalance(){

        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Canteen Accounts Cash Balance';

            if($this->ctms_access=='yes'){

                $this->data['fiscal_year']=fiscalyear(2000);
                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_cash_balance', $this->data);

            }else{
                $this->theme->title($this->data['page_title'])->load('ctm/vw_ctms_permission_denied', $this->data);
            }


        }else{

            redirect($this->data['base_url']);
        }
    }


    public function onAddEditAccountsCategory(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                if($this->ctms_access=='yes'){
                    $_category_id=post_data('_category_id');

                    //echo $_category_id;

                    $category_name=post_data('category_name');
                    $category_description=post_data('category_description');
                    $category_status=post_data('category_status');

                    $user_id=$this->data['userdata']->user_id;

                    if(!empty($_category_id)){

                        $category_id=decode_data($_category_id);

                        //echo $category_id;die;

                        $get_vendor_category_data=$this->ctvm->get_accounts_category_data(array('category_id'=>$category_id));

                        $_category_data=array(
                            'category_inst_id'=>$this->inst_id,
                            'category_inst_type'=>$this->inst_type,
                            'category_name'=>$category_name,
                            'category_description'=>$category_description,
                            'category_status'=>$category_status,
                            'category_updated_by'=>$user_id,
                            'category_updated_at'=>date('Y-m-d')
                        );

                        if(!empty($get_vendor_category_data)){

                            $updated=$this->ctvm->update_accounts_category_data($_category_data,array('category_id'=>$category_id));

                            if($updated){
                                $return['success']='Catgeory has been updated.';
                            }else{
                                $return['error']='Catgeory not updated.';
                            }                            
                        }else{
                            $return['error']='Category not found to update';
                        }
                    }else{

                        $get_vendor_category_data=$this->ctvm->get_accounts_category_data(array('category_inst_id'=>$this->inst_id,'category_inst_type'=>$this->inst_type,'category_name'=>$category_name));

                        if(empty($get_vendor_category_data)){
                            $_category_data=array(
                                'category_inst_id'=>$this->inst_id,
                                'category_inst_type'=>$this->inst_type,
                                'category_name'=>$category_name,
                                'category_description'=>$category_description,
                                'category_status'=>$category_status,
                                'category_created_by'=>$user_id
                            );

                            //print_obj($_category_data);die;

                            $added=$this->ctvm->store_accounts_category_data($_category_data);

                            if($added){
                                $return['success']='Category added successfully';
                            }else{
                                $return['error']='Catgeory not added';
                            }
                        }else{
                            $return['error']='Category already found in the system.';
                        }                    
                    }
                }else{
                    $return['error']='You don\'t hasve the permission';
                }

                json_headers($return); 

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onDeleteAccountsCategory(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $category_id=post_data('category_id');

                if($this->ctms_access=='yes'){

                    $category_id=decode_data($category_id);

                    $category_data=-$this->ctvm->get_accounts_category_data(array('category_id'=>$category_id));

                    if(!empty($category_data)){
                        $deleted=$this->ctvm->delete_accounts_category_data(array('category_id'=>$category_id));

                        if($deleted){
                            $return['success']='Category deleted successfully';
                        }else{
                            $return['error']='Category not deleted';
                        }
                    }else{
                        $return['error']='No data found to remove.';
                    }
                }else{
                    $return['error']='You don\'t have the persmission';
                }

                json_headers($return);
            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onSearchAccountsCategory(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $param['column_order'] = array(
                    null,
                    'category_name'
                );

                $param['category_inst_id']=$this->inst_id;
                $param['category_inst_type']=$this->inst_type;

                $param['column_search'] = array('category_name');
                $param['order'] = array('category_id' => 'ASC');
                $posts=$this->input->post();

                $list = $this->ctvm->_get_accounts_category_data($posts,$param,FALSE,FALSE);

                $data = array();
                $no = isset($posts['start'])?$posts['start']:0;

                $action='';

                foreach ($list as $cat){
                    $no++;

                    $row = array();

                    $row[]  =   $no;
                    $row[]  =   $cat->category_name;

                    if($cat->category_status=='active'){
                        $status='<span class="badge badge-sm badge-success">Active</span>';
                    }else if($cat->category_status=='inactive'){
                        $status='<span class="badge badge-sm badge-danger">Inactive</span>';
                    }

                    $row[]  =   $status;
                    
                    $row[]  =   '<button type="button" class="btn btn-xs btn-dark btn_edit_canteen_account_category" data-category_id="'.encode_data($cat->category_id).'" data-category_name="'.$cat->category_name.'" data-category_description="'.$cat->category_description.'" data-category_status="'.$cat->category_status.'"><i class="fa fa-pencil"></i></button>
                                <button class="btn btn-xs btn-danger btn_delete_canteen_account_category" data-category_id="'.encode_data($cat->category_id).'"><i class="fa fa-trash"></i></button>';

                    $data[] = $row; 
                }

                $output = array(
                    "draw" => isset($posts['draw'])?$posts['draw']:'',
                    "recordsTotal" => $this->ctvm->_get_accounts_category_data($posts,$param,TRUE),
                    "recordsFiltered" => $this->ctvm->_get_accounts_category_data($posts,$param,TRUE),
                    "data" => $data,
                );
                
                echo json_encode($output);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    //Cash Balance
    public function onAddEditCashBalance(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                //$bank_id=post_data('bank_id');
                $balance_amount=post_data('cash_opening_balance');
                $financial_year=post_data('cash_balance_fiscal_year');
                //$add_to_prev_balance=post_data('');

                $creator_id=$this->data['userdata']->user_id;

                $get_balance_data=$this->ctpm->get_cash_balance(array('balance_inst_id'=>$this->inst_id,'balance_financial_year'=>$financial_year,'balance_status'=>'active'));

                $this->ctpm->update_cash_balance_data(array('balance_status'=>'inactive','balance_updated_at'=>date('Y-m-d H:i:s'),'balance_updated_by'=>$creator_id),array('balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type));

                $data_to_insert=array(
                    'balance_inst_id'=>$this->inst_id,
                    'balance_inst_type'=>$this->inst_type,
                    'balance_opening_amount'=>$balance_amount,
                    'balance_financial_year'=>$financial_year,
                    'balance_status'=>'active',
                    'balance_created_by'=>$creator_id
                );

                $balance_id=$this->ctpm->store_cash_balance_data($data_to_insert);

                if($balance_id){

                    $return['success']='Balance added successfully';
                }else{
                    $return['error']='Balance not added.';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onDeleteBalance(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                if($this->ctms_access=='yes'){

                    $balance_id=post_data('balance_id');
                    $user_id=$this->data['userdata']->user_id;

                    if(!empty($balance_id)){

                        $balance_id=decode_data($balance_id);

                        $deleted=$this->ctpm->delete_cash_balance_data(array('balance_id'=>$balance_id));

                        if($deleted){
                            $return['success']='Data deleted successfully.';
                        }else{
                            $return['error']='Data not deleted.';
                        }

                    }else{
                        $return['error']='Data not found in the system.';
                    }

                }else{
                    $return['error']='You don\'t have the permission';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onSearchCashBalanceList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $institute_data=check_institute($this->data['userdata']);
                $inst_id=$institute_data['institute_id'];

                $param['inst_id']=$inst_id;
                $param['column_order'] = array(
                    null,
                    'balance_financial_year'
                );

                $param['column_search'] = array('balance_financial_year');
                $param['order'] = array('balance_id' => 'DESC');
                $posts=$this->input->post();

                $list = $this->ctpm->_get_cash_balance($posts,$param,FALSE,FALSE);                
                
                $data = array();
                $no = isset($posts['start'])?$posts['start']:0;

                $action='';

                foreach ($list as $bank){
                    $no++;

                    $row = array();

                    $row[]  =   $no;
                    $row[]  =   $bank->balance_financial_year;
                    $row[]  =   number_format($bank->balance_opening_amount,2);
                    $row[]  =   number_format($bank->balance_adjusted_amount,2);                    
                    $row[]  =   date('d-m-Y',strtotime($bank->balance_created_at));

                    if($bank->balance_status=='active'){
                        $action='<button class="btn btn-xs btn-dark btn_edit_cash_balance" data-balance_value="'.$bank->balance_opening_amount.'" data-fiscal_year="'.$bank->balance_financial_year.'"><i class="fa fa-pencil"></i></button>
                    <button class="btn btn-xs btn-danger btn_delete_cash_balance" data-balance_id="'.encode_data($bank->balance_id).'"><i class="fa fa-trash"></i></button>';
                    }else{
                        $action='';
                    }

                    $row[]  =   $action;

                    $data[] = $row; 
                }

                $output = array(
                    "draw" => isset($posts['draw'])?$posts['draw']:'',
                    "recordsTotal" => $this->ctpm->_get_cash_balance($posts,$param,TRUE),
                    "recordsFiltered" => $this->ctpm->_get_cash_balance($posts,$param,TRUE),
                    "data" => $data,
                );
                
                echo json_encode($output);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    //Bank Balance
    public function onAddEditBankBalance(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $bank_id=post_data('bank_id');
                $balance_amount=post_data('bank_opening_balance');
                $financial_year=post_data('bank_balance_fiscal_year');
                //$add_to_prev_balance=post_data('');

                $creator_id=$this->data['userdata']->user_id;

                $get_balance_data=$this->ctpm->get_bank_balance(array('balance_inst_id'=>$this->inst_id,'balance_financial_year'=>$financial_year,'balance_bank_id'=>$bank_id,'balance_status'=>'active'));

                $this->ctpm->update_bank_balance_data(array('balance_bank_id'=>$bank_id,'balance_status'=>'inactive','balance_updated_at'=>date('Y-m-d H:i:s'),'balance_updated_by'=>$creator_id),array('balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_bank_id'=>$bank_id));

                $data_to_insert=array(
                    'balance_bank_id'=>$bank_id,
                    'balance_inst_id'=>$this->inst_id,                    
                    'balance_inst_type'=>$this->inst_type,
                    'balance_opening_amount'=>$balance_amount,
                    'balance_financial_year'=>$financial_year,
                    'balance_status'=>'active',
                    'balance_created_by'=>$creator_id
                );

                $balance_id=$this->ctpm->store_bank_balance_data($data_to_insert);

                if($balance_id){

                    $return['success']='Balance added successfully';
                }else{
                    $return['error']='Balance not added.';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onSearchBankBalanceList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $institute_data=check_institute($this->data['userdata']);
                $inst_id=$institute_data['institute_id'];

                $param['inst_id']=$inst_id;
                $param['column_order'] = array(
                    null,
                    'balance_financial_year'
                );

                $param['column_search'] = array('balance_financial_year','bank_name','bank_account_no');
                $param['order'] = array('bank_id' => 'DESC');
                $posts=$this->input->post();


                $param['inst_id']=$this->inst_id;
                $param['inst_type']=$this->inst_type;

                $list = $this->ctpm->_get_bank_balance($posts,$param,FALSE,FALSE);                
                
                $data = array();
                $no = isset($posts['start'])?$posts['start']:0;

                $action='';

                foreach ($list as $bank){
                    $no++;

                    $row = array();

                    $row[]  =   $no;
                    $row[]  =   $bank->balance_financial_year;
                    $row[]  =   $bank->bank_name.'<br>A/C No:'.$bank->bank_account_no;
                    $row[]  =   number_format($bank->balance_opening_amount,2);
                    $row[]  =   number_format($bank->balance_adjusted_amount,2);                    
                    $row[]  =   date('d-m-Y',strtotime($bank->balance_created_at));

                    if($bank->balance_status=='active'){
                        $action='<button class="btn btn-xs btn-dark btn_edit_bank_balance" data-bank_id="'.$bank->balance_bank_id.'" data-balance_value="'.$bank->balance_opening_amount.'" data-fiscal_year="'.$bank->balance_financial_year.'"><i class="fa fa-pencil"></i></button>
                    <button class="btn btn-xs btn-danger btn_delete_bank_balance" data-balance_id="'.encode_data($bank->balance_id).'"><i class="fa fa-trash"></i></button>';
                    }else{
                        $action='';
                    }

                    $row[]  =   $action;

                    $data[] = $row; 
                }

                $output = array(
                    "draw" => isset($posts['draw'])?$posts['draw']:'',
                    "recordsTotal" => $this->ctpm->_get_bank_balance($posts,$param,TRUE),
                    "recordsFiltered" => $this->ctpm->_get_bank_balance($posts,$param,TRUE),
                    "data" => $data,
                );
                
                echo json_encode($output);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }



    //Vendor Payment
    

    public function onGenerateVendorBill(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                if($this->ctms_access=='yes'){
                    $user_id=$this->data['userdata']->user_id;
                    $user_type=$this->data['userdata']->user_type;

                    $vendor_id=post_data('ctm_bill_vendor_id');
                    $vendor_type=post_data('ctm_bill_vendor_type');

                    $item_category=post_data('ctm_bill_account_category');

                    $ctm_purchase_date=post_data('ctm_purchase_date');

                    $ctm_bill=$this->input->post('ctm_bill');

                    $ctm_invoice_no=ge_rand_code('CAINV',3,TRUE);

                    $bill_data=array();

                    $total_amount=0;

                    if(!empty($ctm_bill)){
                        foreach ($ctm_bill as $key => $value) {
                            $bill_item=$value['item'];
                            $bill_item_qty=$value['qty'];
                            $bill_item_amount=$value['amount'];

                            if(!empty($bill_item) && !empty($bill_item_qty) && !empty($bill_item_amount)){

                                $total_amount=$total_amount+$bill_item_amount;

                                $bill_data[]=array(
                                    'order_inst_id'=>$this->inst_id,
                                    'order_inst_type'=>$this->inst_type,
                                    'order_vendor_id'=>$vendor_id,
                                    'order_qty'=>$bill_item_qty,
                                    'order_item_description'=>$bill_item,
                                    'order_payment_amount'=>$bill_item_amount,
                                    'order_invoice_code'=>$ctm_invoice_no
                                );
                            }
                        }


                        if(!empty($bill_data)){
                            if(!empty($total_amount) && is_numeric($total_amount)){

                                $payment_data=array(                                
                                    'ctm_inst_id'=>$this->inst_id,
                                    'ctm_inst_parent_id'=>$this->inst_parent_id,
                                    'ctm_inst_type'=>$this->inst_type,
                                    'ctm_vendor_id'=>$vendor_id,
                                    'ctm_vendor_category_id'=>$vendor_type,
                                    'ctm_account_category_id'=>$item_category,
                                    'ctm_invoice_no'=>$ctm_invoice_no,
                                    'ctm_purchase_date'=>date('Y-m-d',strtotime($ctm_purchase_date)),
                                    'ctm_payment_amount'=>$total_amount,
                                    'ctm_pay_mode'=>'n/a',                               
                                    'ctm_payment_paid'=>'no',
                                    'created_by'=>$user_id,
                                    'created_by_type'=>$user_type
                                );

                                $payment_id=$this->ctpm->store_payment_data($payment_data);

                                if($payment_id){

                                    $order_inserted=$this->ctpm->store_order_data($bill_data,TRUE);

                                    if($order_inserted){

                                        if(isset($_FILES['ctm_vendor_submitted_bill']) && $_FILES['ctm_vendor_submitted_bill']['name']!=''){

                                            if($this->inst_type=='institute'){
                                                $storage_dir='institutes/'.$this->inst_code.'/vendors/'.date('Y');
                                            }else if($this->inst_type=='institute_branch'){
                                                $storage_dir='institutes/'.$this->inst_code.'/vendors/'.date('Y');
                                            }

                                            $vendor_bill_file=array(
                                                'file_size'=>'5',
                                                'file_name'=>'ctm_vendor_submitted_bill',
                                                'file_types'=>'png,jpg,jpeg',
                                                'file_type_of'=>'vendor',
                                                'file_storage_type'=>'vendor_bill',
                                                'file_storage_dir'=>$storage_dir,
                                                'file_storage_type_id'=>$payment_id,
                                                'file_parent_id'=>$this->inst_parent_id,
                                                'file_compress'=>false,
                                                'file_operation_type'=>'new',
                                                'file_uploaded_by'=>$user_id
                                            );
            
                                            $this->onUploadFiles($vendor_bill_file);
                                        }

                                        $this->ctpm->update_order_data(array('order_payment_id'=>$payment_id),array('order_invoice_code'=>$ctm_invoice_no));

                                        $return['success']='Invoice generated.';
                                        
                                    }else{
                                        $return['error']='Data not saved.Try after sometime.';
                                    }
                                }else{
                                    $return['error']='Data not saved.Try after sometime.';
                                }

                            }else{
                                $return['error']='Data error occurred.';
                            }
                        }else{
                            $return['error']='No data found to process';
                        }                       
                    }else{
                        $return['error']='No data found to process';
                    }
                }else{
                    $return['error']='You don\'t have the permission';
                }   

                json_headers($return); 

            }else{
                 redirect($this->data['base_url']);
            }
        }else{
             redirect($this->data['base_url']);
        }
    }


    public function onLoadInvoiceData(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                if($this->ctms_access=='yes'){
                    $payment_id=post_data('payment_id');

                    if(!empty($payment_id)){
                        $payment_id=decode_data($payment_id);

                        $this->data['bank_data']=$this->sm->get_banks(array('bank_inst_id'=>$this->inst_id,'bank_inst_type'=>$this->inst_type,'bank_status'=>'active'),FALSE);

                        $this->data['payment_data']=$this->ctpm->get_payment_data(array('ctm_payment_id'=>$payment_id));

                        $order_data=$this->ctpm->get_order_data(array('order_payment_id'=>$payment_id),FALSE);

                        $this->data['order_data']=$order_data;

                        $return['html']=$this->theme->view('_pages/ctm/vw_ctms_vendor_bills_invoice',$this->data,true);

                    }else{
                        $return['error']='No data found';
                    }

                    
                }else{
                    $return['error']='You don\'t have the permission';
                }

                json_headers($return);    

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onLoadCanteenBalances(){
       if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $payment_mode=post_data('pay_mode');
                $bank_id=post_data('bank_id');

                if($payment_mode=='cash'){
                    $cash_balance=$this->ctpm->get_cash_balance(array('balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_status'=>'active'));

                    if(!empty($cash_balance)){
                        $return['balance']=($cash_balance->balance_adjusted_amount>0)?number_format($cash_balance->balance_adjusted_amount):number_format($cash_balance->balance_opening_amount);
                    }else{
                        $return['balance']='none';
                    }
                    
                }else if($payment_mode=='cheque'){
                    $bank_balance_data=$this->ctpm->get_bank_balance(array('balance_bank_id'=>$bank_id,'balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_status'=>'active'));

                    if(!empty($bank_balance_data)){
                        $return['balance']=($bank_balance_data->balance_adjusted_amount>0)?number_format($bank_balance_data->balance_adjusted_amount):number_format($bank_balance_data->balance_opening_amount);
                    }else{
                        $return['balance']='none';
                    }
                }

                
                json_headers($return);                

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onPayVendorPayment(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $user_id=$this->data['userdata']->user_id;
                $user_type=$this->data['userdata']->user_type;

                $payment_id=post_data('payment_id');
                $pay_mode=post_data('ctm_pay_mode');
                $cheque_no=post_data('ctm_pay_cheque_no');
                $cheque_bank=post_data('ctm_cheque_bank');

                $balance=0;

                if(!empty($payment_id)){
                    $payment_id=decode_data($payment_id);

                    if($pay_mode=='cheque' && empty($cheque_no)){

                        $return['error']='Please provide cheque no';

                    }else if($pay_mode=='cheque' && $cheque_bank==0){

                        $return['error']='Please provide Bank details';

                    }
                    else{
                        $payment_data=$this->ctpm->get_payment_data(array('ctm_payment_id'=>$payment_id));

                        $details_msg=ucwords($pay_mode).' paid';


                        if($pay_mode=='cash'){
                            $in_hand_balance_details=$this->ctpm->get_cash_balance(array('balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_status'=>'active'));

                            $balance=($in_hand_balance_details->balance_adjusted_amount>0)?$in_hand_balance_details->balance_adjusted_amount:$in_hand_balance_details->balance_opening_amount;

                            $account_balance=($in_hand_balance_details->balance_adjusted_amount>0)?($in_hand_balance_details->balance_adjusted_amount-$payment_data->ctm_payment_amount):($in_hand_balance_details->balance_opening_amount-$payment_data->ctm_payment_amount);
                        }

                        if($balance>$payment_data->ctm_payment_amount){
                            if(!empty($payment_data)){
                                $payment_details=array(
                                    'details_type'=>'canteen_payment',
                                    'details_payment_type'=>'canteen_vendor_fees',
                                    'details_type_text'=>'Canteen vendor payment for invoice no '.$payment_data->ctm_invoice_no,
                                    'details_payment_id'=>$payment_id,
                                    'details_type_id'=>$payment_data->ctm_vendor_id,
                                    'details_inst_id'=>$this->inst_id,
                                    'details_parent_inst_id'=>$this->inst_parent_id,
                                    'details_txn_id'=>'TXN'.$payment_id.date('Ymd'),
                                    'details_cheque_no'=>$cheque_no,
                                    'details_pay_id'=>null,
                                    'details_pay_order_id'=>null,
                                    'details_order_id'=>$payment_data->ctm_invoice_no.'_canteen_vendor',
                                    'details_order_code'=>$payment_data->ctm_invoice_no,
                                    'details_amount'=>$payment_data->ctm_payment_amount,
                                    'details_pay_currency'=>'INR',
                                    'details_accounting_type'=>'expenditure',
                                    'details_status'=>'success',
                                    'details_gateway_status'=>'',
                                    'details_msg'=>'',
                                    'details_created_by_type'=>$user_type,
                                    'details_created_by'=>$user_id,
                                    'details_created_at'=>date('Y-m-d'),
                                    'details_gateway_created_at'=>date('Y-m-d')
                                );


                                $payment_data_inserted=$this->fm->store_payment_details($payment_details);

                                if($payment_data_inserted){                                

                                    if($pay_mode=='cash'){
                                        $this->ctpm->update_payment_data(array('ctm_payment_paid'=>'yes','ctm_pay_mode'=>$pay_mode),array('ctm_payment_id'=>$payment_id));
                                        $this->ctpm->update_cash_balance_data(array('balance_adjusted_amount'=>$account_balance),array('balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_status'=>'active'));
                                    }else if($pay_mode=='cheque'){
                                        $this->ctpm->update_payment_data(array('ctm_payment_paid'=>'cheque_to_clear','ctm_pay_mode'=>$pay_mode,'ctm_payment_bank'=>$cheque_bank,'ctm_payment_checq_no'=>$cheque_no),array('ctm_payment_id'=>$payment_id));
                                    }

                                    $return['success']='Payment successfull';
                                }else{
                                    $return['error']='Payment error';
                                }

                            }else{
                                $return['error']='Payment data not available.';
                            }
                        }else{
                            $return['error']='Insufficient cash to disburse.Canteen Cash balance needs to be updated.';
                        }

                            
                    }
                }else{
                    $return['error']='Payment data not found in the system';
                }
                    
                json_headers($return);           

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onMarkPayment(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $payment_id=post_data('payment_id');

                $user_id=$this->data['userdata']->user_id;

                $user_type=$this->data['userdata']->user_type;
                ;
                if(!empty($payment_id)){
                    $payment_id=decode_data($payment_id);
                    $payment_data=$this->ctpm->get_payment_data(array('ctm_payment_id'=>$payment_id));

                    if(!empty($payment_data)){

                        $updated=$this->ctpm->update_payment_data(array('ctm_payment_paid'=>'yes','updated_at'=>date('Y-m-d'),'updated_by_type'=>$this->data['userdata']->user_type,'updated_by'=>$user_id),array('ctm_payment_id'=>$payment_id));

                        if($updated){

                            $bank_balance_data=$this->ctpm->get_bank_balance(array('balance_bank_id'=>$payment_data->ctm_payment_bank,'balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_status'=>'active'));

                            if(!empty($bank_balance_data)){
                                if($bank_balance_data->balance_opening_amount>0){
                                    $balance_value=$bank_balance_data->balance_opening_amount-$payment_data->ctm_payment_amount;
                                }else if($bank_balance_data->balance_adjusted_amount>0){
                                    $balance_value=$bank_balance_data->balance_adjusted_amount-$payment_data->ctm_payment_amount;
                                }

                                $this->ctpm->update_bank_balance_data(array('balance_adjusted_amount'=>$balance_value,'balance_updated_by'=>$user_id,'balance_updated_at'=>date('Y-m-d')),array('balance_bank_id'=>$payment_data->ctm_payment_bank,'balance_inst_id'=>$this->inst_id,'balance_inst_type'=>$this->inst_type,'balance_status'=>'active'));
                            }


                            $return['success']='Payment data updated';
                        }else{
                            $return['error']='Data not updated';
                        }


                    }else{
                        $return['error']='Payment data not found';
                    }


                }else{
                    $return['error']='Payment data not found';
                }

                json_headers($return);


            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }
}

MMCT - 2023