From e09cd8c5d7ac826909b4e90d468e3e1808cc31d3 Mon Sep 17 00:00:00 2001 From: vAugagneur Date: Mon, 26 Mar 2012 12:38:18 +0000 Subject: [PATCH] [-] BO : #PSFV-702 - "Ranges are overlapping" after modifying the default ones --- classes/RangePrice.php | 13 +++++++------ classes/RangeWeight.php | 12 ++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/classes/RangePrice.php b/classes/RangePrice.php index dd1b160f5..5308259a2 100644 --- a/classes/RangePrice.php +++ b/classes/RangePrice.php @@ -77,14 +77,15 @@ class RangePriceCore extends ObjectModel public static function isOverlapping($id_carrier, $delimiter1, $delimiter2) { - return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT count(*) + 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`)'); + AND ((`delimiter1` > '.(float)$delimiter1.' AND `delimiter1` <= '.(float)$delimiter2.') + OR (`delimiter2` > '.(float)$delimiter1.' AND `delimiter2` <= '.(float)$delimiter2.') + OR ('.(float)$delimiter1.' > `delimiter1` AND '.(float)$delimiter1.' < `delimiter2`) + OR ('.(float)$delimiter2.' < `delimiter1` AND '.(float)$delimiter2.' > `delimiter2`) + + )'); } /** diff --git a/classes/RangeWeight.php b/classes/RangeWeight.php index b930ddd13..09644d3e3 100644 --- a/classes/RangeWeight.php +++ b/classes/RangeWeight.php @@ -77,14 +77,14 @@ class RangeWeightCore extends ObjectModel public static function isOverlapping($id_carrier, $delimiter1, $delimiter2) { - return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT count(*) + 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`)'); + AND ((`delimiter1` > '.(float)$delimiter1.' AND `delimiter1` <= '.(float)$delimiter2.') + OR (`delimiter2` > '.(float)$delimiter1.' AND `delimiter2` <= '.(float)$delimiter2.') + OR ('.(float)$delimiter1.' > `delimiter1` AND '.(float)$delimiter1.' < `delimiter2`) + OR ('.(float)$delimiter2.' < `delimiter1` AND '.(float)$delimiter2.' > `delimiter2`) + )'); } /**