From cdd966878d4f734e0c6e9eb3299fe7adc0dcb5a4 Mon Sep 17 00:00:00 2001 From: Steve Ireland Date: Sat, 21 Apr 2018 17:46:39 -0400 Subject: [PATCH] Various fixes for the item kit feature. --- application/controllers/Item_kits.php | 20 ++++-- application/helpers/tabular_helper.php | 8 +-- application/libraries/Sale_lib.php | 17 +++-- application/models/Item.php | 6 +- application/views/sales/invoice.php | 52 +++++++++------ application/views/sales/invoice_email.php | 11 ++-- application/views/sales/quote.php | 38 +++++++---- application/views/sales/quote_email.php | 29 +++++---- application/views/sales/receipt_default.php | 65 +++++++++---------- application/views/sales/receipt_email.php | 68 +++++++++----------- application/views/sales/work_order.php | 45 +++++++------ application/views/sales/work_order_email.php | 23 ++++--- 12 files changed, 220 insertions(+), 162 deletions(-) diff --git a/application/controllers/Item_kits.php b/application/controllers/Item_kits.php index b2d3d7072..4094c38fa 100644 --- a/application/controllers/Item_kits.php +++ b/application/controllers/Item_kits.php @@ -14,9 +14,11 @@ class Item_kits extends Secure_Controller */ private function _add_totals_to_item_kit($item_kit) { + $kit_item_info = $this->Item->get_info($item_kit->item_id); + $item_kit->total_cost_price = 0; - $item_kit->total_unit_price = 0; - + $item_kit->total_unit_price = $kit_item_info->unit_price; + foreach($this->Item_kit_items->get_info($item_kit->item_kit_id) as $item_kit_item) { $item_info = $this->Item->get_info($item_kit_item['item_id']); @@ -24,11 +26,17 @@ class Item_kits extends Secure_Controller { $item_info->$property = $this->xss_clean($value); } - + $item_kit->total_cost_price += $item_info->cost_price * $item_kit_item['quantity']; - $item_kit->total_unit_price += $item_info->unit_price * $item_kit_item['quantity']; + + if($item_kit->price_option == PRICE_OPTION_ALL || ($item_kit->price_option == PRICE_OPTION_KIT_STOCK && $item_info->stock_type == HAS_STOCK )) { + $item_kit->total_unit_price += $item_info->unit_price * $item_kit_item['quantity']; + } } + $discount_fraction = bcdiv($item_kit->kit_discount_percent, 100); + $item_kit->total_unit_price = $item_kit->total_unit_price - round(bcmul($item_kit->total_unit_price, $discount_fraction), totals_decimals(), PHP_ROUND_HALF_UP); + return $item_kit; } @@ -50,6 +58,8 @@ class Item_kits extends Secure_Controller $sort = $this->input->get('sort'); $order = $this->input->get('order'); + error_log('>>>search started'); + $item_kits = $this->Item_kit->search($search, $limit, $offset, $sort, $order); $total_rows = $this->Item_kit->get_found_rows($search); @@ -75,7 +85,7 @@ class Item_kits extends Secure_Controller { // calculate the total cost and retail price of the Kit so it can be added to the table refresh $item_kit = $this->_add_totals_to_item_kit($this->Item_kit->get_info($row_id)); - + echo json_encode(get_item_kit_data_row($item_kit)); } diff --git a/application/helpers/tabular_helper.php b/application/helpers/tabular_helper.php index 7943dd83d..9e1101983 100644 --- a/application/helpers/tabular_helper.php +++ b/application/helpers/tabular_helper.php @@ -490,8 +490,8 @@ function get_item_kits_manage_table_headers() array('item_kit_id' => $CI->lang->line('item_kits_kit')), array('name' => $CI->lang->line('item_kits_name')), array('description' => $CI->lang->line('item_kits_description')), - array('cost_price' => $CI->lang->line('items_cost_price'), 'sortable' => FALSE), - array('unit_price' => $CI->lang->line('items_unit_price'), 'sortable' => FALSE) + array('total_cost_price' => $CI->lang->line('items_cost_price'), 'sortable' => FALSE), + array('total_unit_price' => $CI->lang->line('items_unit_price'), 'sortable' => FALSE) ); return transform_headers($headers); @@ -509,8 +509,8 @@ function get_item_kit_data_row($item_kit) 'item_kit_id' => $item_kit->item_kit_id, 'name' => $item_kit->name, 'description' => $item_kit->description, - 'cost_price' => to_currency($item_kit->total_cost_price), - 'unit_price' => to_currency($item_kit->total_unit_price), + 'total_cost_price' => to_currency($item_kit->total_cost_price), + 'total_unit_price' => to_currency($item_kit->total_unit_price), 'edit' => anchor($controller_name."/view/$item_kit->item_kit_id", '', array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line($controller_name.'_update')) )); diff --git a/application/libraries/Sale_lib.php b/application/libraries/Sale_lib.php index 1d4a919a7..d342002e2 100644 --- a/application/libraries/Sale_lib.php +++ b/application/libraries/Sale_lib.php @@ -68,7 +68,7 @@ class Sale_lib foreach($cart as $k=>$v) { - if($v['print_option'] == '0') + if($v['print_option'] == PRINT_YES) { $filtered_cart[] = $v; } @@ -683,7 +683,7 @@ class Sale_lib $this->CI->session->unset_userdata('sales_rewards_remainder'); } - public function add_item(&$item_id, $quantity = 1, $item_location, $discount = 0, $price_mode = PRICE_MODE_STANDARD, $kit_price_option = NULL, $kit_print_option = NULL, $price_override = NULL, $description = NULL, $serialnumber = NULL, $include_deleted = FALSE ) + public function add_item(&$item_id, $quantity = 1, $item_location, $discount = 0, $price_mode = PRICE_MODE_STANDARD, $kit_price_option = NULL, $kit_print_option = NULL, $price_override = NULL, $description = NULL, $serialnumber = NULL, $include_deleted = FALSE, $print_option = NULL ) { $item_info = $this->CI->Item->get_info_by_id_or_number($item_id); @@ -802,7 +802,14 @@ class Sale_lib } else { - $print_option_selected = PRINT_YES; + if ($print_option != NULL) + { + $print_option_selected = $print_option; + } + else + { + $print_option_selected = PRINT_YES; + } } $total = $this->get_item_total($quantity, $price, $discount); @@ -981,7 +988,7 @@ class Sale_lib foreach($this->CI->Sale->get_sale_items_ordered($sale_id)->result() as $row) { - $this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, PRICE_MODE_STANDARD, NULL, NULL, $row->item_unit_price, $row->description, $row->serialnumber, TRUE); + $this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, PRICE_MODE_STANDARD, NULL, NULL, $row->item_unit_price, $row->description, $row->serialnumber, TRUE, $row->print_option); } foreach($this->CI->Sale->get_sale_payments($sale_id)->result() as $row) @@ -1009,7 +1016,7 @@ class Sale_lib $this->empty_cart(); foreach($this->CI->Sale->get_sale_items_ordered($sale_id)->result() as $row) { - $this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, PRICE_MODE_STANDARD, NULL, NULL, $row->item_unit_price, $row->description, $row->serialnumber, TRUE); + $this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, PRICE_MODE_STANDARD, NULL, NULL, $row->item_unit_price, $row->description, $row->serialnumber, TRUE, $row->print_option); } return $this->CI->session->userdata('sales_cart'); diff --git a/application/models/Item.php b/application/models/Item.php index 9eb0873f8..48589a28d 100644 --- a/application/models/Item.php +++ b/application/models/Item.php @@ -729,7 +729,7 @@ class Item extends CI_Model $this->db->select('item_id, name'); $this->db->from('items'); $this->db->where('deleted', $filters['is_deleted']); - $this->db->where_in('item_type', $non_kit); // standard, exclude kit items since kits will be picked up later + $this->db->where('item_type', ITEM_KIT); $this->db->like('name', $search); $this->db->order_by('name', 'asc'); foreach($this->db->get()->result() as $row) @@ -741,6 +741,7 @@ class Item extends CI_Model $this->db->from('items'); $this->db->where('deleted', $filters['is_deleted']); $this->db->like('item_number', $search); + $this->db->where('item_type', ITEM_KIT); $this->db->order_by('item_number', 'asc'); foreach($this->db->get()->result() as $row) { @@ -753,6 +754,7 @@ class Item extends CI_Model $this->db->select('category'); $this->db->from('items'); $this->db->where('deleted', $filters['is_deleted']); + $this->db->where('item_type', ITEM_KIT); $this->db->distinct(); $this->db->like('category', $search); $this->db->order_by('category', 'asc'); @@ -778,6 +780,7 @@ class Item extends CI_Model $this->db->select('item_id, name, description'); $this->db->from('items'); $this->db->where('deleted', $filters['is_deleted']); + $this->db->where('item_type', ITEM_KIT); $this->db->like('description', $search); $this->db->order_by('description', 'asc'); foreach($this->db->get()->result() as $row) @@ -794,6 +797,7 @@ class Item extends CI_Model { $this->db->from('items'); $this->db->group_start(); + $this->db->where('item_type', ITEM_KIT); $this->db->like('custom1', $search); $this->db->or_like('custom2', $search); $this->db->or_like('custom3', $search); diff --git a/application/views/sales/invoice.php b/application/views/sales/invoice.php index c213cfd02..579a6c6cc 100755 --- a/application/views/sales/invoice.php +++ b/application/views/sales/invoice.php @@ -117,28 +117,40 @@ $(document).ready(function() $item) { - ?> - - - - - - - 0): ?> - - - - - - - -
- + ?> + + + + + + + + + 0): ?> + + + + + - + + + +
+ + + + diff --git a/application/views/sales/invoice_email.php b/application/views/sales/invoice_email.php index 6d169fd1c..ecb4ac91d 100644 --- a/application/views/sales/invoice_email.php +++ b/application/views/sales/invoice_email.php @@ -81,19 +81,22 @@ $item) { - ?> + if($item['print_option'] == PRINT_YES) + { + ?> - + 0): ?> - + - diff --git a/application/views/sales/quote.php b/application/views/sales/quote.php index bd49b03b6..ba701ceb0 100644 --- a/application/views/sales/quote.php +++ b/application/views/sales/quote.php @@ -117,30 +117,42 @@ if (isset($error_message)) $item) { - ?> + if($item['print_option'] == PRINT_YES) + { + ?> - + + - + 0): ?> - + + - + + - - - -
- - - + + + +
+ + + + diff --git a/application/views/sales/quote_email.php b/application/views/sales/quote_email.php index d7dd443ee..8ca6a5190 100644 --- a/application/views/sales/quote_email.php +++ b/application/views/sales/quote_email.php @@ -81,19 +81,22 @@ $item) { - ?> - - - - - - - 0): ?> - - - - - + + + + + + + 0): ?> + + + + + diff --git a/application/views/sales/receipt_default.php b/application/views/sales/receipt_default.php index 52bb692f5..9c1bd2848 100644 --- a/application/views/sales/receipt_default.php +++ b/application/views/sales/receipt_default.php @@ -65,43 +65,42 @@ $item) { - ?> - - - - - config->item('receipt_show_total_discount') ? 'total' : 'discounted_total')]); ?> - - - config->item('receipt_show_description')) - { - ?> - - - config->item('receipt_show_serialnumber')) - { - ?> - - - - 0) + if($item['print_option'] == PRINT_YES) { - ?> + ?> - lang->line("sales_discount_included")?> - + + + + config->item('receipt_show_total_discount') ? 'total' : 'discounted_total')]); ?> - + config->item('receipt_show_description')) { + ?> + + + config->item('receipt_show_serialnumber')) { + ?> + + + + 0) { + ?> + + lang->line("sales_discount_included") ?> + + + - diff --git a/application/views/sales/receipt_email.php b/application/views/sales/receipt_email.php index 080760809..2115c0e51 100644 --- a/application/views/sales/receipt_email.php +++ b/application/views/sales/receipt_email.php @@ -60,47 +60,43 @@ $item) { - ?> - - - - - config->item('receipt_show_total_discount') ? 'total' : 'discounted_total')]); ?> - - - config->item('receipt_show_description')) - { - ?> - - - config->item('receipt_show_serialnumber')) - { - ?> - - - - 0) + if($item['print_option'] == PRINT_YES) { - ?> + ?> - lang->line("sales_discount_included")?> - + + + + config->item('receipt_show_total_discount') ? 'total' : 'discounted_total')]); ?> - + config->item('receipt_show_description')) { + ?> + + + config->item('receipt_show_serialnumber')) { + ?> + + + + 0) { + ?> + + lang->line("sales_discount_included") ?> + + + - - - config->item('receipt_show_total_discount') && $discount > 0) { ?> diff --git a/application/views/sales/work_order.php b/application/views/sales/work_order.php index c8c49668a..9ead64341 100644 --- a/application/views/sales/work_order.php +++ b/application/views/sales/work_order.php @@ -112,26 +112,35 @@ if (isset($error_message)) $item) { + if($item['print_option'] == PRINT_YES) + { ?> - - - - - - - - + + + + + + + + + + - - - -
- - - + + + +
+ + + + diff --git a/application/views/sales/work_order_email.php b/application/views/sales/work_order_email.php index 97c890eaa..7eb069a11 100644 --- a/application/views/sales/work_order_email.php +++ b/application/views/sales/work_order_email.php @@ -78,16 +78,19 @@ $item) { - ?> - - - - - - - - - + + + + + + + + +