MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/ntc_cafsinfotech_in_bk/application/controllers/Po_history.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Base_controller.php");
class Po_history  extends Base_controller{
	
	public function __construct(){
		parent::__construct('po_history');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$this->collect_base_info();
	}
	
	// LOAD PAGE WITH TABLE DATA
	public function index(){
		$data['table_headers']= get_purchase_history_headers();
		$this->db->select('prime_inventory_supplier_id,supplier_name');
		$this->db->from('cw_inventory_supplier');
		$this->db->where('cw_inventory_supplier.trans_status', 1);
		$supplier_list = $this->db->get()->result();
		foreach($supplier_list as $service_rlst){
			$prime_inventory_supplier_id  = $service_rlst->prime_inventory_supplier_id;
			$supplier_name                  = $service_rlst->supplier_name;
			$supplier_name_list[$prime_inventory_supplier_id] = $supplier_name;
		}
		$data['supplier_name_list'] = $supplier_name_list;
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view($prime_purchase_order_id = -1){
		$prime_purchase_order_id = $this->input->post('prime_purchase_order_id');
		$cart_view          = array();
		$this->db->select('cw_purchase_order.prime_purchase_order_id,cw_purchase_order.supplier_id,cw_purchase_order.pod_number,cw_purchase_order.entry_date,cw_purchase_item_list.prime_inventory_product_id,cw_purchase_item_list.product_name,cw_purchase_item_list.brand_name,cw_purchase_item_list.category_name,cw_purchase_item_list.quantity,cw_inventory_product.price,cw_inventory_supplier.supplier_name,cw_inventory_supplier.contact_person,cw_inventory_supplier.mobile_number,cw_inventory_supplier.address');
		$this->db->from('cw_purchase_order');
		$this->db->join('cw_purchase_item_list','cw_purchase_item_list.prime_purchase_order_id = cw_purchase_order.prime_purchase_order_id');
		$this->db->join('cw_inventory_supplier','cw_inventory_supplier.prime_inventory_supplier_id = cw_purchase_order.supplier_id');
		$this->db->join('cw_inventory_product','cw_inventory_product.prime_inventory_product_id = cw_purchase_item_list.prime_inventory_product_id');
		$this->db->where('cw_purchase_order.trans_status', 1);
		$this->db->where('cw_purchase_item_list.trans_status', 1);
		$this->db->where('cw_purchase_order.prime_purchase_order_id',$prime_purchase_order_id);
		$item_info = $this->db->get()->result();
		$prime_purchase_order_id        = $item_info[0]->prime_purchase_order_id;
		$prime_inventory_supplier_id  = $item_info[0]->supplier_id;
		$supplier_name                  = $item_info[0]->supplier_name;
		$mobile_number                  = $item_info[0]->mobile_number;
		$address                        = $item_info[0]->address;
		$cart_view['supplier_info']     =
					array(
					      'supplier_id'                   =>$prime_inventory_supplier_id,					       'prime_purchase_order_id'       =>$prime_purchase_order_id,
						  'supplier_name'                 =>$supplier_name,
						  'mobile_number'                 =>$mobile_number,
						  'address'                       =>$address
					);
		foreach($item_info as $rslt){
			$prime_inventory_product_id  = $rslt->prime_inventory_product_id;
			$product_name                  = $rslt->product_name;
			$product_type                  = $rslt->product_type;
			$product_code                  = $rslt->product_code;
			$brand_name                     = $rslt->brand_name;
			$category_name                  = $rslt->category_name;
			$quantity                       = $rslt->quantity;
			$price                          = $rslt->price;
			$cart_view['purchase_info'][$prime_inventory_product_id] = 
					array(
					'prime_inventory_product_id' =>$prime_inventory_product_id,					       'prime_inventory_supplier_id' =>$prime_inventory_supplier_id,
					'prime_purchase_order_id'       =>$prime_purchase_order_id,
					'product_name'                 =>$product_name,
					'product_type'                 =>$product_type,
					'brand_name'                    =>$brand_name,
					'category_name'                 =>$category_name,
					'quantity'                      =>$quantity,
					'price'                         =>$price
						);
		}
		$this->session->set_userdata('cart_view', $cart_view);
		echo json_encode(array('success'=>true,'message'=>'Redirecting To card View'));
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view_info($prime_purchase_order_id=-1){
		$tble_line = '';
		$query = "select cw_purchase_order.prime_purchase_order_id,cw_purchase_order.pod_number,cw_purchase_order.entry_date,cw_purchase_order.po_status,cw_purchase_order.invoice_no,cw_purchase_item_list.product_name,cw_purchase_item_list.brand_name,cw_inventory_supplier.supplier_name,cw_purchase_item_list.category_name,IFNULL(cw_purchase_item_list.quantity,0) as order_quantity,IFNULL(cw_purchase_item_list.amount,0) as order_amount,IFNULL(cw_purchase_item_list.price,0) as price from cw_purchase_order join cw_purchase_item_list on cw_purchase_item_list.prime_purchase_order_id = cw_purchase_order.prime_purchase_order_id join cw_inventory_supplier on cw_inventory_supplier.prime_inventory_supplier_id = cw_purchase_item_list.supplier_id join cw_inventory_product on cw_inventory_product.prime_inventory_product_id = cw_purchase_item_list.prime_inventory_product_id  where cw_purchase_order.trans_status = 1 and cw_purchase_item_list.trans_status = 1 and cw_purchase_order.prime_purchase_order_id = $prime_purchase_order_id";
		$order_info  = $this->db->query("CALL sp_a_run ('SELECT','$query')");
		$order_rlst  = $order_info->result();
		$order_info->next_result();
		$po_status  = $order_rlst[0]->po_status;
		
		$query = "select cw_purchase_order.prime_purchase_order_id,cw_purchase_order.pod_number,cw_purchase_order.entry_date,cw_purchase_order.po_status,cw_purchase_receiving.product_name,cw_purchase_receiving.brand_name,cw_purchase_order.invoice_no,cw_inventory_supplier.supplier_name,cw_purchase_receiving.category_name,IFNULL(cw_purchase_receiving.receiving_quantity,0) as receiving_quantity,IFNULL(cw_purchase_receiving.amount,0) as amount,IFNULL(cw_purchase_receiving.price,0) as price from cw_purchase_order join cw_purchase_receiving on cw_purchase_receiving.prime_purchase_order_id = cw_purchase_order.prime_purchase_order_id join cw_inventory_supplier on cw_inventory_supplier.prime_inventory_supplier_id = cw_purchase_order.supplier_id where cw_purchase_order.trans_status = 1 and cw_purchase_receiving.trans_status = 1 and cw_purchase_order.prime_purchase_order_id = $prime_purchase_order_id";
		$received_info = $this->db->query("CALL sp_a_run ('SELECT','$query')");
		$received_rlst = $received_info->result();
		$received_info->next_result();
		$order_rlst    = json_decode(json_encode($order_rlst), True);
		$received_rlst = json_decode(json_encode($received_rlst), True);
		$item_info     = $this->merge_array($order_rlst,$received_rlst);
		
		if((int)$po_status === 3){
			$query = str_replace("cw_purchase_receiving","cw_purchase_return",$query);
			$query = str_replace("receiving_quantity","return_quantity",$query);
			$return_info = $this->db->query("CALL sp_a_run ('SELECT','$query')");
			$return_rlst        = $return_info->result();
			$return_info->next_result();
			$return_rlst  = json_decode(json_encode($return_rlst), True);
			$item_info  = $this->merge_array($item_info,$return_rlst);
		}
		foreach($item_info as $send_rlst){
			$prime_purchase_order_id = $send_rlst['prime_purchase_order_id'];
			$supplier_name           = $send_rlst['supplier_name'];
			$pod_number              = $send_rlst['pod_number'];
			$entry_date              = date('d-m-Y',strtotime($send_rlst['entry_date']));
			$po_status               = $send_rlst['po_status'];
			$product_name           = $send_rlst['product_name'];
			$brand_name              = $send_rlst['brand_name'];
			$invoice_no              = $send_rlst['invoice_no'];
			$category_name           = $send_rlst['category_name'];
			$order_quantity          = $send_rlst['order_quantity'];
			$order_amount            = $send_rlst['order_amount'];
			$receiving_quantity      = $send_rlst['receiving_quantity'];
			$return_quantity         = $send_rlst['return_quantity'];
			$amount                  = $send_rlst['amount'];
			$price                   = $send_rlst['price'];
			if(!$order_quantity){
				$order_quantity = 0;
			}
			if(!$order_amount){
				$order_amount = 0;
			}
			if(!$receiving_quantity){
				$receiving_quantity = 0;
			}
			if(!$amount){
				$amount = 0;
			}
			if(!$return_quantity){
				$return_quantity = 0;
			}
			if(!$price){
				$price = 0;
			}
			$status_list             = array(1 => "Pending",2 => "Received",3 => "Return");
			$po_status               = $status_list[$po_status];
			$tble_line .= "	<tr>
								<td>$pod_number</td>
								<td>$supplier_name</td>
								<td>$product_name</td>
								<td>$brand_name</td>
								<td>$category_name</td>
								<td>$price</td>
								<td>$order_quantity</td>
								<td>$receiving_quantity</td>
								<td>$return_quantity</td>
								<td>$order_amount</td>
								<td>$amount</td>
								<td>$invoice_no</td>
							</tr>";
		}
		$data['tble_line'] = $tble_line;
		$this->load->view("$this->control_name/form",$data);
	}
	
	//LOAD PAGE TABLE VIEW WITH DATA BASED ON SEARCH FILTERS
	public function search(){
		$search            = $this->input->get('search');
		$limit             = $this->input->get('limit');
		$offset            = $this->input->get('offset');
		$sort              = $this->input->get('sort');
		$order             = $this->input->get('order');
		$start_date        = str_replace("/","-",$this->input->get('start_date'));
		$end_date          = str_replace("/","-",$this->input->get('end_date'));	
		$from_date         = date('Y-m-d',strtotime($start_date));
		$to_date           = date('Y-m-d',strtotime($end_date));		
		$filters           = $this->input->get('filters');
		$supplier_name     = $this->input->get('supplier_name');
		$this->db->select('prime_purchase_order_id,total_amount,pod_number,entry_date,po_status,inventory_supplier.supplier_name');
		$this->db->from('purchase_order');	
		$this->db->join('inventory_supplier', 'cw_inventory_supplier.prime_inventory_supplier_id = purchase_order.supplier_id','inner');	
		if($search){
			$this->db->group_start();
				$this->db->like('purchase_order.pod_number',$search);
				$this->db->or_like('purchase_order.entry_date',$search);				
				$this->db->or_like('purchase_order.supplier_id',$search);					
				$this->db->or_like('inventory_supplier.supplier_name',$search);					
				if(strpos($search, '-') !== false){
				  $this->db->or_like('purchase_order.entry_date', date('Y-m-d',strtotime($search))); 
				}
			$this->db->group_end();	
		}
		
		$this->db->group_start();
		$filters_sts = array();
		if($filters[0] > 0){
			$this->db->where_in('purchase_order.po_status', $filters);
		}
		$filters_sts = array();
		foreach($supplier_name as $key=>$value){
			if($value){ $filters_sts[] = $value; }
		}
		if(count($filters_sts) > 0){
			$this->db->where_in('purchase_order.supplier_id', $filters_sts);
		}
		$this->db->where('DATE_FORMAT(entry_date, "%Y-%m-%d") BETWEEN '. $this->db->escape($from_date).' AND '.$this->db->escape($to_date));
		
		$this->db->group_end();	
		
		$this->db->order_by($sort,$order);
		$receiving_data = $this->db->get();
		$receiving_rslt = $receiving_data->result();
		$num_rows       = $receiving_data->num_rows();
		$datarows       = array();		
		foreach($receiving_rslt as $receiving){
			$datarows[] = get_purchase_history_datarows($receiving,$this);
		}
		echo json_encode(array('total'=>$num_rows,'rows'=>$datarows));
	}
	
	
	//CUSTOM ARRAY ARRANGEMENT (SVK EDIT NEED TO REVIEW)
	public function merge_array($array1,$array2){
		if(is_array($array1) && is_array($array2)){
			$arr1_count = count($array1);
			$arr2_count = count($array2);
			if((int)$arr1_count > (int)$arr2_count){
				$temp   = $array1;
				$array1 = $array2;
				$array2 = $temp;
			} 
			$rlst  = array();
			foreach($array1 as $key => $value){
				foreach($array2 as $key2 => $value2){
					if((array_key_exists($key2,$array1)) && ($value['product_id'] === $value2['product_id'])){
						$rlst[$key2]  = array_merge($array1[$key2],$value2);
					}else{
						if(array_key_exists($key2,$array1)){
							$rlst[$key2] = array_merge($array1[$key2],$value2);
						}else{
							$rlst[$key2] = $value2;
						}
					}  
				}
			}
			return $rlst;
		}else{
			return FALSE;
		}
	}
}
?>