From 57dc2d2b11ebac365e1832767a620438282f0510 Mon Sep 17 00:00:00 2001 From: SteveIreland Date: Sat, 15 Feb 2020 22:29:11 -0500 Subject: [PATCH] Add unique contraint to tax group --- application/controllers/Taxes.php | 15 ++++++++++++++ application/language/en-GB/taxes_lang.php | 1 + application/language/en-US/taxes_lang.php | 1 + .../20200215100000_taxgroupconstraint.php | 20 +++++++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 application/migrations/20200215100000_taxgroupconstraint.php diff --git a/application/controllers/Taxes.php b/application/controllers/Taxes.php index 4c6a6004d..c4adc08d8 100644 --- a/application/controllers/Taxes.php +++ b/application/controllers/Taxes.php @@ -443,6 +443,8 @@ class Taxes extends Secure_Controller $array_save = array(); + $unique_tax_groups = []; + foreach($jurisdiction_id as $key => $val) { $array_save[] = array( @@ -453,6 +455,19 @@ class Taxes extends Secure_Controller 'reporting_authority'=>$this->xss_clean($reporting_authority[$key]), 'tax_group_sequence'=>$this->xss_clean($tax_group_sequence[$key]), 'cascade_sequence'=>$this->xss_clean($cascade_sequence[$key])); + + if (array_search($tax_group[$key], $unique_tax_groups) !== false) + { + echo json_encode(array( + 'success' => FALSE, + 'message' => $this->lang->line('taxes_tax_group_not_unique', $tax_group[$key]) + )); + return; + } + else + { + $unique_tax_groups[] = $tax_group[$key]; + } } $success = $this->Tax_jurisdiction->save_jurisdictions($array_save); diff --git a/application/language/en-GB/taxes_lang.php b/application/language/en-GB/taxes_lang.php index c15469d9b..0b9aefc5b 100644 --- a/application/language/en-GB/taxes_lang.php +++ b/application/language/en-GB/taxes_lang.php @@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "Tax Code changes saved"; $lang["taxes_tax_codes_saved_unsuccessfully"] = "Tax Code changes not saved"; $lang["taxes_tax_excluded"] = "Tax excluded"; $lang["taxes_tax_group"] = "Tax Group"; +$lang["taxes_tax_group_not_unique"] = "Tax Group %1 is not unique"; $lang["taxes_tax_group_sequence"] = "Tax Group Sequence"; $lang["taxes_tax_included"] = "Tax included"; $lang["taxes_tax_jurisdiction"] = "Tax Jurisdiction"; diff --git a/application/language/en-US/taxes_lang.php b/application/language/en-US/taxes_lang.php index c15469d9b..0b9aefc5b 100644 --- a/application/language/en-US/taxes_lang.php +++ b/application/language/en-US/taxes_lang.php @@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "Tax Code changes saved"; $lang["taxes_tax_codes_saved_unsuccessfully"] = "Tax Code changes not saved"; $lang["taxes_tax_excluded"] = "Tax excluded"; $lang["taxes_tax_group"] = "Tax Group"; +$lang["taxes_tax_group_not_unique"] = "Tax Group %1 is not unique"; $lang["taxes_tax_group_sequence"] = "Tax Group Sequence"; $lang["taxes_tax_included"] = "Tax included"; $lang["taxes_tax_jurisdiction"] = "Tax Jurisdiction"; diff --git a/application/migrations/20200215100000_taxgroupconstraint.php b/application/migrations/20200215100000_taxgroupconstraint.php new file mode 100644 index 000000000..b5803ee10 --- /dev/null +++ b/application/migrations/20200215100000_taxgroupconstraint.php @@ -0,0 +1,20 @@ +db->query('ALTER TABLE ' . $this->db->dbprefix('tax_jurisdictions') . ' ADD CONSTRAINT tax_jurisdictions_uq1 UNIQUE (tax_group)'); + } + + public function down() + { + $this->db->query('ALTER TABLE ' . $this->db->dbprefix('tax_jurisdictions') . ' DROP INDEX tax_jurisdictions_uq1'); + } +} +?>