diff --git a/application/controllers/Config.php b/application/controllers/Config.php index 708d86c93..e6d05cf8d 100644 --- a/application/controllers/Config.php +++ b/application/controllers/Config.php @@ -271,6 +271,7 @@ class Config extends Secure_Controller 'custom9_name' => $this->input->post('custom9_name'), 'custom10_name' => $this->input->post('custom10_name'), 'statistics' => $this->input->post('statistics') != NULL, + 'giftcard_number' => $this->input->post('giftcard_number'), ); $result = $this->Appconfig->batch_save($batch_save_data); diff --git a/application/controllers/Giftcards.php b/application/controllers/Giftcards.php index 50241b65c..53d633a5d 100644 --- a/application/controllers/Giftcards.php +++ b/application/controllers/Giftcards.php @@ -63,10 +63,17 @@ class Giftcards extends Secure_Controller $giftcard_info = $this->Giftcard->get_info($giftcard_id); $data['selected_person_name'] = ($giftcard_id > 0 && isset($giftcard_info->person_id)) ? $giftcard_info->first_name . ' ' . $giftcard_info->last_name : ''; - $data['selected_person_id'] = $giftcard_info->person_id; - $data['giftcard_number'] = $giftcard_id > 0 ? $giftcard_info->giftcard_number : $this->Giftcard->get_max_number()->giftcard_number + 1; - $data['giftcard_id'] = $giftcard_id; - $data['giftcard_value'] = $giftcard_info->value; + $data['selected_person_id'] = $giftcard_info->person_id; + if($this->config->item('giftcard_number') == "random") + { + $data['giftcard_number'] = $giftcard_id > 0 ? $giftcard_info->giftcard_number : ''; + } + else + { + $data['giftcard_number'] = $giftcard_id > 0 ? $giftcard_info->giftcard_number : $this->Giftcard->get_max_number()->giftcard_number + 1; + } + $data['giftcard_id'] = $giftcard_id; + $data['giftcard_value'] = $giftcard_info->value; $data = $this->xss_clean($data); @@ -75,9 +82,16 @@ class Giftcards extends Secure_Controller public function save($giftcard_id = -1) { + $giftcard_number = $this->input->post('giftcard_number'); + + if($giftcard_id == -1 && trim($giftcard_number) == '') + { + $giftcard_number = $this->Giftcard->generate_unique_giftcard_name($this->input->post('value')); + } + $giftcard_data = array( 'record_time' => date('Y-m-d H:i:s'), - 'giftcard_number' => $this->input->post('giftcard_number'), + 'giftcard_number' => $giftcard_number, 'value' => parse_decimals($this->input->post('value')), 'person_id' => $this->input->post('person_id') == '' ? NULL : $this->input->post('person_id') ); @@ -89,12 +103,12 @@ class Giftcards extends Secure_Controller //New giftcard if($giftcard_id == -1) { - echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_adding').' '. + echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_adding') . ' ' . $giftcard_data['giftcard_number'], 'id' => $giftcard_data['giftcard_id'])); } else //Existing giftcard { - echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_updating').' '. + echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_updating') . ' ' . $giftcard_data['giftcard_number'], 'id' => $giftcard_id)); } } @@ -102,7 +116,7 @@ class Giftcards extends Secure_Controller { $giftcard_data = $this->xss_clean($giftcard_data); - echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('giftcards_error_adding_updating').' '. + echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('giftcards_error_adding_updating') . ' ' . $giftcard_data['giftcard_number'], 'id' => -1)); } } @@ -113,7 +127,7 @@ class Giftcards extends Secure_Controller if($this->Giftcard->delete_list($giftcards_to_delete)) { - echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_deleted').' '. + echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_deleted') . ' ' . count($giftcards_to_delete).' '.$this->lang->line('giftcards_one_or_multiple'))); } else diff --git a/application/controllers/Sales.php b/application/controllers/Sales.php index 0624fa8fb..c062b7998 100644 --- a/application/controllers/Sales.php +++ b/application/controllers/Sales.php @@ -195,10 +195,16 @@ class Sales extends Secure_Controller public function add_payment() { $data = array(); - $this->form_validation->set_rules('amount_tendered', 'lang:sales_amount_tendered', 'trim|required|callback_numeric'); $payment_type = $this->input->post('payment_type'); - + if($payment_type != $this->lang->line('sales_giftcard')) + { + $this->form_validation->set_rules('amount_tendered', 'lang:sales_amount_tendered', 'trim|required|callback_numeric'); + } + else + { + $this->form_validation->set_rules('amount_tendered', 'lang:sales_amount_tendered', 'trim|required'); + } if($this->form_validation->run() == FALSE) { if($payment_type == $this->lang->line('sales_giftcard')) @@ -242,7 +248,7 @@ class Sales extends Secure_Controller { $customer_id = $this->sale_lib->get_customer(); $package_id = $this->Customer->get_info($customer_id)->package_id; - if(isset($package_id) && $package_id!=NULL) + if(!empty($package_id)) { $package_name = $this->Customer_rewards->get_name($package_id); $points = $this->Customer->get_info($customer_id)->points; @@ -255,7 +261,7 @@ class Sales extends Secure_Controller if(($cur_rewards_value - $current_payments_with_rewards) <= 0) { - $data['error'] = $this->lang->line('rewards_remaining_balance'). to_currency($cur_rewards_value); + $data['error'] = $this->lang->line('rewards_remaining_balance') . to_currency($cur_rewards_value); } else { @@ -269,7 +275,6 @@ class Sales extends Secure_Controller $this->sale_lib->add_payment($payment_type, $amount_tendered); } } - } else { diff --git a/application/language/ar-EG/config_lang.php b/application/language/ar-EG/config_lang.php index cd1aa0e3a..ca8ecd725 100644 --- a/application/language/ar-EG/config_lang.php +++ b/application/language/ar-EG/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "فاصل الاف"; $lang["config_timezone"] = "المنطقة الزمنية"; $lang["config_top"] = "علوى"; $lang["config_website"] = "موقع الشركة"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/de-CH/config_lang.php b/application/language/de-CH/config_lang.php index 10ea8b090..838c1a38c 100644 --- a/application/language/de-CH/config_lang.php +++ b/application/language/de-CH/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Tausendertrennzeichen"; $lang["config_timezone"] = "Zeitzone"; $lang["config_top"] = "Top"; $lang["config_website"] = "Website"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/de/config_lang.php b/application/language/de/config_lang.php index 70fa91ac5..ef497031d 100644 --- a/application/language/de/config_lang.php +++ b/application/language/de/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Tausendertrennzeichen"; $lang["config_timezone"] = "Zeitzone"; $lang["config_top"] = "Top"; $lang["config_website"] = "Website"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/en/config_lang.php b/application/language/en/config_lang.php index 35537e98b..3c9cfd181 100644 --- a/application/language/en/config_lang.php +++ b/application/language/en/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Thousands Separator"; $lang["config_timezone"] = "Timezone"; $lang["config_top"] = "Top"; $lang["config_website"] = "Website"; +$lang["config_giftcard_number"] = "Gift Card Number"; +$lang["config_giftcard_series"] = "Generate in Series"; +$lang["config_giftcard_random"] = "Generate Random"; \ No newline at end of file diff --git a/application/language/es/config_lang.php b/application/language/es/config_lang.php index caa5a9c20..28be18bc6 100644 --- a/application/language/es/config_lang.php +++ b/application/language/es/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Separador de miles"; $lang["config_timezone"] = "Zona Horaria"; $lang["config_top"] = "Arriba"; $lang["config_website"] = "Sitio Web"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/fr/config_lang.php b/application/language/fr/config_lang.php index f0dafb2c9..499b3c3cc 100644 --- a/application/language/fr/config_lang.php +++ b/application/language/fr/config_lang.php @@ -219,3 +219,4 @@ $lang["config_thousands_separator"] = "Thousands Separator"; $lang["config_timezone"] = "Fuseau Horaire"; $lang["config_top"] = "Top"; $lang["config_website"] = "Site-web"; +$lang["config_giftcard_number"] = ""; \ No newline at end of file diff --git a/application/language/hr-HR/config_lang.php b/application/language/hr-HR/config_lang.php index afe64b4e6..56fad0935 100644 --- a/application/language/hr-HR/config_lang.php +++ b/application/language/hr-HR/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Razdjelnik za tisućice"; $lang["config_timezone"] = "Vremenska zona"; $lang["config_top"] = "Top"; $lang["config_website"] = "web strana"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/hu-HU/config_lang.php b/application/language/hu-HU/config_lang.php index 7265ae24f..f74029809 100644 --- a/application/language/hu-HU/config_lang.php +++ b/application/language/hu-HU/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Ezres elválasztó"; $lang["config_timezone"] = "Időzóna"; $lang["config_top"] = "Felül"; $lang["config_website"] = "Weboldal"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/id/config_lang.php b/application/language/id/config_lang.php index d277e34fb..34f580878 100644 --- a/application/language/id/config_lang.php +++ b/application/language/id/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Pemisah Ribuan"; $lang["config_timezone"] = "Zona Waktu"; $lang["config_top"] = "Atas"; $lang["config_website"] = "Situs Perusahaan"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/nl-BE/config_lang.php b/application/language/nl-BE/config_lang.php index 02ec92d5d..4221ec4b0 100755 --- a/application/language/nl-BE/config_lang.php +++ b/application/language/nl-BE/config_lang.php @@ -219,3 +219,4 @@ $lang["config_thousands_separator"] = "duizenden Separator"; $lang["config_timezone"] = "Tijdzone"; $lang["config_top"] = "Top"; $lang["config_website"] = "Website"; +$lang["config_giftcard_number"] = ""; \ No newline at end of file diff --git a/application/language/pt-BR/config_lang.php b/application/language/pt-BR/config_lang.php index 805e5ce25..1a2311b7b 100644 --- a/application/language/pt-BR/config_lang.php +++ b/application/language/pt-BR/config_lang.php @@ -219,3 +219,5 @@ $lang["config_thousands_separator"] = "Separador de milhar"; $lang["config_timezone"] = "Fuso horário"; $lang["config_top"] = "Topo"; $lang["config_website"] = "Site da internet"; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/ru/config_lang.php b/application/language/ru/config_lang.php index 9f8bbb344..9306d4c85 100644 --- a/application/language/ru/config_lang.php +++ b/application/language/ru/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Thousands Separator"; $lang["config_timezone"] = "Часовой пояс"; $lang["config_top"] = "Top"; $lang["config_website"] = "Веб-сайт"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/sv/config_lang.php b/application/language/sv/config_lang.php index 009e34bbf..97bcbedc4 100644 --- a/application/language/sv/config_lang.php +++ b/application/language/sv/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = ""; $lang["config_timezone"] = ""; $lang["config_top"] = ""; $lang["config_website"] = ""; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/th/config_lang.php b/application/language/th/config_lang.php index d303fdb48..fa4942f7a 100644 --- a/application/language/th/config_lang.php +++ b/application/language/th/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "ตัวคั่นหลักพั $lang["config_timezone"] = "โซนเวลา"; $lang["config_top"] = "ด้านบน"; $lang["config_website"] = "เว็บไซต์"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/tr/config_lang.php b/application/language/tr/config_lang.php index 0ba3883af..f1ed870ec 100644 --- a/application/language/tr/config_lang.php +++ b/application/language/tr/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Thousands Separator"; $lang["config_timezone"] = "Saat Dilimi"; $lang["config_top"] = "Üst"; $lang["config_website"] = "Website"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/language/zh/config_lang.php b/application/language/zh/config_lang.php index a8ebb1965..501e9020a 100755 --- a/application/language/zh/config_lang.php +++ b/application/language/zh/config_lang.php @@ -219,3 +219,6 @@ $lang["config_thousands_separator"] = "Thousands Separator"; $lang["config_timezone"] = "時區"; $lang["config_top"] = "Top"; $lang["config_website"] = "網站"; +$lang["config_giftcard_number"] = ""; +$lang["config_giftcard_series"] = ""; +$lang["config_giftcard_random"] = ""; \ No newline at end of file diff --git a/application/models/Giftcard.php b/application/models/Giftcard.php index 8ff5d3d3a..033cbe72f 100644 --- a/application/models/Giftcard.php +++ b/application/models/Giftcard.php @@ -19,8 +19,10 @@ class Giftcard extends CI_Model public function get_max_number() { $this->db->select_max('giftcard_number'); + $this->db->from('giftcards'); + $this->db->where('giftcard_number REGEXP', "'^[0-9]+$'", FALSE); - return $this->db->get('giftcards')->row(); + return $this->db->get()->row(); } /* @@ -256,5 +258,34 @@ class Giftcard extends CI_Model $this->db->where('giftcard_number', $giftcard_number); $this->db->update('giftcards', array('value' => $value)); } + + /* + Determines if a given giftcard_name esists + */ + public function exists_gitcard_name($giftcard_name) + { + $giftcard_name = strtoupper($giftcard_name); + $this->db->from('giftcards'); + $this->db->where('giftcard_number', $giftcard_name); + $this->db->where('deleted', 0); + + return ($this->db->get()->num_rows() == 1); + } + + /* + Generate unique gift card name/number + */ + public function generate_unique_giftcard_name($value) + { + $value = str_replace('.', 'DE', $value); + $random = bin2hex(openssl_random_pseudo_bytes(3)); + $giftcard_name = (string)$random . '-' . $value; + if($this->exists_gitcard_name($giftcard_name)) + { + $this->generate_unique_giftcard_name($value); + } + + return strtoupper($giftcard_name); + } } ?> diff --git a/application/views/configs/general_config.php b/application/views/configs/general_config.php index 49f99b886..1d7f44ff3 100644 --- a/application/views/configs/general_config.php +++ b/application/views/configs/general_config.php @@ -60,29 +60,29 @@ -