do {
            if ($errors !== false) {
                break;
            }
            // The entered data is ok.
            if ($module->isCurrentAction('StoreChanges')) {
                // Store changes made to the VAT rule.
                $vatRule = eZVatRule::fetch($ruleID);
                if (!is_object($vatRule)) {
                    //$ruleID = null;
                    $errors[] = ezpI18n::tr('kernel/shop/editvatrule', 'Rule not found');
                    break;
                }
            } else {
                // Create a new VAT rule...
                $vatRule = eZVatRule::create();
            }
            // Modify chosen categories array
            // so that it can be saved into the VAT rule.
            $addID = create_function('$i', "return array( 'id' => \$i ) ;");
            $chosenCategories = array_map($addID, $chosenCategories);
            $vatRule->setAttribute('country_code', $chosenCountry);
            $vatRule->setAttribute('product_categories', $chosenCategories);
            $vatRule->setAttribute('vat_type', $chosenVatType);
            $vatRule->store();
            return $module->redirectTo($module->functionURI('vatrules'));
        } while (false);
    }
}
if (is_numeric($ruleID)) {
    $tplVatRule = eZVatRule::fetch($ruleID);