[-] BO : fixed #PSTEST-944 & #PSTEST-945 range bugs
This commit is contained in:
+22
-1
@@ -65,7 +65,28 @@ class RangePriceCore extends ObjectModel
|
|||||||
WHERE `id_carrier` = '.(int)$id_carrier.'
|
WHERE `id_carrier` = '.(int)$id_carrier.'
|
||||||
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()
|
||||||
|
|||||||
+22
-1
@@ -65,7 +65,28 @@ class RangeWeightCore extends ObjectModel
|
|||||||
WHERE `id_carrier` = '.(int)$id_carrier.'
|
WHERE `id_carrier` = '.(int)$id_carrier.'
|
||||||
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
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user