[-] BO : you cannot create 2 states with the same iso code in the same country anymore #PSCFV-53

This commit is contained in:
dMetzger
2012-05-03 15:11:43 +00:00
parent 9a88400ef8
commit dc23b1d5ca
2 changed files with 17 additions and 5 deletions
+5 -5
View File
@@ -113,13 +113,13 @@ class StateCore extends ObjectModel
* @param string $iso_code Iso code
* @return integer state id
*/
public static function getIdByIso($iso_code)
public static function getIdByIso($iso_code, $id_country = null)
{
return Db::getInstance()->getValue('
SELECT `id_state`
FROM `'._DB_PREFIX_.'state`
WHERE `iso_code` = \''.pSQL($iso_code).'\''
);
SELECT `id_state`
FROM `'._DB_PREFIX_.'state`
WHERE `iso_code` = \''.pSQL($iso_code).'\'
'.($id_country ? 'AND `id_country` = '.(int)$id_country : ''));
}
/**
@@ -181,6 +181,18 @@ class AdminStatesControllerCore extends AdminController
{
if (!isset($this->table))
return false;
if (!Tools::getValue('id_'.$this->table))
{
if (Validate::isStateIsoCode(Tools::getValue('iso_code')) && State::getIdByIso(Tools::getValue('iso_code'), Tools::getValue('id_country')))
$this->errors[] = Tools::displayError('This ISO code already exists, you cannot create two states with the same ISO code in the same country');
}
else if (Validate::isStateIsoCode(Tools::getValue('iso_code')))
{
$id_state = State::getIdByIso(Tools::getValue('iso_code'), Tools::getValue('id_country'));
if ($id_state && $id_state != Tools::getValue('id_'.$this->table))
$this->errors[] = Tools::displayError('This ISO code already exists, you cannot create two states with the same ISO code in the same country');
}
/* Delete object */
if (isset($_GET['delete'.$this->table]))