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/

[  Home  ][  C0mmand  ][  Upload File  ]

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


/**
 * 
 */
class Purchase extends BaseAdminController
{
	protected $inst_id='';
    protected $inst_type='';
    protected $ctms_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->config->load('cms_config', FALSE, TRUE);

        $this->load->model(array('po_model'=>'pom','vendor_model'=>'vm'));
    }


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

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

            //echo $this->canteen_add_vendor;die;

            $view='accounting/vw_purchase_list';

            //echo $view;die;

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


    function indexPurchaseAddEdit($po_id=null){
    	if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Purchase';

            if($po_id!=null){
                $po_id=decode_data($po_id);
                $po_data=$this->pom->get_po_order(array('po_id'=>$po_id));
                $po_orders=$this->pom->get_po_order_data(array('po_pk_id'=>$po_id),FALSE);

                if(!empty($po_orders)){
                    foreach ($po_orders as $key => $value) {
                        $vendors[$value->po_data_id]=$this->vm->get_vendor_data(array('vendor_id'=>$value->po_vendor_cate_id),FALSE);
                    }
                }                

                $this->data['po_data']=$po_data;
                $this->data['po_order_data']=$po_orders;
                $this->data['vendors']=$vendors;

            }   

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

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


            $view='accounting/vw_purchase_add_edit';



            //echo $view;die;

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


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

                $po_id=post_data('po_id');
                $po_row=post_data('po_row');

                $po_row=$po_row+1;

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

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


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

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

                json_headers($return);

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


    public function onCreatePOOrder(){
        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;
                $po_inst_id=$this->inst_id;
                $po_inst_type=$this->inst_type;
                $po_id=post_data('po_id');
                $po_details=$this->input->post('po_details');

                $po_total=0;

                if(!empty($po_id)){
                    $po_id=decode_data($po_id);
                    $_po_data=$this->pom->get_po_order(array('po_id'=>$po_id));
                    $this->pom->delete_po_order(array('po_id'=>$po_id));
                    $this->pom->delete_po_order_data(array('po_pk_id'=>$po_id));
                }

                if(!empty($po_details)){
                   
                    $po_created_by=$user_id;
                    $po_created_at=date('Y-m-d');
                    $po_notes=post_data('po_notes');

                    if(isset($_po_data)){
                        $po_updated_by=$user_id;
                        $po_status=$_po_data->po_status;
                        $po_created_by=$_po_data->po_created_by;
                        $po_created_at=$_po_data->po_created_at;
                        $po_data=compact('po_inst_id','po_inst_type','po_notes',
                            'po_total',
                            'po_status',
                            'po_status_reason',
                            'po_created_at',
                            'po_created_by');

                        $po_id=store_po_order($po_data);

                        $po_udata=compact('po_id','po_inst_id','po_inst_type','po_notes',
                            'po_total',
                            'po_status',
                            'po_status_reason',
                            'po_updated_by');

                        update_po_order($po_udata);
                        $return['redirect']=$this->data['base_url'].'/purchases/add/'.encode_data($po_id);
                    }else{
                        $po_status='generated';
                        $po_data=compact('po_inst_id','po_inst_type','po_notes',
                            'po_total',
                            'po_status',
                            'po_status_reason',
                            'po_created_at',
                            'po_created_by');

                        $po_id=store_po_order($po_data);
                        $return['redirect']=$this->data['base_url'].'/purchases';
                    }   

                    if($po_id){
                        foreach ($po_details as $key => $value) {
                            $price_total=$value['item_qty']*$value['item_rate'];

                            $d[]=array(
                              'po_pk_id'=>$po_id,
                              'po_vendor_cate_id'=>$value['vendor_type'],
                              'po_vendor_id'=>$value['vendor_id'],
                              'po_data_name'=>$value['item_detail'],
                              'po_data_qty'=>$value['item_qty'],
                              'po_data_price'=>$value['item_rate'],
                              'po_data_price_total'=>$price_total,
                              'po_data_created_at'=>date('Y-m-d'),
                              'po_data_created_by'=>$user_id
                            );
                        }

                        if(!empty($d)){
                            $order_created=$this->pom->store_po_order_data($d,TRUE);
                            if($order_created){
                                $sub_total=$this->pom->get_po_order_total('po_data_price_total','total',array('po_pk_id'=>$po_id));

                                $po_tax_slab=post_data('po_tax');

                                $discount=post_data('po_discount');

                                $total=$sub_total[0]->total-$discount;

                                $tax=($total*$po_tax_slab)/100;

                                $main_total=$total+$tax;

                                $this->pom->update_po_order(array('po_sub_total'=>$sub_total[0]->total,'po_total'=>$main_total,'po_discount'=>$discount,'po_tax'=>$tax,'po_tax_slab'=>$po_tax_slab),array('po_id'=>$po_id));
                            }
                            $return['success']='PO has been generated.';

                        }else{
                            $return['error']='There was an error on creating PO';
                        }
                    }else{
                        $return['error']='PO not created.';
                    }

                }else{
                    $return['error']='Blank PO can not be generated';
                }


                json_headers($return);

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


     public function onSearchPO(){
        
        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,
                    'po_code'
                );

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

                $list = $this->pom->_get_po_order($posts,$param,FALSE,FALSE);
                
                
                $data = array();
                $no = 0;

                $action='';

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

                    $row = array();

                    $row[]  =   $no;
                    $row[]  =   $po->po_code;
                    $row[]  =   number_format($po->po_sub_total,2); 
                    $row[]  =   number_format($po->po_discount,2);
                    $row[]  =   number_format($po->po_total,2); 
                    $row[]  =   number_format($po->po_tax,2); 
                    
                    $row[]  =   $po->po_notes;
                    $row[]  =   date('d-m-Y',strtotime($po->po_created_at));

                    $row[]  =   $this->config->item($po->po_status);
                    
                    $row[]  =   '<button type="button" class="btn btn-xs btn-info btn_view_po" data-book_po_id="'.encode_data($po->po_id  ).'" ><i class="fa fa-eye"></i></button>
                    <a type="button" class="btn btn-xs btn-info btn_edit_po" href="'.$this->data['base_url'].'/purchases/add/'.encode_data($po->po_id ).'" ><i class="fa fa-edit"></i></a>
                    <button type="button" class="btn btn-xs btn-danger" data-book_po_id="'.encode_data($po->po_id ).'"><i class="fa fa-trash"></i></button>';

                    $data[] = $row; 
                }

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

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

    
}

MMCT - 2023