db->from('suppliers'); $this->db->join('people', 'people.person_id = suppliers.person_id'); $this->db->where('suppliers.person_id',$person_id); $query = $this->db->get(); return ($query->num_rows()==1); } function get_total_rows() { $this->db->from('suppliers'); $this->db->where('deleted',0); return $this->db->count_all_results(); } /* Returns all the suppliers */ function get_all($limit_from = 0, $rows = 0) { $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->order_by("company_name", "asc"); if ($rows > 0) { $this->db->limit($rows, $limit_from); } return $this->db->get(); } function count_all() { $this->db->from('suppliers'); $this->db->where('deleted',0); return $this->db->count_all_results(); } /* Gets information about a particular supplier */ function get_info($supplier_id) { $this->db->from('suppliers'); $this->db->join('people', 'people.person_id = suppliers.person_id'); $this->db->where('suppliers.person_id',$supplier_id); $query = $this->db->get(); if($query->num_rows()==1) { return $query->row(); } else { //Get empty base parent object, as $supplier_id is NOT an supplier $person_obj=parent::get_info(-1); //Get all the fields from supplier table $fields = $this->db->list_fields('suppliers'); //append those fields to base parent object, we we have a complete empty object foreach ($fields as $field) { $person_obj->$field=''; } return $person_obj; } } /* Gets information about multiple suppliers */ function get_multiple_info($suppliers_ids) { $this->db->from('suppliers'); $this->db->join('people', 'people.person_id = suppliers.person_id'); $this->db->where_in('suppliers.person_id',$suppliers_ids); $this->db->order_by("last_name", "asc"); return $this->db->get(); } /* Inserts or updates a suppliers */ function save(&$person_data, &$supplier_data,$supplier_id=false) { $success=false; //Run these queries as a transaction, we want to make sure we do all or nothing $this->db->trans_start(); if(parent::save($person_data,$supplier_id)) { if (!$supplier_id or !$this->exists($supplier_id)) { $supplier_data['person_id'] = $person_data['person_id']; $success = $this->db->insert('suppliers',$supplier_data); } else { $this->db->where('person_id', $supplier_id); $success = $this->db->update('suppliers',$supplier_data); } } $this->db->trans_complete(); return $success; } /* Deletes one supplier */ function delete($supplier_id) { $this->db->where('person_id', $supplier_id); return $this->db->update('suppliers', array('deleted' => 1)); } /* Deletes a list of suppliers */ function delete_list($supplier_ids) { $this->db->where_in('person_id',$supplier_ids); return $this->db->update('suppliers', array('deleted' => 1)); } /* Get search suggestions to find suppliers */ function get_search_suggestions($search,$limit=25) { $suggestions = array(); $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->like("company_name",$search); $this->db->order_by("company_name", "asc"); $by_company_name = $this->db->get(); foreach($by_company_name->result() as $row) { $suggestions[]=$row->company_name; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->distinct(); $this->db->like("agency_name",$search); $this->db->order_by("agency_name", "asc"); $by_agency_name = $this->db->get(); foreach($by_agency_name->result() as $row) { $suggestions[]=$row->agency_name; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where("(first_name LIKE '%".$this->db->escape_like_str($search)."%' or last_name LIKE '%".$this->db->escape_like_str($search)."%' or CONCAT(`first_name`,' ',`last_name`) LIKE '%".$this->db->escape_like_str($search)."%') and deleted=0"); $this->db->order_by("last_name", "asc"); $by_name = $this->db->get(); foreach($by_name->result() as $row) { $suggestions[]=$row->first_name.' '.$row->last_name; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->like("email",$search); $this->db->order_by("email", "asc"); $by_email = $this->db->get(); foreach($by_email->result() as $row) { $suggestions[]=$row->email; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->like("phone_number",$search); $this->db->order_by("phone_number", "asc"); $by_phone = $this->db->get(); foreach($by_phone->result() as $row) { $suggestions[]=$row->phone_number; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->like("account_number",$search); $this->db->order_by("account_number", "asc"); $by_account_number = $this->db->get(); foreach($by_account_number->result() as $row) { $suggestions[]=$row->account_number; } //only return $limit suggestions if(count($suggestions > $limit)) { $suggestions = array_slice($suggestions, 0,$limit); } return $suggestions; } /* Get search suggestions to find suppliers */ function get_suppliers_search_suggestions($search,$limit=25) { $suggestions = array(); $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->like("company_name",$search); $this->db->order_by("company_name", "asc"); $by_company_name = $this->db->get(); foreach($by_company_name->result() as $row) { $suggestions[]=$row->person_id.'|'.$row->company_name; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where('deleted', 0); $this->db->distinct(); $this->db->like("agency_name",$search); $this->db->order_by("agency_name", "asc"); $by_agency_name = $this->db->get(); foreach($by_agency_name->result() as $row) { $suggestions[]=$row->person_id.'|'.$row->agency_name; } $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where("(first_name LIKE '%".$this->db->escape_like_str($search)."%' or last_name LIKE '%".$this->db->escape_like_str($search)."%' or CONCAT(`first_name`,' ',`last_name`) LIKE '%".$this->db->escape_like_str($search)."%') and deleted=0"); $this->db->order_by("last_name", "asc"); $by_name = $this->db->get(); foreach($by_name->result() as $row) { $suggestions[]=$row->person_id.'|'.$row->first_name.' '.$row->last_name; } //only return $limit suggestions if(count($suggestions > $limit)) { $suggestions = array_slice($suggestions, 0,$limit); } return $suggestions; } function get_found_rows($search) { $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where("(first_name LIKE '%".$this->db->escape_like_str($search)."%' or last_name LIKE '%".$this->db->escape_like_str($search)."%' or company_name LIKE '%".$this->db->escape_like_str($search)."%' or agency_name LIKE '%".$this->db->escape_like_str($search)."%' or email LIKE '%".$this->db->escape_like_str($search)."%' or phone_number LIKE '%".$this->db->escape_like_str($search)."%' or account_number LIKE '%".$this->db->escape_like_str($search)."%' or CONCAT(`first_name`,' ',`last_name`) LIKE '%".$this->db->escape_like_str($search)."%') and deleted=0"); return $this->db->get()->num_rows(); } /* Perform a search on suppliers */ function search($search, $rows = 0, $limit_from = 0) { $this->db->from('suppliers'); $this->db->join('people','suppliers.person_id=people.person_id'); $this->db->where("(first_name LIKE '%".$this->db->escape_like_str($search)."%' or last_name LIKE '%".$this->db->escape_like_str($search)."%' or company_name LIKE '%".$this->db->escape_like_str($search)."%' or agency_name LIKE '%".$this->db->escape_like_str($search)."%' or email LIKE '%".$this->db->escape_like_str($search)."%' or phone_number LIKE '%".$this->db->escape_like_str($search)."%' or account_number LIKE '%".$this->db->escape_like_str($search)."%' or CONCAT(`first_name`,' ',`last_name`) LIKE '%".$this->db->escape_like_str($search)."%') and deleted=0"); $this->db->order_by("last_name", "asc"); if ($rows > 0) { $this->db->limit($rows, $limit_from); } return $this->db->get(); } } ?>