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;
}
}
}
?>