diff --git a/application/controllers/Items.php b/application/controllers/Items.php index be843fc00..c3a50ae09 100644 --- a/application/controllers/Items.php +++ b/application/controllers/Items.php @@ -397,8 +397,25 @@ class Items extends Secure_Controller $data['definition_values'] = $this->Attribute->get_attributes_by_item($item_id) + $this->Attribute->get_values_by_definitions($definition_ids); $data['definition_names'] = $this->Attribute->get_definition_names(); - foreach($data['definition_values'] as $definition_id => $attribute_value) + foreach($data['definition_values'] as $definition_id => $definition_value) { + $attribute_value = $this->Attribute->get_attribute_value($item_id, $definition_id); + $attribute_id = (empty($attribute_value) || empty($attribute_value->attribute_id)) ? NULL : $attribute_value->attribute_id; + $values = &$data['definition_values'][$definition_id]; + $values['attribute_id'] = $attribute_id; + $values['attribute_value'] = $attribute_value; + + if ($definition_value['definition_type'] == DROPDOWN) + { + $values['values'] = $this->Attribute->get_definition_values($definition_id); + $values['selected_value'] = $this->Attribute->get_link_value($item_id, $definition_id); + } + + if (!empty($definition_ids[$definition_id])) + { + $values['selected_value'] = $definition_ids[$definition_id]; + } + unset($data['definition_names'][$definition_id]); } diff --git a/application/helpers/tabular_helper.php b/application/helpers/tabular_helper.php index 36ab83302..c61fb9205 100644 --- a/application/helpers/tabular_helper.php +++ b/application/helpers/tabular_helper.php @@ -340,7 +340,7 @@ function get_items_manage_table_headers() foreach($definition_names as $definition_id => $definition_name) { - $headers[] = array($definition_name => $definition_name); + $headers[] = array($definition_id => $definition_name); } return transform_headers($headers); @@ -411,12 +411,18 @@ function get_item_data_row($item) array('class' => 'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title' => $CI->lang->line($controller_name.'_update')) )); - $attribute_values = explode(',', (property_exists($item, 'attribute_values')) ? $item->attribute_values : ""); + $attribute_values = explode('|', (property_exists($item, 'attribute_values')) ? $item->attribute_values : ""); + + $indexed_values = array(); + foreach($attribute_values as $attribute_value) + { + $exploded_value = explode(':', $attribute_value); + $indexed_values[$exploded_value[0]] = $exploded_value[1]; + } foreach($definition_names as $definition_id => $definition_name) { - $result[$definition_name] = array_shift($attribute_values); - + $result[$definition_id] = $indexed_values[$definition_id]; } return $result; diff --git a/application/models/Item.php b/application/models/Item.php index 7d95bd3f7..d66bcb6f0 100644 --- a/application/models/Item.php +++ b/application/models/Item.php @@ -193,10 +193,9 @@ class Item extends CI_Model } else if (count($filters['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(attribute_value) AS attribute_values'); + $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\':\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id IS NULL AND attribute_links.sale_id IS NULL AND definition_id IN (' . implode(',', $filters['definition_ids']) . ')', 'left'); $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left'); - $this->db->order_by('definition_id'); } $this->db->where('items.deleted', $filters['is_deleted']); diff --git a/application/models/reports/Detailed_receivings.php b/application/models/reports/Detailed_receivings.php index 748d88042..0a3038115 100644 --- a/application/models/reports/Detailed_receivings.php +++ b/application/models/reports/Detailed_receivings.php @@ -102,10 +102,9 @@ class Detailed_receivings extends Report $this->db->join('items', 'receivings_items_temp.item_id = items.item_id'); if (count($inputs['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR \'|\') AS attribute_values'); + $this->db->select('GROUP_CONCAT(DISTINCT attribute_value ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id = receivings_items_temp.receiving_id AND definition_id IN (' . implode(',', $inputs['definition_ids']) . ')', 'left'); - $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left'); - $this->db->order_by('definition_id'); + $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id'); $this->db->group_by('receivings_items_temp.receiving_id'); } $this->db->where('receivings_items_temp.receiving_id', $value['receiving_id']); diff --git a/application/models/reports/Detailed_sales.php b/application/models/reports/Detailed_sales.php index 3c929b46f..efcf2ed1b 100644 --- a/application/models/reports/Detailed_sales.php +++ b/application/models/reports/Detailed_sales.php @@ -148,10 +148,9 @@ class Detailed_sales extends Report $this->db->from('sales_items_temp'); if (count($inputs['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR \'|\') AS attribute_values'); + $this->db->select('GROUP_CONCAT(DISTINCT attribute_value ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->join('attribute_links', 'attribute_links.item_id = sales_items_temp.item_id AND attribute_links.sale_id = sales_items_temp.sale_id AND definition_id IN (' . implode(',', $inputs['definition_ids']) . ')', 'left'); - $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left'); - $this->db->order_by('definition_id'); + $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id'); $this->db->group_by('sales_items_temp.sale_id'); } $this->db->where('sales_items_temp.sale_id', $value['sale_id']); diff --git a/application/views/attributes/form.php b/application/views/attributes/form.php index f2e5a9d1c..0562e8b77 100644 --- a/application/views/attributes/form.php +++ b/application/views/attributes/form.php @@ -65,7 +65,6 @@ //validation and submit handling $(document).ready(function() { - $('.modal-body').css('overflow-y', 'visible'); var values = []; var definition_id = ; var is_new = definition_id == -1; diff --git a/application/views/attributes/item.php b/application/views/attributes/item.php index 7b8e90484..42748f160 100644 --- a/application/views/attributes/item.php +++ b/application/views/attributes/item.php @@ -18,10 +18,9 @@ foreach($definition_values as $definition_id => $definition_value)