* @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ function generate_tax_rules() { $res = true; $taxes = Db::getInstance()->executeS('SELECT * from `'._DB_PREFIX_.'tax` WHERE active = 1'); // if no tax found, nothing to do, return true if (!is_array($taxes)) return true; foreach ($taxes AS $tax) { $id_tax = $tax['id_tax']; $row = array( 'active' => 1, 'id_tax_rules_group' => $id_tax, 'name' => 'Rule '.$tax['rate'].'%', ); $res &= Db::getInstance()->insert('tax_rules_group', $row); $id_tax_rules_group = Db::getInstance()->insert_id(); $countries = Db::getInstance()->executeS(' SELECT * FROM `'._DB_PREFIX_.'country` c LEFT JOIN `'._DB_PREFIX_.'zone` z ON (c.`id_zone` = z.`id_zone`) LEFT JOIN `'._DB_PREFIX_.'tax_zone` tz ON (tz.`id_zone` = z.`id_zone`) WHERE `id_tax` = '.(int)$id_tax ); if ($countries) { foreach ($countries AS $country) { $res &= Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `state_behavior`, `id_tax`) VALUES ('.$id_tax_rules_group.', '.(int)$country['id_country'].', 0, 0, '.(int)$id_tax. ')'); } } $states = Db::getInstance()->executeS(' SELECT * FROM `'._DB_PREFIX_.'states` s LEFT JOIN `'._DB_PREFIX_.'tax_state` ts ON (ts.`id_state` = s.`id_state`) WHERE `id_tax` = '.(int)$id_tax); if ($states) { foreach ($states AS $state) { if (!in_array($state['tax_behavior'], array(PS_PRODUCT_TAX, PS_STATE_TAX, PS_BOTH_TAX))) $tax_behavior = PS_PRODUCT_TAX; else $tax_behavior = $state['tax_behavior']; $res &= Db::getInstance()->execute(' INSERT INTO `'._DB_PREFIX_.'tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `state_behavior`, `id_tax`) VALUES ( '.$id_tax_rules_group.', '.(int)$state['id_country'].', '.(int)$state['id_state'].', '.(int)$tax_behavior.', '.(int)$id_tax. ')'); } } $res &= Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'product` SET `id_tax_rules_group` = '.$id_tax_rules_group.' WHERE `id_tax` = '.(int)$id_tax ); $res &= Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'carrier` SET `id_tax_rules_group` = '.$id_tax_rules_group.' WHERE `id_tax` = '.(int)$id_tax ); $socolissimo_overcost_tax = Db::getInstance()->getValue('SELECT value FROM `'._DB_PREFIX_.'configuration` WHERE name="SOCOLISSIMO_OVERCOST_TAX"'); if ($socolissimo_overcost_tax == $id_tax) $res &= Db::getInstance()->getValue('UPDATE `'._DB_PREFIX_.'configuration` set value="'.$id_tax_rules_group.'" WHERE name="SOCOLISSIMO_OVERCOST_TAX"'); } return $res; }