本文整理汇总了PHP中TaxRulesGroup::save方法的典型用法代码示例。如果您正苦于以下问题:PHP TaxRulesGroup::save方法的具体用法?PHP TaxRulesGroup::save怎么用?PHP TaxRulesGroup::save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TaxRulesGroup
的用法示例。
在下文中一共展示了TaxRulesGroup::save方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _installTaxes
/**
* @param SimpleXMLElement $xml
* @return bool
* @throws PrestaShopException
*/
protected function _installTaxes($xml)
{
if (isset($xml->taxes->tax)) {
$assoc_taxes = array();
foreach ($xml->taxes->tax as $taxData) {
/** @var SimpleXMLElement $taxData */
$attributes = $taxData->attributes();
if ($id_tax = Tax::getTaxIdByName($attributes['name'])) {
$assoc_taxes[(int) $attributes['id']] = $id_tax;
continue;
}
$tax = new Tax();
$tax->name[(int) Configuration::get('PS_LANG_DEFAULT')] = (string) $attributes['name'];
$tax->rate = (double) $attributes['rate'];
$tax->active = 1;
if (($error = $tax->validateFields(false, true)) !== true || ($error = $tax->validateFieldsLang(false, true)) !== true) {
$this->_errors[] = Tools::displayError('Invalid tax properties.') . ' ' . $error;
return false;
}
if (!$tax->add()) {
$this->_errors[] = Tools::displayError('An error occurred while importing the tax: ') . (string) $attributes['name'];
return false;
}
$assoc_taxes[(int) $attributes['id']] = $tax->id;
}
foreach ($xml->taxes->taxRulesGroup as $group) {
/** @var SimpleXMLElement $group */
$group_attributes = $group->attributes();
if (!Validate::isGenericName($group_attributes['name'])) {
continue;
}
if (TaxRulesGroup::getIdByName($group['name'])) {
continue;
}
$trg = new TaxRulesGroup();
$trg->name = $group['name'];
$trg->active = 1;
if (!$trg->save()) {
$this->_errors[] = Tools::displayError('This tax rule cannot be saved.');
return false;
}
foreach ($group->taxRule as $rule) {
/** @var SimpleXMLElement $rule */
$rule_attributes = $rule->attributes();
// Validation
if (!isset($rule_attributes['iso_code_country'])) {
continue;
}
$id_country = (int) Country::getByIso(strtoupper($rule_attributes['iso_code_country']));
if (!$id_country) {
continue;
}
if (!isset($rule_attributes['id_tax']) || !array_key_exists(strval($rule_attributes['id_tax']), $assoc_taxes)) {
continue;
}
// Default values
$id_state = (int) isset($rule_attributes['iso_code_state']) ? State::getIdByIso(strtoupper($rule_attributes['iso_code_state'])) : 0;
$id_county = 0;
$zipcode_from = 0;
$zipcode_to = 0;
$behavior = $rule_attributes['behavior'];
if (isset($rule_attributes['zipcode_from'])) {
$zipcode_from = $rule_attributes['zipcode_from'];
if (isset($rule_attributes['zipcode_to'])) {
$zipcode_to = $rule_attributes['zipcode_to'];
}
}
// Creation
$tr = new TaxRule();
$tr->id_tax_rules_group = $trg->id;
$tr->id_country = $id_country;
$tr->id_state = $id_state;
$tr->id_county = $id_county;
$tr->zipcode_from = $zipcode_from;
$tr->zipcode_to = $zipcode_to;
$tr->behavior = $behavior;
$tr->description = '';
$tr->id_tax = $assoc_taxes[strval($rule_attributes['id_tax'])];
$tr->save();
}
}
}
return true;
}
示例2: _installTaxes
protected function _installTaxes($xml)
{
if (isset($xml->taxes->tax)) {
$available_behavior = array(PS_PRODUCT_TAX, PS_STATE_TAX, PS_BOTH_TAX);
$assoc_taxes = array();
foreach ($xml->taxes->tax as $taxData) {
$attributes = $taxData->attributes();
if (Tax::getTaxIdByName($attributes['name'])) {
continue;
}
$tax = new Tax();
$tax->name[(int) Configuration::get('PS_LANG_DEFAULT')] = strval($attributes['name']);
$tax->rate = (double) $attributes['rate'];
$tax->active = 1;
if (!$tax->validateFields()) {
$this->_errors[] = Tools::displayError('Invalid tax properties.');
return false;
}
if (!$tax->add()) {
$this->_errors[] = Tools::displayError('An error occurred while importing the tax: ') . strval($attributes['name']);
return false;
}
$assoc_taxes[(int) $attributes['id']] = $tax->id;
}
foreach ($xml->taxes->taxRulesGroup as $group) {
$group_attributes = $group->attributes();
if (!Validate::isGenericName($group_attributes['name'])) {
continue;
}
if (TaxRulesGroup::getIdByName($group['name'])) {
continue;
}
$trg = new TaxRulesGroup();
$trg->name = $group['name'];
$trg->active = 1;
if (!$trg->save()) {
$this->_errors = Tools::displayError('This tax rule cannot be saved.');
return false;
}
foreach ($group->taxRule as $rule) {
$rule_attributes = $rule->attributes();
// Validation
if (!isset($rule_attributes['iso_code_country'])) {
continue;
}
$id_country = Country::getByIso(strtoupper($rule_attributes['iso_code_country']));
if (!$id_country) {
continue;
}
if (!isset($rule_attributes['id_tax']) || !array_key_exists(strval($rule_attributes['id_tax']), $assoc_taxes)) {
continue;
}
// Default values
$id_state = (int) isset($rule_attributes['iso_code_state']) ? State::getIdByIso(strtoupper($rule_attributes['iso_code_state'])) : 0;
$id_county = 0;
$state_behavior = 0;
$county_behavior = 0;
if ($id_state) {
if (isset($rule_attributes['state_behavior']) && in_array($rule_attributes['state_behavior'], $available_behavior)) {
$state_behavior = (int) $rule_attributes['state_behavior'];
}
if (isset($rule_attributes['county_name'])) {
$id_county = County::getIdCountyByNameAndIdState($rule_attributes['county_name'], (int) $id_state);
if (!$id_county) {
continue;
}
}
if (isset($rule_attributes['county_behavior']) && in_array($rule_attributes['state_behavior'], $available_behavior)) {
$county_behavior = (int) $rule_attributes['county_behavior'];
}
}
// Creation
$tr = new TaxRule();
$tr->id_tax_rules_group = $trg->id;
$tr->id_country = $id_country;
$tr->id_state = $id_state;
$tr->id_county = $id_county;
$tr->state_behavior = $state_behavior;
$tr->county_behavior = $county_behavior;
$tr->id_tax = $assoc_taxes[strval($rule_attributes['id_tax'])];
$tr->save();
}
}
}
return true;
}
示例3: generate_tax_rules
function generate_tax_rules()
{
$taxes = Tax::getTaxes(Configuration::get('PS_LANG_DEFAULT'), true);
$countries = Country::getCountries(Configuration::get('PS_LANG_DEFAULT'));
foreach ($taxes as $tax) {
$insert = '';
$id_tax = $tax['id_tax'];
$group = new TaxRulesGroup();
$group->active = 1;
$group->name = 'Rule ' . $tax['rate'] . '%';
$group->save();
$id_tax_rules_group = $group->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 (
' . (int) $group->id . ',
' . (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 (
' . (int) $group->id . ',
' . (int) $state['id_country'] . ',
' . (int) $state['id_state'] . ',
' . (int) $tax_behavior . ',
' . (int) $id_tax . ')');
}
}
Db::getInstance()->Execute('
UPDATE `' . _DB_PREFIX_ . 'product`
SET `id_tax_rules_group` = ' . (int) $group->id . '
WHERE `id_tax` = ' . (int) $id_tax);
Db::getInstance()->Execute('
UPDATE `' . _DB_PREFIX_ . 'carrier`
SET `id_tax_rules_group` = ' . (int) $group->id . '
WHERE `id_tax` = ' . (int) $id_tax);
if (Configuration::get('SOCOLISSIMO_OVERCOST_TAX') == $id_tax) {
Configuration::updateValue('SOCOLISSIMO_OVERCOST_TAX', $group->id);
}
}
}
示例4: generateEuropeTaxRule
private function generateEuropeTaxRule()
{
$euro_vat_array = self::$europe_vat_array;
$euro_tax_rule_grp_id = TaxRulesGroup::getIdByName((string) $this->european_vat_name);
if (!$euro_tax_rule_grp_id) {
// Create it
$trg = new TaxRulesGroup();
$trg->name = (string) $this->european_vat_name;
$trg->active = 1;
if (!$trg->save()) {
$this->_errors[] = Tools::displayError('Tax rule cannot be saved.');
return false;
}
$euro_tax_rule_grp_id = (int) $trg->id;
}
$tax_rules_euro_group = TaxRule::getTaxRulesByGroupId((int) Context::getContext()->language->id, (int) $euro_tax_rule_grp_id);
$euro_group_taxes_rules = array();
foreach ($tax_rules_euro_group as $tax_rule) {
$euro_group_taxes_rules[] = $tax_rule;
}
foreach ($euro_vat_array as $euro_vat_name => $euro_vat_details) {
$posted_euro_vat = 'euro_vat_' . (string) $euro_vat_details['iso_country'];
$posted_available_vat = 'available_vat_' . (string) $euro_vat_details['iso_country'];
$country_id = Country::getByIso((string) $euro_vat_details['iso_country']);
if (Tools::isSubmit($posted_euro_vat)) {
if (!Tools::isSubmit($posted_available_vat)) {
$id_tax_found = Tax::getTaxIdByName((string) $euro_vat_name);
if ($id_tax_found !== false) {
$tax = new Tax((int) $id_tax_found);
} else {
$tax = new Tax();
}
$tax->name[(int) Configuration::get('PS_LANG_DEFAULT')] = (string) $euro_vat_name;
$tax->rate = (double) $euro_vat_details['rate'];
$tax->active = 1;
if ($tax->validateFields(false, true) !== true || $tax->validateFieldsLang(false, true) !== true) {
$this->_errors[] = Tools::displayError('Invalid tax properties.');
continue;
}
if (!$tax->save()) {
$this->_errors[] = Tools::displayError('An error occurred while saving the tax: ');
continue;
}
$id_tax_rule = $this->getTaxRuleIdFromUnique($euro_tax_rule_grp_id, $country_id, $id_tax_found);
if ($id_tax_rule !== false) {
$tr = new TaxRule((int) $id_tax_rule);
} else {
$tr = new TaxRule();
}
$tr->id_tax_rules_group = (int) $euro_tax_rule_grp_id;
$tr->id_country = (int) $country_id;
$tr->id_state = 0;
$tr->id_county = 0;
$tr->zipcode_from = 0;
$tr->zipcode_to = 0;
$tr->behavior = 0;
$tr->description = '';
$tr->id_tax = (int) $tax->id;
$tr->save();
} else {
$assoc_id_tax = (int) Tools::getValue($posted_available_vat);
$id_tax_rule = $this->getTaxRuleIdFromUnique($euro_tax_rule_grp_id, $country_id, $assoc_id_tax);
if ($id_tax_rule !== false) {
$tr = new TaxRule((int) $id_tax_rule);
} else {
$tr = new TaxRule();
}
$tr->id_tax_rules_group = (int) $euro_tax_rule_grp_id;
$tr->id_country = (int) $country_id;
$tr->id_state = 0;
$tr->id_county = 0;
$tr->zipcode_from = 0;
$tr->zipcode_to = 0;
$tr->behavior = 0;
$tr->description = '';
$tr->id_tax = (int) $assoc_id_tax;
$tr->save();
}
} else {
$this->_errors[] = Tools::displayError('Invalid parameters received');
}
}
}
示例5: createParams
private function createParams()
{
$product_types = array();
$public_token = Tools::getValue('TAXAMOEUVAT_TOKENPUBLIC', Configuration::get('TAXAMOEUVAT_TOKENPUBLIC'));
$res_api_product_types = $this->getResApi('https://api.taxamo.com/api/v1/dictionaries/product_types', 'GET', array('public_token' => $public_token));
if ($res_api_product_types && isset($res_api_product_types['dictionary'])) {
$res_product_types_dictionary = $res_api_product_types['dictionary'];
foreach ($res_product_types_dictionary as $product_type) {
if (isset($product_type['code'])) {
$product_types[] = $product_type['code'];
}
}
if (count($product_types) <= 0) {
$this->_html .= $this->displayError($this->l('Error In Product Types Dictionary'));
return false;
}
} else {
return false;
}
@set_time_limit(0);
$generic_name = Tools::getValue('TAXAMOEUVAT_GENERICNAME', Configuration::get('TAXAMOEUVAT_GENERICNAME'));
$params_tax = array();
$res_api_countries = $this->getResApi('https://api.taxamo.com/api/v1/dictionaries/countries', 'GET', array('tax_supported' => 'true', 'public_token' => $public_token));
if ($res_api_countries && isset($res_api_countries['dictionary'])) {
$res_countries_dictionary = $res_api_countries['dictionary'];
foreach ($res_countries_dictionary as $country) {
if (isset($country['tax_supported'], $country['cca2']) && (bool) $country['tax_supported']) {
$id_country = Country::getByIso($country['cca2']);
if (!$id_country) {
continue;
}
foreach ($product_types as $product_type) {
$res_api_calculate = $this->getResApi('https://api.taxamo.com/api/v1/tax/calculate', 'GET', array('public_token' => $public_token, 'currency_code' => 'EUR', 'force_country_code' => $country['cca2'], 'buyer_tax_number' => null, 'product_type' => $product_type, 'amount' => 100));
if ($res_api_calculate && isset($res_api_calculate['transaction']['transaction_lines'][0])) {
$res_tax = $res_api_calculate['transaction']['transaction_lines'][0];
$tax_name = $generic_name . ' ' . $country['cca2'] . ' ' . $product_type . ' ' . trim((string) $res_tax['tax_rate']) . '%';
$params_tax[] = array('name' => $tax_name, 'rate' => $res_tax['tax_rate'], 'active' => 1, 'product_type' => $product_type, 'id_country' => $id_country);
}
}
}
}
}
foreach ($params_tax as $key => $tax_values) {
if (!Validate::isGenericName($tax_values['name'])) {
continue;
}
if ($id_tax = Tax::getTaxIdByName($tax_values['name'])) {
$params_tax[$key]['id_tax'] = $id_tax;
continue;
}
$tax = new Tax();
$tax->name[(int) Configuration::get('PS_LANG_DEFAULT')] = (string) $tax_values['name'];
$tax->rate = (double) $tax_values['rate'];
$tax->active = 1;
if (($error = $tax->validateFields(false, true)) !== true || ($error = $tax->validateFieldsLang(false, true)) !== true) {
$this->_html .= $this->displayError('Invalid tax properties.') . ' ' . $error;
return false;
}
if (!$tax->add()) {
$this->_html .= $this->displayError('An error occurred while importing the tax: ') . (string) $tax_values['name'];
return false;
}
$params_tax[$key]['id_tax'] = $tax->id;
}
foreach ($product_types as $product_type) {
$tax_group_name = $generic_name . ' - ' . $product_type;
if (!Validate::isGenericName($tax_group_name)) {
continue;
}
if (TaxRulesGroup::getIdByName($tax_group_name)) {
$this->_html .= $this->displayError('This tax rule group cannot be saved, exists.');
return false;
}
$trg = new TaxRulesGroup();
$trg->name = $tax_group_name;
$trg->active = 1;
if (!$trg->save()) {
$this->_html .= $this->displayError('This tax rule group cannot be saved.');
return false;
}
foreach ($params_tax as $tax_values) {
if ($tax_values['product_type'] == $product_type) {
// Creation
$tr = new TaxRule();
$tr->id_tax_rules_group = $trg->id;
$tr->id_country = $tax_values['id_country'];
$tr->id_state = 0;
$tr->id_county = 0;
$tr->zipcode_from = 0;
$tr->zipcode_to = 0;
$tr->behavior = 0;
$tr->description = '';
$tr->id_tax = $tax_values['id_tax'];
$tr->save();
}
}
}
return true;
}