[-] BO : fixed bug #PSCFV-521 - range fix
This commit is contained in:
@@ -65,15 +65,16 @@ class RangeCore extends ObjectModel
|
|||||||
AND `delimiter1` = '.(float)$delimiter1.' AND `delimiter2`='.(float)$delimiter2);
|
AND `delimiter1` = '.(float)$delimiter1.' AND `delimiter2`='.(float)$delimiter2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function isOverlapping($id_carrier, $delimiter1, $delimiter2)
|
public static function isOverlapping($id_carrier, $delimiter1, $delimiter2, $id_rang = null)
|
||||||
{
|
{
|
||||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT count(*)
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT count(*)
|
||||||
FROM `'._DB_PREFIX_.static::$range_table.'`
|
FROM `'._DB_PREFIX_.static::$range_table.'`
|
||||||
WHERE `id_carrier` = '.(int)$id_carrier.'
|
WHERE `id_carrier` = '.(int)$id_carrier.'
|
||||||
AND ((`delimiter1` > '.(float)$delimiter1.' AND `delimiter1` <= '.(float)$delimiter2.')
|
AND ((`delimiter1` >= '.(float)$delimiter1.' AND `delimiter1` < '.(float)$delimiter2.')
|
||||||
OR (`delimiter2` > '.(float)$delimiter1.' AND `delimiter2` <= '.(float)$delimiter2.')
|
OR (`delimiter2` > '.(float)$delimiter1.' AND `delimiter2` < '.(float)$delimiter2.')
|
||||||
OR ('.(float)$delimiter1.' > `delimiter1` AND '.(float)$delimiter1.' < `delimiter2`)
|
OR ('.(float)$delimiter1.' > `delimiter1` AND '.(float)$delimiter1.' < `delimiter2`)
|
||||||
OR ('.(float)$delimiter2.' < `delimiter1` AND '.(float)$delimiter2.' > `delimiter2`)
|
OR ('.(float)$delimiter2.' < `delimiter1` AND '.(float)$delimiter2.' > `delimiter2`)
|
||||||
)');
|
)
|
||||||
|
'.(!is_null($id_rang) ? ' AND `'.pSQL(static::$range_identifier).'` != '.(int)$id_rang : ''));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,17 +119,21 @@ class AdminRangePriceControllerCore extends AdminController
|
|||||||
|
|
||||||
public function postProcess()
|
public function postProcess()
|
||||||
{
|
{
|
||||||
$id = (int)Tools::getValue('id_'.$this->table);
|
$id = (int)Tools::getValue('id_'.$this->table);
|
||||||
|
if (Tools::getValue('submitAdd'.$this->table))
|
||||||
if (Tools::getValue('submitAdd'.$this->table) && Tools::getValue('delimiter1') >= Tools::getValue('delimiter2'))
|
{
|
||||||
$this->errors[] = Tools::displayError('Invalid range');
|
if (Tools::getValue('delimiter1') >= Tools::getValue('delimiter2'))
|
||||||
else if (!$id && RangePrice::rangeExist((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
|
$this->errors[] = Tools::displayError('Invalid range');
|
||||||
$this->errors[] = Tools::displayError('Range already exists');
|
else if (!$id && RangePrice::rangeExist((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
|
||||||
else if (!$id && RangePrice::isOverlapping((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
|
$this->errors[] = Tools::displayError('Range already exists');
|
||||||
$this->errors[] = Tools::displayError('Ranges are overlapping');
|
else if (RangePrice::isOverlapping((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2'), ($id ? (int)$id : null)))
|
||||||
|
$this->errors[] = Tools::displayError('Ranges are overlapping');
|
||||||
|
else if (!count($this->errors))
|
||||||
|
parent::postProcess();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
parent::postProcess();
|
parent::postProcess();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -115,13 +115,19 @@ class AdminRangeWeightControllerCore extends AdminController
|
|||||||
|
|
||||||
public function postProcess()
|
public function postProcess()
|
||||||
{
|
{
|
||||||
$id = (int)Tools::getValue('id_'.$this->table);
|
$id = (int)Tools::getValue('id_'.$this->table);
|
||||||
if ($this->action == 'save' && Tools::getValue('delimiter1') >= Tools::getValue('delimiter2'))
|
|
||||||
$this->errors[] = Tools::displayError('Invalid range');
|
if (Tools::getValue('submitAdd'.$this->table))
|
||||||
else if (!$id && RangeWeight::rangeExist((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
|
{
|
||||||
$this->errors[] = Tools::displayError('Range already exists');
|
if (Tools::getValue('delimiter1') >= Tools::getValue('delimiter2'))
|
||||||
else if (!$id && RangeWeight::isOverlapping((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
|
$this->errors[] = Tools::displayError('Invalid range');
|
||||||
$this->errors[] = Tools::displayError('Ranges are overlapping');
|
else if (!$id && RangeWeight::rangeExist((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2')))
|
||||||
|
$this->errors[] = Tools::displayError('Range already exists');
|
||||||
|
else if (RangeWeight::isOverlapping((int)Tools::getValue('id_carrier'), (float)Tools::getValue('delimiter1'), (float)Tools::getValue('delimiter2'), ($id ? (int)$id : null)))
|
||||||
|
$this->errors[] = Tools::displayError('Ranges are overlapping');
|
||||||
|
else if (!count($this->errors))
|
||||||
|
parent::postProcess();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
parent::postProcess();
|
parent::postProcess();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user