db->from('stock_locations'); $this->db->where('location_name',$location_name); $query = $this->db->get(); return ($query->num_rows()>=1); } function get_all($limit=10000, $offset=0) { $this->db->from('stock_locations'); $this->db->limit($limit); $this->db->offset($offset); return $this->db->get(); } function get_undeleted_all($module_id='items') { $this->db->from('stock_locations'); $this->db->join('permissions','permissions.location_id=stock_locations.location_id'); $this->db->join('grants','grants.permission_id=permissions.permission_id'); $this->db->where('person_id', $this->session->userdata('person_id')); $this->db->like('permissions.permission_id', $module_id, 'after'); $this->db->where('deleted',0); return $this->db->get(); } function show_locations($module_id='items') { $stock_locations = $this->get_allowed_locations($module_id); return count($stock_locations) > 1; } function multiple_locations() { return $this->get_all()->num_rows() > 1; } function get_allowed_locations($module_id='items') { $stock = $this->get_undeleted_all($module_id)->result_array(); $stock_locations = array(); foreach($stock as $location_data) { $stock_locations[$location_data['location_id']] = $location_data['location_name']; } return $stock_locations; } function is_allowed_location($location_id, $module_id='items') { $this->db->from('stock_locations'); $this->db->join('permissions','permissions.location_id=stock_locations.location_id'); $this->db->join('grants','grants.permission_id=permissions.permission_id'); $this->db->where('person_id', $this->session->userdata('person_id')); $this->db->like('permissions.permission_id', $module_id, 'after'); $this->db->where('deleted',0); $this->db->where('stock_locations.location_id', $location_id); $query = $this->db->get(); return ($query->num_rows()==1); } function get_default_location_id() { $this->db->from('stock_locations'); $this->db->join('permissions','permissions.location_id=stock_locations.location_id'); $this->db->join('grants','grants.permission_id=permissions.permission_id'); $this->db->where('person_id', $this->session->userdata('person_id')); $this->db->where('deleted',0); $this->db->limit(1); return $this->db->get()->row()->location_id; } function get_location_name($location_id) { $this->db->from('stock_locations'); $this->db->where('location_id',$location_id); return $this->db->get()->row()->location_name; } function save(&$location_data,$location_id) { $location_name = $location_data['location_name']; if (!$this->exists($location_name)) { $this->db->trans_start(); $location_data = array('location_name'=>$location_name,'deleted'=>0); $this->db->insert('stock_locations',$location_data); $location_id = $this->db->insert_id(); $this->_insert_new_permission('items', $location_id, $location_name); $this->_insert_new_permission('sales', $location_id, $location_name); $this->_insert_new_permission('receivings', $location_id, $location_name); // insert quantities for existing items $items = $this->Item->get_all(); foreach ($items->result_array() as $item) { $quantity_data = array('item_id' => $item['item_id'], 'location_id' => $location_id, 'quantity' => 0); $this->db->insert('item_quantities', $quantity_data); } $this->db->trans_complete(); } else { $this->db->where('location_id', $location_id); return $this->db->update('stock_locations',$location_data); } } function _insert_new_permission($module, $location_id, $location_name) { // insert new permission for stock location $permission_id = $module."_".$location_name; $permission_data = array('permission_id'=>$permission_id,'module_id'=>$module,'location_id' => $location_id); $this->db->insert('permissions', $permission_data); // insert grants for new permission $employees = $this->Employee->get_all(); foreach ($employees->result_array() as $employee) { $grants_data = array('permission_id' => $permission_id, 'person_id' => $employee['person_id']); $this->db->insert('grants', $grants_data); } } /* Deletes one item */ function delete($location_id) { $this->db->trans_start(); $this->db->where('location_id', $location_id); $this->db->update('stock_locations', array('deleted' => 1)); $this->db->where('location_id', $location_id); $this->db->delete('permissions'); $this->db->trans_complete(); } } ?>