diff --git a/classes/LocalizationPack.php b/classes/LocalizationPack.php
index 899a4d44b..8399adde8 100644
--- a/classes/LocalizationPack.php
+++ b/classes/LocalizationPack.php
@@ -78,17 +78,33 @@ class LocalizationPackCore
protected function _installStates($xml)
{
if (isset($xml->states->state))
- foreach ($xml->states->state AS $data)
+ foreach ($xml->states->state as $data)
{
$attributes = $data->attributes();
-
if (!$id_state = State::getIdByName($attributes['name']))
{
$state = new State();
$state->name = strval($attributes['name']);
$state->iso_code = strval($attributes['iso_code']);
$state->id_country = Country::getByIso(strval($attributes['country']));
- $state->id_zone = (int)(Zone::getIdByName(strval($attributes['zone'])));
+
+ $id_zone = (int)Zone::getIdByName(strval($attributes['zone']));
+ if (!$id_zone)
+ {
+ $zone = new Zone();
+ $zone->name = (string)$attributes['zone'];
+ $zone->active = true;
+
+ if (!$zone->add())
+ {
+ $this->_errors[] = Tools::displayError('Invalid Zone name.');
+ return false;
+ }
+
+ $id_zone = $zone->id;
+ }
+
+ $state->id_zone = $id_zone;
if (!$state->validateFields())
{
@@ -126,9 +142,8 @@ class LocalizationPackCore
{
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)
+ foreach ($xml->taxes->tax as $taxData)
{
$attributes = $taxData->attributes();
if (Tax::getTaxIdByName($attributes['name']))
@@ -153,7 +168,7 @@ class LocalizationPackCore
$assoc_taxes[(int)$attributes['id']] = $tax->id;
}
- foreach ($xml->taxes->taxRulesGroup AS $group)
+ foreach ($xml->taxes->taxRulesGroup as $group)
{
$group_attributes = $group->attributes();
if (!Validate::isGenericName($group_attributes['name']))
@@ -172,7 +187,7 @@ class LocalizationPackCore
return false;
}
- foreach($group->taxRule as $rule)
+ foreach ($group->taxRule as $rule)
{
$rule_attributes = $rule->attributes();
@@ -188,25 +203,17 @@ class LocalizationPackCore
continue;
// Default values
- $id_state = (int) isset($rule_attributes['iso_code_state']) ? State::getIdByIso(strtoupper($rule_attributes['iso_code_state'])) : 0;
+ $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;
+ $zipcode_from = 0;
+ $zipcode_to = 0;
+ $behavior = $rule_attributes['behavior'];
- if ($id_state)
+ if (isset($rule_attributes['zipcode_from']))
{
- 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'];
+ $zipcode_from = $rule_attributes['zipcode_from'];
+ if (isset($rule_attributes['zipcode_to']))
+ $zipcode_to = $rule_attributes['zipcode_to'];
}
// Creation
@@ -215,14 +222,15 @@ class LocalizationPackCore
$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->zipcode_from = $zipcode_from;
+ $tr->zipcode_to = $zipcode_to;
+ $tr->behavior = $behavior;
+ $tr->description = $description;
$tr->id_tax = $assoc_taxes[strval($rule_attributes['id_tax'])];
$tr->save();
}
}
}
-
return true;
}
diff --git a/localization/ca.xml b/localization/ca.xml
index 0c189d80b..383adb542 100644
--- a/localization/ca.xml
+++ b/localization/ca.xml
@@ -7,16 +7,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/localization/fr.xml b/localization/fr.xml
index cbe6cf161..484ef4378 100644
--- a/localization/fr.xml
+++ b/localization/fr.xml
@@ -6,6 +6,10 @@
+
+
+
+