diff --git a/install-dev/upgrade/php/p15012_add_missing_columns.php b/install-dev/upgrade/php/p15012_add_missing_columns.php new file mode 100644 index 000000000..1be24eb4a --- /dev/null +++ b/install-dev/upgrade/php/p15012_add_missing_columns.php @@ -0,0 +1,209 @@ + +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision$ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function p15012_add_missing_columns() +{ + $errors = array(); + $res = true; + $db = Db::getInstance(); + $q_list = array(); + // columns must exists + $q_list['carrier']['id_reference']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'carrier` + CHANGE `id_reference` `id_reference` int(10) unsigned NOT NULL'; + $q_list['carrier']['id_reference']['add'] = 'ALTER TABLE `'._DB_PREFIX_.'carrier` + ADD `id_reference` int(10) unsigned NOT NULL'; + $q_list['carrier']['id_tax_rules_group']['add'] = 'ALTER TABLE `'._DB_PREFIX_.'carrier` + ADD `id_tax_rules_group` INT(10) unsigned DEFAULT "0" AFTER `id_reference`'; + + $q_list['cart']['order_reference']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'cart` + DROP COLUMN `order_reference`'; + + $q_list['cart']['id_shop_group']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'cart` + CHANGE `id_shop_group` `id_shop_group` int(11) unsigned NOT NULL DEFAULT "1"'; + $q_list['cart']['id_shop_group']['add'] = 'ALTER TABLE `'._DB_PREFIX_.'cart` + ADD `id_shop_group` int(11) unsigned NOT NULL DEFAULT "1"'; + + $q_list['cart_product']['id_shop']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'cart_product` + CHANGE `id_shop` `id_shop` int(10) unsigned NOT NULL DEFAULT "1" AFTER `id_address_delivery`'; + $q_list['cart_product']['id_shop']['add'] = 'ALTER TABLE `'._DB_PREFIX_.'cart_product` + ADD `id_shop` `id_shop` int(10) unsigned NOT NULL DEFAULT "1" AFTER `id_address_delivery`'; + $q_list['cart_product']['id_product_attribute']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'cart_product` + CHANGE `id_product_attribute` `id_product_attribute` int(10) unsigned DEFAULT NULL AFTER `id_shop`'; + $q_list['cart_product']['id_product_attribute']['add'] = 'ALTER TABLE `'._DB_PREFIX_.'cart_product` + ADD `id_product_attribute` int(10) unsigned DEFAULT NULL AFTER `id_shop`'; + + $q_list['cart_rule_product_rule']['quantity']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'cart_rule_product_rule` + DROP COLUMN `quantity`'; + + $q_list['connections']['id_shop_group']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'connections` + CHANGE id_shop_group `id_shop_group` int(11) unsigned NOT NULL DEFAULT "1" AFTER id_connections'; + + $q_list['country']['display_tax_label']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'country` + CHANGE display_tax_label `display_tax_label` tinyint(1) NOT NULL AFTER zip_code_format'; + + $q_list['currency']['active']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'currency` + CHANGE active active tinyint(1) unsigned NOT NULL DEFAULT "1"'; + + $q_list['customer']['id_shop_group']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'customer` + CHANGE id_shop_group id_shop_group int(11) unsigned NOT NULL DEFAULT "1"'; + + $q_list['employee']['bo_uimode']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'employee` + DROP `bo_uimode`'; + + $q_list['meta_lang']['url_rewrite']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'meta_lang` + CHANGE url_rewrite url_rewrite varchar(254) NOT NULL'; + + $q_list['order_detail']['id_warehouse']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `id_warehouse` id_warehouse int(10) unsigned DEFAULT "0"'; + $q_list['order_detail']['reduction_amount_tax_incl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `reduction_amount_tax_incl` reduction_amount_tax_incl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['reduction_amount_tax_excl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `reduction_amount_tax_excl` reduction_amount_tax_excl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + + $q_list['order_detail']['ecotax_tax_rate']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `ecotax_tax_rate` ecotax_tax_rate DEC(5,3) NOT NULL DEFAULT "0.000"'; + + $q_list['order_detail']['total_price_tax_incl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `total_price_tax_incl` total_price_tax_incl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['total_price_tax_excl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `total_price_tax_excl` total_price_tax_excl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['unit_price_tax_incl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `unit_price_tax_incl` unit_price_tax_incl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['unit_price_tax_excl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `unit_price_tax_excl` unit_price_tax_excl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['total_shipping_price_tax_incl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `total_shipping_price_tax_incl` total_shipping_price_tax_incl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['total_shipping_price_tax_excl']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `total_shipping_price_tax_excl` total_shipping_price_tax_excl DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['purchase_supplier_price']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `purchase_supplier_price` purchase_supplier_price DEC(20,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail']['original_product_price']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail` + CHANGE `original_product_price` original_product_price DEC(20,6) NOT NULL DEFAULT "0.000000"'; + + + $q_list['order_detail_tax']['unit_amount']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail_tax` + CHANGE `unit_amount` unit_amount DEC(10,6) NOT NULL DEFAULT "0.000000"'; + $q_list['order_detail_tax']['total_amount']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_detail_tax` + CHANGE `total_amount` unit_amount DEC(10,6) NOT NULL DEFAULT "0.000000"'; + + $q_list['order_invoice']['note']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_invoice` + CHANGE `note` note text'; + + $q_list['order_payment']['id_order_invoice']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'order_payment` + CHANGE `id_order_invoice` id_order_invoice int(10) unsigned DEFAULT NULL'; + + $q_list['orders']['reference']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'orders` + CHANGE `reference` reference varchar(9) DEFAULT NULL,'; + $q_list['orders']['id_shop_group']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'orders` + CHANGE `id_shop_group` id_shop_group int(11) unsigned NOT NULL DEFAULT "1"'; + + + $q_list['product']['unity']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'product` + CHANGE `unity` unity varchar(255) DEFAULT NULL'; + + $q_list['product']['width']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'product` + CHANGE `width` `width` float NOT NULL DEFAULT "0"'; + + $q_list['product']['height']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'product` + CHANGE `height` `height` float NOT NULL DEFAULT "0"'; + + $q_list['product']['depth']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'product` + CHANGE `depth` `depth` float NOT NULL DEFAULT "0"'; + + $q_list['product']['minimal_quantity']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'product` + CHANGE `minimal_quantity` `minimal_quantity` int(10) unsigned NOT NULL DEFAULT "1"'; + + $q_list['product_attribute']['ecotax']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'product_attribute` + CHANGE `ecotax` ecotax decimal(17,6) NOT NULL DEFAULT "0.000000"'; + + $q_list['stock_mvt_reason']['id_stock_mvt_reason']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'id_stock_mvt_reason` + CHANGE `id_stock_mvt_reason` id_stock_mvt_reason int(11) unsigned NOT NULL'; + + $q_list['stock_mvt_reason_lang']['id_stock_mvt_reason']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'id_stock_mvt_reason_lang` + CHANGE `id_stock_mvt_reason` id_stock_mvt_reason int(11) unsigned NOT NULL'; + + $q_list['stock_mvt_reason_lang']['id_lang']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'id_stock_mvt_reason_lang` + CHANGE `id_lang` id_lang int(11) unsigned NOT NULL'; + + $q_list['supply_order']['reference']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'supply_order` + CHANGE `reference` reference varchar(64) NOT NULL'; + + $q_list['tax']['deleted']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'tax` + CHANGE `deleted` deleted tinyint(1) unsigned NOT NULL DEFAULT "0"'; + + $q_list['carrier']['need_range']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'carrier` + CHANGE `need_range` need_range tinyint(1) unsigned NOT NULL DEFAULT "0" AFTER shipping_external'; + + +/* + $q_list['cart_product']['']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'TABLE ` + DROP ``'; + $q_list['TABLE']['']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'TABLE ` + DROP ``'; + $q_list['TABLE']['']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'TABLE ` + DROP ``'; + $q_list['TABLE']['']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'TABLE ` + DROP ``'; + $q_list['TABLE']['']['mod'] = 'ALTER TABLE `'._DB_PREFIX_.'TABLE ` + DROP ``'; + */ + // column must NOT exists + + + foreach($q_list as $table => $cols) + { + if (empty($table)) + continue; + $list_fields = $db->executeS('SHOW FIELDS FROM `'._DB_PREFIX_.$table.'`'); + foreach($list_fields as $k => $field) + $list_fields[$k] = $field['Field']; + foreach ($cols as $col => $q) + { + // do only if column exists + if (in_array($col, $list_fields)) + $do = 'mod'; + else + $do = 'add'; + + if(!empty($q[$do])) + { + if (!$db->execute($q[$do])) + $errors[] = $db->getMsgError(); + } + } + } + + if(!$res) + $msg = implode('
', $errors); + else + $msg = ''; + if (!$res) + return array('error' => $res, 'msg' => $msg); + else + return true; +} + diff --git a/install-dev/upgrade/sql/1.5.0.12.sql b/install-dev/upgrade/sql/1.5.0.12.sql index d1b488778..b76b1c0c5 100644 --- a/install-dev/upgrade/sql/1.5.0.12.sql +++ b/install-dev/upgrade/sql/1.5.0.12.sql @@ -59,3 +59,6 @@ UPDATE `PREFIX_tab` SET `class_name`="AdminShopGroup" WHERE class_name="AdminGro /* PHP:upgrade_cms_15_rename(); */; /* PHP:migrate_tabs_multi_shop(); */; /* PHP:add_default_restrictions_modules_groups(); */; + +/* PHP:p15012_add_missing_columns(); */; +