diff --git a/application/controllers/Attributes.php b/application/controllers/Attributes.php
index 44f078e77..394ccd8b9 100644
--- a/application/controllers/Attributes.php
+++ b/application/controllers/Attributes.php
@@ -59,7 +59,10 @@ class Attributes extends Secure_Controller
public function save_definition($definition_id = -1)
{
$definition_flags = 0;
- foreach($this->input->post('definition_flags') as $flag)
+
+ $flags = (empty($this->input->post('definition_flags'))) ? array() : $this->input->post('definition_flags');
+
+ foreach($flags as $flag)
{
$definition_flags |= $flag;
}
diff --git a/application/controllers/Reports.php b/application/controllers/Reports.php
index 9fe6945df..b9515757d 100644
--- a/application/controllers/Reports.php
+++ b/application/controllers/Reports.php
@@ -1191,14 +1191,19 @@ class Reports extends Secure_Controller
public function detailed_sales($start_date, $end_date, $sale_type, $location_id = 'all')
{
- $inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'sale_type' => $sale_type, 'location_id' => $location_id);
+ $definition_names = $this->Attribute->get_definitions_by_flags(Attribute::SHOW_IN_SALES);
+
+ $inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'sale_type' => $sale_type, 'location_id' => $location_id, 'definition_ids' => array_keys($definition_names));
$this->load->model('reports/Detailed_sales');
$model = $this->Detailed_sales;
$model->create($inputs);
- $headers = $this->xss_clean($model->getDataColumns());
+ $columns = $model->getDataColumns();
+ $columns['details'] = array_merge($columns['details'], $definition_names);
+
+ $headers = $this->xss_clean($columns);
$report_data = $model->getData($inputs);
@@ -1313,14 +1318,19 @@ class Reports extends Secure_Controller
public function detailed_receivings($start_date, $end_date, $receiving_type, $location_id = 'all')
{
- $inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'receiving_type' => $receiving_type, 'location_id' => $location_id);
+ $definition_names = $this->Attribute->get_definitions_by_flags(Attribute::SHOW_IN_RECEIVINGS);
+
+ $inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'receiving_type' => $receiving_type, 'location_id' => $location_id, 'definition_ids' => array_keys($definition_names));
$this->load->model('reports/Detailed_receivings');
$model = $this->Detailed_receivings;
$model->create($inputs);
- $headers = $this->xss_clean($model->getDataColumns());
+ $columns = $model->getDataColumns();
+ $columns['details'] = array_merge($columns['details'], $definition_names);
+
+ $headers = $this->xss_clean($columns);
$report_data = $model->getData($inputs);
$summary_data = array();
@@ -1353,13 +1363,15 @@ class Reports extends Secure_Controller
{
$quantity_purchased .= ' [' . $this->Stock_location->get_location_name($drow['item_location']) . ']';
}
- $details_data[$row['receiving_id']][] = $this->xss_clean(array(
+ $details_data[$row['receiving_id']][] = $this->xss_clean(array_merge(array(
$drow['item_number'],
$drow['name'],
$drow['category'],
$quantity_purchased,
to_currency($drow['total']),
- ($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])));
+ ($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])),
+ explode(',', $drow['attribute_values'])
+ ));
}
}
diff --git a/application/libraries/Receiving_lib.php b/application/libraries/Receiving_lib.php
index 4311d7d96..132bb6d35 100644
--- a/application/libraries/Receiving_lib.php
+++ b/application/libraries/Receiving_lib.php
@@ -240,7 +240,7 @@ 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_values' => $this->CI->Attribute->get_link_values($item_id, 'receiving_id', $receiving_id, Attribute::SHOW_IN_RECEIVINGS),
'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 5db5b995d..6b90ac0a4 100644
--- a/application/libraries/Sale_lib.php
+++ b/application/libraries/Sale_lib.php
@@ -843,7 +843,7 @@ 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_values' => $this->CI->Attribute->get_link_values($item_id, 'sale_id', $sale_id, Attribute::SHOW_IN_SALES),
'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 796e075d1..d2d38fe5f 100644
--- a/application/models/Attribute.php
+++ b/application/models/Attribute.php
@@ -164,6 +164,17 @@ class Attribute extends CI_Model
return $this->_to_array($results, 'definition_id', 'definition_name');
}
+ public function get_definitions_by_flags($definition_flags)
+ {
+ $this->db->from('attribute_definitions');
+ $this->db->where('definition_flags &', $definition_flags);
+ $this->db->where('deleted', 0);
+ $this->db->order_by('definition_id');
+ $results = $this->db->get()->result_array();
+
+ return $this->_to_array($results, 'definition_id', 'definition_name');
+ }
+
public function get_definition_names()
{
$this->db->from('attribute_definitions');
@@ -298,11 +309,13 @@ class Attribute extends CI_Model
public function get_link_values($item_id, $sale_receiving_fk, $id, $definition_flags)
{
- $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR ",") AS attribute_values');
+ $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR ", ") AS attribute_values, GROUP_CONCAT(attribute_datetime SEPARATOR ", ") AS attribute_datetimevalues');
$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');
$this->db->where('definition_type <>', GROUP);
+ $this->db->where('deleted', 0);
+
if(!empty($id))
{
$this->db->where($sale_receiving_fk, $id);
@@ -315,7 +328,23 @@ class Attribute extends CI_Model
$this->db->where('item_id', (int) $item_id);
$this->db->where('definition_flags & ', $definition_flags);
- return $this->db->get()->row_object();
+ $results = $this->db->get();
+
+ if ($results->num_rows() > 0)
+ {
+ $row_object = $results->row_object();
+
+ $datetime_values = explode(', ', $row_object->attribute_datetimevalues);
+ $attribute_values = array();
+
+ foreach (array_filter($datetime_values) as $datetime_value)
+ {
+ $attribute_values[] = to_datetime(strtotime($datetime_value));
+ }
+
+ return implode(',', $attribute_values) . $row_object->attribute_values;
+ }
+ return "";
}
public function get_attribute_value($item_id, $definition_id)
diff --git a/application/models/Receiving.php b/application/models/Receiving.php
index 29958d52f..22a813a14 100644
--- a/application/models/Receiving.php
+++ b/application/models/Receiving.php
@@ -88,7 +88,7 @@ class Receiving extends CI_Model
$receivings_items_data = array(
'receiving_id' => $receiving_id,
'item_id' => $item['item_id'],
- 'line' => $item['line'],
+ 'linae' => $item['line'],
'description' => $item['description'],
'serialnumber' => $item['serialnumber'],
'quantity_purchased' => $item['quantity'],
diff --git a/application/models/reports/Detailed_receivings.php b/application/models/reports/Detailed_receivings.php
index 2b1eee10f..dc8eeb9dc 100644
--- a/application/models/reports/Detailed_receivings.php
+++ b/application/models/reports/Detailed_receivings.php
@@ -100,6 +100,13 @@ class Detailed_receivings extends Report
$this->db->select('name, item_number, category, quantity_purchased, serialnumber, total, discount_percent, item_location, receivings_items_temp.receiving_quantity');
$this->db->from('receivings_items_temp');
$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) 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->where('receivings_items_temp.receiving_id', $value['receiving_id']);
$data['details'][$key] = $this->db->get()->result_array();
}
diff --git a/application/models/reports/Detailed_sales.php b/application/models/reports/Detailed_sales.php
index 36ad0234c..fda7a80bf 100644
--- a/application/models/reports/Detailed_sales.php
+++ b/application/models/reports/Detailed_sales.php
@@ -146,7 +146,14 @@ class Detailed_sales extends Report
{
$this->db->select('name, category, quantity_purchased, item_location, serialnumber, description, subtotal, tax, total, cost, profit, discount, discount_type, sale_status');
$this->db->from('sales_items_temp');
- $this->db->where('sale_id', $value['sale_id']);
+ if (count($inputs['definition_ids']) > 0)
+ {
+ $this->db->select('GROUP_CONCAT(attribute_value) 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->where('sales_items_temp.sale_id', $value['sale_id']);
$data['details'][$key] = $this->db->get()->result_array();
$this->db->select('used, earned');
$this->db->from('sales_reward_points');
diff --git a/application/views/partial/bootstrap_tables_locale.php b/application/views/partial/bootstrap_tables_locale.php
index c9f4c9908..3aef29dd1 100644
--- a/application/views/partial/bootstrap_tables_locale.php
+++ b/application/views/partial/bootstrap_tables_locale.php
@@ -33,13 +33,16 @@
formatAllRows: function () {
return "lang->line('tables_all'); ?>";
},
- formatConfirmDelete: function(action) {
-
- return "lang->line((isset($editable) ? $editable : $controller_name). "_confirm_delete")?>" + action;
- },
- formatConfirmRestore : function() {
- return "lang->line((isset($editable) ? $editable : $controller_name). "_confirm_restore")?>";
- }
+ formatConfirmAction: function(action) {
+ if (action == "delete")
+ {
+ return "lang->line((isset($editable) ? $editable : $controller_name). "_confirm_delete")?>";
+ }
+ else
+ {
+ return "lang->line((isset($editable) ? $editable : $controller_name). "_confirm_restore")?>";
+ }
+ }
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales[""]);
diff --git a/application/views/partial/header.php b/application/views/partial/header.php
index 7264c94e3..2392af6b6 100644
--- a/application/views/partial/header.php
+++ b/application/views/partial/header.php
@@ -77,7 +77,7 @@
-
+
diff --git a/public/js/manage_tables.js b/public/js/manage_tables.js
index 060284e72..d3272db87 100644
--- a/public/js/manage_tables.js
+++ b/public/js/manage_tables.js
@@ -144,7 +144,7 @@
var do_action = function(action) {
return function (url, ids) {
- if (confirm($.fn.bootstrapTable.defaults.formatConfirmDelete())) {
+ if (confirm($.fn.bootstrapTable.defaults.formatConfirmAction(action))) {
$.post((url || options.resource) + '/' + action, {'ids[]': ids || selected_ids()}, function (response) {
//delete was successful, remove checkbox rows
if (response.success) {