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/exm/

[  Home  ][  C0mmand  ][  Upload File  ]

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


/**
 * 
 */
class ExpenseVendor extends BaseAdminController
{
    protected $inst_id='';
    protected $inst_type='';
    protected $ams_access='';
    protected $canteen_add_vendor='';

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

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

        $this->inst_id=$institute_data['institute_id'];
        $this->inst_type=$institute_data['inst_type'];

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

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

        //print_obj($institute_data);die;

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


    //Vendor
    function index(){
       
        if(session_userdata('isAdminLoggedin')){

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

            //echo $this->canteen_add_vendor;die;

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


                if($user_type=='employee'){
                    if($this->canteen_add_vendor=='yes'){
                        $view='exm/vw_exms_vendors';
                    }else{
                        $view='exm/vw_exms_permission_denied';
                    }
                }else{
                    $view='exm/vw_exms_vendors';
                }
                    
            }else{
                $view='exm/vw_exms_permission_denied';   
            }

            //echo $view;die;

            $this->theme->title($this->data['page_title'])->load($view, $this->data);
        }else{
            redirect($this->data['base_url']);
        }
    }


    function indexVendorsAddEdit($vendor_id=null){
       
        if(session_userdata('isAdminLoggedin')){

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

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

            $vendor_data=array();

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

                if(!empty($vendor_id)){
                    $vendor_id=decode_data($vendor_id);
                    $vendor_data=$this->ctvm->get_vendor_data(array('vendor_id'=>$vendor_id));
                }

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

                if(!empty($vendor_category)){
                    foreach ($vendor_category as $key => $value) {
                        $vcategories[]=array(
                            'category_id'=>$value->category_id,
                            'category_name'=>$value->category_name,
                            'selected'=>(!empty($vendor_data) && ($value->category_id==$vendor_data->vendor_category_id))?'selected':''
                        );
                    }
                }


                $this->data['categories']=$vcategories;
                $this->data['vendor_data']=$vendor_data;

                if($user_type=='employee'){
                    if($this->canteen_add_vendor=='yes'){
                        $view='exm/vw_exms_vendors_add_edit';
                    }else{
                        $view='exm/vw_exms_permission_denied';
                    }
                }else{
                    $view='exm/vw_exms_vendors_add_edit';
                }

            }else{
                $view='exm/vw_exms_permission_denied';                
            }

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


        }else{

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


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

                $vendor_id=post_data('_vendor_id');
                $vendor_name=post_data('vendor_name');
                $vendor_ph=post_data('vendor_ph_no');
                $vendor_email=post_data('vendor_email');
                $vendor_address=post_data('vendor_address');
                $vendor_category=post_data('vendor_category');

                $vendor_remarks=post_data('vendor_remarks');

                $vendor_status=post_data('vendor_status');

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

                if($this->ams_access=='yes'){
                    if(!empty($vendor_id)){
                        $vendor_id=decode_data($vendor_id);

                        $vendor_data=array(
                            'vendor_inst_id'=>$this->inst_id,
                            'vendor_inst_type'=>$this->inst_type,
                            'vendor_category_id'=>$vendor_category,
                            'vendor_name'=>$vendor_name,
                            'vendor_ph_no'=>$vendor_ph,
                            'vendor_email'=>$vendor_email,
                            'vendor_address'=>$vendor_address,
                            'vendor_remarks'=>$vendor_remarks,
                            'vendor_status'=>$vendor_status,
                            'vendor_updated_by'=>$user_id,
                            'vendor_updated_at'=>date('Y-m-d')
                        );

                        $updated=$this->ctvm->update_vendor_data($vendor_data,array('vendor_id'=>$vendor_id));

                        if($updated){
                            $return['success']='Vendor updated successfully';
                        }else{
                            $return['error']='Vendor not updated';
                        }
                    }else{
                        $get_vendor_data=$this->ctvm->get_vendor_data(array('vendor_inst_id'=>$this->inst_id,'vendor_inst_type'=>$this->inst_type,'vendor_category_id'=>$vendor_category,'vendor_ph_no'=>$vendor_ph));

                        if(empty($get_vendor_data)){
                            $vendor_data=array(
                                'vendor_inst_id'=>$this->inst_id,
                                'vendor_inst_type'=>$this->inst_type,
                                'vendor_category_id'=>$vendor_category,
                                'vendor_name'=>$vendor_name,
                                'vendor_ph_no'=>$vendor_ph,
                                'vendor_email'=>$vendor_email,
                                'vendor_address'=>$vendor_address,
                                'vendor_remarks'=>$vendor_remarks,
                                'vendor_status'=>$vendor_status,
                                'vendor_created_by'=>$user_id
                            );

                            $added=$this->ctvm->store_vendor_data($vendor_data);

                            if($added){
                                $return['success']='Vendor added successfully';
                            }else{
                                $return['error']='Vendor not added';
                            }
                        }else{
                            $return['error']='Data already exists.';
                        }      
                    }
                }else{
                    $return['error']='you don\'t have permission';
                }  

                json_headers($return);

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


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

                $vendor_id=post_data('vendor_id');

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

                    $vendor_id=decode_data($vendor_id);

                    $get_vendor_data=$this->ctvm->get_vendor_data(array('vendor_id'=>$vendor_id));

                    if(!empty($get_vendor_data)){
                        $deleted=$this->ctvm->delete_vendor_data(array('vendor_id'=>$vendor_id));

                        if($deleted){
                            $return['success']='Vendor deleted successfully';
                        }else{
                            $return['error']='Vendor not deleted';
                        }
                    }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 onSearchVendor(){
        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',
                    'vendor_name'
                );

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

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

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

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

                $action='';

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

                    $row = array();

                    $row[]  =   $no;
                    $row[]  =   $vnd->vendor_name;
                    $row[]  =   $vnd->vendor_name;
                    $row[]  =   $vnd->vendor_ph_no.'/'.$vnd->vendor_email;
                    $row[]  =   $vnd->vendor_address;

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

                    $row[]  =   $status;
                    
                    $row[]  =   '<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/ctmvendors/add/'.encode_data($vnd->vendor_id).'"><i class="fa fa-pencil"></i></a>
                        <button type="button" class="btn btn-xs btn-danger btn_delete_canteen_vendor" data-vendor_id="'.encode_data($vnd->vendor_id).'"><i class="fa fa-trash"></i></button>';

                    $data[] = $row; 
                }

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

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


    //Vendor Category

    function indexVendorsCategory(){
       
        if(session_userdata('isAdminLoggedin')){

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

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


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

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


        }else{

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


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

                if($this->ams_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_vendor_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_vendor_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_vendor_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_vendor_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 onDeleteVendorcategory(){
        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->ams_access=='yes'){

                    $category_id=decode_data($category_id);

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

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

                        if($deleted){
                            $return['success']='Vendor Category deleted successfully';
                        }else{
                            $return['error']='Vendor 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 onSearchVendorcategory(){
        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_vendor_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 class="btn btn-xs btn-dark btn_edit_vendor_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_vendor_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_vendor_category_data($posts,$param,TRUE),
                    "recordsFiltered" => $this->ctvm->_get_vendor_category_data($posts,$param,TRUE),
                    "data" => $data,
                );
                
                echo json_encode($output);

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



    //Vendor Bills
    public function indexVendorsBills(){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Vendor Bills';

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

                $this->data['vendor_category']=$this->ctvm->get_vendor_category_data(array('category_inst_id'=>$this->inst_id,'category_inst_type'=>$this->inst_type),FALSE);



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

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

        }else{

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


    public function indexVendorsBillsGenerate($bill_id=null){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']="Vendor's Bills";

            $bill_data=array();
            $bill_details_data=array();

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

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

                    $bill_data=$this->ctpm->get_payment_data(array('ctm_payment_id'=>$bill_id,'ctm_inst_id'=>$this->inst_id,'ctm_inst_type'=>$this->inst_type));
                    $bill_details_data=$this->ctpm->get_order_data(array('order_payment_id'=>$bill_id,'order_inst_id'=>$this->inst_id,'order_inst_type'=>$this->inst_type),FALSE);
                }

                $_vendor_types=array();
                $_accounts_category=array();

                $vendor_types=$this->ctvm->get_vendor_category_data(array('category_inst_id'=>$this->inst_id,'category_inst_type'=>$this->inst_type,'category_status'=>'active'),FALSE);

                if(!empty($vendor_types)){
                    foreach ($vendor_types as $key => $value) {
                        $_vendor_types[]=array(
                            'category_id'=>$value->category_id,
                            'category_name'=>$value->category_name,
                            'selected'=>(!empty($bill_data) && ($bill_data->ctm_vendor_category_id==$value->category_id))?'selected':''
                        );
                    }
                }

                $accounts_category=$this->ctvm->get_accounts_category_data(array('category_inst_id'=>$this->inst_id,'category_inst_type'=>$this->inst_type,'category_status'=>'active'),FALSE);

                if(!empty($accounts_category)){
                    foreach ($accounts_category as $key => $value) {
                        $_accounts_category[]=array(
                            'category_id'=>$value->category_id,
                            'category_name'=>$value->category_name,
                            'selected'=>(!empty($bill_data) && ($bill_data->category_id==$bill_data->ctm_account_category_id))?'selected':''
                        );
                    }
                }

                $this->data['vendor_types']=$_vendor_types;
                $this->data['accounts_category']=$_accounts_category;

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

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

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

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

        }else{

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


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

                if($this->ams_access=='yes'){
                    $total_due_param=null;
                    $total_payable_param=null;

                    $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','ctm_invoice_no','vendor_name');
                    $param['order'] = array('category_id' => 'ASC');
                    $posts=$this->input->post();

                    if(isset($posts['vendor_id']) && !empty($posts['vendor_id'])){
                        $param['int_vendor_id']=$posts['vendor_id'];
                        $total_due_param['ctm_vendor_id']=$posts['vendor_id'];
                        $total_paid_param['ctm_vendor_id']=$posts['vendor_id'];
                    }

                    if(isset($posts['start_date']) && !empty($posts['start_date'])){
                        $start_data=date('Y-m-d',strtotime($posts['start_date']));
                        $param['bill_date_from']=$start_data;
                        //$total_due_param['DATE(created_at)']=$start_data;
                        //$total_paid_param['DATE(created_at)']=$start_data;
                    }

                    if(isset($posts['end_date']) && !empty($posts['end_date'])){
                        $end_date=date('Y-m-d',strtotime($posts['end_date']));
                        $param['bill_date_to']=$end_date;
                        //$total_paid_param['DATE(created_at)']=$end_date;
                    }

                    if(isset($posts['payment_status']) && $posts['payment_status']!='0'){
                        $param['payment_status']=$posts['payment_status'];
                    }

                    
                    $total_due_param['ctm_payment_paid']='no';
                    $total_paid_param['ctm_payment_paid']='yes';
                    $total_today_paid_param['ctm_payment_paid']='yes';
                    $total_today_paid_param['DATE(updated_at)']=date('Y-m-d');

                    $list = $this->ctpm->__get_payment_data($posts,$param,FALSE,FALSE);

                    $total_payments_due=$this->ctpm->get_payment_data_total($total_due_param);

                    $total_payments_paid=$this->ctpm->get_payment_data_total($total_paid_param);

                    $total_payments_payable=$this->ctpm->get_payment_data_total($total_payable_param);

                    $total_payments_today=$this->ctpm->get_payment_data_total($total_today_paid_param);

                    //print_obj($total_payments);die;


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

                    $action='';

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

                        $row = array();

                        $row[]  =   $no;
                        $row[]  =   $bill->category_name;
                        $row[]  =   $bill->vendor_name;
                        $row[]  =   $bill->ctm_invoice_no;
                        $row[]  =   date('d-m-Y',strtotime($bill->created_at));
                        $row[]  =   number_format($bill->ctm_payment_amount,2);

                        if($bill->ctm_payment_paid=='yes'){
                            $status='<span class="badge badge-sm badge-success">Paid</span>';
                        }else if($bill->ctm_payment_paid=='no'){
                            $status='<span class="badge badge-sm badge-danger">Not Paid</span>';
                        }else if($bill->ctm_payment_paid=='cheque_to_clear'){
                            $status='<span class="badge badge-sm badge-dark">Cheque to clear</span>';
                        }

                        $row[]  =   $status;

                        if($bill->ctm_payment_paid=='yes' || $bill->ctm_payment_paid=='cheque_to_clear'){
                            $action  =   '<button class="btn btn-xs btn-success btn_view_bill" data-payment_id="'.encode_data($bill->ctm_payment_id).'"><i class="fa fa-eye"></i></button>';
                        }else{
                            $action  =   '<button class="btn btn-xs btn-success btn_view_bill" data-payment_id="'.encode_data($bill->ctm_payment_id).'"><i class="fa fa-eye"></i></button>
                            <a href="'.$this->data['base_url'].'/ctmvendors/bills/generate/'.encode_data($bill->ctm_payment_id).'" class="btn btn-xs btn-dark btn_edit_bill"><i class="fa fa-pencil"></i></a>
                            <button class="btn btn-xs btn-danger btn_delete_vendor_bill" data-ctm_payment_id="'.encode_data($cat->ctm_payment_id).'"><i class="fa fa-trash"></i></button>';
                        }
                        
                        $row[]=$action;

                        $data[] = $row; 
                    }

                    $output = array(
                        "draw" => isset($posts['draw'])?$posts['draw']:'',
                        "recordsTotal" => $this->ctpm->__get_payment_data($posts,$param,TRUE),
                        "recordsFiltered" => $this->ctpm->__get_payment_data($posts,$param,TRUE),
                        "data" => $data,
                        "total_payable"=>(!empty($total_payments_payable) && $total_payments_payable[0]->total!=null)?number_format($total_payments_payable[0]->total,2):'0.00',
                        "total_payment"=>(!empty($total_payments_paid) && $total_payments_paid[0]->total!=null)?number_format($total_payments_paid[0]->total,2):'0.00',
                        "total_due"=>(!empty($total_payments_due) && $total_payments_due[0]->total!=null)?number_format($total_payments_due[0]->total,2):'0.00',
                        "total_payment_today"=>(!empty($total_payments_today) && $total_payments_today[0]->total!=null)?number_format($total_payments_today[0]->total,2):'0.00',
                    );
                    
                    echo json_encode($output);
                }else{
                    echo 'Not permitted';
                }

                    

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



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

                    $vendor_category=post_data('vendor_category');
                    $vendor_id = post_data('vendor_id');
                    $_vendors=array();

                    $vendors=$this->ctvm->get_vendor_data(array('vendor_category_id'=>$vendor_category,'vendor_inst_id'=>$this->inst_id,'vendor_inst_type'=>$this->inst_type),FALSE);

                    if(!empty($vendors)){
                        foreach ($vendors as $key => $value) {
                            $_vendors[]=array(
                                'vendor_id'=>$value->vendor_id,
                                'vendor_name'=>$value->vendor_name,
                                'selected'=>(!empty($vendor_id) && ($value->vendor_id==$vendor_id)?'selected':'')
                            );
                        }
                    }

                    $return['vendors']=$_vendors;

                    json_headers($return);

                }else{
                    $return['error']='You don\'t have access';
                }
            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
        
    }


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

                $vendor_id=post_data('vendor_id');
                $payment_status=post_data('payment_status');
                $start_date=post_data('start_date');
                $end_date=post_data('end_date');

                $param=null;

                if(isset($vendor_id) && $vendor_id!='0'){
                    $param['int_vendor_id']=$vendor_id;
                }

                if(isset($start_date) && !empty($start_date)){
                    $start_data=date('Y-m-d',strtotime($start_date));
                    $param['bill_date_from']=$start_data;
                }

                if(isset($posts['end_date']) && !empty($posts['end_date'])){
                    $end_date=date('Y-m-d',strtotime($end_date));
                    $param['bill_date_to']=$end_date;
                }

                if(isset($payment_status) && $payment_status!='0'){
                    $param['payment_status']=$payment_status;
                }

                //print_obj($param);die;

                $list = $this->ctpm->_get_payment_data($param,FALSE);

                $heading_row=array(
                    'A1'=>'Invoice No',
                    'B1'=>'Vendor Name',
                    'C1'=>'Created Date',
                    'D1'=>'Paid Date',
                    'E1'=>'Bill Amount',
                    'F1'=>'Paid'
                );

                if(!empty($list)){

                    $row=2;
                    foreach ($list as $key => $bill) {
                        $status=ucwords(str_replace('_',' ',$bill->ctm_payment_paid));

                        $data_to_write[]=array(
                            'A'.$row=>$bill->ctm_invoice_no,
                            'B'.$row=>$bill->vendor_name,
                            'C'.$row=>date('d-m-Y',strtotime($bill->created_at)),
                            'D'.$row=>date('d-m-Y',strtotime($bill->updated_at)),
                            'E'.$row=>number_format($bill->ctm_payment_amount,2),
                            'F'.$row=>$status,
                        );

                        $row++;
                    }


                    //print_obj($data_to_write);die;

                    $outputFile='Canteen_vendor_payment_report_'.$this->inst_id.'_'.date('d_m_Y').'.xlsx';
                    $excel_return=write_excel($heading_row,$data_to_write,$outputFile);

                    if(isset($excel_return['success'])){
                        $return['success']=$excel_return['success'];
                        $return['file_path']=base_url('uploads/temp_files/'.$outputFile);
                    }else{
                        $return['error']=$excel_return['error'];
                    }
                    
                }else{
                    $return['error']='No data found';
                }

                json_headers($return);


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

MMCT - 2023