From 1b58e2940fd2de5b98499114f28b70deeea7be4e Mon Sep 17 00:00:00 2001 From: rGaillard Date: Mon, 18 Jun 2012 09:10:11 +0000 Subject: [PATCH] [-] Installer: Fix PSCFV-2565 unique specific_price --- .../upgrade/php/fix_unique_specific_price.php | 44 +++++++++++++++++++ install-dev/upgrade/sql/1.5.0.14.sql | 2 + 2 files changed, 46 insertions(+) create mode 100644 install-dev/upgrade/php/fix_unique_specific_price.php diff --git a/install-dev/upgrade/php/fix_unique_specific_price.php b/install-dev/upgrade/php/fix_unique_specific_price.php new file mode 100644 index 000000000..f2f163731 --- /dev/null +++ b/install-dev/upgrade/php/fix_unique_specific_price.php @@ -0,0 +1,44 @@ + +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision: 15469 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function fix_unique_specific_price() +{ + $res = Db::getInstance()->executeS('SELECT MIN(id_specific_price) id_specific_price + FROM '._DB_PREFIX_.'specific_price + GROUP BY `id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `from_quantity`, `from`, `to` + '); + if ($res) + { + $ids_specific_price = '('; + foreach ($res as $row) + $ids_specific_price .= (int)$row['id_specific_price'].','; + $ids_specific_price = rtrim($ids_specific_price, ',').')'; + return Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'specific_price + WHERE id_specific_price NOT IN ('.$ids_specific_price.')'); + } +} diff --git a/install-dev/upgrade/sql/1.5.0.14.sql b/install-dev/upgrade/sql/1.5.0.14.sql index 45da752ac..57172aa59 100644 --- a/install-dev/upgrade/sql/1.5.0.14.sql +++ b/install-dev/upgrade/sql/1.5.0.14.sql @@ -1,3 +1,5 @@ SET NAMES 'utf8'; /* PHP:p15014_copy_missing_images_tab_from_installer(); */; + +/* PHP:fix_unique_specific_price(); */;