// update tax rules PHP => SQL

This commit is contained in:
fBrignoli
2011-08-19 12:03:04 +00:00
parent fd25111d74
commit d6998068ff
3 changed files with 22 additions and 51 deletions

View File

@@ -1,48 +0,0 @@
<?php
function update_tax_rules()
{
// Add new columns
Db::getInstance()->Execute('
ALTER TABLE `'._DB_PREFIX_.'tax_rule`
ADD `zipcode_from` INT NOT NULL AFTER `id_state` ,
ADD `zipcode_to` INT NOT NULL AFTER `zipcode_from` ,
ADD `behavior` INT NOT NULL AFTER `zipcode_to`,
ADD `description` VARCHAR( 100 ) NOT NULL AFTER `id_tax`;
');
// Drop integrity constraint
Db::getInstance()->Execute('
ALTER TABLE `'._DB_PREFIX_.'tax_rule` DROP INDEX tax_rule
');
// Create new format rules
Db::getInstance()->Execute('
INSERT INTO `'._DB_PREFIX_.'tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `id_tax`, `behavior`, `zipcode_from`, `zipcode_to`)
SELECT r.`id_tax_rules_group`, r.`id_country`, r.`id_state`, r.`id_tax`, 0, z.`from_zip_code`, z.`to_zip_code`
FROM `'._DB_PREFIX_.'tax_rule` r INNER JOIN `'._DB_PREFIX_.'county_zip_code` z ON (z.`id_county` = r.`id_county`)
');
// update behavior
Db::getInstance()->Execute('
UPDATE `'._DB_PREFIX_.'tax_rule` SET `behavior` = GREATEST(`state_behavior`, `county_behavior`);
');
// Clean old entries
Db::getInstance()->Execute('
DELETE FROM `'._DB_PREFIX_.'tax_rule`
WHERE `id_county` != 0
AND `zipcode_from` = 0
');
// Remove old columns
Db::getInstance()->Execute('
ALTER TABLE `'._DB_PREFIX_.'tax_rule`
DROP `id_county`,
DROP `state_behavior`,
DROP `county_behavior`
');
}

View File

@@ -33,7 +33,28 @@ INSERT INTO `PREFIX_hook` (
)
VALUES ('taxmanager', 'taxmanager', NULL , '1', '0');
/* PHP:update_tax_rules(); */;
ALTER TABLE `PREFIX_tax_rule`
ADD `zipcode_from` INT NOT NULL AFTER `id_state` ,
ADD `zipcode_to` INT NOT NULL AFTER `zipcode_from` ,
ADD `behavior` INT NOT NULL AFTER `zipcode_to`,
ADD `description` VARCHAR( 100 ) NOT NULL AFTER `id_tax`;
ALTER TABLE `PREFIX_tax_rule` DROP INDEX tax_rule;
INSERT INTO `PREFIX_tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `id_tax`, `behavior`, `zipcode_from`, `zipcode_to`)
SELECT r.`id_tax_rules_group`, r.`id_country`, r.`id_state`, r.`id_tax`, 0, z.`from_zip_code`, z.`to_zip_code`
FROM `PREFIX_tax_rule` r INNER JOIN `PREFIX_county_zip_code` z ON (z.`id_county` = r.`id_county`);
UPDATE `PREFIX_tax_rule` SET `behavior` = GREATEST(`state_behavior`, `county_behavior`);
DELETE FROM `PREFIX_tax_rule`
WHERE `id_county` != 0
AND `zipcode_from` = 0;
ALTER TABLE `PREFIX_tax_rule`
DROP `id_county`,
DROP `state_behavior`,
DROP `county_behavior`;
/* PHP:remove_tab(AdminCounty); */;
DROP TABLE `PREFIX_county_zip_code`;

View File

@@ -133,8 +133,6 @@ require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'create_multistore.php');
require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'add_order_state.php');
require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'update_tax_rules.php');
require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'remove_tab.php');
//old version detection