From d3d051ee72d6f3402148991832c72fa4f8520237 Mon Sep 17 00:00:00 2001 From: jekkos Date: Wed, 30 Jan 2019 09:15:17 +0100 Subject: [PATCH] Fix loading attribute values in item search (#2232) --- application/controllers/Items.php | 15 +-------------- application/controllers/Reports.php | 4 +++- application/helpers/tabular_helper.php | 15 +++++++++++---- application/libraries/Receiving_lib.php | 5 ++++- application/libraries/Sale_lib.php | 17 ++++++----------- application/models/Attribute.php | 13 +++++-------- application/models/Item.php | 5 +++-- .../models/reports/Detailed_receivings.php | 4 +++- application/models/reports/Detailed_sales.php | 4 +++- .../{libraries => models}/tokens/Token.php | 0 .../tokens/Token_customer.php | 0 .../tokens/Token_invoice_count.php | 0 .../tokens/Token_invoice_sequence.php | 0 .../tokens/Token_quote_sequence.php | 0 .../tokens/Token_suspended_invoice_count.php | 0 .../tokens/Token_work_order_sequence.php | 0 .../tokens/Token_year_invoice_count.php | 0 application/views/receivings/receiving.php | 2 +- application/views/sales/register.php | 2 +- 19 files changed, 41 insertions(+), 45 deletions(-) rename application/{libraries => models}/tokens/Token.php (100%) rename application/{libraries => models}/tokens/Token_customer.php (100%) rename application/{libraries => models}/tokens/Token_invoice_count.php (100%) rename application/{libraries => models}/tokens/Token_invoice_sequence.php (100%) rename application/{libraries => models}/tokens/Token_quote_sequence.php (100%) rename application/{libraries => models}/tokens/Token_suspended_invoice_count.php (100%) rename application/{libraries => models}/tokens/Token_work_order_sequence.php (100%) rename application/{libraries => models}/tokens/Token_year_invoice_count.php (100%) diff --git a/application/controllers/Items.php b/application/controllers/Items.php index ee68d077f..5700331d8 100644 --- a/application/controllers/Items.php +++ b/application/controllers/Items.php @@ -484,19 +484,6 @@ class Items extends Secure_Controller } $default_pack_name = $this->lang->line('items_default_pack_name'); - - if ($item_id == -1) - { - // Set low_sell_item_id to -1 for a new item so that when it is saved the item will point to itself for the - // low sell item. - $low_sell_item_id = $this->input->post('low_sell_item_id') == NULL ? -1 : $this->input->post('low_sell_item_id'); - } - else - { - // On an existing item where the low sell item is not prompted for always force the item_id as the low sell item Id - $low_sell_item_id = $this->input->post('low_sell_item_id') == NULL ? $item_id : $this->input->post('low_sell_item_id'); - } - //Save item data $item_data = array( 'name' => $this->input->post('name'), @@ -514,7 +501,7 @@ class Items extends Secure_Controller 'is_serialized' => $this->input->post('is_serialized') != NULL, 'qty_per_pack' => $this->input->post('qty_per_pack') == NULL ? 1 : $this->input->post('qty_per_pack'), 'pack_name' => $this->input->post('pack_name') == NULL ? $default_pack_name : $this->input->post('pack_name'), - 'low_sell_item_id' => $low_sell_item_id, + 'low_sell_item_id' => $this->input->post('low_sell_item_id') == NULL ? $item_id : $this->input->post('low_sell_item_id'), 'deleted' => $this->input->post('is_deleted') != NULL, 'hsn_code' => $this->input->post('hsn_code') == NULL ? '' : $this->input->post('hsn_code') ); diff --git a/application/controllers/Reports.php b/application/controllers/Reports.php index 822c262a5..607f67800 100644 --- a/application/controllers/Reports.php +++ b/application/controllers/Reports.php @@ -1345,6 +1345,7 @@ class Reports extends Secure_Controller } $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); $details_data[$row['sale_id']][] = $this->xss_clean(array_merge(array( @@ -1462,6 +1463,8 @@ class Reports extends Secure_Controller } $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); $details_data[$row['receiving_id']][] = $this->xss_clean(array_merge(array( @@ -1471,7 +1474,6 @@ class Reports extends Secure_Controller $quantity_purchased, to_currency($drow['total']), ($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])), $attribute_values)); - } } diff --git a/application/helpers/tabular_helper.php b/application/helpers/tabular_helper.php index a3107c286..8ab99dafd 100644 --- a/application/helpers/tabular_helper.php +++ b/application/helpers/tabular_helper.php @@ -444,7 +444,7 @@ function get_item_data_row($item) ); $attribute_values = (property_exists($item, 'attribute_values')) ? $item->attribute_values : ""; - $attribute_values = (property_exists($item, 'attribute_datetimevalues')) ? $item->attribute_datetimevalues : $attribute_values; + $attribute_values = (property_exists($item, 'attribute_dtvalues')) ? $attribute_values . $item->attribute_dtvalues : $attribute_values; return $columns + expand_attribute_values($definition_names, $attribute_values) + $icons; } @@ -531,14 +531,21 @@ function expand_attribute_values($definition_names, $attribute_values) foreach($values as $attribute_value) { $exploded_value = explode('_', $attribute_value); - $indexed_values[$exploded_value[0]] = isset($exploded_value[1]) ? $exploded_value[1] : '-'; + if (sizeof($exploded_value) > 1) + { + $indexed_values[$exploded_value[0]] = $exploded_value[1]; + } } $attribute_values = array(); foreach($definition_names as $definition_id => $definition_name) { - $attribute_value = isset($indexed_values[$definition_id]) ? $indexed_values[$definition_id] : '-'; - $attribute_values["$definition_id"] = $attribute_value; + if (isset($indexed_values[$definition_id])) + { + $attribute_value = $indexed_values[$definition_id]; + $attribute_values["$definition_id"] = $attribute_value; + } + } return $attribute_values; } diff --git a/application/libraries/Receiving_lib.php b/application/libraries/Receiving_lib.php index a7982d6c3..d908fc06a 100644 --- a/application/libraries/Receiving_lib.php +++ b/application/libraries/Receiving_lib.php @@ -231,6 +231,8 @@ class Receiving_lib $receiving_quantity = $item_info->receiving_quantity; } + $attribute_links = $this->CI->Attribute->get_link_values($item_id, 'receiving_id', $receiving_id, Attribute::SHOW_IN_RECEIVINGS)->row_object(); + $item = array($insertkey => array( 'item_id' => $item_id, 'item_location' => $item_location, @@ -240,7 +242,8 @@ class Receiving_lib 'name' => $item_info->name, 'description' => $description != NULL ? $description: $item_info->description, 'serialnumber' => $serialnumber != NULL ? $serialnumber: '', - 'attribute_values' => $this->CI->Attribute->get_link_values($item_id, 'receiving_id', $receiving_id, Attribute::SHOW_IN_RECEIVINGS), + 'attribute_values' => $attribute_links->attribute_values, + 'attribute_dtvalues' => $attribute_links->attribute_dtvalues, 'allow_alt_description' => $item_info->allow_alt_description, 'is_serialized' => $item_info->is_serialized, 'quantity' => $quantity, diff --git a/application/libraries/Sale_lib.php b/application/libraries/Sale_lib.php index a9f65ed4f..fa455365e 100644 --- a/application/libraries/Sale_lib.php +++ b/application/libraries/Sale_lib.php @@ -719,6 +719,8 @@ class Sale_lib return FALSE; } + $price = 0.00; + $cost_price = 0.00; $item_id = $item_info->item_id; $item_type = $item_info->item_type; $stock_type = $item_info->stock_type; @@ -745,16 +747,7 @@ class Sale_lib $price = $item_info->unit_price; $cost_price = $item_info->cost_price; } - else - { - $price = 0.00; - $cost_price = 0.00; - } - } - else - { - $price= 0.00; - $cost_price = 0.00; + } if($price_override != NULL) @@ -840,6 +833,7 @@ class Sale_lib $item_info->name .= NAME_SEPARATOR . $item_info->pack_name; } + $attribute_links = $this->CI->Attribute->get_link_values($item_id, 'sale_id', $sale_id, Attribute::SHOW_IN_SALES)->row_object(); //Item already exists and is not serialized, add to quantity if(!$itemalreadyinsale || $item_info->is_serialized) @@ -851,7 +845,8 @@ class Sale_lib 'line' => $insertkey, 'name' => $item_info->name, 'item_number' => $item_info->item_number, - 'attribute_values' => $this->CI->Attribute->get_link_values($item_id, 'sale_id', $sale_id, Attribute::SHOW_IN_SALES), + 'attribute_values' => $attribute_links->attribute_values, + 'attribute_dtvalues' => $attribute_links->attribute_dtvalues, 'description' => $description != NULL ? $description : $item_info->description, 'serialnumber' => $serialnumber != NULL ? $serialnumber : '', 'allow_alt_description' => $item_info->allow_alt_description, diff --git a/application/models/Attribute.php b/application/models/Attribute.php index 65d62b35b..cb087dfc8 100644 --- a/application/models/Attribute.php +++ b/application/models/Attribute.php @@ -453,8 +453,8 @@ class Attribute extends CI_Model public function get_link_values($item_id, $sale_receiving_fk, $id, $definition_flags) { $format = $this->db->escape(dateformat_mysql()); - $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR ', ') AS attribute_values'); - $this->db->select("GROUP_CONCAT(DATE_FORMAT(attribute_datetime, $format) SEPARATOR ', ') AS attribute_datetimevalues"); + $this->db->select("GROUP_CONCAT(attribute_value SEPARATOR ', ') AS attribute_values"); + $this->db->select("GROUP_CONCAT(DATE_FORMAT(attribute_datetime, $format) SEPARATOR ', ') AS attribute_dtvalues"); $this->db->from('attribute_links'); $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id'); $this->db->join('attribute_definitions', 'attribute_definitions.definition_id = attribute_links.definition_id'); @@ -521,7 +521,7 @@ class Attribute extends CI_Model public function save_value($attribute_value, $definition_id, $item_id = FALSE, $attribute_id = FALSE, $definition_type = DROPDOWN) { - $this->db->trans_start(); + $this->db->trans_start(); if(empty($attribute_id) || empty($item_id)) { @@ -531,7 +531,6 @@ class Attribute extends CI_Model if(empty($attribute_id_check)) { $this->db->insert('attribute_values', array('attribute_value' => $attribute_value)); - $attribute_id = $this->db->insert_id(); } else { @@ -541,14 +540,14 @@ class Attribute extends CI_Model else if($definition_type == DECIMAL) { $this->db->insert('attribute_values', array('attribute_decimal' => $attribute_value)); - $attribute_id = $this->db->insert_id(); } else { $this->db->insert('attribute_values', array('attribute_datetime' => date('Y-m-d H:i:s', strtotime($attribute_value)))); - $attribute_id = $this->db->insert_id(); } + $attribute_id = $this->db->insert_id(); + $this->db->insert('attribute_links', array( 'attribute_id' => empty($attribute_id) ? NULL : $attribute_id, 'item_id' => empty($item_id) ? NULL : $item_id, @@ -557,8 +556,6 @@ class Attribute extends CI_Model 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 adddb9a5e..0bcf9a89b 100644 --- a/application/models/Item.php +++ b/application/models/Item.php @@ -194,7 +194,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_datetime, $format)) SEPARATOR '|') AS attribute_datetimevalues"); + $this->db->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, DATE_FORMAT(attribute_datetime, $format)) SEPARATOR '|') AS attribute_dtvalues"); $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 +281,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_datetime SEPARATOR \'|\') AS attribute_dtvalues'); $this->db->select('suppliers.company_name'); $this->db->from('items'); $this->db->join('suppliers', 'suppliers.person_id = items.supplier_id', 'left'); @@ -379,7 +380,7 @@ class Item extends CI_Model $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('items.category'); + $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\':\', definition_id, attribute_datetime) ORDER BY definition_id SEPARATOR \'|\') AS attribute_dtvalues'); $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 c2f3f795b..dfb8f645a 100644 --- a/application/models/reports/Detailed_receivings.php +++ b/application/models/reports/Detailed_receivings.php @@ -102,7 +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(DISTINCT CONCAT_WS(\':\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); + $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_datetime, $format)) SEPARATOR '|') AS attribute_dtvalues"); $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 a63655fa1..b53306413 100644 --- a/application/models/reports/Detailed_sales.php +++ b/application/models/reports/Detailed_sales.php @@ -148,7 +148,9 @@ class Detailed_sales extends Report $this->db->from('sales_items_temp'); if (count($inputs['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\':\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); + $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_datetime, $format)) SEPARATOR '|') AS attribute_datetimevalues"); $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->group_by('sales_items_temp.sale_id, sales_items_temp.item_id'); diff --git a/application/libraries/tokens/Token.php b/application/models/tokens/Token.php similarity index 100% rename from application/libraries/tokens/Token.php rename to application/models/tokens/Token.php diff --git a/application/libraries/tokens/Token_customer.php b/application/models/tokens/Token_customer.php similarity index 100% rename from application/libraries/tokens/Token_customer.php rename to application/models/tokens/Token_customer.php diff --git a/application/libraries/tokens/Token_invoice_count.php b/application/models/tokens/Token_invoice_count.php similarity index 100% rename from application/libraries/tokens/Token_invoice_count.php rename to application/models/tokens/Token_invoice_count.php diff --git a/application/libraries/tokens/Token_invoice_sequence.php b/application/models/tokens/Token_invoice_sequence.php similarity index 100% rename from application/libraries/tokens/Token_invoice_sequence.php rename to application/models/tokens/Token_invoice_sequence.php diff --git a/application/libraries/tokens/Token_quote_sequence.php b/application/models/tokens/Token_quote_sequence.php similarity index 100% rename from application/libraries/tokens/Token_quote_sequence.php rename to application/models/tokens/Token_quote_sequence.php diff --git a/application/libraries/tokens/Token_suspended_invoice_count.php b/application/models/tokens/Token_suspended_invoice_count.php similarity index 100% rename from application/libraries/tokens/Token_suspended_invoice_count.php rename to application/models/tokens/Token_suspended_invoice_count.php diff --git a/application/libraries/tokens/Token_work_order_sequence.php b/application/models/tokens/Token_work_order_sequence.php similarity index 100% rename from application/libraries/tokens/Token_work_order_sequence.php rename to application/models/tokens/Token_work_order_sequence.php diff --git a/application/libraries/tokens/Token_year_invoice_count.php b/application/models/tokens/Token_year_invoice_count.php similarity index 100% rename from application/libraries/tokens/Token_year_invoice_count.php rename to application/models/tokens/Token_year_invoice_count.php diff --git a/application/views/receivings/receiving.php b/application/views/receivings/receiving.php index ffaffd550..d77291598 100644 --- a/application/views/receivings/receiving.php +++ b/application/views/receivings/receiving.php @@ -136,7 +136,7 @@ if (isset($success)) ');?> -
+
diff --git a/application/views/sales/register.php b/application/views/sales/register.php index 14716557e..f968d8fd5 100644 --- a/application/views/sales/register.php +++ b/application/views/sales/register.php @@ -156,7 +156,7 @@ if(isset($success)) ?> - +