[-] BO : fixed #PSTEST-944 & #PSTEST-945 range bugs

This commit is contained in:
vAugagneur
2012-03-05 16:56:21 +00:00
parent 4b2a5b2377
commit d8a390a16f
5 changed files with 684 additions and 631 deletions
+21
View File
@@ -66,6 +66,27 @@ class RangePriceCore extends ObjectModel
ORDER BY `delimiter1` ASC'); ORDER BY `delimiter1` ASC');
} }
public static function rangeExist($id_carrier, $delimiter1, $delimiter2)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT count(*)
FROM `'._DB_PREFIX_.'range_price`
WHERE `id_carrier` = '.(int)$id_carrier.'
AND `delimiter1` = '.(float)$delimiter1.' AND `delimiter2`='.(float)$delimiter2);
}
public function isOverlapping($id_carrier, $delimiter1, $delimiter2)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT count(*)
FROM `'._DB_PREFIX_.'range_price`
WHERE `id_carrier` = '.(int)$id_carrier.'
AND (`delimiter1` BETWEEN '.(float)$delimiter1.' AND '.(float)$delimiter2.'
OR `delimiter2` BETWEEN '.(float)$delimiter1.' AND '.(float)$delimiter2.'
OR '.(float)$delimiter1.' BETWEEN `delimiter1` AND `delimiter1`
OR '.(float)$delimiter2.' BETWEEN `delimiter1` AND `delimiter1`)');
}
/** /**
* Override add to create delivery value for all zones * Override add to create delivery value for all zones
* @see classes/ObjectModelCore::add() * @see classes/ObjectModelCore::add()
+21
View File
@@ -66,6 +66,27 @@ class RangeWeightCore extends ObjectModel
ORDER BY `delimiter1` ASC'); ORDER BY `delimiter1` ASC');
} }
public static function rangeExist($id_carrier, $delimiter1, $delimiter2)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT count(*)
FROM `'._DB_PREFIX_.'range_weight`
WHERE `id_carrier` = '.(int)$id_carrier.'
AND `delimiter1` = '.(float)$delimiter1.' AND `delimiter2`='.(float)$delimiter2);
}
public function isOverlapping($id_carrier, $delimiter1, $delimiter2)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT count(*)
FROM `'._DB_PREFIX_.'range_weight`
WHERE `id_carrier` = '.(int)$id_carrier.'
AND (`delimiter1` BETWEEN '.(float)$delimiter1.' AND '.(float)$delimiter2.'
OR `delimiter2` BETWEEN '.(float)$delimiter1.' AND '.(float)$delimiter2.'
OR '.(float)$delimiter1.' BETWEEN `delimiter1` AND `delimiter1`
OR '.(float)$delimiter2.' BETWEEN `delimiter1` AND `delimiter1`)');
}
/** /**
* Override add to create delivery value for all zones * Override add to create delivery value for all zones
* @see classes/ObjectModelCore::add() * @see classes/ObjectModelCore::add()
@@ -119,8 +119,14 @@ class AdminRangePriceControllerCore extends AdminController
public function postProcess() public function postProcess()
{ {
$id = (int)Tools::getValue('id_'.$this->table);
if (Tools::getValue('submitAdd'.$this->table) && Tools::getValue('delimiter1') >= Tools::getValue('delimiter2')) if (Tools::getValue('submitAdd'.$this->table) && Tools::getValue('delimiter1') >= Tools::getValue('delimiter2'))
$this->errors[] = Tools::displayError('Invalid range'); $this->errors[] = Tools::displayError('Invalid range');
else if (!$id && RangePrice::rangeExist((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
$this->errors[] = Tools::displayError('Range already exist');
else if (!$id && RangePrice::isOverlapping((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
$this->errors[] = Tools::displayError('Range is overlapping');
else else
parent::postProcess(); parent::postProcess();
} }
@@ -115,8 +115,13 @@ class AdminRangeWeightControllerCore extends AdminController
public function postProcess() public function postProcess()
{ {
$id = (int)Tools::getValue('id_'.$this->table);
if ($this->action == 'save' && Tools::getValue('delimiter1') >= Tools::getValue('delimiter2')) if ($this->action == 'save' && Tools::getValue('delimiter1') >= Tools::getValue('delimiter2'))
$this->errors[] = Tools::displayError('Invalid range'); $this->errors[] = Tools::displayError('Invalid range');
else if (!$id && RangeWeight::rangeExist((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
$this->errors[] = Tools::displayError('Range already exist');
else if (!$id && RangeWeight::isOverlapping((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
$this->errors[] = Tools::displayError('Range is overlapping');
else else
parent::postProcess(); parent::postProcess();
} }
+629 -629
View File
File diff suppressed because it is too large Load Diff