From 8ca5449b797c0e24e7a030f99101a0b85f0b0aae Mon Sep 17 00:00:00 2001 From: jekkos Date: Thu, 20 Jun 2019 18:37:20 +0200 Subject: [PATCH] Add decimals to items search result + fix reports --- application/controllers/Reports.php | 9 ++------- application/helpers/tabular_helper.php | 17 ++++++++++++----- application/models/Attribute.php | 5 +++++ application/models/Item.php | 6 +++++- .../models/reports/Detailed_receivings.php | 1 + application/models/reports/Detailed_sales.php | 3 ++- 6 files changed, 27 insertions(+), 14 deletions(-) diff --git a/application/controllers/Reports.php b/application/controllers/Reports.php index b23399bbc..aba08ca7f 100644 --- a/application/controllers/Reports.php +++ b/application/controllers/Reports.php @@ -1344,9 +1344,7 @@ class Reports extends Secure_Controller $quantity_purchased .= ' [' . $this->Stock_location->get_location_name($drow['item_location']) . ']'; } - $attribute_values = (isset($drow['attribute_values'])) ? $drow['attribute_values'] : ''; - $attribute_values = (isset($drow['attribute_dtvalues'])) ? $attribute_values . '|' . $drow['attribute_dtvalues'] : $attribute_values; - $attribute_values = expand_attribute_values($definition_names, $attribute_values); + $attribute_values = expand_attribute_values($definition_names, $drow); $details_data[$row['sale_id']][] = $this->xss_clean(array_merge(array( $drow['name'], @@ -1462,10 +1460,7 @@ class Reports extends Secure_Controller $quantity_purchased .= ' [' . $this->Stock_location->get_location_name($drow['item_location']) . ']'; } - $attribute_values = (isset($drow['attribute_values'])) ? $drow['attribute_values'] : ''; - $attribute_values = (isset($drow['attribute_dtvalues'])) ? $attribute_values . '|' . $drow['attribute_dtvalues'] : $attribute_values; - - $attribute_values = expand_attribute_values($definition_names, $attribute_values); + $attribute_values = expand_attribute_values($definition_names, $drow); $details_data[$row['receiving_id']][] = $this->xss_clean(array_merge(array( $drow['item_number'], diff --git a/application/helpers/tabular_helper.php b/application/helpers/tabular_helper.php index 8be8afd73..5d5055579 100644 --- a/application/helpers/tabular_helper.php +++ b/application/helpers/tabular_helper.php @@ -450,10 +450,8 @@ function get_item_data_row($item) ) ); - $attribute_values = (property_exists($item, 'attribute_values')) ? $item->attribute_values : ""; - $attribute_values = (property_exists($item, 'attribute_dtvalues')) ? $attribute_values . '|' . $item->attribute_dtvalues : $attribute_values; + return $columns + expand_attribute_values($definition_names, (array) $item) + $icons; - return $columns + expand_attribute_values($definition_names, $attribute_values) + $icons; } @@ -535,9 +533,18 @@ function get_item_kit_data_row($item_kit) ); } -function expand_attribute_values($definition_names, $attribute_values) +function concat_attribute_value($columns, $row) { + $attribute_values = ''; + foreach($columns as $column) { + $attribute_values .= (isset($row[$column])) ? $row[$column] : ''; + } + + return explode('|', $attribute_values); +} + +function expand_attribute_values($definition_names, $row) { - $values = explode('|', $attribute_values); + $values = concat_attribute_value(array('attribute_values', 'attribute_dtvalues', 'attribute_dvalues'), $row); $indexed_values = array(); foreach($values as $attribute_value) diff --git a/application/models/Attribute.php b/application/models/Attribute.php index 8840e0c22..ff244cb88 100644 --- a/application/models/Attribute.php +++ b/application/models/Attribute.php @@ -550,6 +550,11 @@ class Attribute extends CI_Model 'item_id' => empty($item_id) ? NULL : $item_id, 'definition_id' => $definition_id)); } + else + { + $this->db->where('attribute_id', $attribute_id); + $this->db->update('attribute_values', array('attribute_value' => $attribute_value)); + } $this->db->trans_complete(); diff --git a/application/models/Item.php b/application/models/Item.php index b9c7c087b..6fe326e99 100644 --- a/application/models/Item.php +++ b/application/models/Item.php @@ -195,6 +195,7 @@ class Item extends CI_Model $format = $this->db->escape(dateformat_mysql()); $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\'_\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, DATE_FORMAT(attribute_date, $format)) SEPARATOR '|') AS attribute_dtvalues"); + $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, attribute_decimal) SEPARATOR '|') AS attribute_dvalues"); $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'); } @@ -281,6 +282,7 @@ class Item extends CI_Model { $this->db->select('items.*'); $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR \'|\') AS attribute_values'); + $this->db->select('GROUP_CONCAT(attribute_decimal SEPARATOR \'|\') AS attribute_dvalues'); $this->db->select('GROUP_CONCAT(attribute_date SEPARATOR \'|\') AS attribute_dtvalues'); $this->db->select('suppliers.company_name'); $this->db->from('items'); @@ -377,10 +379,12 @@ class Item extends CI_Model */ public function get_multiple_info($item_ids, $location_id) { + $format = $this->db->escape(dateformat_mysql()); $this->db->select('items.*'); $this->db->select('company_name'); $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\'_\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); - $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\'_\', definition_id, attribute_date) ORDER BY definition_id SEPARATOR \'|\') AS attribute_dtvalues'); + $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, DATE_FORMAT(attribute_date, $format)) ORDER BY definition_id SEPARATOR '|') AS attribute_dtvalues"); + $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\'_\', definition_id, attribute_decimal) ORDER BY definition_id SEPARATOR \'|\') AS attribute_dvalues'); $this->db->select('quantity'); $this->db->from('items'); $this->db->join('suppliers', 'suppliers.person_id = items.supplier_id', 'left'); diff --git a/application/models/reports/Detailed_receivings.php b/application/models/reports/Detailed_receivings.php index f4466af4f..d509ebd8f 100644 --- a/application/models/reports/Detailed_receivings.php +++ b/application/models/reports/Detailed_receivings.php @@ -105,6 +105,7 @@ class Detailed_receivings extends Report $format = $this->db->escape(dateformat_mysql()); $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, attribute_value) ORDER BY definition_id SEPARATOR '|') AS attribute_values"); $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, DATE_FORMAT(attribute_date, $format)) SEPARATOR '|') AS attribute_dtvalues"); + $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, attribute_decimal SEPARATOR '|') AS attribute_dvalues"); $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->group_by('receivings_items_temp.receiving_id, receivings_items_temp.item_id'); diff --git a/application/models/reports/Detailed_sales.php b/application/models/reports/Detailed_sales.php index 6121fb4b7..397f5b3e6 100644 --- a/application/models/reports/Detailed_sales.php +++ b/application/models/reports/Detailed_sales.php @@ -151,8 +151,9 @@ class Detailed_sales extends Report $format = $this->db->escape(dateformat_mysql()); $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, attribute_value) ORDER BY definition_id SEPARATOR '|') AS attribute_values"); $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, DATE_FORMAT(attribute_date, $format)) SEPARATOR '|') AS attribute_dtvalues"); + $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, attribute_decimal SEPARATOR '|') AS attribute_dvalues"); $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->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id'); $this->db->group_by('sales_items_temp.sale_id, sales_items_temp.item_id'); } $this->db->where('sales_items_temp.sale_id', $value['sale_id']);