[tryton-debian-vcs] tryton-modules-party branch upstream updated. upstream/4.0.2-1-g5f89a26

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Tue Dec 6 15:59:11 UTC 2016


The following commit has been merged in the upstream branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-party.git;a=commitdiff;h=upstream/4.0.2-1-g5f89a26

commit 5f89a262f5a31a4bff0ca75e0fa7437dda9572b2
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Dec 5 09:34:29 2016 +0100

    Adding upstream version 4.2.0.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/CHANGELOG b/CHANGELOG
index 3b38f4c..5c21b16 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,8 +1,12 @@
-Version 4.0.2 - 2016-08-02
-* Bug fixes (see mercurial logs for details)
-
-Version 4.0.1 - 2016-05-11
-* Bug fixes (see mercurial logs for details)
+Version 4.2.0 - 2016-11-28
+* Bug fixes (see mercurial logs for details)
+* Add format to phone numbers
+* Rename VAT Code into Tax Identifier
+* Add sequence order on Identifier
+* Add Replace Party wizard
+* Remove streetbis from Address
+* Add address format per country and language
+* Restrict subdivision address to first level
 
 Version 4.0.0 - 2016-05-02
 * Bug fixes (see mercurial logs for details)
diff --git a/INSTALL b/INSTALL
index c41bc43..69e9703 100644
--- a/INSTALL
+++ b/INSTALL
@@ -8,6 +8,7 @@ Prerequisites
  * trytond (http://www.tryton.org/)
  * trytond_country (http://www.tryton.org/)
  * python-stdnum (http://arthurdejong.org/python-stdnum/)
+ * Optional: phonenumbers (http://pypi.python.org/pypi/phonenumbers)
 
 Installation
 ------------
@@ -24,7 +25,7 @@ site-packages directory on your system.
 For advanced options, please refer to the easy_install and/or the distutils
 documentation:
 
-  http://peak.telecommunity.com/DevCenter/EasyInstall
+  http://setuptools.readthedocs.io/en/latest/easy_install.html
   http://docs.python.org/inst/inst.html
 
 To use without installation, extract the archive into ``trytond/modules`` with
diff --git a/PKG-INFO b/PKG-INFO
index 1329ba7..32f4a19 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_party
-Version: 4.0.2
+Version: 4.2.0
 Summary: Tryton module with parties and addresses
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.0/
+Download-URL: http://downloads.tryton.org/4.2/
 Description: trytond_party
         =============
         
@@ -63,6 +63,7 @@ Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Hungarian
 Classifier: Natural Language :: Italian
+Classifier: Natural Language :: Polish
 Classifier: Natural Language :: Portuguese (Brazilian)
 Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Slovenian
diff --git a/__init__.py b/__init__.py
index a2abd6d..81abb45 100644
--- a/__init__.py
+++ b/__init__.py
@@ -16,10 +16,13 @@ def register():
         PartyCategory,
         PartyIdentifier,
         CheckVIESResult,
+        PartyReplaceAsk,
         Address,
+        AddressFormat,
         ContactMechanism,
         Configuration,
         module='party', type_='model')
     Pool.register(
         CheckVIES,
+        PartyReplace,
         module='party', type_='wizard')
diff --git a/address.py b/address.py
index dfbcd10..5061b23 100644
--- a/address.py
+++ b/address.py
@@ -1,15 +1,21 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
 'Address'
+from string import Template
+
 from sql import Null
 from sql.conditionals import Case
+from sql.operators import Concat
 
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelView, ModelSQL, MatchMixin, fields, \
+    sequence_ordered
 from trytond.pyson import Eval, If
 from trytond import backend
 from trytond.pool import Pool
+from trytond.transaction import Transaction
+from trytond.cache import Cache
 
-__all__ = ['Address']
+__all__ = ['Address', 'AddressFormat']
 
 STATES = {
     'readonly': ~Eval('active'),
@@ -17,7 +23,7 @@ STATES = {
 DEPENDS = ['active']
 
 
-class Address(ModelSQL, ModelView):
+class Address(sequence_ordered(), ModelSQL, ModelView):
     "Address"
     __name__ = 'party.address'
     party = fields.Many2One('party.party', 'Party', required=True,
@@ -25,18 +31,19 @@ class Address(ModelSQL, ModelView):
             'readonly': If(~Eval('active'), True, Eval('id', 0) > 0),
             },
         depends=['active', 'id'])
-    name = fields.Char('Name', states=STATES, depends=DEPENDS)
-    street = fields.Char('Street', states=STATES, depends=DEPENDS)
-    streetbis = fields.Char('Street (bis)', states=STATES, depends=DEPENDS)
+    name = fields.Char("Building Name", states=STATES, depends=DEPENDS)
+    street = fields.Text("Street", states=STATES, depends=DEPENDS)
     zip = fields.Char('Zip', states=STATES, depends=DEPENDS)
     city = fields.Char('City', states=STATES, depends=DEPENDS)
     country = fields.Many2One('country.country', 'Country',
         states=STATES, depends=DEPENDS)
     subdivision = fields.Many2One("country.subdivision",
-            'Subdivision', domain=[('country', '=', Eval('country'))],
-            states=STATES, depends=['active', 'country'])
+        'Subdivision', domain=[
+            ('country', '=', Eval('country', -1)),
+            ('parent', '=', None),
+            ],
+        states=STATES, depends=['active', 'country'])
     active = fields.Boolean('Active')
-    sequence = fields.Integer("Sequence")
     full_address = fields.Function(fields.Text('Full Address'),
             'get_full_address')
 
@@ -44,7 +51,6 @@ class Address(ModelSQL, ModelView):
     def __setup__(cls):
         super(Address, cls).__setup__()
         cls._order.insert(0, ('party', 'ASC'))
-        cls._order.insert(1, ('sequence', 'ASC'))
         cls._error_messages.update({
                 'write_party': 'You can not modify the party of address "%s".',
                 })
@@ -52,17 +58,22 @@ class Address(ModelSQL, ModelView):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        cursor = Transaction().connection.cursor()
         table = TableHandler(cls, module_name)
+        sql_table = cls.__table__()
 
         super(Address, cls).__register__(module_name)
 
         # Migration from 2.4: drop required on sequence
         table.not_null_action('sequence', action='remove')
 
-    @staticmethod
-    def order_sequence(tables):
-        table, _ = tables[None]
-        return [Case((table.sequence == Null, 0), else_=1), table.sequence]
+        # Migration from 4.0: remove streetbis
+        if table.column_exist('streetbis'):
+            value = Concat(sql_table.street, Concat('\n', sql_table.streetbis))
+            cursor.execute(*sql_table.update(
+                    [sql_table.street],
+                    [value]))
+            table.drop_column('streetbis')
 
     @staticmethod
     def default_active():
@@ -76,7 +87,8 @@ class Address(ModelSQL, ModelView):
             domain.append(('country', '=', self.country.id))
         if self.subdivision:
             domain.append(['OR',
-                    ('subdivision', '=', self.subdivision.id),
+                    ('subdivision', 'child_of',
+                        [self.subdivision.id], 'parent'),
                     ('subdivision', '=', None),
                     ])
         return domain
@@ -105,39 +117,38 @@ class Address(ModelSQL, ModelView):
         return self._autocomplete_search(domain, 'city')
 
     def get_full_address(self, name):
-        full_address = ''
-        if self.name:
-            full_address = self.name
-        if self.street:
-            if full_address:
-                full_address += '\n'
-            full_address += self.street
-        if self.streetbis:
-            if full_address:
-                full_address += '\n'
-            full_address += self.streetbis
-        if self.zip or self.city:
-            if full_address:
-                full_address += '\n'
-            if self.zip:
-                full_address += self.zip
-            if self.city:
-                if full_address[-1:] != '\n':
-                    full_address += ' '
-                full_address += self.city
-        if self.subdivision:
-            if full_address:
-                full_address += '\n'
-            full_address += self.subdivision.name
-        if self.country:
-            if full_address:
-                full_address += '\n'
-            full_address += self.country.name.upper()
-        return full_address
+        pool = Pool()
+        AddressFormat = pool.get('party.address.format')
+        full_address = Template(AddressFormat.get_format(self)).substitute(
+            **self._get_address_substitutions())
+        return '\n'.join(
+            filter(None, (x.strip() for x in full_address.splitlines())))
+
+    def _get_address_substitutions(self):
+        context = Transaction().context
+        substitutions = {
+            'party_name': '',
+            'name': self.name or '',
+            'street': self.street or '',
+            'zip': self.zip or '',
+            'city': self.city or '',
+            'subdivision': self.subdivision.name if self.subdivision else '',
+            'subdivision_code': (self.subdivision.code.split('-', 1)[1]
+                if self.subdivision else ''),
+            'country': self.country.name if self.country else '',
+            'country_code': self.country.code if self.country else '',
+            }
+        if context.get('address_from_country') == self.country:
+            substitutions['country'] = ''
+        if context.get('address_with_party', False):
+            substitutions['party_name'] = self.party.full_name
+        for key, value in substitutions.items():
+            substitutions[key.upper()] = value.upper()
+        return substitutions
 
     def get_rec_name(self, name):
-        return ", ".join(x for x in [self.name,
-                self.party.rec_name, self.zip, self.city] if x)
+        return ', '.join(
+            filter(None, [self.party.rec_name, self.zip, self.city]))
 
     @classmethod
     def search_rec_name(cls, name, clause):
@@ -148,7 +159,6 @@ class Address(ModelSQL, ModelView):
         return [bool_op,
             ('zip',) + tuple(clause[1:]),
             ('city',) + tuple(clause[1:]),
-            ('name',) + tuple(clause[1:]),
             ('party',) + tuple(clause[1:]),
             ]
 
@@ -168,3 +178,100 @@ class Address(ModelSQL, ModelView):
         if (self.subdivision
                 and self.subdivision.country != self.country):
             self.subdivision = None
+
+
+class AddressFormat(MatchMixin, ModelSQL, ModelView):
+    "Address Format"
+    __name__ = 'party.address.format'
+    country = fields.Many2One('country.country', "Country")
+    language = fields.Many2One('ir.lang', "Language")
+    active = fields.Boolean("Active")
+    format_ = fields.Text("Format", required=True,
+        help="Available variables (also in upper case):\n"
+        "- ${party_name}\n"
+        "- ${name}\n"
+        "- ${street}\n"
+        "- ${zip}\n"
+        "- ${city}\n"
+        "- ${subdivision}\n"
+        "- ${subdivision_code}\n"
+        "- ${country}\n"
+        "- ${country_code}")
+
+    _get_format_cache = Cache('party.address.format.get_format')
+
+    @classmethod
+    def __setup__(cls):
+        super(AddressFormat, cls).__setup__()
+        cls._order.insert(0, ('country', 'ASC'))
+        cls._order.insert(1, ('language', 'ASC'))
+
+    @classmethod
+    def default_active(cls):
+        return True
+
+    @classmethod
+    def default_format_(cls):
+        return """${party_name}
+${name}
+${street}
+${zip} ${city}
+${subdivision}
+${COUNTRY}"""
+
+    @staticmethod
+    def order_language(tables):
+        table, _ = tables[None]
+        return [Case((table.language == Null, 1), else_=0), table.language]
+
+    @classmethod
+    def create(cls, *args, **kwargs):
+        records = super(AddressFormat, cls).create(*args, **kwargs)
+        cls._get_format_cache.clear()
+        return records
+
+    @classmethod
+    def write(cls, *args, **kwargs):
+        super(AddressFormat, cls).write(*args, **kwargs)
+        cls._get_format_cache.clear()
+
+    @classmethod
+    def delete(cls, *args, **kwargs):
+        super(AddressFormat, cls).delete(*args, **kwargs)
+        cls._get_format_cache.clear()
+
+    @classmethod
+    def get_format(cls, address, pattern=None):
+        pool = Pool()
+        Language = pool.get('ir.lang')
+
+        if pattern is None:
+            pattern = {}
+        else:
+            pattern = pattern.copy()
+        pattern.setdefault(
+            'country', address.country.id if address.country else None)
+
+        languages = Language.search([
+                ('code', '=', Transaction().language),
+                ], limit=1)
+        if languages:
+            language, = languages
+        else:
+            language = None
+        pattern.setdefault('language', language.id if language else None)
+
+        key = tuple(sorted(pattern.iteritems()))
+        format_ = cls._get_format_cache.get(key)
+        if format_ is not None:
+            return format_
+
+        for record in cls.search([]):
+            if record.match(pattern):
+                format_ = record.format_
+                break
+        else:
+            format_ = cls.default_format_()
+
+        cls._get_format_cache.set(key, format_)
+        return format_
diff --git a/address.xml b/address.xml
index 86eaf4b..ecb3fea 100644
--- a/address.xml
+++ b/address.xml
@@ -39,5 +39,685 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem name="Addresses" parent="menu_party"
               sequence="2" action="act_address_form"
               id="menu_address_form"/>
+
+        <record model="ir.ui.view" id="address_format_view_list">
+            <field name="model">party.address.format</field>
+            <field name="type">tree</field>
+            <field name="name">address_format_list</field>
+        </record>
+
+        <record model="ir.ui.view" id="address_format_view_form">
+            <field name="model">party.address.format</field>
+            <field name="type">form</field>
+            <field name="name">address_format_form</field>
+        </record>
+
+        <record model="ir.action.act_window" id="act_address_format_form">
+            <field name="name">Address Formats</field>
+            <field name="res_model">party.address.format</field>
+        </record>
+        <record model="ir.action.act_window.view" id="act_address_format_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="address_format_view_list"/>
+            <field name="act_window" ref="act_address_format_form"/>
+        </record>
+        <record model="ir.action.act_window.view" id="act_address_format_form_view2">
+          <field name="sequence" eval="20"/>
+          <field name="view" ref="address_format_view_form"/>
+          <field name="act_window" ref="act_address_format_form"/>
+        </record>
+        <menuitem parent="menu_configuration" sequence="10"
+            action="act_address_format_form" id="menu_address_format_form"/>
+
+        <record model="ir.model.access" id="access_address_format">
+            <field name="model" search="[('model', '=', 'party.address.format')]"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="False"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
+        <record model="ir.model.access" id="access_address_format_admin">
+            <field name="model" search="[('model', '=', 'party.address.format')]"/>
+            <field name="group" ref="group_party_admin"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="True"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="True"/>
+        </record>
+
+    </data>
+    <data noupdate="1" grouped="1" skiptest="1">
+        <!-- From https://en.wikipedia.org/wiki/Address_(geography) -->
+        <record model="party.address.format" id="address_format_ar">
+            <field name="country" ref="country.ar"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${subdivision}
+${ZIP}, ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_au">
+            <field name="country" ref="country.au"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${subdivision}
+${CITY} ${SUBDIVISION} ${ZIP}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_at">
+            <field name="country" ref="country.at"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_bd">
+            <field name="country" ref="country.bd"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}-${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_by">
+            <field name="country" ref="country.by"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip}, ${city}
+${subdivision}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_be">
+            <field name="country" ref="country.be"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_br">
+            <field name="country" ref="country.br"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} - ${subdivision_code}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ca">
+            <field name="country" ref="country.ca"/>
+            <field name="format_">${party_name}
+${name}
+${STREET}
+${CITY} (${SUBDIVISION}) ${ZIP}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_cl">
+            <field name="country" ref="country.cl"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip}
+${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_cn_zh_CN">
+            <field name="country" ref="country.cn"/>
+            <field name="language" ref="ir.lang_zh_CN"/>
+            <field name="format_">${COUNTRY} ${ZIP}
+${subdivision}${city}${street}
+${name}
+${party_name}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_cn">
+            <field name="country" ref="country.cn"/>
+            <field name="format_">${COUNTRY} ${ZIP}
+${subdivision}, ${city}, ${street}
+${name}
+${party_name}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_hr">
+            <field name="country" ref="country.hr"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${COUNTRY_CODE}-${ZIP} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_cz">
+            <field name="country" ref="country.cz"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${COUNTRY_CODE}-${ZIP} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_dk">
+            <field name="country" ref="country.dk"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ee">
+            <field name="country" ref="country.ee"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_fi">
+            <field name="country" ref="country.fi"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_fr">
+            <field name="country" ref="country.fr"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${ZIP} ${CITY}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_de">
+            <field name="country" ref="country.de"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_gr">
+            <field name="country" ref="country.gr"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${COUNTRY_CODE}-${ZIP} ${CITY}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_hk">
+            <field name="country" ref="country.hk"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${district}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_hu">
+            <field name="country" ref="country.hu"/>
+            <field name="format_">${party_name}
+${name}
+${city}
+${street}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_is">
+            <field name="country" ref="country.is"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_in">
+            <field name="country" ref="country.in"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${CITY} ${zip}
+${district}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_id">
+            <field name="country" ref="country.id"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} ${zip}
+${district}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ir">
+            <field name="country" ref="country.ir"/>
+            <field name="format_">${party_name}
+${name}
+${city}
+${street}
+${district}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_iq">
+            <field name="country" ref="country.iq"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${district}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ie">
+            <field name="country" ref="country.ie"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_il">
+            <field name="country" ref="country.il"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_it">
+            <field name="country" ref="country.it"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city} ${DISTRICT_CODE}
+${COUNTRY}</field>
+        </record>
+
+        <!-- for Japan language
+        <record model="party.address.format" id="address_format_jp_jp_JP">
+            <field name="country" ref="country.jp"/>
+            <field name="language" ref="ir.lang_jp_JP"/>
+            <field name="format_">${COUNTRY}〒${zip}
+${subdivision}${city}${street}
+${name}
+${party_name}</field>
+        </record>
+        -->
+
+        <record model="party.address.format" id="address_format_jp">
+            <field name="country" ref="country.jp"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}, ${SUBDIVISION}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_lv">
+            <field name="country" ref="country.lv"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${district}
+${COUNTRY_CODE}-${ZIP}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_mo_zh_CN">
+            <field name="country" ref="country.mo"/>
+            <field name="language" ref="ir.lang_zh_CN"/>
+            <field name="format_">${COUNTRY}
+${city}
+${street}
+${name}
+${party_name}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_mo">
+            <field name="country" ref="country.mo"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_my">
+            <field name="country" ref="country.my"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${CITY}
+${SUBDIVISION}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_mx">
+            <field name="country" ref="country.mx"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip}, ${city}, ${subdivision}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_nl">
+            <field name="country" ref="country.nl"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip}  ${CITY}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_nz">
+            <field name="country" ref="country.nz"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_no">
+            <field name="country" ref="country.no"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${CITY}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_om">
+            <field name="country" ref="country.om"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_pk">
+            <field name="country" ref="country.pk"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${zip}
+${district}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_pe">
+            <field name="country" ref="country.pe"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${district}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ph">
+            <field name="country" ref="country.ph"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${CITY}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_pl">
+            <field name="country" ref="country.pl"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_pt">
+            <field name="country" ref="country.pt"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_qa">
+            <field name="country" ref="country.qa"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ro">
+            <field name="country" ref="country.ro"/>
+            <field name="format_">${party_name} ${name}
+${street}
+${city}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ru">
+            <field name="country" ref="country.ru"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${subdivision}
+${COUNTRY}
+${zip}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_sa">
+            <field name="country" ref="country.sa"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_rs">
+            <field name="country" ref="country.rs"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_sg">
+            <field name="country" ref="country.sg"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${CITY} ${ZIP}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_sk">
+            <field name="country" ref="country.sk"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_sl">
+            <field name="country" ref="country.sl"/>
+            <field name="format_">${name}
+${party_name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <!-- for Korean language
+        <record model="party.address.format" id="address_format_kr_kp_KR">
+            <field name="country" ref="country.kr"/>
+            <field name="language" ref="ir.lang_kp_KR"/>
+            <field name="format_">${COUNTRY}
+${district}${city}${street}
+${zip}</field>
+        </record>
+        -->
+
+        <record model="party.address.format" id="address_format_kr">
+            <field name="country" ref="country.kr"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_es">
+            <field name="country" ref="country.es"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${subdivision}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_lk">
+            <field name="country" ref="country.lk"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${CITY}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_se">
+            <field name="country" ref="country.se"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ch">
+            <field name="country" ref="country.ch"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_tw_zh_CN">
+            <field name="country" ref="country.tw"/>
+            <field name="language" ref="ir.lang_zh_CN"/>
+            <field name="format_">${COUNTRY}
+${zip}
+${street}
+${name}${party_name}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_tw">
+            <field name="country" ref="country.tw"/>
+            <field name="format_">${name} ${party_name}
+${street}
+${city}, ${district} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_th">
+            <field name="country" ref="country.th"/>
+            <field name="format_">${party_name}
+${street}
+${name}
+${district}
+${COUNTRY}
+${zip}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_tr">
+            <field name="country" ref="country.tr"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${zip} ${city} ${district}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_ua">
+            <field name="country" ref="country.ua"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${district}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_gb">
+            <field name="country" ref="country.gb"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}
+${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_us">
+            <field name="country" ref="country.us"/>
+            <field name="format_">${party_name}
+${name}
+${street}
+${city}, ${subdivision_code} ${zip}
+${COUNTRY}</field>
+        </record>
+
+        <record model="party.address.format" id="address_format_vn">
+            <field name="country" ref="country.vn"/>
+            <field name="format_">${party_name} (${name})
+${street}
+${city}
+${district}
+${COUNTRY}</field>
+        </record>
+
     </data>
 </tryton>
diff --git a/configuration.xml b/configuration.xml
index b8dc888..32d01e8 100644
--- a/configuration.xml
+++ b/configuration.xml
@@ -27,7 +27,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="menu" ref="menu_party_configuration"/>
             <field name="group" ref="group_party_admin"/>
         </record>
-
+    </data>
+    <data noupdate="1">
         <record model="ir.property" id="property_party_sequence">
             <field name="field"
                 search="[('model.model', '=', 'party.configuration'), ('name', '=', 'party_sequence')]"/>
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 35e9b61..41f14e1 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -1,9 +1,12 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
-from sql import Null
-from sql.conditionals import Case
+try:
+    import phonenumbers
+    from phonenumbers import PhoneNumberFormat, NumberParseException
+except ImportError:
+    phonenumbers = None
 
-from trytond.model import ModelView, ModelSQL, fields
+from trytond.model import ModelView, ModelSQL, fields, sequence_ordered
 from trytond.pyson import Eval
 from trytond import backend
 
@@ -28,7 +31,7 @@ _TYPES = [
 ]
 
 
-class ContactMechanism(ModelSQL, ModelView):
+class ContactMechanism(sequence_ordered(), ModelSQL, ModelView):
     "Contact Mechanism"
     __name__ = 'party.contact_mechanism'
     _rec_name = 'value'
@@ -37,12 +40,12 @@ class ContactMechanism(ModelSQL, ModelView):
         sort=False, depends=DEPENDS)
     value = fields.Char('Value', select=True, states=STATES, depends=DEPENDS
         # Add all function fields to ensure to always fill them via on_change
-        + ['email', 'website', 'skype', 'sip', 'other_value'])
+        + ['email', 'website', 'skype', 'sip', 'other_value', 'value_compact'])
+    value_compact = fields.Char('Value Compact', readonly=True)
     comment = fields.Text('Comment', states=STATES, depends=DEPENDS)
     party = fields.Many2One('party.party', 'Party', required=True,
         ondelete='CASCADE', states=STATES, select=True, depends=DEPENDS)
     active = fields.Boolean('Active', select=True)
-    sequence = fields.Integer('Sequence')
     email = fields.Function(fields.Char('E-Mail', states={
         'invisible': Eval('type') != 'email',
         'required': Eval('type') == 'email',
@@ -75,7 +78,7 @@ class ContactMechanism(ModelSQL, ModelView):
         'get_value', setter='set_value')
     url = fields.Function(fields.Char('URL', states={
                 'invisible': (~Eval('type').in_(['email', 'website', 'skype',
-                            'sip'])
+                            'sip', 'fax', 'phone'])
                     | ~Eval('url')),
                 }, depends=['type']),
         'get_url')
@@ -84,10 +87,11 @@ class ContactMechanism(ModelSQL, ModelView):
     def __setup__(cls):
         super(ContactMechanism, cls).__setup__()
         cls._order.insert(0, ('party', 'ASC'))
-        cls._order.insert(1, ('sequence', 'ASC'))
         cls._error_messages.update({
                 'write_party': ('You can not modify the party of contact '
                     'mechanism "%s".'),
+                'invalid_phonenumber': ('The phone number "%(phone)s" of '
+                    'party "%(party)s" is not valid .'),
                 })
 
     @classmethod
@@ -101,11 +105,6 @@ class ContactMechanism(ModelSQL, ModelView):
         table.not_null_action('sequence', action='remove')
 
     @staticmethod
-    def order_sequence(tables):
-        table, _ = tables[None]
-        return [Case((table.sequence == Null, 0), else_=1), table.sequence]
-
-    @staticmethod
     def default_type():
         return 'phone'
 
@@ -129,15 +128,45 @@ class ContactMechanism(ModelSQL, ModelView):
             return 'callto:%s' % value
         elif self.type == 'sip':
             return 'sip:%s' % value
+        elif self.type == 'phone':
+            return 'tel:%s' % value
+        elif self.type == 'fax':
+            return 'fax:%s' % value
         return None
 
     @classmethod
+    def format_value(cls, value=None, type_=None):
+        if phonenumbers and type_ == 'phone':
+            try:
+                phonenumber = phonenumbers.parse(value)
+            except NumberParseException:
+                pass
+            else:
+                value = phonenumbers.format_number(
+                    phonenumber, PhoneNumberFormat.INTERNATIONAL)
+        return value
+
+    @classmethod
+    def format_value_compact(cls, value=None, type_=None):
+        if phonenumbers and type_ == 'phone':
+            try:
+                phonenumber = phonenumbers.parse(value)
+            except NumberParseException:
+                pass
+            else:
+                value = phonenumbers.format_number(
+                    phonenumber, PhoneNumberFormat.E164)
+        return value
+
+    @classmethod
     def set_value(cls, mechanisms, name, value):
         #  Setting value is done by on_changes
         pass
 
-    def _change_value(self, value):
-        self.value = value
+    def _change_value(self, value, type_):
+        self.value = self.format_value(value=value, type_=type_)
+        self.value_compact = self.format_value_compact(
+            value=value, type_=type_)
         self.website = value
         self.email = value
         self.skype = value
@@ -151,27 +180,53 @@ class ContactMechanism(ModelSQL, ModelView):
 
     @fields.depends('value', 'type')
     def on_change_value(self):
-        return self._change_value(self.value)
+        return self._change_value(self.value, self.type)
 
     @fields.depends('website', 'type')
     def on_change_website(self):
-        return self._change_value(self.website)
+        return self._change_value(self.website, self.type)
 
     @fields.depends('email', 'type')
     def on_change_email(self):
-        return self._change_value(self.email)
+        return self._change_value(self.email, self.type)
 
     @fields.depends('skype', 'type')
     def on_change_skype(self):
-        return self._change_value(self.skype)
+        return self._change_value(self.skype, self.type)
 
     @fields.depends('sip', 'type')
     def on_change_sip(self):
-        return self._change_value(self.sip)
+        return self._change_value(self.sip, self.type)
 
     @fields.depends('other_value', 'type')
     def on_change_other_value(self):
-        return self._change_value(self.other_value)
+        return self._change_value(self.other_value, self.type)
+
+    @classmethod
+    def search_rec_name(cls, name, clause):
+        return ['OR',
+            ('value',) + tuple(clause[1:]),
+            ('value_compact',) + tuple(clause[1:]),
+            ]
+
+    @classmethod
+    def _format_values(cls, mechanisms):
+        for mechanism in mechanisms:
+            value = mechanism.format_value(
+                value=mechanism.value, type_=mechanism.type)
+            if value != mechanism.value:
+                mechanism.value = value
+            value_compact = mechanism.format_value_compact(
+                value=mechanism.value, type_=mechanism.type)
+            if value_compact != mechanism.value_compact:
+                mechanism.value_compact = value_compact
+        cls.save(mechanisms)
+
+    @classmethod
+    def create(cls, vlist):
+        mechanisms = super(ContactMechanism, cls).create(vlist)
+        cls._format_values(mechanisms)
+        return mechanisms
 
     @classmethod
     def write(cls, *args):
@@ -183,3 +238,22 @@ class ContactMechanism(ModelSQL, ModelView):
                         cls.raise_user_error(
                             'write_party', (mechanism.rec_name,))
         super(ContactMechanism, cls).write(*args)
+        cls._format_values(mechanisms)
+
+    @classmethod
+    def validate(cls, mechanisms):
+        super(ContactMechanism, cls).validate(mechanisms)
+        for mechanism in mechanisms:
+            mechanism.check_valid_phonenumber()
+
+    def check_valid_phonenumber(self):
+        if not phonenumbers:
+            return
+        try:
+            phonenumbers.parse(self.value)
+        except NumberParseException:
+            self.raise_user_error(
+                'invalid_phonenumber', {
+                    'phone': self.value,
+                    'party': self.party.rec_name
+                    })
diff --git a/doc/index.rst b/doc/index.rst
index 630e18a..45d474a 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -32,6 +32,17 @@ Address
 
 An address is made of a name, a street, a zip number, a city, a
 country, a subdivision. A sequence allow to order them.
+The field *Full Address* returns the formatted address included the name of the
+party if the context has `address_with_party` set to True and without the
+country if the context key `address_from_country` is the same as the country of
+the address.
+
+
+Address Format
+**************
+
+It allows to define per country and language, how addresses should be
+formatted.
 
 
 Contact Mechanism
diff --git a/locale/bg_BG.po b/locale/bg.po
similarity index 82%
rename from locale/bg_BG.po
rename to locale/bg.po
index 65ae5fa..bc02f9c 100644
--- a/locale/bg_BG.po
+++ b/locale/bg.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "VIES услугата е недостъпна, опитайте отново по-късно."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Активен"
@@ -58,8 +72,9 @@ msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ID"
 
+#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr "Име"
 
 msgctxt "field:party.address,party:"
@@ -78,10 +93,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Улица"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Улица 2"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Подразделение"
@@ -98,6 +109,55 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Пощ. код"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Активен"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Държава"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Език"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Активен"
@@ -239,6 +299,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Стойност"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Website"
@@ -275,6 +339,11 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Име"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Последователност"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Вид"
@@ -359,9 +428,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Име"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "ДДС код"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr ""
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -407,10 +480,41 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Адреси"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Категории"
@@ -444,6 +548,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Провека в VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Партньор"
@@ -456,6 +564,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Адреси"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Категории"
@@ -489,6 +601,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Адрес"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Категория"
@@ -517,6 +633,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Партньор - Категория"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Управление на партньор"
@@ -561,6 +681,31 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Website"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Основен"
+
+#, fuzzy
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Партньор"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "Добре"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Адреси"
@@ -588,27 +733,3 @@ msgstr "Начин на контакт"
 msgctxt "view:party.contact_mechanism:"
 msgid "Contact Mechanisms"
 msgstr "Начини на контакт"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Основен"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Партньори"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Партньор"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Добре"
diff --git a/locale/ca_ES.po b/locale/ca.po
similarity index 74%
rename from locale/ca_ES.po
rename to locale/ca.po
index 3bfdade..dbbb869 100644
--- a/locale/ca_ES.po
+++ b/locale/ca.po
@@ -21,6 +21,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "El servei VIES no està disponible, intenteu-ho de nou més tard."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr "El número de telèfon \"%(phone)s\" del tercer \"%(party)s\" no és valid."
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "No podeu modificar el tercer del contacte \"%s\"."
 
@@ -32,6 +36,19 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "El codi del tercer ha de ser únic."
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+"Els tercers tenen diferent Identificador impositiu: %(source_code)s vs "
+"%(destination_code)s."
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+"Els tercers tenen diferent nom: %(source_name)s vs %(destination_name)s."
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Actiu"
@@ -46,11 +63,11 @@ msgstr "País"
 
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
@@ -61,8 +78,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Contacte"
+msgid "Building Name"
+msgstr "Nom de l'edifici"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
@@ -80,26 +97,62 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Carrer"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Carrer (bis)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Subdivisió"
 
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Codi postal"
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "País"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Data de creació"
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Usuari de creació"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr "Format"
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Data de modificació"
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Usuari de modificació"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Actiu"
@@ -110,11 +163,11 @@ msgstr "Fills"
 
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.category,id:"
 msgid "ID"
@@ -134,11 +187,11 @@ msgstr "Nom"
 
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
 
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
@@ -154,11 +207,11 @@ msgstr "Tercers correctes"
 
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.configuration,id:"
 msgid "ID"
@@ -174,11 +227,11 @@ msgstr "Nom"
 
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
 
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
@@ -190,11 +243,11 @@ msgstr "Comentari"
 
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
@@ -240,17 +293,21 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Valor"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr "Valor compacte"
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Lloc web"
 
 msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
@@ -258,11 +315,11 @@ msgstr "Codi"
 
 msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.identifier,id:"
 msgid "ID"
@@ -276,17 +333,21 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Contacte"
 
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Tipus"
 
 msgctxt "field:party.identifier,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
 
 msgctxt "field:party.party,active:"
 msgid "Active"
@@ -314,11 +375,11 @@ msgstr "Mitjans de contacte"
 
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.party,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.party,email:"
 msgid "E-Mail"
@@ -360,9 +421,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "CIF/NIF"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr "Substituït per"
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identificador impositiu"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -370,11 +435,11 @@ msgstr "Lloc web"
 
 msgctxt "field:party.party,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
@@ -382,11 +447,11 @@ msgstr "Categoria"
 
 msgctxt "field:party.party-party.category,create_date:"
 msgid "Create Date"
-msgstr "Data creació"
+msgstr "Data de creació"
 
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr "Usuari creació"
+msgstr "Usuari de creació"
 
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
@@ -402,16 +467,56 @@ msgstr "Nom"
 
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
-msgstr "Data modificació"
+msgstr "Data de modificació"
 
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
-msgstr "Usuari modificació"
+msgstr "Usuari de modificació"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Destí"
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Origen"
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+"Variables disponibles (també en majúscules):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Adreces"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Formats de les adreces"
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Categories de tercer"
@@ -444,6 +549,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Comprovar VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr "Substitueix"
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Tercer"
@@ -456,6 +565,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Adreces"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Formats de les adreces"
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Categories"
@@ -488,6 +601,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Adreça"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Format de les adreces"
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Categoria"
@@ -516,6 +633,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Tercer - Categoria"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr "Substitueix tercer"
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Administració de tercers"
@@ -560,6 +681,30 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Lloc Web"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr "Substitueix per"
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "D'acord"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Cancel·la"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr "Substitueix"
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Adreces"
@@ -595,19 +740,3 @@ msgstr "Identificador del tercer"
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
 msgstr "Identificadors del tercer"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "General"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Tercers"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Tercer"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "D'acord"
diff --git a/locale/cs_CZ.po b/locale/cs.po
similarity index 80%
rename from locale/cs_CZ.po
rename to locale/cs.po
index 589e7e5..b651f93 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr ""
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr ""
@@ -38,9 +52,10 @@ msgctxt "field:party.address,city:"
 msgid "City"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,country:"
 msgid "Country"
-msgstr ""
+msgstr "Coventry"
 
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
@@ -59,16 +74,17 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr ""
 
 msgctxt "field:party.address,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.address,sequence:"
 msgid "Sequence"
@@ -78,10 +94,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr ""
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr ""
-
 #, fuzzy
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
@@ -99,6 +111,48 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr ""
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Coventry"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr ""
@@ -119,17 +173,19 @@ msgctxt "field:party.category,id:"
 msgid "ID"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.category,name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.category,parent:"
 msgid "Parent"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.category,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
@@ -167,9 +223,10 @@ msgctxt "field:party.configuration,party_sequence:"
 msgid "Party Sequence"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.configuration,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
@@ -211,9 +268,10 @@ msgctxt "field:party.contact_mechanism,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.contact_mechanism,sequence:"
 msgid "Sequence"
@@ -239,6 +297,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr ""
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr ""
@@ -271,8 +333,13 @@ msgctxt "field:party.identifier,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
 msgstr ""
 
 msgctxt "field:party.identifier,type:"
@@ -347,20 +414,26 @@ msgctxt "field:party.party,mobile:"
 msgid "Mobile"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.party,phone:"
 msgid "Phone"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,rec_name:"
 msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
 msgstr ""
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
 msgstr ""
 
 msgctxt "field:party.party,website:"
@@ -395,9 +468,10 @@ msgctxt "field:party.party-party.category,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
@@ -407,10 +481,40 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr ""
@@ -443,6 +547,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr ""
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr ""
@@ -455,6 +563,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr ""
@@ -487,6 +599,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr ""
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr ""
@@ -515,6 +631,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr ""
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr ""
@@ -559,54 +679,26 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr ""
 
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr ""
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
 msgctxt "view:party.party:"
 msgid "General"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Parties"
+msgctxt "view:party.replace.ask:"
+msgid "Party"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Party"
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
 msgstr ""
 
 msgctxt "wizard_button:party.check_vies,result,end:"
 msgid "OK"
 msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
diff --git a/locale/de_DE.po b/locale/de.po
similarity index 78%
copy from locale/de_DE.po
copy to locale/de.po
index dc0e7cd..75c0858 100644
--- a/locale/de_DE.po
+++ b/locale/de.po
@@ -22,8 +22,12 @@ msgstr ""
 "VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!"
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr "Die Telefonnummer \"%(phone)s\" von Partei \"%(party)s\" ist nicht gültig."
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "Änderung der Partei von Kontaktmechanismus \"%s\" nicht möglich."
+msgstr "Änderung der Partei von Kontakt \"%s\" nicht möglich."
 
 msgctxt "error:party.identifier:"
 msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
@@ -33,6 +37,20 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "Der Code für eine Partei kann nur einmal vergeben werden."
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+"Die Parteien weisen unterschiedliche Steuernummern auf: %(source_code)s "
+"gegenüber %(destination_code)s."
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+"Die Parteien weisen unterschiedliche Namen auf: %(source_name)s gegenüber "
+"%(destination_name)s."
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Aktiv"
@@ -62,8 +80,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Name"
+msgid "Building Name"
+msgstr "Gebäude"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
@@ -79,11 +97,7 @@ msgstr "Reihenfolge"
 
 msgctxt "field:party.address,street:"
 msgid "Street"
-msgstr "Anschrift 1"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Anschrift 2"
+msgstr "Anschrift"
 
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
@@ -101,6 +115,46 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Postleitzahl"
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Staat"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr "Format"
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Aktiv"
@@ -241,6 +295,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Wert"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr "Kompaktformat"
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Homepage"
@@ -277,6 +335,10 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Name"
 
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Typ"
@@ -311,7 +373,7 @@ msgstr "Code (nur lesbar)"
 
 msgctxt "field:party.party,contact_mechanisms:"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Kontaktdaten"
 
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
@@ -361,9 +423,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Name"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "USt-ID-Nr."
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr "Ersetzt durch"
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Steueridentifikator"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -409,10 +475,50 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Ziel"
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Quelle"
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+"Verfügbare Variablen (auch in Großbuchstaben):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Adressen"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Adressformate"
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Parteikategorien"
@@ -423,7 +529,7 @@ msgstr "Parteikategorien"
 
 msgctxt "model:ir.action,name:act_contact_mechanism_form"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Kontaktdaten"
 
 msgctxt "model:ir.action,name:act_party_by_category"
 msgid "Parties by Category"
@@ -445,6 +551,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "USt-ID-Nr. per VIES überprüfen"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr "Ersetzen"
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Partei"
@@ -457,6 +567,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Adressen"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Adressformate"
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Kategorien"
@@ -471,7 +585,7 @@ msgstr "Einstellungen"
 
 msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Kontaktdaten"
 
 msgctxt "model:ir.ui.menu,name:menu_party"
 msgid "Party"
@@ -489,6 +603,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Adresse"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Adressformat"
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Kategorie"
@@ -507,7 +625,7 @@ msgstr "Kontaktmöglichkeit"
 
 msgctxt "model:party.identifier,name:"
 msgid "Party Identifier"
-msgstr "Partei Identifkator"
+msgstr "Parteiidentifikator"
 
 msgctxt "model:party.party,name:"
 msgid "Party"
@@ -517,6 +635,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Partei - Parteikategorie"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr "Partei ersetzen"
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Parteien Administration"
@@ -561,6 +683,30 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Homepage"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr "Ersetzen durch"
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr "Ersetzen"
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Adressen"
@@ -587,28 +733,12 @@ msgstr "Kontaktmöglichkeit"
 
 msgctxt "view:party.contact_mechanism:"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Kontaktdaten"
 
 msgctxt "view:party.identifier:"
 msgid "Party Identifier"
-msgstr "Partei Identifikator"
+msgstr "Parteiidentifikator"
 
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
-msgstr "Partei Identifikatoren"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Allgemein"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Parteien"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Partei"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "OK"
+msgstr "Parteiidentifikator"
diff --git a/locale/es_ES.po b/locale/es.po
similarity index 74%
rename from locale/es_ES.po
rename to locale/es.po
index f9974c5..62504ed 100644
--- a/locale/es_ES.po
+++ b/locale/es.po
@@ -21,6 +21,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "El servicio VIES no está disponible, inténtelo de nuevo más tarde."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr "El número de teléfono \"%(phone)s\" del tercero \"%(party)s\" no es válido. "
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "No puede modificar el tercero del contacto \"%s\"."
 
@@ -32,6 +36,20 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "El código del tercero debe ser único."
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+"Los terceros tienen distinto identificador impositivo: %(source_code)s vs "
+"%(destination_code)s."
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+"Los terceros tienen nombre distinto: %(source_name)s vs "
+"%(destination_name)s."
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Activo"
@@ -46,11 +64,11 @@ msgstr "País"
 
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
@@ -61,8 +79,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Contacto"
+msgid "Building Name"
+msgstr "Nombre del edificio"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
@@ -80,26 +98,62 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Calle"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Calle (bis)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Subdivisión"
 
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Código postal"
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "País"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Fecha de creación"
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Usuario de creación"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr "Formato"
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Fecha de modificación"
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Usuario de modificación"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Activo"
@@ -110,11 +164,11 @@ msgstr "Hijos"
 
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.category,id:"
 msgid "ID"
@@ -134,11 +188,11 @@ msgstr "Nombre"
 
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
 
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
@@ -154,11 +208,11 @@ msgstr "Terceros correctos"
 
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.configuration,id:"
 msgid "ID"
@@ -174,11 +228,11 @@ msgstr "Nombre"
 
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
 
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
@@ -190,11 +244,11 @@ msgstr "Comentario"
 
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
@@ -240,17 +294,21 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Valor"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr "Valor compacto"
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Sitio Web"
 
 msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
@@ -258,11 +316,11 @@ msgstr "Código"
 
 msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.identifier,id:"
 msgid "ID"
@@ -276,17 +334,21 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Contacto"
 
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Secuencia"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Tipo"
 
 msgctxt "field:party.identifier,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
 
 msgctxt "field:party.party,active:"
 msgid "Active"
@@ -314,11 +376,11 @@ msgstr "Medios de contacto"
 
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.party,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.party,email:"
 msgid "E-Mail"
@@ -360,9 +422,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Nombre"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "CIF/NIF"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr "Reemplazado por"
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identificador impositivo"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -370,11 +436,11 @@ msgstr "Sitio Web"
 
 msgctxt "field:party.party,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
@@ -382,11 +448,11 @@ msgstr "Categoría"
 
 msgctxt "field:party.party-party.category,create_date:"
 msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Usuario de creación"
 
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
@@ -402,16 +468,56 @@ msgstr "Nombre"
 
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Usuario de modificación"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Destino"
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Origen"
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+"Variables disponibles (también en mayúsculas):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Direcciones"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Formatos de las direcciones"
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Categorías de tercero"
@@ -444,6 +550,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Comprobar VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr "Reemplazar"
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Tercero"
@@ -456,6 +566,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Direcciones"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Formatos de las direcciones"
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Categorías"
@@ -488,6 +602,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Dirección"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Formato de la dirección"
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Categoría"
@@ -516,6 +634,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Terceros - Categoría"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr "Reemplazar tercero"
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Administración de terceros"
@@ -560,6 +682,30 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Sitio Web"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr "Reemplazar por"
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr "Reemplazar"
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Direcciones"
@@ -595,19 +741,3 @@ msgstr "Identificador del tercero"
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
 msgstr "Identificadores del tercero"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "General"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Aceptar"
diff --git a/locale/lt_LT.po b/locale/es_419.po
similarity index 76%
copy from locale/lt_LT.po
copy to locale/es_419.po
index ce1b20c..31416f6 100644
--- a/locale/lt_LT.po
+++ b/locale/es_419.po
@@ -19,17 +19,33 @@ msgid "The VIES service is unavailable, try again later."
 msgstr ""
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
 msgctxt "error:party.identifier:"
 msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
 msgstr ""
+"El número de C.I./RUC/NIT/CUIT \"%(vat)s\" del tercero \"%(party)s\" no es "
+"válido."
 
 msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr ""
@@ -48,7 +64,7 @@ msgstr ""
 
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
@@ -59,7 +75,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr ""
 
 msgctxt "field:party.address,party:"
@@ -78,13 +94,9 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr ""
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr ""
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
-msgstr ""
+msgstr "Provincia"
 
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
@@ -92,12 +104,52 @@ msgstr ""
 
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr ""
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr ""
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Creado por usuario"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Modificado por usuario"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr ""
@@ -112,7 +164,7 @@ msgstr ""
 
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.category,id:"
 msgid "ID"
@@ -136,7 +188,7 @@ msgstr ""
 
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
@@ -144,11 +196,11 @@ msgstr ""
 
 msgctxt "field:party.check_vies.result,parties_failed:"
 msgid "Parties Failed"
-msgstr ""
+msgstr "Terceros erróneos"
 
 msgctxt "field:party.check_vies.result,parties_succeed:"
 msgid "Parties Succeed"
-msgstr ""
+msgstr "Terceros corrrectos"
 
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
@@ -156,7 +208,7 @@ msgstr ""
 
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.configuration,id:"
 msgid "ID"
@@ -176,7 +228,7 @@ msgstr ""
 
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
@@ -192,11 +244,11 @@ msgstr ""
 
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
-msgstr ""
+msgstr "Email"
 
 msgctxt "field:party.contact_mechanism,id:"
 msgid "ID"
@@ -238,6 +290,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr ""
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr ""
@@ -248,7 +304,7 @@ msgstr ""
 
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
@@ -260,7 +316,7 @@ msgstr ""
 
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.identifier,id:"
 msgid "ID"
@@ -274,6 +330,10 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr ""
 
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr ""
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr ""
@@ -284,7 +344,7 @@ msgstr ""
 
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:party.party,active:"
 msgid "Active"
@@ -304,7 +364,7 @@ msgstr ""
 
 msgctxt "field:party.party,code_readonly:"
 msgid "Code Readonly"
-msgstr ""
+msgstr "Código de sólo lectura"
 
 msgctxt "field:party.party,contact_mechanisms:"
 msgid "Contact Mechanisms"
@@ -316,11 +376,11 @@ msgstr ""
 
 msgctxt "field:party.party,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.party,email:"
 msgid "E-Mail"
-msgstr ""
+msgstr "Email"
 
 msgctxt "field:party.party,fax:"
 msgid "Fax"
@@ -358,10 +418,14 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
 msgstr ""
 
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identificador de impuesto"
+
 msgctxt "field:party.party,website:"
 msgid "Website"
 msgstr ""
@@ -372,7 +436,7 @@ msgstr ""
 
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
@@ -384,7 +448,7 @@ msgstr ""
 
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
@@ -404,19 +468,49 @@ msgstr ""
 
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
+msgstr "Modificado por usuario"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
 msgstr ""
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
-msgstr ""
+msgstr "Categorías"
 
 msgctxt "model:ir.action,name:act_category_tree"
 msgid "Categories"
-msgstr ""
+msgstr "Categorías"
 
 msgctxt "model:ir.action,name:act_contact_mechanism_form"
 msgid "Contact Mechanisms"
@@ -442,6 +536,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr ""
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr ""
@@ -454,13 +552,17 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_category_tree"
 msgid "Categories"
-msgstr ""
+msgstr "Categorías"
 
 msgctxt "model:ir.ui.menu,name:menu_configuration"
 msgid "Configuration"
@@ -476,7 +578,7 @@ msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_party_configuration"
 msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de terceros"
 
 msgctxt "model:ir.ui.menu,name:menu_party_form"
 msgid "Parties"
@@ -486,6 +588,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr ""
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr ""
@@ -514,13 +620,17 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr ""
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr ""
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "E-Mail"
-msgstr ""
+msgstr "Email"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Fax"
@@ -558,54 +668,26 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr ""
 
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr ""
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
 msgctxt "view:party.party:"
 msgid "General"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Parties"
+msgctxt "view:party.replace.ask:"
+msgid "Party"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Party"
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
 msgstr ""
 
 msgctxt "wizard_button:party.check_vies,result,end:"
 msgid "OK"
 msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
diff --git a/locale/es_AR.po b/locale/es_AR.po
deleted file mode 100644
index 2f2335c..0000000
--- a/locale/es_AR.po
+++ /dev/null
@@ -1,614 +0,0 @@
-# 
-msgid ""
-msgstr "Content-Type: text/plain; charset=utf-8\n"
-
-msgctxt "error:party.address:"
-msgid "You can not modify the party of address \"%s\"."
-msgstr "No puede modificar la entidad de la dirección «%s»."
-
-msgctxt "error:party.category:"
-msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
-msgstr ""
-"Nombre de categoría «%s» no es correcto: No puede utilizar « / » en el campo"
-" nombre."
-
-msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent."
-msgstr ""
-"El nombre de la categoría de la entidad debe ser único según el padre."
-
-msgctxt "error:party.check_vies:"
-msgid "The VIES service is unavailable, try again later."
-msgstr "El servicio VIES no está disponible, inténtelo de nuevo más tarde."
-
-msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "No puede modificar la entidad del contacto «%s»."
-
-msgctxt "error:party.identifier:"
-msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
-msgstr "El CUIT «%(code)s» de la entidad «%(party)s» no es correcto."
-
-msgctxt "error:party.party:"
-msgid "The code of the party must be unique."
-msgstr "El código de la entidad debe ser único."
-
-msgctxt "field:party.address,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.address,city:"
-msgid "City"
-msgstr "Ciudad"
-
-msgctxt "field:party.address,country:"
-msgid "Country"
-msgstr "País"
-
-msgctxt "field:party.address,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.address,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.address,full_address:"
-msgid "Full Address"
-msgstr "Dirección completa"
-
-msgctxt "field:party.address,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.address,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.address,street:"
-msgid "Street"
-msgstr "Calle"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Calle (bis)"
-
-msgctxt "field:party.address,subdivision:"
-msgid "Subdivision"
-msgstr "Subdivisión"
-
-msgctxt "field:party.address,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.address,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.address,zip:"
-msgid "Zip"
-msgstr "Código Postal"
-
-msgctxt "field:party.category,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.category,childs:"
-msgid "Children"
-msgstr "Hijos"
-
-msgctxt "field:party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.category,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.category,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,parent:"
-msgid "Parent"
-msgstr "Padre"
-
-msgctxt "field:party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.category,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.check_vies.result,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.check_vies.result,parties_failed:"
-msgid "Parties Failed"
-msgstr "Entidades erróneas"
-
-msgctxt "field:party.check_vies.result,parties_succeed:"
-msgid "Parties Succeed"
-msgstr "Entidades correctas"
-
-msgctxt "field:party.configuration,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.configuration,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.configuration,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.configuration,party_sequence:"
-msgid "Party Sequence"
-msgstr "Secuencia de entidades"
-
-msgctxt "field:party.configuration,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.configuration,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.configuration,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.contact_mechanism,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.contact_mechanism,comment:"
-msgid "Comment"
-msgstr "Comentario"
-
-msgctxt "field:party.contact_mechanism,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.contact_mechanism,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.contact_mechanism,email:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "field:party.contact_mechanism,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.contact_mechanism,other_value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.contact_mechanism,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.contact_mechanism,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.contact_mechanism,sip:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "field:party.contact_mechanism,skype:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "field:party.contact_mechanism,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.contact_mechanism,url:"
-msgid "URL"
-msgstr "URL"
-
-msgctxt "field:party.contact_mechanism,value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.contact_mechanism,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.contact_mechanism,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.identifier,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.identifier,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.identifier,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.identifier,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.identifier,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.identifier,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.identifier,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.identifier,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.identifier,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.party,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.party,addresses:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "field:party.party,categories:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "field:party.party,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.party,code_readonly:"
-msgid "Code Readonly"
-msgstr "Código sólo lectura"
-
-msgctxt "field:party.party,contact_mechanisms:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "field:party.party,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.party,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.party,email:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "field:party.party,fax:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "field:party.party,full_name:"
-msgid "Full Name"
-msgstr "Nombre completo"
-
-msgctxt "field:party.party,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party,identifiers:"
-msgid "Identifiers"
-msgstr "Identificadores"
-
-msgctxt "field:party.party,lang:"
-msgid "Language"
-msgstr "Idioma"
-
-msgctxt "field:party.party,mobile:"
-msgid "Mobile"
-msgstr "Móvil"
-
-msgctxt "field:party.party,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,phone:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "field:party.party,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "CUIT"
-
-msgctxt "field:party.party,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.party,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.party,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.party-party.category,category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "field:party.party-party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.party-party.category,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.party-party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party-party.category,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.party-party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party-party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.party-party.category,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "model:ir.action,name:act_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.action,name:act_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "model:ir.action,name:act_party_by_category"
-msgid "Parties by Category"
-msgstr "Entidades por categoría"
-
-msgctxt "model:ir.action,name:act_party_configuration_form"
-msgid "Party Configuration"
-msgstr "Configuración de entidades"
-
-msgctxt "model:ir.action,name:act_party_form"
-msgid "Parties"
-msgstr "Entidades"
-
-msgctxt "model:ir.action,name:report_label"
-msgid "Labels"
-msgstr "Etiquetas"
-
-msgctxt "model:ir.action,name:wizard_check_vies"
-msgid "Check VIES"
-msgstr "Comprobar VIES"
-
-msgctxt "model:ir.sequence,name:sequence_party"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "model:ir.sequence.type,name:sequence_type_party"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "model:ir.ui.menu,name:menu_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.ui.menu,name:menu_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_configuration"
-msgid "Configuration"
-msgstr "Configuración"
-
-msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "model:ir.ui.menu,name:menu_party"
-msgid "Party"
-msgstr "Entidades"
-
-msgctxt "model:ir.ui.menu,name:menu_party_configuration"
-msgid "Party Configuration"
-msgstr "Entidades"
-
-msgctxt "model:ir.ui.menu,name:menu_party_form"
-msgid "Parties"
-msgstr "Entidades"
-
-msgctxt "model:party.address,name:"
-msgid "Address"
-msgstr "Dirección"
-
-msgctxt "model:party.category,name:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "model:party.check_vies.result,name:"
-msgid "Check VIES"
-msgstr "Comprobar VIES"
-
-msgctxt "model:party.configuration,name:"
-msgid "Party Configuration"
-msgstr "Configuración de entidades"
-
-msgctxt "model:party.contact_mechanism,name:"
-msgid "Contact Mechanism"
-msgstr "Medio de contacto"
-
-msgctxt "model:party.identifier,name:"
-msgid "Party Identifier"
-msgstr "Identificador de entidad"
-
-msgctxt "model:party.party,name:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "model:party.party-party.category,name:"
-msgid "Party - Category"
-msgstr "Entidades - Categoría"
-
-msgctxt "model:res.group,name:group_party_admin"
-msgid "Party Administration"
-msgstr "Administración de entidades"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "IRC"
-msgstr "IRC"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Jabber"
-msgstr "Jabber"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Mobile"
-msgstr "Móvil"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Other"
-msgstr "Otro"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr "CUIT Resultados del Sistema de Intercambio de Información"
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr "Configuración de entidades"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr "Medio de contacto"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr "Identificador de entidad"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr "Identificadores de entidad"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "General"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Entidades"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Aceptar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
deleted file mode 100644
index 3467988..0000000
--- a/locale/es_CO.po
+++ /dev/null
@@ -1,613 +0,0 @@
-# 
-msgid ""
-msgstr "Content-Type: text/plain; charset=utf-8\n"
-
-msgctxt "error:party.address:"
-msgid "You can not modify the party of address \"%s\"."
-msgstr "Usted no puede modificar la dirección del tercero \"%s\" "
-
-msgctxt "error:party.category:"
-msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
-msgstr ""
-"Inválida categoría de nombre \"%s\":  Usted no puede usar \"/\" en el nombre"
-" del campo."
-
-msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent."
-msgstr "¡El nombre de una categoría de tercero debe ser único por cada padre!"
-
-msgctxt "error:party.check_vies:"
-msgid "The VIES service is unavailable, try again later."
-msgstr "El servicio VIES no está disponible, inténtelo de nuevo más tarde"
-
-msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "Usted no puede modificar los medios de contacto del tercero \"%s\" "
-
-msgctxt "error:party.identifier:"
-msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
-msgstr "Inválido número NIT \"%(vat)s\" en tercero \"%(party)s\"."
-
-msgctxt "error:party.party:"
-msgid "The code of the party must be unique."
-msgstr "El código del tercero debe ser único."
-
-msgctxt "field:party.address,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.address,city:"
-msgid "City"
-msgstr "Ciudad"
-
-msgctxt "field:party.address,country:"
-msgid "Country"
-msgstr "País"
-
-msgctxt "field:party.address,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.address,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.address,full_address:"
-msgid "Full Address"
-msgstr "Dirección Completa"
-
-msgctxt "field:party.address,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.address,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.address,street:"
-msgid "Street"
-msgstr "Dirección"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Dirección (bis)"
-
-msgctxt "field:party.address,subdivision:"
-msgid "Subdivision"
-msgstr "Departamento"
-
-msgctxt "field:party.address,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.address,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:party.address,zip:"
-msgid "Zip"
-msgstr "Código Postal"
-
-msgctxt "field:party.category,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.category,childs:"
-msgid "Children"
-msgstr "Hijos"
-
-msgctxt "field:party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.category,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.category,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,parent:"
-msgid "Parent"
-msgstr "Padre"
-
-msgctxt "field:party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.category,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:party.check_vies.result,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.check_vies.result,parties_failed:"
-msgid "Parties Failed"
-msgstr "Terceros Incorrectos"
-
-msgctxt "field:party.check_vies.result,parties_succeed:"
-msgid "Parties Succeed"
-msgstr "Terceros Corrrectos"
-
-msgctxt "field:party.configuration,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.configuration,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.configuration,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.configuration,party_sequence:"
-msgid "Party Sequence"
-msgstr "Secuencia de Tercero"
-
-msgctxt "field:party.configuration,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.configuration,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.configuration,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:party.contact_mechanism,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.contact_mechanism,comment:"
-msgid "Comment"
-msgstr "Comentario"
-
-msgctxt "field:party.contact_mechanism,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.contact_mechanism,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.contact_mechanism,email:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "field:party.contact_mechanism,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.contact_mechanism,other_value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.contact_mechanism,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.contact_mechanism,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.contact_mechanism,sip:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "field:party.contact_mechanism,skype:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "field:party.contact_mechanism,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.contact_mechanism,url:"
-msgid "URL"
-msgstr "URL"
-
-msgctxt "field:party.contact_mechanism,value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.contact_mechanism,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.contact_mechanism,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:party.identifier,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.identifier,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.identifier,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.identifier,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.identifier,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.identifier,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.identifier,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.identifier,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.identifier,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:party.party,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.party,addresses:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "field:party.party,categories:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "field:party.party,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.party,code_readonly:"
-msgid "Code Readonly"
-msgstr "Código de Sólo Lectura"
-
-msgctxt "field:party.party,contact_mechanisms:"
-msgid "Contact Mechanisms"
-msgstr "Medios de Contacto"
-
-msgctxt "field:party.party,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.party,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.party,email:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "field:party.party,fax:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "field:party.party,full_name:"
-msgid "Full Name"
-msgstr "Nombre Completo"
-
-msgctxt "field:party.party,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party,identifiers:"
-msgid "Identifiers"
-msgstr "Identificador"
-
-msgctxt "field:party.party,lang:"
-msgid "Language"
-msgstr "Idioma"
-
-msgctxt "field:party.party,mobile:"
-msgid "Mobile"
-msgstr "Móvil"
-
-msgctxt "field:party.party,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,phone:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "field:party.party,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "Núm. Id."
-
-msgctxt "field:party.party,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.party,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.party,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:party.party-party.category,category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "field:party.party-party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
-
-msgctxt "field:party.party-party.category,create_uid:"
-msgid "Create User"
-msgstr "Creado por Usuario"
-
-msgctxt "field:party.party-party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party-party.category,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.party-party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party-party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha de Modificación"
-
-msgctxt "field:party.party-party.category,write_uid:"
-msgid "Write User"
-msgstr "Modificado por Usuario"
-
-msgctxt "model:ir.action,name:act_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.action,name:act_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de Contacto"
-
-msgctxt "model:ir.action,name:act_party_by_category"
-msgid "Parties by Category"
-msgstr "Terceros por Categoría"
-
-msgctxt "model:ir.action,name:act_party_configuration_form"
-msgid "Party Configuration"
-msgstr "Configuración de Terceros"
-
-msgctxt "model:ir.action,name:act_party_form"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "model:ir.action,name:report_label"
-msgid "Labels"
-msgstr "Etiquetas"
-
-msgctxt "model:ir.action,name:wizard_check_vies"
-msgid "Check VIES"
-msgstr "Comprobar VIES"
-
-msgctxt "model:ir.sequence,name:sequence_party"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "model:ir.sequence.type,name:sequence_type_party"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "model:ir.ui.menu,name:menu_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.ui.menu,name:menu_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_configuration"
-msgid "Configuration"
-msgstr "Configuración"
-
-msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de Contacto"
-
-msgctxt "model:ir.ui.menu,name:menu_party"
-msgid "Party"
-msgstr "Gestión de Terceros"
-
-msgctxt "model:ir.ui.menu,name:menu_party_configuration"
-msgid "Party Configuration"
-msgstr "Configuración de Terceros"
-
-msgctxt "model:ir.ui.menu,name:menu_party_form"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "model:party.address,name:"
-msgid "Address"
-msgstr "Dirección"
-
-msgctxt "model:party.category,name:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "model:party.check_vies.result,name:"
-msgid "Check VIES"
-msgstr "Comprobar VIES"
-
-msgctxt "model:party.configuration,name:"
-msgid "Party Configuration"
-msgstr "Configuración de Terceros"
-
-msgctxt "model:party.contact_mechanism,name:"
-msgid "Contact Mechanism"
-msgstr "Medio de Contacto"
-
-msgctxt "model:party.identifier,name:"
-msgid "Party Identifier"
-msgstr "Identificador de Tercero"
-
-msgctxt "model:party.party,name:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "model:party.party-party.category,name:"
-msgid "Party - Category"
-msgstr "Tercero - Categoría"
-
-msgctxt "model:res.group,name:group_party_admin"
-msgid "Party Administration"
-msgstr "Administración de Terceros"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "IRC"
-msgstr "IRC"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Jabber"
-msgstr "Jabber"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Mobile"
-msgstr "Móvil"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Other"
-msgstr "Otro"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr "NIT Resultados del Sistema de Intercambio de Información"
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr "Configuración de Terceros"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr "Medio de Contacto"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr "Medios de Contacto"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr "Identificador de Tercero"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr "Identificador de Tercero"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "General"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Aceptar"
diff --git a/locale/es_EC.po b/locale/es_EC.po
deleted file mode 100644
index 6332775..0000000
--- a/locale/es_EC.po
+++ /dev/null
@@ -1,613 +0,0 @@
-# 
-msgid ""
-msgstr "Content-Type: text/plain; charset=utf-8\n"
-
-msgctxt "error:party.address:"
-msgid "You can not modify the party of address \"%s\"."
-msgstr "No puede modificar el tercero de la dirección \"%s\"."
-
-msgctxt "error:party.category:"
-msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
-msgstr ""
-"Nombre de categoría \"%s\" no es válido: No puede utilizar \" / \" en el "
-"campo nombre."
-
-msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent."
-msgstr "El nombre de la categoría del tercero debe ser único según el padre."
-
-msgctxt "error:party.check_vies:"
-msgid "The VIES service is unavailable, try again later."
-msgstr "El servicio VIES no está disponible, inténtelo de nuevo más tarde."
-
-msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "No puede modificar el tercero del medio de contacto \"%s\"."
-
-msgctxt "error:party.identifier:"
-msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
-msgstr "El número de C.I./RUC \"%(vat)s\" del tercero \"%(party)s\" no es válido."
-
-msgctxt "error:party.party:"
-msgid "The code of the party must be unique."
-msgstr "El código del tercero debe ser único."
-
-msgctxt "field:party.address,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.address,city:"
-msgid "City"
-msgstr "Ciudad"
-
-msgctxt "field:party.address,country:"
-msgid "Country"
-msgstr "País"
-
-msgctxt "field:party.address,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.address,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.address,full_address:"
-msgid "Full Address"
-msgstr "Dirección completa"
-
-msgctxt "field:party.address,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.address,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.address,street:"
-msgid "Street"
-msgstr "Calle"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Calle (bis)"
-
-msgctxt "field:party.address,subdivision:"
-msgid "Subdivision"
-msgstr "Provincia"
-
-msgctxt "field:party.address,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.address,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "field:party.address,zip:"
-msgid "Zip"
-msgstr "Código postal"
-
-msgctxt "field:party.category,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.category,childs:"
-msgid "Children"
-msgstr "Hijos"
-
-msgctxt "field:party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.category,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.category,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,parent:"
-msgid "Parent"
-msgstr "Padre"
-
-msgctxt "field:party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.category,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "field:party.check_vies.result,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.check_vies.result,parties_failed:"
-msgid "Parties Failed"
-msgstr "Terceros erróneos"
-
-msgctxt "field:party.check_vies.result,parties_succeed:"
-msgid "Parties Succeed"
-msgstr "Terceros corrrectos"
-
-msgctxt "field:party.configuration,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.configuration,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.configuration,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.configuration,party_sequence:"
-msgid "Party Sequence"
-msgstr "Secuencia de terceros"
-
-msgctxt "field:party.configuration,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.configuration,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.configuration,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "field:party.contact_mechanism,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.contact_mechanism,comment:"
-msgid "Comment"
-msgstr "Comentario"
-
-msgctxt "field:party.contact_mechanism,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.contact_mechanism,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.contact_mechanism,email:"
-msgid "E-Mail"
-msgstr "Email"
-
-msgctxt "field:party.contact_mechanism,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.contact_mechanism,other_value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.contact_mechanism,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.contact_mechanism,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.contact_mechanism,sip:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "field:party.contact_mechanism,skype:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "field:party.contact_mechanism,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.contact_mechanism,url:"
-msgid "URL"
-msgstr "URL"
-
-msgctxt "field:party.contact_mechanism,value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.contact_mechanism,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.contact_mechanism,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "field:party.identifier,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.identifier,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.identifier,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.identifier,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.identifier,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.identifier,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.identifier,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.identifier,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.identifier,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "field:party.party,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.party,addresses:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "field:party.party,categories:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "field:party.party,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.party,code_readonly:"
-msgid "Code Readonly"
-msgstr "Código de sólo lectura"
-
-msgctxt "field:party.party,contact_mechanisms:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "field:party.party,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.party,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.party,email:"
-msgid "E-Mail"
-msgstr "Email"
-
-msgctxt "field:party.party,fax:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "field:party.party,full_name:"
-msgid "Full Name"
-msgstr "Nombre completo"
-
-msgctxt "field:party.party,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party,identifiers:"
-msgid "Identifiers"
-msgstr "Identificadores"
-
-msgctxt "field:party.party,lang:"
-msgid "Language"
-msgstr "Idioma"
-
-msgctxt "field:party.party,mobile:"
-msgid "Mobile"
-msgstr "Celular"
-
-msgctxt "field:party.party,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,phone:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "field:party.party,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "C.I./RUC"
-
-msgctxt "field:party.party,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.party,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.party,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "field:party.party-party.category,category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "field:party.party-party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha de creación"
-
-msgctxt "field:party.party-party.category,create_uid:"
-msgid "Create User"
-msgstr "Creado por usuario"
-
-msgctxt "field:party.party-party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party-party.category,party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "field:party.party-party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party-party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha de modificación"
-
-msgctxt "field:party.party-party.category,write_uid:"
-msgid "Write User"
-msgstr "Modificado por usuario"
-
-msgctxt "model:ir.action,name:act_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.action,name:act_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "model:ir.action,name:act_party_by_category"
-msgid "Parties by Category"
-msgstr "Terceros por categoría"
-
-msgctxt "model:ir.action,name:act_party_configuration_form"
-msgid "Party Configuration"
-msgstr "Configuración de terceros"
-
-msgctxt "model:ir.action,name:act_party_form"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "model:ir.action,name:report_label"
-msgid "Labels"
-msgstr "Etiquetas"
-
-msgctxt "model:ir.action,name:wizard_check_vies"
-msgid "Check VIES"
-msgstr "Comprobar VIES"
-
-msgctxt "model:ir.sequence,name:sequence_party"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "model:ir.sequence.type,name:sequence_type_party"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "model:ir.ui.menu,name:menu_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.ui.menu,name:menu_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_configuration"
-msgid "Configuration"
-msgstr "Configuración"
-
-msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de Contacto"
-
-msgctxt "model:ir.ui.menu,name:menu_party"
-msgid "Party"
-msgstr "Terceros"
-
-msgctxt "model:ir.ui.menu,name:menu_party_configuration"
-msgid "Party Configuration"
-msgstr "Configuración de Terceros"
-
-msgctxt "model:ir.ui.menu,name:menu_party_form"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "model:party.address,name:"
-msgid "Address"
-msgstr "Dirección"
-
-msgctxt "model:party.category,name:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "model:party.check_vies.result,name:"
-msgid "Check VIES"
-msgstr "Comprobar VIES"
-
-msgctxt "model:party.configuration,name:"
-msgid "Party Configuration"
-msgstr "Configuración de terceros"
-
-msgctxt "model:party.contact_mechanism,name:"
-msgid "Contact Mechanism"
-msgstr "Medio de contacto"
-
-msgctxt "model:party.identifier,name:"
-msgid "Party Identifier"
-msgstr "Identificador de tercero"
-
-msgctxt "model:party.party,name:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "model:party.party-party.category,name:"
-msgid "Party - Category"
-msgstr "Terceros - Categoría"
-
-msgctxt "model:res.group,name:group_party_admin"
-msgid "Party Administration"
-msgstr "Administración de Terceros"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "E-Mail"
-msgstr "Email"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "IRC"
-msgstr "IRC"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Jabber"
-msgstr "Jabber"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Mobile"
-msgstr "Celular"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Other"
-msgstr "Otro"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr "Resultados del Sistema de Intercambio de Información de C.I./RUC"
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr "Configuración de Terceros"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr "Medio de contacto"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr "Identificador de tercero"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr "Identificadores del tercero"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "General"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Terceros"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Tercero"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Aceptar"
diff --git a/locale/es_MX.po b/locale/es_MX.po
deleted file mode 100644
index bb9cd4c..0000000
--- a/locale/es_MX.po
+++ /dev/null
@@ -1,634 +0,0 @@
-# 
-msgid ""
-msgstr "Content-Type: text/plain; charset=utf-8\n"
-
-msgctxt "error:party.address:"
-msgid "You can not modify the party of address \"%s\"."
-msgstr "No puede modificar la entidad de la dirección \"%s\"."
-
-msgctxt "error:party.category:"
-msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
-msgstr ""
-"El nombre de la categoría \"%s\" no es correcto: No puede utilizar \" / \" "
-"en el campo nombre."
-
-msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent."
-msgstr ""
-"El nombre de la categoría de la entidad debe ser único según el padre."
-
-msgctxt "error:party.check_vies:"
-msgid "The VIES service is unavailable, try again later."
-msgstr ""
-"El servicio de comprobación fiscal VIES no está disponible, inténtelo de "
-"nuevo más tarde."
-
-msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "No puede modificar la entidad del contacto \"%s\"."
-
-#, fuzzy
-msgctxt "error:party.identifier:"
-msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
-msgstr "El RFC \"%(vat)s\" de la entidad \"%(party)s\" no es correcto."
-
-msgctxt "error:party.party:"
-msgid "The code of the party must be unique."
-msgstr "El código de la entidad debe ser único."
-
-msgctxt "field:party.address,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.address,city:"
-msgid "City"
-msgstr "Ciudad"
-
-msgctxt "field:party.address,country:"
-msgid "Country"
-msgstr "País"
-
-msgctxt "field:party.address,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.address,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.address,full_address:"
-msgid "Full Address"
-msgstr "Dirección completa"
-
-msgctxt "field:party.address,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.address,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-msgctxt "field:party.address,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.address,street:"
-msgid "Street"
-msgstr "Calle"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Colonia"
-
-msgctxt "field:party.address,subdivision:"
-msgid "Subdivision"
-msgstr "Estado"
-
-msgctxt "field:party.address,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.address,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.address,zip:"
-msgid "Zip"
-msgstr "Código postal"
-
-msgctxt "field:party.category,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.category,childs:"
-msgid "Children"
-msgstr "Hijos"
-
-msgctxt "field:party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.category,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.category,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,parent:"
-msgid "Parent"
-msgstr "Padre"
-
-msgctxt "field:party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.category,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.check_vies.result,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.check_vies.result,parties_failed:"
-msgid "Parties Failed"
-msgstr "Entidad errónea"
-
-msgctxt "field:party.check_vies.result,parties_succeed:"
-msgid "Parties Succeed"
-msgstr "Entidades correctas"
-
-msgctxt "field:party.configuration,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.configuration,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.configuration,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.configuration,party_sequence:"
-msgid "Party Sequence"
-msgstr "Secuencia de la entidad"
-
-msgctxt "field:party.configuration,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.configuration,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.configuration,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.contact_mechanism,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.contact_mechanism,comment:"
-msgid "Comment"
-msgstr "Comentario"
-
-msgctxt "field:party.contact_mechanism,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.contact_mechanism,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.contact_mechanism,email:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "field:party.contact_mechanism,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.contact_mechanism,other_value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.contact_mechanism,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.contact_mechanism,sequence:"
-msgid "Sequence"
-msgstr "Secuencia"
-
-msgctxt "field:party.contact_mechanism,sip:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "field:party.contact_mechanism,skype:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "field:party.contact_mechanism,type:"
-msgid "Type"
-msgstr "Tipo"
-
-msgctxt "field:party.contact_mechanism,url:"
-msgid "URL"
-msgstr "URL"
-
-msgctxt "field:party.contact_mechanism,value:"
-msgid "Value"
-msgstr "Valor"
-
-msgctxt "field:party.contact_mechanism,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.contact_mechanism,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.contact_mechanism,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-#, fuzzy
-msgctxt "field:party.identifier,code:"
-msgid "Code"
-msgstr "Código"
-
-#, fuzzy
-msgctxt "field:party.identifier,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-#, fuzzy
-msgctxt "field:party.identifier,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-#, fuzzy
-msgctxt "field:party.identifier,id:"
-msgid "ID"
-msgstr "ID"
-
-#, fuzzy
-msgctxt "field:party.identifier,party:"
-msgid "Party"
-msgstr "Entidad"
-
-#, fuzzy
-msgctxt "field:party.identifier,rec_name:"
-msgid "Name"
-msgstr "Contacto"
-
-#, fuzzy
-msgctxt "field:party.identifier,type:"
-msgid "Type"
-msgstr "Tipo"
-
-#, fuzzy
-msgctxt "field:party.identifier,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-#, fuzzy
-msgctxt "field:party.identifier,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.party,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:party.party,addresses:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "field:party.party,categories:"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "field:party.party,code:"
-msgid "Code"
-msgstr "Código"
-
-msgctxt "field:party.party,code_readonly:"
-msgid "Code Readonly"
-msgstr "Código sólo lectura"
-
-msgctxt "field:party.party,contact_mechanisms:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "field:party.party,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.party,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.party,email:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "field:party.party,fax:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "field:party.party,full_name:"
-msgid "Full Name"
-msgstr "Nombre completo"
-
-msgctxt "field:party.party,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party,identifiers:"
-msgid "Identifiers"
-msgstr ""
-
-msgctxt "field:party.party,lang:"
-msgid "Language"
-msgstr "Idioma"
-
-msgctxt "field:party.party,mobile:"
-msgid "Mobile"
-msgstr "Celular"
-
-msgctxt "field:party.party,name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,phone:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "field:party.party,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "RFC"
-
-msgctxt "field:party.party,website:"
-msgid "Website"
-msgstr "Sitio Web"
-
-msgctxt "field:party.party,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.party,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:party.party-party.category,category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "field:party.party-party.category,create_date:"
-msgid "Create Date"
-msgstr "Fecha creación"
-
-msgctxt "field:party.party-party.category,create_uid:"
-msgid "Create User"
-msgstr "Usuario creación"
-
-msgctxt "field:party.party-party.category,id:"
-msgid "ID"
-msgstr "ID"
-
-msgctxt "field:party.party-party.category,party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "field:party.party-party.category,rec_name:"
-msgid "Name"
-msgstr "Nombre"
-
-msgctxt "field:party.party-party.category,write_date:"
-msgid "Write Date"
-msgstr "Fecha modificación"
-
-msgctxt "field:party.party-party.category,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "model:ir.action,name:act_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.action,name:act_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.action,name:act_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "model:ir.action,name:act_party_by_category"
-msgid "Parties by Category"
-msgstr "Entidades por categoría"
-
-msgctxt "model:ir.action,name:act_party_configuration_form"
-msgid "Party Configuration"
-msgstr "Configuración de entidades"
-
-msgctxt "model:ir.action,name:act_party_form"
-msgid "Parties"
-msgstr "Entidades"
-
-msgctxt "model:ir.action,name:report_label"
-msgid "Labels"
-msgstr "Etiquetas"
-
-msgctxt "model:ir.action,name:wizard_check_vies"
-msgid "Check VIES"
-msgstr "Comprobar registro fiscal VIES"
-
-msgctxt "model:ir.sequence,name:sequence_party"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "model:ir.sequence.type,name:sequence_type_party"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "model:ir.ui.menu,name:menu_address_form"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "model:ir.ui.menu,name:menu_category_list"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_category_tree"
-msgid "Categories"
-msgstr "Categorías"
-
-msgctxt "model:ir.ui.menu,name:menu_configuration"
-msgid "Configuration"
-msgstr "Configuración"
-
-msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "model:ir.ui.menu,name:menu_party"
-msgid "Party"
-msgstr "Entidades"
-
-msgctxt "model:ir.ui.menu,name:menu_party_configuration"
-msgid "Party Configuration"
-msgstr "Entidades"
-
-msgctxt "model:ir.ui.menu,name:menu_party_form"
-msgid "Parties"
-msgstr "Entidades"
-
-msgctxt "model:party.address,name:"
-msgid "Address"
-msgstr "Dirección"
-
-msgctxt "model:party.category,name:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "model:party.check_vies.result,name:"
-msgid "Check VIES"
-msgstr "Comprobar registro fiscal VIES"
-
-msgctxt "model:party.configuration,name:"
-msgid "Party Configuration"
-msgstr "Configuración de entidades"
-
-msgctxt "model:party.contact_mechanism,name:"
-msgid "Contact Mechanism"
-msgstr "Medio de contacto"
-
-msgctxt "model:party.identifier,name:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "model:party.party,name:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "model:party.party-party.category,name:"
-msgid "Party - Category"
-msgstr "Entidades - Categoría"
-
-msgctxt "model:res.group,name:group_party_admin"
-msgid "Party Administration"
-msgstr "Administración de entidades"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "E-Mail"
-msgstr "Correo electrónico"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "IRC"
-msgstr "IRC"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Jabber"
-msgstr "Jabber"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Mobile"
-msgstr "Celular"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Other"
-msgstr "Otro"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Phone"
-msgstr "Teléfono"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Website"
-msgstr "Sitio Web"
-
-#, fuzzy
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-#, fuzzy
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr "Categorías"
-
-#, fuzzy
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr "Categoría"
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
-#, fuzzy
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr "Configuración de entidades"
-
-#, fuzzy
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr "Medio de contacto"
-
-#, fuzzy
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr ""
-
-#, fuzzy
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Entidades"
-
-#, fuzzy
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Entidad"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Aceptar"
diff --git a/locale/fr_FR.po b/locale/fr.po
similarity index 79%
rename from locale/fr_FR.po
rename to locale/fr.po
index c3fbb5d..7489fa6 100644
--- a/locale/fr_FR.po
+++ b/locale/fr.po
@@ -21,6 +21,12 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "Le service VIES n'est pas disponible, veuillez essayer plus tard."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+"Le numéro de téléphone « %(phone)s » du tiers « %(party)s » n'est pas "
+"valide."
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "Vous ne pouvez pas modifier le tiers sur le moyen de contact « %s »."
 
@@ -32,6 +38,19 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "Le code du tiers doit être unique."
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+"Les tiers ont des identifiants de taxe différents: %(source_code)s vs "
+"%(destination_code)s."
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+"Les tiers ont des noms différents: %(source_name)s vs %(destination_name)s."
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Actif"
@@ -61,8 +80,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Building Name"
+msgstr "Nom du bâtiment"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
@@ -80,10 +99,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Rue"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Rue (bis)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Subdivision"
@@ -100,6 +115,46 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Code postal"
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Active"
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Pays"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr "Format"
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Actif"
@@ -240,6 +295,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Valeur"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr "Valeur compacte"
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Site web"
@@ -276,6 +335,10 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Séquence"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Type"
@@ -360,9 +423,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Nom"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "Code TVA"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr "Remplacer par"
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identifiant de taxe"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -408,10 +475,50 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Destination"
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Source"
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+"Variables disponibles (aussi en majuscule):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Adresses"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Formats d'adresse"
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Catégories"
@@ -444,6 +551,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Validation VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr "Remplacer"
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Tiers"
@@ -456,6 +567,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Adresses"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Formats d'adresse"
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Catégories"
@@ -488,6 +603,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Adresse"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Format d'adresse"
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Catégorie"
@@ -516,6 +635,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Tiers - Catégorie"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr "Remplacer le tiers"
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Administration des tiers"
@@ -560,6 +683,30 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Site web"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr "Remplacer par"
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr "Remplacer"
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Adresses"
@@ -595,19 +742,3 @@ msgstr "Identifiant de tiers"
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
 msgstr "Identifiants de tiers"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Général"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Tiers"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Tiers"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "OK"
diff --git a/locale/hu_HU.po b/locale/hu_HU.po
index fb57a1d..eef0e71 100644
--- a/locale/hu_HU.po
+++ b/locale/hu_HU.po
@@ -20,6 +20,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "A kiszolgáló nem érhető el, próbálkozzon később"
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "A partner kapcsolati mechanizmus \"%s\" módosítása nem lehetséges"
 
@@ -32,6 +36,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "Egy partner kódja csak egyszer adható ki"
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Aktív"
@@ -60,8 +74,9 @@ msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ID"
 
+#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr "Név"
 
 msgctxt "field:party.address,party:"
@@ -80,10 +95,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Utca"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Utca 2"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Alrészleg"
@@ -100,6 +111,55 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Irányítószám"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Aktív"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Ország"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Létrehozás détuma"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Által létrehozva "
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Nyelv"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Név"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "utolsó módosítás dátuma"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Által módosítva"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Aktív"
@@ -240,6 +300,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Érték"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Weboldal"
@@ -276,6 +340,11 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Név"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Sorrend"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Típus"
@@ -360,9 +429,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Név"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "Adóazonosító szám "
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr ""
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -408,10 +481,41 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Által módosítva"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Címek"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Partner kategóriák"
@@ -444,6 +548,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Adóazonosító szám vizsgálása VIES által"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Partner"
@@ -456,6 +564,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Címek"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Kategóriák"
@@ -488,6 +600,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Cím"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Kategória"
@@ -516,6 +632,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Partner-Partner kategória"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Partner adminisztráció"
@@ -560,6 +680,31 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Weboldal"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Partner"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Címek"
@@ -572,10 +717,6 @@ msgctxt "view:party.category:"
 msgid "Category"
 msgstr "Kategória"
 
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
 msgctxt "view:party.configuration:"
 msgid "Party Configuration"
 msgstr "Partner"
@@ -587,27 +728,3 @@ msgstr "Kapcsolat lehetőségek"
 msgctxt "view:party.contact_mechanism:"
 msgid "Contact Mechanisms"
 msgstr "Kapcsolat lehetőség"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Partnerek"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Partner"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "OK"
diff --git a/locale/it_IT.po b/locale/it_IT.po
index cfe2fb0..873934e 100644
--- a/locale/it_IT.po
+++ b/locale/it_IT.po
@@ -19,10 +19,15 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "Servizio VIES non disponibile, ritentare più tardi"
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+"Il numero telefonico \"%(phone)s\" della controparte \"%(party)s\" non è "
+"valido."
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "Controparte in meccanismo di contatto \"%s\" non modificabile"
 
-#, fuzzy
 msgctxt "error:party.identifier:"
 msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
 msgstr "Identificativo IVA \"%(vat)s\" invalido per controparte \"%(party)s\"."
@@ -31,7 +36,20 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "Il codice dev'essere unico per controparte"
 
-#, fuzzy
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+"Le controparti hanno identificativi fiscali differenti:  %(source_code)s "
+"contro %(destination_code)s."
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+"Le controparti hanno nomi differenti: %(source_name)s contro "
+"%(destination_name)s."
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Attivo"
@@ -48,35 +66,30 @@ msgctxt "field:party.address,create_date:"
 msgid "Create Date"
 msgstr "Data Creazione"
 
-#, fuzzy
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr "Creazione Utente"
+msgstr "creato da"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
 msgstr "Indirizzo completo"
 
-#, fuzzy
 msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Building Name"
+msgstr "Nome edificio"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
 msgstr "Controparte"
 
-#, fuzzy
 msgctxt "field:party.address,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-#, fuzzy
 msgctxt "field:party.address,sequence:"
 msgid "Sequence"
 msgstr "Sequenza"
@@ -85,54 +98,82 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Via"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Via (bis)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Divisione"
 
-#, fuzzy
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr "Data di Scrittura"
+msgstr "modificato il"
 
-#, fuzzy
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Zip"
 
-#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Attivo"
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Paese"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "creato il"
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "creato da"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr "Formato"
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Lingua"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Nome"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "modificato il"
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "modificato da"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Attivo"
 
-#, fuzzy
 msgctxt "field:party.category,childs:"
 msgid "Children"
 msgstr "Figlio"
 
-#, fuzzy
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr "Creazione Data"
+msgstr "creato il"
 
-#, fuzzy
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr "Creazione Utente"
+msgstr "creato da"
 
-#, fuzzy
 msgctxt "field:party.category,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:party.category,name:"
 msgid "Name"
 msgstr "Nome"
@@ -141,22 +182,18 @@ msgctxt "field:party.category,parent:"
 msgid "Parent"
 msgstr "Parte"
 
-#, fuzzy
 msgctxt "field:party.category,rec_name:"
 msgid "Name"
-msgstr "Nome"
+msgstr "Nome "
 
-#, fuzzy
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr "Data di Scrittura"
+msgstr "modificato il"
 
-#, fuzzy
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
 
-#, fuzzy
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
 msgstr "ID"
@@ -169,17 +206,14 @@ msgctxt "field:party.check_vies.result,parties_succeed:"
 msgid "Parties Succeed"
 msgstr "Controparti riuscite"
 
-#, fuzzy
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr "Creazione Data"
+msgstr "creato il"
 
-#, fuzzy
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr "Creazione Utente"
+msgstr "creato da"
 
-#, fuzzy
 msgctxt "field:party.configuration,id:"
 msgid "ID"
 msgstr "ID"
@@ -188,22 +222,18 @@ msgctxt "field:party.configuration,party_sequence:"
 msgid "Party Sequence"
 msgstr "Sequenza controparte"
 
-#, fuzzy
 msgctxt "field:party.configuration,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-#, fuzzy
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr "Data di Scrittura"
+msgstr "modificato il"
 
-#, fuzzy
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
 msgstr "Attivo"
@@ -212,26 +242,22 @@ msgctxt "field:party.contact_mechanism,comment:"
 msgid "Comment"
 msgstr "Commento"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr "Creazione Data"
+msgstr "creato il"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr "Creazione Utente"
+msgstr "creato da"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
 msgstr "e-mail"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,other_value:"
 msgid "Value"
 msgstr "Valore"
@@ -240,39 +266,38 @@ msgctxt "field:party.contact_mechanism,party:"
 msgid "Party"
 msgstr "Controparte"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,sequence:"
 msgid "Sequence"
 msgstr "Sequenza"
 
 msgctxt "field:party.contact_mechanism,sip:"
 msgid "SIP"
-msgstr ""
+msgstr "SIP"
 
 msgctxt "field:party.contact_mechanism,skype:"
 msgid "Skype"
 msgstr "Skype"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,type:"
 msgid "Type"
 msgstr "Tipo"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,url:"
 msgid "URL"
 msgstr "URL"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Valore"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr "calcolo valore"
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Web"
@@ -281,10 +306,9 @@ msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
 msgstr "Data di Scrittura"
 
-#, fuzzy
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
@@ -294,12 +318,10 @@ msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
 msgstr "Data Creazione"
 
-#, fuzzy
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr "Creazione Utente"
+msgstr "creato da"
 
-#, fuzzy
 msgctxt "field:party.identifier,id:"
 msgid "ID"
 msgstr "ID"
@@ -308,27 +330,26 @@ msgctxt "field:party.identifier,party:"
 msgid "Party"
 msgstr "Controparte"
 
-#, fuzzy
 msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Sequenza"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Tipo"
 
-#, fuzzy
 msgctxt "field:party.identifier,write_date:"
 msgid "Write Date"
-msgstr "Data di Scrittura"
+msgstr "modificato il"
 
-#, fuzzy
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
 
-#, fuzzy
 msgctxt "field:party.party,active:"
 msgid "Active"
 msgstr "Attivo"
@@ -373,16 +394,14 @@ msgctxt "field:party.party,full_name:"
 msgid "Full Name"
 msgstr "Nome e cognome"
 
-#, fuzzy
 msgctxt "field:party.party,id:"
 msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.party,identifiers:"
 msgid "Identifiers"
-msgstr ""
+msgstr "Identificatori"
 
-#, fuzzy
 msgctxt "field:party.party,lang:"
 msgid "Language"
 msgstr "Lingua"
@@ -391,7 +410,6 @@ msgctxt "field:party.party,mobile:"
 msgid "Mobile"
 msgstr "Cellulare"
 
-#, fuzzy
 msgctxt "field:party.party,name:"
 msgid "Name"
 msgstr "Nome"
@@ -400,44 +418,42 @@ msgctxt "field:party.party,phone:"
 msgid "Phone"
 msgstr "Telefono"
 
-#, fuzzy
 msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "Codice IVA"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr "Sostituito da"
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identificatore fiscale"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
 msgstr "sito web"
 
-#, fuzzy
 msgctxt "field:party.party,write_date:"
 msgid "Write Date"
-msgstr "Data di Scrittura"
+msgstr "modificato il"
 
-#, fuzzy
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
 msgstr "Categoria"
 
-#, fuzzy
 msgctxt "field:party.party-party.category,create_date:"
 msgid "Create Date"
-msgstr "Data di creazione"
+msgstr "creato il"
 
-#, fuzzy
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr "Creazione Utente"
+msgstr "creato da"
 
-#, fuzzy
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
 msgstr "ID"
@@ -450,20 +466,49 @@ msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-#, fuzzy
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
-msgstr "Data di Scrittura"
+msgstr "modificato il"
 
-#, fuzzy
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
-msgstr "Scrivente"
+msgstr "modificato da"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Destinazione"
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Sorgente"
+
+#, fuzzy
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr "Variabili disponibili"
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Indirizzi"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Formati indirizzo"
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Categorie"
@@ -496,6 +541,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Verifica VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr "Sostituisci"
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Controparte"
@@ -508,6 +557,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Indirizzi"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Formati indirizzo"
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Categorie"
@@ -540,6 +593,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Indirizzo"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Formato indirizzo"
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Categoria"
@@ -558,7 +615,7 @@ msgstr "Meccanismo di contatto"
 
 msgctxt "model:party.identifier,name:"
 msgid "Party Identifier"
-msgstr ""
+msgstr "Identificatore controparte"
 
 msgctxt "model:party.party,name:"
 msgid "Party"
@@ -568,6 +625,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Controparte - Categoria"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr "Sostituisci controparte"
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Amministrazione Controparte"
@@ -602,7 +663,7 @@ msgstr "Telefono"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "SIP"
-msgstr ""
+msgstr "SIP"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Skype"
@@ -612,6 +673,30 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "sito web"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Generale"
+
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Controparte"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr "Sostituisci con"
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Annulla"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr "Sostituisci"
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Indirizzi"
@@ -624,10 +709,6 @@ msgctxt "view:party.category:"
 msgid "Category"
 msgstr "Categoria"
 
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
 msgctxt "view:party.configuration:"
 msgid "Party Configuration"
 msgstr "Connfigurazione Controparte"
@@ -639,27 +720,3 @@ msgstr "Meccanismo di contatto"
 msgctxt "view:party.contact_mechanism:"
 msgid "Contact Mechanisms"
 msgstr "Meccanismi di contatto"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Controparti"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Controparte"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr ""
diff --git a/locale/ja_JP.po b/locale/ja_JP.po
index ce1b20c..c1da313 100644
--- a/locale/ja_JP.po
+++ b/locale/ja_JP.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr ""
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr ""
@@ -59,12 +73,13 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,party:"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "field:party.address,rec_name:"
 msgid "Name"
@@ -78,10 +93,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr ""
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr ""
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr ""
@@ -98,6 +109,46 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr ""
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr ""
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr ""
@@ -206,9 +257,10 @@ msgctxt "field:party.contact_mechanism,other_value:"
 msgid "Value"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,party:"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "field:party.contact_mechanism,rec_name:"
 msgid "Name"
@@ -238,6 +290,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr ""
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr ""
@@ -266,14 +322,19 @@ msgctxt "field:party.identifier,id:"
 msgid "ID"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.identifier,party:"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr ""
 
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr ""
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr ""
@@ -290,13 +351,15 @@ msgctxt "field:party.party,active:"
 msgid "Active"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,addresses:"
 msgid "Addresses"
-msgstr ""
+msgstr "Addresses"
 
+#, fuzzy
 msgctxt "field:party.party,categories:"
 msgid "Categories"
-msgstr ""
+msgstr "Categories"
 
 msgctxt "field:party.party,code:"
 msgid "Code"
@@ -306,9 +369,10 @@ msgctxt "field:party.party,code_readonly:"
 msgid "Code Readonly"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,contact_mechanisms:"
 msgid "Contact Mechanisms"
-msgstr ""
+msgstr "Contact Mechanisms"
 
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
@@ -358,8 +422,12 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr ""
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
 msgstr ""
 
 msgctxt "field:party.party,website:"
@@ -390,9 +458,10 @@ msgctxt "field:party.party-party.category,id:"
 msgid "ID"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party-party.category,party:"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
@@ -406,117 +475,169 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
-msgstr ""
+msgstr "Addresses"
+
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Address Formats"
 
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
-msgstr ""
+msgstr "Categories"
 
 msgctxt "model:ir.action,name:act_category_tree"
 msgid "Categories"
-msgstr ""
+msgstr "Categories"
 
 msgctxt "model:ir.action,name:act_contact_mechanism_form"
 msgid "Contact Mechanisms"
-msgstr ""
+msgstr "Contact Mechanisms"
 
 msgctxt "model:ir.action,name:act_party_by_category"
 msgid "Parties by Category"
-msgstr ""
+msgstr "Parties by Category"
 
 msgctxt "model:ir.action,name:act_party_configuration_form"
 msgid "Party Configuration"
-msgstr ""
+msgstr "Party Configuration"
 
 msgctxt "model:ir.action,name:act_party_form"
 msgid "Parties"
-msgstr ""
+msgstr "Parties"
 
 msgctxt "model:ir.action,name:report_label"
 msgid "Labels"
-msgstr ""
+msgstr "Labels"
 
 msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
+msgstr "Check VIES"
+
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
 msgstr ""
 
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_party"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
-msgstr ""
+msgstr "Addresses"
+
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Address Formats"
 
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
-msgstr ""
+msgstr "Categories"
 
 msgctxt "model:ir.ui.menu,name:menu_category_tree"
 msgid "Categories"
-msgstr ""
+msgstr "Categories"
 
 msgctxt "model:ir.ui.menu,name:menu_configuration"
 msgid "Configuration"
-msgstr ""
+msgstr "Configuration"
 
 msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
 msgid "Contact Mechanisms"
-msgstr ""
+msgstr "Contact Mechanisms"
 
 msgctxt "model:ir.ui.menu,name:menu_party"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "model:ir.ui.menu,name:menu_party_configuration"
 msgid "Party Configuration"
-msgstr ""
+msgstr "Party Configuration"
 
 msgctxt "model:ir.ui.menu,name:menu_party_form"
 msgid "Parties"
-msgstr ""
+msgstr "Parties"
 
+#, fuzzy
 msgctxt "model:party.address,name:"
 msgid "Address"
-msgstr ""
+msgstr "Addresses"
+
+#, fuzzy
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Address Formats"
 
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr ""
 
+#, fuzzy
 msgctxt "model:party.check_vies.result,name:"
 msgid "Check VIES"
-msgstr ""
+msgstr "Check VIES"
 
+#, fuzzy
 msgctxt "model:party.configuration,name:"
 msgid "Party Configuration"
-msgstr ""
+msgstr "Party Configuration"
 
+#, fuzzy
 msgctxt "model:party.contact_mechanism,name:"
 msgid "Contact Mechanism"
-msgstr ""
+msgstr "Contact Mechanisms"
 
 msgctxt "model:party.identifier,name:"
 msgid "Party Identifier"
 msgstr ""
 
+#, fuzzy
 msgctxt "model:party.party,name:"
 msgid "Party"
-msgstr ""
+msgstr "Party"
 
 msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr ""
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
-msgstr ""
+msgstr "Party Administration"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "E-Mail"
@@ -558,54 +679,27 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr ""
 
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr ""
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
 msgctxt "view:party.party:"
 msgid "General"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr ""
-
-msgctxt "view:party.party:"
+#, fuzzy
+msgctxt "view:party.replace.ask:"
 msgid "Party"
+msgstr "Party"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
 msgstr ""
 
 msgctxt "wizard_button:party.check_vies,result,end:"
 msgid "OK"
 msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
diff --git a/locale/lo_LA.po b/locale/lo.po
similarity index 80%
rename from locale/lo_LA.po
rename to locale/lo.po
index 6330ad8..cdb2431 100644
--- a/locale/lo_LA.po
+++ b/locale/lo.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "ການບໍລິການລະບົບຂໍ້ມູນແລກປ່ຽນອາກອນບໍ່ທັນມີ, ລອງໃໝ່ອີກນໍາຫຼັງ."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "ທ່ານບໍ່ສາມາດປັບປຸງແກ້ໄຂພາກສ່ວນຂອງກົນໄກການຕິດຕໍ່ \"%s\" ນີ້ໄດ້."
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "ລະຫັດຂອງພາກສ່ວນຕ້ອງບໍ່ຊໍ້າກັນ"
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "ໃຊ້ຢູ່"
@@ -44,11 +58,11 @@ msgstr "ປະເທດ"
 
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
-msgstr "ສ້າງວັນທີ"
+msgstr "ວັນທີສ້າງ"
 
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr "ສ້າງຜູ້ໃຊ້"
+msgstr "ຜູ້ສ້າງ"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
@@ -58,8 +72,9 @@ msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ເລກລະຫັດ"
 
+#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr "ຊື່"
 
 msgctxt "field:party.address,party:"
@@ -76,11 +91,7 @@ msgstr "ລຳດັບ"
 
 msgctxt "field:party.address,street:"
 msgid "Street"
-msgstr "ຖະໜົນ"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "ຖະໜົນເຊື່ອມຕໍ່"
+msgstr "ຖະໜົນຫຼັກ"
 
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
@@ -88,19 +99,68 @@ msgstr "ແຂວງ"
 
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr "ຂຽນວັນທີ"
+msgstr "ວັນທີຂຽນ"
 
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr "ຂຽນຊື່ຜູ້ໃຊ້"
+msgstr "ຜູ້ຂຽນ"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "ລະຫັດປະເທດ"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "ໃຊ້ຢູ່"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "ປະເທດ"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "ສ້າງວັນທີ"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "ສ້າງຜູ້ໃຊ້ງານ"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ເລດລຳດັບ"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "ພາສາ"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "ຊື່"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "ວັນທີບັນທຶກ"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "ສ້າງຜູ້ໃຊ້"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
-msgstr "ໃຊ້ງານຢູ່"
+msgstr "ໃຊ້ຢູ່"
 
 msgctxt "field:party.category,childs:"
 msgid "Children"
@@ -108,11 +168,11 @@ msgstr "ໝວດຍ່ອຍ"
 
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr "ສ້າງວັນທີ"
+msgstr "ວັນທີສ້າງ"
 
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr "ສ້າງຜູ້ໃຊ້"
+msgstr "ຜູ້ສ້າງ"
 
 msgctxt "field:party.category,id:"
 msgid "ID"
@@ -132,15 +192,15 @@ msgstr "ຊື່"
 
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr "ຂຽນວັນທີ"
+msgstr "ວັນທີຂຽນ"
 
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr "ຂຽນຜູ້ໃຊ້ງານ"
+msgstr "ຜູ້ຂຽນ"
 
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
-msgstr "ເລກລຳດັບ"
+msgstr "ຜູ້ຂຽນ"
 
 msgctxt "field:party.check_vies.result,parties_failed:"
 msgid "Parties Failed"
@@ -152,11 +212,11 @@ msgstr "ພາກສ່ວນສຳເລັດຜົນ"
 
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr "ສ້າງວັນທີ"
+msgstr "ວັນທີສ້າງ"
 
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr "ສ້າງຜູ້ໃຊ້"
+msgstr "ຜູ້ສ້າງ"
 
 msgctxt "field:party.configuration,id:"
 msgid "ID"
@@ -172,11 +232,11 @@ msgstr "ຊື່"
 
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr "ຂຽນວັນທີ"
+msgstr "ວັນທີຂຽນ"
 
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr "ຂຽນຊື່ຜູ້ໃຊ້"
+msgstr "ຜູ້ຂຽນ"
 
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
@@ -188,11 +248,11 @@ msgstr "ຄໍາເຫັນ"
 
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr "ສ້າງວັນທີ"
+msgstr "ວັນທີສ້າງ"
 
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr "ສ້າງຜູ້ໃຊ້"
+msgstr "ຜູ້ສ້າງ"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
@@ -238,17 +298,21 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "ໝາຍເລກ"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "ເວບໄຊ"
 
 msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
-msgstr "ຂຽນວັນທີ"
+msgstr "ວັນທີຂຽນ"
 
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr "ຂຽນຊື່ຜູ້ໃຊ້"
+msgstr "ຜູ້ຂຽນ"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
@@ -256,11 +320,11 @@ msgstr "ລະຫັດ"
 
 msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
-msgstr "ສ້າງວັນທີ"
+msgstr "ວັນທີສ້າງ"
 
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr "ສ້າງຜູ້ໃຊ້"
+msgstr "ຜູ້ສ້າງ"
 
 msgctxt "field:party.identifier,id:"
 msgid "ID"
@@ -274,6 +338,11 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "ຊື່"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "ລຳດັບ"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "ປະເພດ"
@@ -358,9 +427,14 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "ຊື່"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "ລະຫັດ ອມພ"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "ລະບຸຕົວຕົນພາກສ່ວນ"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -406,10 +480,41 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "ຂຽນຊື່ຜູ້ໃຊ້"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ເລກລະຫັດ"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "ທີ່ຢູ່"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "ປະເພດ"
@@ -442,6 +547,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "ກວດເລກພາສີ"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "ພາກສ່ວນ"
@@ -454,6 +563,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "ທີ່ຢູ່"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "ໝວດ"
@@ -486,6 +599,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "ທີ່ຢູ່"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "ໝວດ"
@@ -514,6 +631,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "ພາກສ່ວນ-ປະເພດ"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "ການບໍລິຫານພາກສ່ວນ"
@@ -558,6 +679,31 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "ເວັບໄຊຕ໌"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "ທົ່ວໄປ"
+
+#, fuzzy
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "ພາກສ່ວນ"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "ຕົກລົງ"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "ທີ່ຢູ່"
@@ -593,19 +739,3 @@ msgstr "ລະບຸຕົວຕົນພາກສ່ວນ"
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
 msgstr "ລະບຸຕົວຕົນພາກສ່ວນ"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "ທົ່ວໄປ"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "ພາກສ່ວນ"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "ພາກສ່ວນ"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "ຕົກລົງ"
diff --git a/locale/lt_LT.po b/locale/lt.po
similarity index 80%
rename from locale/lt_LT.po
rename to locale/lt.po
index ce1b20c..22d65ee 100644
--- a/locale/lt_LT.po
+++ b/locale/lt.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr ""
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr ""
@@ -38,9 +52,10 @@ msgctxt "field:party.address,city:"
 msgid "City"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,country:"
 msgid "Country"
-msgstr ""
+msgstr "Koventris"
 
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
@@ -59,16 +74,17 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr ""
 
 msgctxt "field:party.address,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.address,sequence:"
 msgid "Sequence"
@@ -78,10 +94,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr ""
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr ""
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr ""
@@ -98,6 +110,48 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr ""
 
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Koventris"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr ""
@@ -118,17 +172,19 @@ msgctxt "field:party.category,id:"
 msgid "ID"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.category,name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.category,parent:"
 msgid "Parent"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.category,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
@@ -166,9 +222,10 @@ msgctxt "field:party.configuration,party_sequence:"
 msgid "Party Sequence"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.configuration,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
@@ -210,9 +267,10 @@ msgctxt "field:party.contact_mechanism,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.contact_mechanism,sequence:"
 msgid "Sequence"
@@ -238,6 +296,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr ""
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr ""
@@ -270,8 +332,13 @@ msgctxt "field:party.identifier,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
 msgstr ""
 
 msgctxt "field:party.identifier,type:"
@@ -346,20 +413,26 @@ msgctxt "field:party.party,mobile:"
 msgid "Mobile"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.party,phone:"
 msgid "Phone"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,rec_name:"
 msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
 msgstr ""
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
 msgstr ""
 
 msgctxt "field:party.party,website:"
@@ -394,9 +467,10 @@ msgctxt "field:party.party-party.category,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "Namu"
 
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
@@ -406,10 +480,40 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr ""
@@ -442,6 +546,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr ""
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr ""
@@ -454,6 +562,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr ""
@@ -486,6 +598,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr ""
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr ""
@@ -514,6 +630,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr ""
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr ""
@@ -558,54 +678,26 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr ""
 
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr ""
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
 msgctxt "view:party.party:"
 msgid "General"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Parties"
+msgctxt "view:party.replace.ask:"
+msgid "Party"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Party"
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
 msgstr ""
 
 msgctxt "wizard_button:party.check_vies,result,end:"
 msgid "OK"
 msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
diff --git a/locale/nl_NL.po b/locale/nl.po
similarity index 76%
rename from locale/nl_NL.po
rename to locale/nl.po
index 9542feb..5a84b56 100644
--- a/locale/nl_NL.po
+++ b/locale/nl.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "De VIES is niet beschikbaar, probeer het later nog eens!"
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Actief"
@@ -42,24 +56,28 @@ msgctxt "field:party.address,country:"
 msgid "Country"
 msgstr "Land"
 
+#, fuzzy
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
 msgstr "Volledig adres"
 
+#, fuzzy
 msgctxt "field:party.address,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
+#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr "Aanhef"
 
 msgctxt "field:party.address,party:"
@@ -78,26 +96,73 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Straat"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Extra aanduiding"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Provincie"
 
+#, fuzzy
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Postcode"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Actief"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Land"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Datum"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Gebruiker"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Taal"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Schrijfdatum"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Gebruiker"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Actief"
@@ -106,17 +171,20 @@ msgctxt "field:party.category,childs:"
 msgid "Children"
 msgstr "Onderliggende niveaus"
 
+#, fuzzy
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
+#, fuzzy
 msgctxt "field:party.category,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.category,name:"
 msgid "Name"
@@ -130,17 +198,20 @@ msgctxt "field:party.category,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
+#, fuzzy
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Gebruiker"
 
+#, fuzzy
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.check_vies.result,parties_failed:"
 msgid "Parties Failed"
@@ -150,17 +221,20 @@ msgctxt "field:party.check_vies.result,parties_succeed:"
 msgid "Parties Succeed"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
+#, fuzzy
 msgctxt "field:party.configuration,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.configuration,party_sequence:"
 msgid "Party Sequence"
@@ -170,13 +244,15 @@ msgctxt "field:party.configuration,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
+#, fuzzy
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
@@ -186,21 +262,24 @@ msgctxt "field:party.contact_mechanism,comment:"
 msgid "Comment"
 msgstr "Opmerking"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
 msgstr "E-mail"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.contact_mechanism,other_value:"
 msgid "Value"
@@ -239,33 +318,42 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Waarde"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Website"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
 msgstr "Code"
 
+#, fuzzy
 msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
+#, fuzzy
 msgctxt "field:party.identifier,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.identifier,party:"
 msgid "Party"
@@ -275,17 +363,24 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Aanhef"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Reeks"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Type"
 
+#, fuzzy
 msgctxt "field:party.identifier,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.party,active:"
 msgid "Active"
@@ -311,13 +406,15 @@ msgctxt "field:party.party,contact_mechanisms:"
 msgid "Contact Mechanisms"
 msgstr "Contactmogelijkheden"
 
+#, fuzzy
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.party,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.party,email:"
 msgid "E-Mail"
@@ -331,9 +428,10 @@ msgctxt "field:party.party,full_name:"
 msgid "Full Name"
 msgstr "Naam voluit"
 
+#, fuzzy
 msgctxt "field:party.party,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.party,identifiers:"
 msgid "Identifiers"
@@ -359,37 +457,46 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "BTW-nummer"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr ""
 
 msgctxt "field:party.party,website:"
 msgid "Website"
 msgstr "Website"
 
+#, fuzzy
 msgctxt "field:party.party,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Gebruiker"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
 msgstr "Categorie"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "Datum"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Gebruiker"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 msgctxt "field:party.party-party.category,party:"
 msgid "Party"
@@ -399,18 +506,51 @@ msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
 msgstr "Naam"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "Schrijfdatum"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
+msgstr "Gebruiker"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
 msgstr ""
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Adressen"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 #, fuzzy
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
@@ -445,6 +585,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Check VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Relatie"
@@ -457,6 +601,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Adressen"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 #, fuzzy
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
@@ -492,6 +640,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Adres"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Categorie"
@@ -521,6 +673,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Relatie categorie"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Relatiebeheer"
@@ -565,6 +721,32 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Website"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Algemeen"
+
+#, fuzzy
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "Oké"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Adressen"
@@ -577,10 +759,6 @@ msgctxt "view:party.category:"
 msgid "Category"
 msgstr "Categorie"
 
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
 msgctxt "view:party.configuration:"
 msgid "Party Configuration"
 msgstr "Relatie instellingen"
@@ -592,28 +770,3 @@ msgstr "Contactmogelijkheid"
 msgctxt "view:party.contact_mechanism:"
 msgid "Contact Mechanisms"
 msgstr "Contactmogelijkheden"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Algemeen"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Relaties"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Relatie"
-
-#, fuzzy
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Oké"
diff --git a/locale/de_DE.po b/locale/pl.po
similarity index 60%
rename from locale/de_DE.po
rename to locale/pl.po
index dc0e7cd..357b9d0 100644
--- a/locale/de_DE.po
+++ b/locale/pl.po
@@ -4,118 +4,169 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:party.address:"
 msgid "You can not modify the party of address \"%s\"."
-msgstr "Änderung der Partei von Adresse \"%s\" nicht möglich."
+msgstr "Nie możesz modyfikować strony z adresem \"%s\"."
 
 msgctxt "error:party.category:"
 msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
-msgstr "Ungültiger Kategoriename \"%s\": \" / \" ist in Feld Name nicht erlaubt."
+msgstr "Niewłaściwa nazwa kategorii \"%s\": Nie możesz użyć \" / \" w nazwie."
 
 msgctxt "error:party.category:"
 msgid "The name of a party category must be unique by parent."
 msgstr ""
-"Der Name einer Parteienkategorie kann pro übergeordneter Kategorie nur "
-"einmal vergeben werden."
+"Nazwa kategorii strony musi być unikatowa względem kategorii nadrzędnej."
 
 msgctxt "error:party.check_vies:"
 msgid "The VIES service is unavailable, try again later."
-msgstr ""
-"VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!"
+msgstr "Usługa VIES jest niedostępna. Spróbuj później."
+
+msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr "Numer telefonu \"%(phone)s\" strony \"%(party)s\" jest niewłaściwy."
 
 msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "Änderung der Partei von Kontaktmechanismus \"%s\" nicht möglich."
+msgstr "Nie możesz modyfikować strony, której kontakt to \"%s\"."
 
 msgctxt "error:party.identifier:"
 msgid "Invalid VAT number \"%(code)s\" on party \"%(party)s\"."
-msgstr "Ungültige USt-ID-Nummer \"%(code)s\" für Partei \"%(party)s\"."
+msgstr "Niewłaściwy numer VAT \"%(code)s\" strony \"%(party)s\"."
 
 msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
-msgstr "Der Code für eine Partei kann nur einmal vergeben werden."
+msgstr "Kod strony musi być unikatowy."
+
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+"Strony mają różny identyfikator podatkowy: %(source_code)s różni się od "
+"%(destination_code)s."
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+"Strony mają różne nazwy: %(source_name)s różni się od %(destination_name)s."
 
 msgctxt "field:party.address,active:"
 msgid "Active"
-msgstr "Aktiv"
+msgstr "Aktywny"
 
 msgctxt "field:party.address,city:"
 msgid "City"
-msgstr "Stadt"
+msgstr "Miejscowość"
 
 msgctxt "field:party.address,country:"
 msgid "Country"
-msgstr "Staat"
+msgstr "Kraj"
 
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
-msgstr "Vollständige Adresse"
+msgstr "Pełny adres"
 
 msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Name"
+msgid "Building Name"
+msgstr "Nazwa lokalizacji"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "field:party.address,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.address,sequence:"
 msgid "Sequence"
-msgstr "Reihenfolge"
+msgstr "Kolejność"
 
 msgctxt "field:party.address,street:"
 msgid "Street"
-msgstr "Anschrift 1"
-
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Anschrift 2"
+msgstr "Ulica"
 
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
-msgstr "Subnationale Einheit"
+msgstr "Jednostka podrzędna"
 
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
-msgstr "Postleitzahl"
+msgstr "Kod pocztowy"
+
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Aktywny"
+
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Kraj"
+
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Data utworzenia"
+
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Utworzył"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr "Format"
+
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Język"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Nazwa"
+
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Data zapisu"
+
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Zapisał"
 
 msgctxt "field:party.category,active:"
 msgid "Active"
-msgstr "Aktiv"
+msgstr "Aktywny"
 
 msgctxt "field:party.category,childs:"
 msgid "Children"
-msgstr "Untergeordnet (Kategorien)"
+msgstr "Elementy podrzędne"
 
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.category,id:"
 msgid "ID"
@@ -123,23 +174,23 @@ msgstr "ID"
 
 msgctxt "field:party.category,name:"
 msgid "Name"
-msgstr "Kategorie Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.category,parent:"
 msgid "Parent"
-msgstr "Übergeordnet (Kategorie)"
+msgstr "Element nadrzędny"
 
 msgctxt "field:party.category,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
 
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
@@ -147,19 +198,19 @@ msgstr "ID"
 
 msgctxt "field:party.check_vies.result,parties_failed:"
 msgid "Parties Failed"
-msgstr "Parteien mit fehlgeschlagener Überprüfung"
+msgstr "Potwierdzenie numeru VAT stron nie powiodło się"
 
 msgctxt "field:party.check_vies.result,parties_succeed:"
 msgid "Parties Succeed"
-msgstr "Parteien mit erfolgreicher Überprüfung"
+msgstr "Potwierdzenie numeru VAT stron powiodło się"
 
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.configuration,id:"
 msgid "ID"
@@ -167,39 +218,39 @@ msgstr "ID"
 
 msgctxt "field:party.configuration,party_sequence:"
 msgid "Party Sequence"
-msgstr "Nummernkreis Partei"
+msgstr "Kolejność strony"
 
 msgctxt "field:party.configuration,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
 
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
-msgstr "Aktiv"
+msgstr "Aktywny"
 
 msgctxt "field:party.contact_mechanism,comment:"
 msgid "Comment"
-msgstr "Kommentar"
+msgstr "Komentarz"
 
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
-msgstr "E-Mail"
+msgstr "E-mail"
 
 msgctxt "field:party.contact_mechanism,id:"
 msgid "ID"
@@ -207,19 +258,19 @@ msgstr "ID"
 
 msgctxt "field:party.contact_mechanism,other_value:"
 msgid "Value"
-msgstr "Wert"
+msgstr "Wartość"
 
 msgctxt "field:party.contact_mechanism,party:"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "field:party.contact_mechanism,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.contact_mechanism,sequence:"
 msgid "Sequence"
-msgstr "Reihenfolge"
+msgstr "Kolejność"
 
 msgctxt "field:party.contact_mechanism,sip:"
 msgid "SIP"
@@ -239,31 +290,35 @@ msgstr "URL"
 
 msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
-msgstr "Wert"
+msgstr "Wartość"
+
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr "Wartość łączna"
 
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
-msgstr "Homepage"
+msgstr "Strona WWW"
 
 msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
 
 msgctxt "field:party.identifier,code:"
 msgid "Code"
-msgstr "Code"
+msgstr "Kod"
 
 msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.identifier,id:"
 msgid "ID"
@@ -271,11 +326,15 @@ msgstr "ID"
 
 msgctxt "field:party.identifier,party:"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
+
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Kolejność"
 
 msgctxt "field:party.identifier,type:"
 msgid "Type"
@@ -283,55 +342,55 @@ msgstr "Typ"
 
 msgctxt "field:party.identifier,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
 
 msgctxt "field:party.party,active:"
 msgid "Active"
-msgstr "Aktiv"
+msgstr "Aktywny"
 
 msgctxt "field:party.party,addresses:"
 msgid "Addresses"
-msgstr "Adressen"
+msgstr "Adresy"
 
 msgctxt "field:party.party,categories:"
 msgid "Categories"
-msgstr "Kategorien"
+msgstr "Kategorie"
 
 msgctxt "field:party.party,code:"
 msgid "Code"
-msgstr "Code Partei"
+msgstr "Kod"
 
 msgctxt "field:party.party,code_readonly:"
 msgid "Code Readonly"
-msgstr "Code (nur lesbar)"
+msgstr "Kod do odczytu"
 
 msgctxt "field:party.party,contact_mechanisms:"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Sposoby kontaktu"
 
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.party,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.party,email:"
 msgid "E-Mail"
-msgstr "E-Mail"
+msgstr "E-mail"
 
 msgctxt "field:party.party,fax:"
 msgid "Fax"
-msgstr "Fax"
+msgstr "Faks"
 
 msgctxt "field:party.party,full_name:"
 msgid "Full Name"
-msgstr "Vollständiger Name"
+msgstr "Pełna nazwa"
 
 msgctxt "field:party.party,id:"
 msgid "ID"
@@ -339,19 +398,19 @@ msgstr "ID"
 
 msgctxt "field:party.party,identifiers:"
 msgid "Identifiers"
-msgstr "Identifikatoren"
+msgstr "Identyfikatory"
 
 msgctxt "field:party.party,lang:"
 msgid "Language"
-msgstr "Sprache"
+msgstr "Język"
 
 msgctxt "field:party.party,mobile:"
 msgid "Mobile"
-msgstr "Mobiltelefon"
+msgstr "Komórka"
 
 msgctxt "field:party.party,name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.party,phone:"
 msgid "Phone"
@@ -359,35 +418,39 @@ msgstr "Telefon"
 
 msgctxt "field:party.party,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
+
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr "Zastąpione przez"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "USt-ID-Nr."
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identyfikator podatkowy"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
-msgstr "Website"
+msgstr "Strona WWW"
 
 msgctxt "field:party.party,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
-msgstr "Kategorie"
+msgstr "Kategoria"
 
 msgctxt "field:party.party-party.category,create_date:"
 msgid "Create Date"
-msgstr "Erstellungsdatum"
+msgstr "Data utworzenia"
 
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr "Erstellt durch"
+msgstr "Utworzył"
 
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
@@ -395,139 +458,195 @@ msgstr "ID"
 
 msgctxt "field:party.party-party.category,party:"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
-msgstr "Name"
+msgstr "Nazwa"
 
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
-msgstr "Zuletzt geändert"
+msgstr "Data zapisu"
 
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
-msgstr "Letzte Änderung durch"
+msgstr "Zapisał"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Cel"
+
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Źródło"
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+"Dostępne zmienne (pisane także dużymi literami):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
-msgstr "Adressen"
+msgstr "Adresy"
+
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr "Formaty adresów"
 
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
-msgstr "Parteikategorien"
+msgstr "Kategorie"
 
 msgctxt "model:ir.action,name:act_category_tree"
 msgid "Categories"
-msgstr "Parteikategorien"
+msgstr "Kategorie"
 
 msgctxt "model:ir.action,name:act_contact_mechanism_form"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Sposoby kontaktu"
 
 msgctxt "model:ir.action,name:act_party_by_category"
 msgid "Parties by Category"
-msgstr "Parteien nach Kategorien"
+msgstr "Strony wg kategorii"
 
 msgctxt "model:ir.action,name:act_party_configuration_form"
 msgid "Party Configuration"
-msgstr "Partei"
+msgstr "Konfiguracja ustawień strony"
 
 msgctxt "model:ir.action,name:act_party_form"
 msgid "Parties"
-msgstr "Parteien"
+msgstr "Strony"
 
 msgctxt "model:ir.action,name:report_label"
 msgid "Labels"
-msgstr "Etiketten"
+msgstr "Etykiety"
 
 msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
-msgstr "USt-ID-Nr. per VIES überprüfen"
+msgstr "Sprawdź VIES"
+
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr "Zastąp"
 
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "model:ir.sequence.type,name:sequence_type_party"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
-msgstr "Adressen"
+msgstr "Adresy"
+
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr "Formaty adresów"
 
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
-msgstr "Kategorien"
+msgstr "Kategorie"
 
 msgctxt "model:ir.ui.menu,name:menu_category_tree"
 msgid "Categories"
-msgstr "Parteikategorien"
+msgstr "Kategorie"
 
 msgctxt "model:ir.ui.menu,name:menu_configuration"
 msgid "Configuration"
-msgstr "Einstellungen"
+msgstr "Konfiguracja"
 
 msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
 msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
+msgstr "Sposoby kontaktu"
 
 msgctxt "model:ir.ui.menu,name:menu_party"
 msgid "Party"
-msgstr "Parteien"
+msgstr "Strona"
 
 msgctxt "model:ir.ui.menu,name:menu_party_configuration"
 msgid "Party Configuration"
-msgstr "Partei"
+msgstr "Konfiguracja ustawień strony"
 
 msgctxt "model:ir.ui.menu,name:menu_party_form"
 msgid "Parties"
-msgstr "Parteien"
+msgstr "Strony"
 
 msgctxt "model:party.address,name:"
 msgid "Address"
-msgstr "Adresse"
+msgstr "Adres"
+
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr "Format adresu"
 
 msgctxt "model:party.category,name:"
 msgid "Category"
-msgstr "Kategorie"
+msgstr "Kategoria"
 
 msgctxt "model:party.check_vies.result,name:"
 msgid "Check VIES"
-msgstr "USt-ID-Nr. per VIES überprüfen"
+msgstr "Sprawdź VIES"
 
 msgctxt "model:party.configuration,name:"
 msgid "Party Configuration"
-msgstr "Einstellungen Partei"
+msgstr "Konfiguracja ustawień strony"
 
 msgctxt "model:party.contact_mechanism,name:"
 msgid "Contact Mechanism"
-msgstr "Kontaktmöglichkeit"
+msgstr "Sposób kontaktu"
 
 msgctxt "model:party.identifier,name:"
 msgid "Party Identifier"
-msgstr "Partei Identifkator"
+msgstr "Identyfikator strony"
 
 msgctxt "model:party.party,name:"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
 
 msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
-msgstr "Partei - Parteikategorie"
+msgstr "Strona - Kategoria"
+
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr "Zastąp stronę"
 
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
-msgstr "Parteien Administration"
+msgstr "Administracja ustawieniami strony"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "E-Mail"
-msgstr "E-Mail"
+msgstr "E-mail"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Fax"
-msgstr "Fax"
+msgstr "Faks"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "IRC"
@@ -539,11 +658,11 @@ msgstr "Jabber"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Mobile"
-msgstr "Mobiltelefon"
+msgstr "Komórka"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Other"
-msgstr "Anderer Kontakt"
+msgstr "Inne"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Phone"
@@ -559,56 +678,28 @@ msgstr "Skype"
 
 msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
-msgstr "Homepage"
-
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr "Adressen"
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr "Kategorien"
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr "Kategorie"
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr "Ergebnisse des Überprüfungssystems für USt-ID-Nummern (VIES)"
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr "Einstellungen Partei"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr "Kontaktmöglichkeit"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr "Partei Identifikator"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr "Partei Identifikatoren"
+msgstr "Strona WWW"
 
 msgctxt "view:party.party:"
 msgid "General"
-msgstr "Allgemein"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Parteien"
+msgstr "Ogólne"
 
-msgctxt "view:party.party:"
+msgctxt "view:party.replace.ask:"
 msgid "Party"
-msgstr "Partei"
+msgstr "Strona"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr "Zastąp przez"
 
 msgctxt "wizard_button:party.check_vies,result,end:"
 msgid "OK"
 msgstr "OK"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Anuluj"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr "Zastąp"
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 484208b..ee97a93 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "O serviço VIES está indisponível. Tente mais tarde."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "Você não pode modificar o mecanismo de contato da pessoa \"%s\"."
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "O código da pessoa deve ser único."
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Ativo"
@@ -58,8 +72,9 @@ msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ID"
 
+#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr "Nome"
 
 msgctxt "field:party.address,party:"
@@ -78,10 +93,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Rua"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Rua (complemento)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "UF"
@@ -98,6 +109,55 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "CEP"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Ativo"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "País"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Data de criação"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Usuário de Criação"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Idioma"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Nome"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Editado por"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Gravado por"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Ativo"
@@ -238,6 +298,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Valor"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Sítio web"
@@ -274,6 +338,11 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Sequência"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Tipo"
@@ -358,9 +427,14 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "Código do tributo"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr "Identificador de pessoa"
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -406,10 +480,41 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Gravado pelo usuário"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Endereços"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Categorias"
@@ -442,6 +547,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Verificar VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Pessoa"
@@ -454,6 +563,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Endereços"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Categorias"
@@ -486,6 +599,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Endereço"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Categoria"
@@ -514,6 +631,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Pessoa - Categoria"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Administrar pessoas"
@@ -558,6 +679,31 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Sítio web"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Geral"
+
+#, fuzzy
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Pessoa"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "OK"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Endereços"
@@ -593,19 +739,3 @@ msgstr "Identificador de pessoa"
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
 msgstr "Identificador de pessoa"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Geral"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Pessoas"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Pessoa"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "OK"
diff --git a/locale/ru_RU.po b/locale/ru.po
similarity index 83%
rename from locale/ru_RU.po
rename to locale/ru.po
index 191fdb4..4865745 100644
--- a/locale/ru_RU.po
+++ b/locale/ru.po
@@ -23,6 +23,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "Служба VIES недоступна, попробуйте позже."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "Вы не можете изменить контрагента в контакнтых данных \"%s\"."
 
@@ -35,6 +39,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "Код контрагента должен быть уникальным"
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Действующий"
@@ -63,8 +77,9 @@ msgctxt "field:party.address,id:"
 msgid "ID"
 msgstr "ID"
 
+#, fuzzy
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr "Наименование"
 
 msgctxt "field:party.address,party:"
@@ -83,10 +98,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "улица"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "улица (доп.)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Подраздел"
@@ -103,6 +114,55 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Индекс"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Действующий"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Страны мира"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Язык"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Действующий"
@@ -243,6 +303,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Значение"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Сайт"
@@ -279,6 +343,11 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Нумерация"
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Тип"
@@ -363,9 +432,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Наименование"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "Код ИНН"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr ""
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -411,10 +484,41 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Адреса"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Категории"
@@ -448,6 +552,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Проверить VIES"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Контрагент"
@@ -460,6 +568,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Адреса"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Категории"
@@ -493,6 +605,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Адрес"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Категория"
@@ -521,6 +637,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Контрагент - Категории"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Администрирование контрагентов"
@@ -565,6 +685,31 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Сайт"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Основной"
+
+#, fuzzy
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Контрагент"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "Ок"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Адреса"
@@ -592,27 +737,3 @@ msgstr "Контактный способ"
 msgctxt "view:party.contact_mechanism:"
 msgid "Contact Mechanisms"
 msgstr "Контактные способы"
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Основной"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Контрагенты"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Контрагент"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "Ок"
diff --git a/locale/sl_SI.po b/locale/sl.po
similarity index 82%
rename from locale/sl_SI.po
rename to locale/sl.po
index d9af975..b05dbe9 100644
--- a/locale/sl_SI.po
+++ b/locale/sl.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr "VIES storitev je nedostopna, poskusite kasneje."
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr "Partnerjevega kontakta \"%s\" ni možno popravljati."
 
@@ -30,6 +34,16 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr "Šifra partnerja mora biti edinstvena."
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
 msgctxt "field:party.address,active:"
 msgid "Active"
 msgstr "Aktivno"
@@ -59,8 +73,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
-msgstr "Naziv"
+msgid "Building Name"
+msgstr "Naziv stavbe"
 
 msgctxt "field:party.address,party:"
 msgid "Party"
@@ -78,10 +92,6 @@ msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr "Ulica"
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr "Ulica (dodatno)"
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr "Regija"
@@ -98,6 +108,54 @@ msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr "Poštna številka"
 
+#, fuzzy
+msgctxt "field:party.address.format,active:"
+msgid "Active"
+msgstr "Aktivno"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "Država"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "Jezik"
+
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
 msgctxt "field:party.category,active:"
 msgid "Active"
 msgstr "Aktivno"
@@ -238,6 +296,10 @@ msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
 msgstr "Vrednost"
 
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
+msgstr ""
+
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr "Spletna stran"
@@ -274,6 +336,11 @@ msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
 msgstr "Ime"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "Zap.št."
+
 msgctxt "field:party.identifier,type:"
 msgid "Type"
 msgstr "Vrsta"
@@ -358,9 +425,13 @@ msgctxt "field:party.party,rec_name:"
 msgid "Name"
 msgstr "Ime"
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
-msgstr "DDV šifra"
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
+msgstr ""
+
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
+msgstr ""
 
 msgctxt "field:party.party,website:"
 msgid "Website"
@@ -406,10 +477,43 @@ msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+#, fuzzy
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr "Cilj"
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr "Original"
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr "Naslovi"
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr "Kategorije"
@@ -442,6 +546,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr "Preveri z VIES sistemom"
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr "Partner"
@@ -454,6 +562,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr "Naslovi"
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr "Kategorije"
@@ -486,6 +598,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr "Naslov"
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr "Kategorija"
@@ -514,6 +630,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr "Partner - Kategorija"
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr "Partner - vodenje"
@@ -558,6 +678,30 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr "Spletna stran"
 
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Splošno"
+
+msgctxt "view:party.replace.ask:"
+msgid "Party"
+msgstr "Partner"
+
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "OK"
+msgstr "V redu"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr "Prekliči"
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
+msgstr ""
+
 msgctxt "view:party.address:"
 msgid "Addresses"
 msgstr "Naslovi"
@@ -593,19 +737,3 @@ msgstr "Identifikator partnerja"
 msgctxt "view:party.identifier:"
 msgid "Party Identifiers"
 msgstr "Identifikatorji partnerjev"
-
-msgctxt "view:party.party:"
-msgid "General"
-msgstr "Splošno"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Partnerji"
-
-msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Partner"
-
-msgctxt "wizard_button:party.check_vies,result,end:"
-msgid "OK"
-msgstr "V redu"
diff --git a/locale/zh_CN.po b/locale/zh_CN.po
index ce1b20c..3342a03 100644
--- a/locale/zh_CN.po
+++ b/locale/zh_CN.po
@@ -19,6 +19,10 @@ msgid "The VIES service is unavailable, try again later."
 msgstr ""
 
 msgctxt "error:party.contact_mechanism:"
+msgid "The phone number \"%(phone)s\" of party \"%(party)s\" is not valid ."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:"
 msgid "You can not modify the party of contact mechanism \"%s\"."
 msgstr ""
 
@@ -30,117 +34,192 @@ msgctxt "error:party.party:"
 msgid "The code of the party must be unique."
 msgstr ""
 
+msgctxt "error:party.replace:"
+msgid ""
+"Parties have different Tax Identifier: %(source_code)s vs "
+"%(destination_code)s."
+msgstr ""
+
+msgctxt "error:party.replace:"
+msgid "Parties have different names: %(source_name)s vs %(destination_name)s."
+msgstr ""
+
+#, fuzzy
 msgctxt "field:party.address,active:"
 msgid "Active"
-msgstr ""
+msgstr "启用"
 
 msgctxt "field:party.address,city:"
 msgid "City"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,country:"
 msgid "Country"
-msgstr ""
+msgstr "考文垂郡"
 
+#, fuzzy
 msgctxt "field:party.address,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.address,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
 msgctxt "field:party.address,full_address:"
 msgid "Full Address"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
 msgctxt "field:party.address,name:"
-msgid "Name"
+msgid "Building Name"
 msgstr ""
 
 msgctxt "field:party.address,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
 msgctxt "field:party.address,sequence:"
 msgid "Sequence"
-msgstr ""
+msgstr "序列"
 
 msgctxt "field:party.address,street:"
 msgid "Street"
 msgstr ""
 
-msgctxt "field:party.address,streetbis:"
-msgid "Street (bis)"
-msgstr ""
-
 msgctxt "field:party.address,subdivision:"
 msgid "Subdivision"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.address,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.address,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "写入帐号"
 
 msgctxt "field:party.address,zip:"
 msgid "Zip"
 msgstr ""
 
-msgctxt "field:party.category,active:"
+#, fuzzy
+msgctxt "field:party.address.format,active:"
 msgid "Active"
+msgstr "启用"
+
+#, fuzzy
+msgctxt "field:party.address.format,country:"
+msgid "Country"
+msgstr "考文垂郡"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_date:"
+msgid "Create Date"
+msgstr "创建日期:"
+
+#, fuzzy
+msgctxt "field:party.address.format,create_uid:"
+msgid "Create User"
+msgstr "添加用户"
+
+msgctxt "field:party.address.format,format_:"
+msgid "Format"
 msgstr ""
 
+#, fuzzy
+msgctxt "field:party.address.format,id:"
+msgid "ID"
+msgstr "编号"
+
+#, fuzzy
+msgctxt "field:party.address.format,language:"
+msgid "Language"
+msgstr "语言"
+
+#, fuzzy
+msgctxt "field:party.address.format,rec_name:"
+msgid "Name"
+msgstr "纳木"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_date:"
+msgid "Write Date"
+msgstr "写入日期"
+
+#, fuzzy
+msgctxt "field:party.address.format,write_uid:"
+msgid "Write User"
+msgstr "写入帐号"
+
+#, fuzzy
+msgctxt "field:party.category,active:"
+msgid "Active"
+msgstr "启用"
+
+#, fuzzy
 msgctxt "field:party.category,childs:"
 msgid "Children"
-msgstr ""
+msgstr "子项"
 
+#, fuzzy
 msgctxt "field:party.category,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.category,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
+#, fuzzy
 msgctxt "field:party.category,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
+#, fuzzy
 msgctxt "field:party.category,name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
 msgctxt "field:party.category,parent:"
 msgid "Parent"
-msgstr ""
+msgstr "上级"
 
+#, fuzzy
 msgctxt "field:party.category,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
 msgctxt "field:party.category,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.category,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "写入帐号"
 
+#, fuzzy
 msgctxt "field:party.check_vies.result,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
 msgctxt "field:party.check_vies.result,parties_failed:"
 msgid "Parties Failed"
@@ -150,73 +229,86 @@ msgctxt "field:party.check_vies.result,parties_succeed:"
 msgid "Parties Succeed"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.configuration,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.configuration,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
+#, fuzzy
 msgctxt "field:party.configuration,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
 msgctxt "field:party.configuration,party_sequence:"
 msgid "Party Sequence"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.configuration,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
 msgctxt "field:party.configuration,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.configuration,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "写入帐号"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,active:"
 msgid "Active"
-msgstr ""
+msgstr "启用"
 
 msgctxt "field:party.contact_mechanism,comment:"
 msgid "Comment"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
 msgctxt "field:party.contact_mechanism,email:"
 msgid "E-Mail"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,other_value:"
 msgid "Value"
-msgstr ""
+msgstr "值"
 
 msgctxt "field:party.contact_mechanism,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,sequence:"
 msgid "Sequence"
-msgstr ""
+msgstr "序列"
 
 msgctxt "field:party.contact_mechanism,sip:"
 msgid "SIP"
@@ -226,69 +318,92 @@ msgctxt "field:party.contact_mechanism,skype:"
 msgid "Skype"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,type:"
 msgid "Type"
-msgstr ""
+msgstr "类型"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,url:"
 msgid "URL"
-msgstr ""
+msgstr "URL"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,value:"
 msgid "Value"
+msgstr "值"
+
+msgctxt "field:party.contact_mechanism,value_compact:"
+msgid "Value Compact"
 msgstr ""
 
 msgctxt "field:party.contact_mechanism,website:"
 msgid "Website"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.contact_mechanism,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "写入帐号"
 
+#, fuzzy
 msgctxt "field:party.identifier,code:"
 msgid "Code"
-msgstr ""
+msgstr "语言编码"
 
+#, fuzzy
 msgctxt "field:party.identifier,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.identifier,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
+#, fuzzy
 msgctxt "field:party.identifier,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
 msgctxt "field:party.identifier,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.identifier,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
+msgctxt "field:party.identifier,sequence:"
+msgid "Sequence"
+msgstr "序列"
+
+#, fuzzy
 msgctxt "field:party.identifier,type:"
 msgid "Type"
-msgstr ""
+msgstr "类型"
 
+#, fuzzy
 msgctxt "field:party.identifier,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.identifier,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "写入帐号"
 
+#, fuzzy
 msgctxt "field:party.party,active:"
 msgid "Active"
-msgstr ""
+msgstr "启用"
 
 msgctxt "field:party.party,addresses:"
 msgid "Addresses"
@@ -298,9 +413,10 @@ msgctxt "field:party.party,categories:"
 msgid "Categories"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,code:"
 msgid "Code"
-msgstr ""
+msgstr "语言编码"
 
 msgctxt "field:party.party,code_readonly:"
 msgid "Code Readonly"
@@ -310,13 +426,15 @@ msgctxt "field:party.party,contact_mechanisms:"
 msgid "Contact Mechanisms"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.party,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
 msgctxt "field:party.party,email:"
 msgid "E-Mail"
@@ -330,86 +448,133 @@ msgctxt "field:party.party,full_name:"
 msgid "Full Name"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
 msgctxt "field:party.party,identifiers:"
 msgid "Identifiers"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,lang:"
 msgid "Language"
-msgstr ""
+msgstr "语言"
 
 msgctxt "field:party.party,mobile:"
 msgid "Mobile"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
 msgctxt "field:party.party,phone:"
 msgid "Phone"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,rec_name:"
 msgid "Name"
+msgstr "纳木"
+
+msgctxt "field:party.party,replaced_by:"
+msgid "Replaced By"
 msgstr ""
 
-msgctxt "field:party.party,vat_code:"
-msgid "VAT Code"
+msgctxt "field:party.party,tax_identifier:"
+msgid "Tax Identifier"
 msgstr ""
 
 msgctxt "field:party.party,website:"
 msgid "Website"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.party,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "写入帐号"
 
 msgctxt "field:party.party-party.category,category:"
 msgid "Category"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party-party.category,create_date:"
 msgid "Create Date"
-msgstr ""
+msgstr "创建日期:"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "添加用户"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,id:"
 msgid "ID"
-msgstr ""
+msgstr "编号"
 
 msgctxt "field:party.party-party.category,party:"
 msgid "Party"
 msgstr ""
 
+#, fuzzy
 msgctxt "field:party.party-party.category,rec_name:"
 msgid "Name"
-msgstr ""
+msgstr "纳木"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,write_date:"
 msgid "Write Date"
-msgstr ""
+msgstr "写入日期"
 
+#, fuzzy
 msgctxt "field:party.party-party.category,write_uid:"
 msgid "Write User"
+msgstr "写入帐号"
+
+msgctxt "field:party.replace.ask,destination:"
+msgid "Destination"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.replace.ask,id:"
+msgid "ID"
+msgstr "编号"
+
+msgctxt "field:party.replace.ask,source:"
+msgid "Source"
+msgstr ""
+
+msgctxt "help:party.address.format,format_:"
+msgid ""
+"Available variables (also in upper case):\n"
+"- ${party_name}\n"
+"- ${name}\n"
+"- ${street}\n"
+"- ${zip}\n"
+"- ${city}\n"
+"- ${subdivision}\n"
+"- ${subdivision_code}\n"
+"- ${country}\n"
+"- ${country_code}"
 msgstr ""
 
 msgctxt "model:ir.action,name:act_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.action,name:act_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_category_list"
 msgid "Categories"
 msgstr ""
@@ -442,6 +607,10 @@ msgctxt "model:ir.action,name:wizard_check_vies"
 msgid "Check VIES"
 msgstr ""
 
+msgctxt "model:ir.action,name:wizard_replace"
+msgid "Replace"
+msgstr ""
+
 msgctxt "model:ir.sequence,name:sequence_party"
 msgid "Party"
 msgstr ""
@@ -454,6 +623,10 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
 msgid "Addresses"
 msgstr ""
 
+msgctxt "model:ir.ui.menu,name:menu_address_format_form"
+msgid "Address Formats"
+msgstr ""
+
 msgctxt "model:ir.ui.menu,name:menu_category_list"
 msgid "Categories"
 msgstr ""
@@ -462,9 +635,10 @@ msgctxt "model:ir.ui.menu,name:menu_category_tree"
 msgid "Categories"
 msgstr ""
 
+#, fuzzy
 msgctxt "model:ir.ui.menu,name:menu_configuration"
 msgid "Configuration"
-msgstr ""
+msgstr "设置"
 
 msgctxt "model:ir.ui.menu,name:menu_contact_mechanism_form"
 msgid "Contact Mechanisms"
@@ -486,6 +660,10 @@ msgctxt "model:party.address,name:"
 msgid "Address"
 msgstr ""
 
+msgctxt "model:party.address.format,name:"
+msgid "Address Format"
+msgstr ""
+
 msgctxt "model:party.category,name:"
 msgid "Category"
 msgstr ""
@@ -514,6 +692,10 @@ msgctxt "model:party.party-party.category,name:"
 msgid "Party - Category"
 msgstr ""
 
+msgctxt "model:party.replace.ask,name:"
+msgid "Replace Party"
+msgstr ""
+
 msgctxt "model:res.group,name:group_party_admin"
 msgid "Party Administration"
 msgstr ""
@@ -558,54 +740,28 @@ msgctxt "selection:party.contact_mechanism,type:"
 msgid "Website"
 msgstr ""
 
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Categories"
-msgstr ""
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr ""
-
-msgctxt "view:party.check_vies.result:"
-msgid "VAT Information Exchange System Results"
-msgstr ""
-
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr ""
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifier"
-msgstr ""
-
-msgctxt "view:party.identifier:"
-msgid "Party Identifiers"
-msgstr ""
-
+#, fuzzy
 msgctxt "view:party.party:"
 msgid "General"
-msgstr ""
+msgstr "基本"
 
-msgctxt "view:party.party:"
-msgid "Parties"
+msgctxt "view:party.replace.ask:"
+msgid "Party"
 msgstr ""
 
-msgctxt "view:party.party:"
-msgid "Party"
+msgctxt "view:party.replace.ask:"
+msgid "Replace By"
 msgstr ""
 
+#, fuzzy
 msgctxt "wizard_button:party.check_vies,result,end:"
 msgid "OK"
+msgstr "确定"
+
+msgctxt "wizard_button:party.replace,ask,end:"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:party.replace,ask,replace:"
+msgid "Replace"
 msgstr ""
diff --git a/party.py b/party.py
index b7f7502..8d9e3fa 100644
--- a/party.py
+++ b/party.py
@@ -4,18 +4,19 @@ from itertools import groupby
 
 import stdnum.eu.vat as vat
 import stdnum.exceptions
-from sql import Null
+from sql import Null, Column
 from sql.functions import CharLength
 
-from trytond.model import ModelView, ModelSQL, fields, Unique
+from trytond.model import ModelView, ModelSQL, fields, Unique, sequence_ordered
 from trytond.wizard import Wizard, StateTransition, StateView, Button
-from trytond.pyson import Eval
+from trytond.pyson import Eval, Bool
 from trytond.transaction import Transaction
 from trytond.pool import Pool
 from trytond import backend
 
 __all__ = ['Party', 'PartyCategory', 'PartyIdentifier',
-    'CheckVIESResult', 'CheckVIES']
+    'CheckVIESResult', 'CheckVIES',
+    'PartyReplace', 'PartyReplaceAsk']
 
 VAT_COUNTRIES = [('', '')]
 STATES = {
@@ -40,15 +41,23 @@ class Party(ModelSQL, ModelView):
             states=STATES, depends=DEPENDS))
     identifiers = fields.One2Many('party.identifier', 'party', 'Identifiers',
         states=STATES, depends=DEPENDS)
-    vat_code = fields.Function(fields.Char('VAT Code'),
-        'get_vat_code', searcher='search_vat_code')
+    tax_identifier = fields.Function(fields.Many2One(
+            'party.identifier', 'Tax Identifier'),
+        'get_tax_identifier', searcher='search_tax_identifier')
     addresses = fields.One2Many('party.address', 'party',
         'Addresses', states=STATES, depends=DEPENDS)
     contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
         'Contact Mechanisms', states=STATES, depends=DEPENDS)
     categories = fields.Many2Many('party.party-party.category',
         'party', 'category', 'Categories', states=STATES, depends=DEPENDS)
-    active = fields.Boolean('Active', select=True)
+    active = fields.Boolean('Active', select=True, states={
+            'readonly': Bool(Eval('replaced_by')),
+            },
+        depends=['replaced_by'])
+    replaced_by = fields.Many2One('party.party', "Replaced By", readonly=True,
+        states={
+            'invisible': ~Eval('replaced_by'),
+            })
     full_name = fields.Function(fields.Char('Full Name'), 'get_full_name')
     phone = fields.Function(fields.Char('Phone'), 'get_mechanism')
     mobile = fields.Function(fields.Char('Mobile'), 'get_mechanism')
@@ -109,11 +118,7 @@ class Party(ModelSQL, ModelView):
     def default_addresses():
         if Transaction().user == 0:
             return []
-        Address = Pool().get('party.address')
-        fields_names = list(x for x in Address._fields.keys()
-            if x not in ('id', 'create_uid', 'create_date',
-                'write_uid', 'write_date'))
-        return [Address.default_get(fields_names)]
+        return [{}]
 
     @staticmethod
     def default_code_readonly():
@@ -125,21 +130,36 @@ class Party(ModelSQL, ModelView):
         return True
 
     @classmethod
-    def _vat_types(cls):
+    def _tax_identifier_types(cls):
         return ['eu_vat']
 
-    def get_vat_code(self, name):
-        types = self._vat_types()
+    def get_tax_identifier(self, name):
+        types = self._tax_identifier_types()
         for identifier in self.identifiers:
             if identifier.type in types:
-                return identifier.code
+                return identifier.id
 
     @classmethod
-    def search_vat_code(cls, name, clause):
-        return [
-            ('identifiers.code',) + tuple(clause[1:]),
-            ('identifiers.type', 'in', cls._vat_types()),
+    def search_tax_identifier(cls, name, clause):
+        _, operator, value = clause
+        types = cls._tax_identifier_types()
+        domain = [
+            ('identifiers', 'where', [
+                    ('code', operator, value),
+                    ('type', 'in', types),
+                    ]),
             ]
+        # Add party without tax identifier
+        if ((operator == '=' and value is None)
+                or (operator == 'in' and None in value)):
+            domain = ['OR',
+                domain, [
+                    ('identifiers', 'not where', [
+                            ('type', 'in', types),
+                            ]),
+                    ],
+                ]
+        return domain
 
     def get_full_name(self, name):
         return self.name
@@ -224,13 +244,14 @@ class PartyCategory(ModelSQL):
         ondelete='CASCADE', required=True, select=True)
 
 
-class PartyIdentifier(ModelSQL, ModelView):
+class PartyIdentifier(sequence_ordered(), ModelSQL, ModelView):
     'Party Identifier'
     __name__ = 'party.identifier'
     _rec_name = 'code'
     party = fields.Many2One('party.party', 'Party', ondelete='CASCADE',
         required=True, select=True)
     type = fields.Selection('get_types', 'Type')
+    type_string = type.translated('type')
     code = fields.Char('Code', required=True)
 
     @classmethod
@@ -374,3 +395,121 @@ class CheckVIES(Wizard):
             'parties_succeed': [p.id for p in self.result.parties_succeed],
             'parties_failed': [p.id for p in self.result.parties_failed],
             }
+
+
+class PartyReplace(Wizard):
+    "Replace Party"
+    __name__ = 'party.replace'
+    start_state = 'ask'
+    ask = StateView('party.replace.ask', 'party.replace_ask_view_form', [
+            Button("Cancel", 'end', 'tryton-cancel'),
+            Button("Replace", 'replace', 'tryton-find-replace', default=True),
+            ])
+    replace = StateTransition()
+
+    @classmethod
+    def __setup__(cls):
+        super(PartyReplace, cls).__setup__()
+        cls._error_messages.update({
+                'different_name': ("Parties have different names: "
+                    "%(source_name)s vs %(destination_name)s."),
+                'different_tax_identifier': (
+                    "Parties have different Tax Identifier: "
+                    "%(source_code)s vs %(destination_code)s."),
+                })
+
+    def check_similarity(self):
+        source = self.ask.source
+        destination = self.ask.destination
+        if source.name != destination.name:
+            key = 'party.replace name %s %s' % (source.id, destination.id)
+            self.raise_user_warning(key, 'different_name', {
+                    'source_name': source.name,
+                    'destination_name': destination.name,
+                    })
+        source_code = (source.tax_identifier.code
+            if source.tax_identifier else '')
+        destination_code = (destination.tax_identifier.code
+            if destination.tax_identifier else '')
+        if source_code != destination_code:
+            key = 'party.replace tax_identifier %s %s' % (
+                source.id, destination.id)
+            self.raise_user_warning(key, 'different_tax_identifier', {
+                    'source_code': source_code,
+                    'destination_code': destination_code,
+                    })
+
+    def transition_replace(self):
+        pool = Pool()
+        Address = pool.get('party.address')
+        ContactMechanism = pool.get('party.contact_mechanism')
+        transaction = Transaction()
+
+        self.check_similarity()
+        source = self.ask.source
+        destination = self.ask.destination
+
+        Address.write(list(source.addresses), {
+                'active': False,
+                })
+        ContactMechanism.write(list(source.contact_mechanisms), {
+                'active': False,
+                })
+        source.replaced_by = destination
+        source.active = False
+        source.save()
+
+        cursor = transaction.connection.cursor()
+        for model_name, field_name in self.fields_to_replace():
+            Model = pool.get(model_name)
+            table = Model.__table__()
+            column = Column(table, field_name)
+            where = column == source.id
+
+            if transaction.database.has_returning():
+                returning = [table.id]
+            else:
+                cursor.execute(*table.select(table.id, where=where))
+                ids = [x[0] for x in cursor]
+                returning = None
+
+            cursor.execute(*table.update(
+                    [column],
+                    [destination.id],
+                    where=where,
+                    returning=returning))
+
+            if transaction.database.has_returning():
+                ids = [x[0] for x in cursor]
+
+            Model._insert_history(ids)
+        return 'end'
+
+    @classmethod
+    def fields_to_replace(cls):
+        return [
+            ('party.address', 'party'),
+            ('party.contact_mechanism', 'party'),
+            ]
+
+
+class PartyReplaceAsk(ModelView):
+    "Replace Party"
+    __name__ = 'party.replace.ask'
+    source = fields.Many2One('party.party', "Source", required=True)
+    destination = fields.Many2One('party.party', "Destination", required=True,
+        domain=[
+            ('id', '!=', Eval('source', -1)),
+            ],
+        depends=['source'])
+
+    @classmethod
+    def default_source(cls):
+        context = Transaction().context
+        if context.get('active_model') == 'party.party':
+            return context.get('active_id')
+
+    @fields.depends('source')
+    def on_change_source(self):
+        if self.source and self.source.replaced_by:
+            self.destination = self.source.replaced_by
diff --git a/party.xml b/party.xml
index add6009..b85b35f 100644
--- a/party.xml
+++ b/party.xml
@@ -113,8 +113,15 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.ui.view" id="identifier_list">
             <field name="model">party.identifier</field>
             <field name="type">tree</field>
+            <field name="priority" eval="10"/>
             <field name="name">identifier_list</field>
         </record>
+        <record model="ir.ui.view" id="identifier_list_sequence">
+            <field name="model">party.identifier</field>
+            <field name="type">tree</field>
+            <field name="priority" eval="20"/>
+            <field name="name">identifier_list_sequence</field>
+        </record>
 
         <record model="ir.action.wizard" id="wizard_check_vies">
             <field name="name">Check VIES</field>
@@ -133,5 +140,26 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">check_vies_result</field>
         </record>
 
+        <record model="ir.action.wizard" id="wizard_replace">
+            <field name="name">Replace</field>
+            <field name="wiz_name">party.replace</field>
+            <field name="model">party.party</field>
+        </record>
+        <record model="ir.action-res.group"
+            id="wizard_replace-group_party_admin">
+            <field name="action" ref="wizard_replace"/>
+            <field name="group" ref="group_party_admin"/>
+        </record>
+        <record model="ir.action.keyword" id="wizard_replace_keyword1">
+            <field name="keyword">form_action</field>
+            <field name="model">party.party,-1</field>
+            <field name="action" ref="wizard_replace"/>
+        </record>
+
+        <record model="ir.ui.view" id="replace_ask_view_form">
+            <field name="model">party.replace.ask</field>
+            <field name="type">form</field>
+            <field name="name">replace_ask_form</field>
+        </record>
     </data>
 </tryton>
diff --git a/setup.py b/setup.py
index 1b110b6..9d3e248 100644
--- a/setup.py
+++ b/setup.py
@@ -53,6 +53,12 @@ for dep in info.get('depends', []):
         requires.append(get_require_version('trytond_%s' % dep))
 requires.append(get_require_version('trytond'))
 
+tests_require = [get_require_version('proteus'), 'phonenumbers']
+dependency_links = []
+if minor_version % 2:
+    # Add development index for testing with proteus
+    dependency_links.append('https://trydevpi.tryton.org/')
+
 setup(name=name,
     version=version,
     description='Tryton module with parties and addresses',
@@ -70,7 +76,7 @@ setup(name=name,
     package_data={
         'trytond.modules.party': (info.get('xml', [])
             + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt',
-                'icons/*.svg']),
+                'icons/*.svg', 'tests/*.rst']),
         },
     classifiers=[
         'Development Status :: 5 - Production/Stable',
@@ -91,6 +97,7 @@ setup(name=name,
         'Natural Language :: German',
         'Natural Language :: Hungarian',
         'Natural Language :: Italian',
+        'Natural Language :: Polish',
         'Natural Language :: Portuguese (Brazilian)',
         'Natural Language :: Russian',
         'Natural Language :: Slovenian',
@@ -108,7 +115,9 @@ setup(name=name,
     install_requires=requires,
     extras_require={
         'VAT': ['python-stdnum'],
+        'phonenumbers': ['phonenumbers'],
         },
+    dependency_links=dependency_links,
     zip_safe=False,
     entry_points="""
     [trytond.modules]
@@ -116,5 +125,9 @@ setup(name=name,
     """,
     test_suite='tests',
     test_loader='trytond.test_loader:Loader',
+    tests_require=tests_require,
     use_2to3=True,
+    convert_2to3_doctests=[
+        'tests/scenario_party_replace.rst',
+        ],
     )
diff --git a/tests/scenario_party_replace.rst b/tests/scenario_party_replace.rst
new file mode 100644
index 0000000..8c7e7b7
--- /dev/null
+++ b/tests/scenario_party_replace.rst
@@ -0,0 +1,43 @@
+======================
+Party Replace Scenario
+======================
+
+Imports::
+
+    >>> from proteus import Model, Wizard
+    >>> from trytond.tests.tools import activate_modules
+
+Install party::
+
+    >>> config = activate_modules('party')
+
+Create a party::
+
+    >>> Party = Model.get('party.party')
+    >>> party1 = Party(name='Pam')
+    >>> party1.save()
+    >>> address1, = party1.addresses
+
+Create a second party similar party::
+
+    >>> party2 = Party(name='Pam')
+    >>> party2.save()
+    >>> address2, = party2.addresses
+
+Replace the second by the first party::
+
+    >>> replace = Wizard('party.replace', models=[party2])
+    >>> replace.form.source == party2
+    True
+    >>> replace.form.destination = party1
+    >>> replace.execute('replace')
+
+    >>> party2.reload()
+    >>> bool(party2.active)
+    False
+
+    >>> address2.reload()
+    >>> address2.party == party1
+    True
+    >>> bool(address2.active)
+    False
diff --git a/tests/test_party.py b/tests/test_party.py
index d91155a..0e1111b 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -1,9 +1,18 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
 import unittest
+import doctest
+try:
+    import phonenumbers
+except ImportError:
+    phonenumbers = None
+
 import trytond.tests.test_tryton
 from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+from trytond.tests.test_tryton import doctest_teardown
+from trytond.tests.test_tryton import doctest_checker
 from trytond.pool import Pool
+from trytond.transaction import Transaction
 
 
 class PartyTestCase(ModuleTestCase):
@@ -83,6 +92,15 @@ class PartyTestCase(ModuleTestCase):
                     'city': 'City',
                     }])
         self.assert_(address.id)
+        self.assertMultiLineEqual(address.full_address,
+            "St sample, 15\n"
+            "City")
+        with Transaction().set_context(address_with_party=True):
+            address = Address(address.id)
+            self.assertMultiLineEqual(address.full_address,
+                "Party 1\n"
+                "St sample, 15\n"
+                "City")
 
     @with_transaction()
     def test_party_label_report(self):
@@ -107,8 +125,46 @@ class PartyTestCase(ModuleTestCase):
         code = party2.code
         self.assertEqual(party2.rec_name, '[' + code + ']')
 
+    @unittest.skipIf(phonenumbers is None, 'requires phonenumbers')
+    @with_transaction()
+    def test_phone_number_format(self):
+        'Test phone number format'
+        pool = Pool()
+        Party = pool.get('party.party')
+        ContactMechanism = pool.get('party.contact_mechanism')
+
+        party1, = Party.create([{
+                    'name': 'Party 1',
+                    }])
+        mechanism, = ContactMechanism.create([{
+                    'party': party1.id,
+                    'type': 'phone',
+                    'value': '+442083661177',
+                    }])
+
+        # Test format on create
+        self.assertEqual(mechanism.value, '+44 20 8366 1177')
+        self.assertEqual(mechanism.value_compact, '+442083661177')
+
+        # Test format on write
+        mechanism.value = '+442083661178'
+        mechanism.save()
+        self.assertEqual(mechanism.value, '+44 20 8366 1178')
+        self.assertEqual(mechanism.value_compact, '+442083661178')
+
+        ContactMechanism.write([mechanism], {
+                'value': '+442083661179',
+                })
+        self.assertEqual(mechanism.value, '+44 20 8366 1179')
+        self.assertEqual(mechanism.value_compact, '+442083661179')
+
 
 def suite():
     suite = trytond.tests.test_tryton.suite()
     suite.addTests(unittest.TestLoader().loadTestsFromTestCase(PartyTestCase))
+    suite.addTests(doctest.DocFileSuite(
+            'scenario_party_replace.rst',
+            tearDown=doctest_teardown, encoding='utf-8',
+            checker=doctest_checker,
+            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     return suite
diff --git a/tryton.cfg b/tryton.cfg
index 6cca58d..9231baf 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=4.0.2
+version=4.2.0
 depends:
     country
     ir
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index ccfbf3d..3b95dc9 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-party
-Version: 4.0.2
+Version: 4.2.0
 Summary: Tryton module with parties and addresses
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.0/
+Download-URL: http://downloads.tryton.org/4.2/
 Description: trytond_party
         =============
         
@@ -63,6 +63,7 @@ Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Hungarian
 Classifier: Natural Language :: Italian
+Classifier: Natural Language :: Polish
 Classifier: Natural Language :: Portuguese (Brazilian)
 Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Slovenian
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 46b8045..477e29c 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -26,29 +26,30 @@ tryton.cfg
 ./party.xml
 ./tryton.cfg
 ./icons/tryton-party.svg
-./locale/bg_BG.po
-./locale/ca_ES.po
-./locale/cs_CZ.po
-./locale/de_DE.po
-./locale/es_AR.po
-./locale/es_CO.po
-./locale/es_EC.po
-./locale/es_ES.po
-./locale/es_MX.po
-./locale/fr_FR.po
+./locale/bg.po
+./locale/ca.po
+./locale/cs.po
+./locale/de.po
+./locale/es.po
+./locale/es_419.po
+./locale/fr.po
 ./locale/hu_HU.po
 ./locale/it_IT.po
 ./locale/ja_JP.po
-./locale/lo_LA.po
-./locale/lt_LT.po
-./locale/nl_NL.po
+./locale/lo.po
+./locale/lt.po
+./locale/nl.po
+./locale/pl.po
 ./locale/pt_BR.po
-./locale/ru_RU.po
-./locale/sl_SI.po
+./locale/ru.po
+./locale/sl.po
 ./locale/zh_CN.po
 ./tests/__init__.py
+./tests/scenario_party_replace.rst
 ./tests/test_party.py
 ./view/address_form.xml
+./view/address_format_form.xml
+./view/address_format_list.xml
 ./view/address_tree.xml
 ./view/address_tree_sequence.xml
 ./view/category_form.xml
@@ -61,29 +62,29 @@ tryton.cfg
 ./view/contact_mechanism_tree_sequence.xml
 ./view/identifier_form.xml
 ./view/identifier_list.xml
+./view/identifier_list_sequence.xml
 ./view/party_form.xml
 ./view/party_tree.xml
+./view/replace_ask_form.xml
 doc/index.rst
 icons/tryton-party.svg
-locale/bg_BG.po
-locale/ca_ES.po
-locale/cs_CZ.po
-locale/de_DE.po
-locale/es_AR.po
-locale/es_CO.po
-locale/es_EC.po
-locale/es_ES.po
-locale/es_MX.po
-locale/fr_FR.po
+locale/bg.po
+locale/ca.po
+locale/cs.po
+locale/de.po
+locale/es.po
+locale/es_419.po
+locale/fr.po
 locale/hu_HU.po
 locale/it_IT.po
 locale/ja_JP.po
-locale/lo_LA.po
-locale/lt_LT.po
-locale/nl_NL.po
+locale/lo.po
+locale/lt.po
+locale/nl.po
+locale/pl.po
 locale/pt_BR.po
-locale/ru_RU.po
-locale/sl_SI.po
+locale/ru.po
+locale/sl.po
 locale/zh_CN.po
 trytond_party.egg-info/PKG-INFO
 trytond_party.egg-info/SOURCES.txt
@@ -93,6 +94,8 @@ trytond_party.egg-info/not-zip-safe
 trytond_party.egg-info/requires.txt
 trytond_party.egg-info/top_level.txt
 view/address_form.xml
+view/address_format_form.xml
+view/address_format_list.xml
 view/address_tree.xml
 view/address_tree_sequence.xml
 view/category_form.xml
@@ -105,5 +108,7 @@ view/contact_mechanism_tree.xml
 view/contact_mechanism_tree_sequence.xml
 view/identifier_form.xml
 view/identifier_list.xml
+view/identifier_list_sequence.xml
 view/party_form.xml
-view/party_tree.xml
\ No newline at end of file
+view/party_tree.xml
+view/replace_ask_form.xml
\ No newline at end of file
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 4636b2b..47c939a 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,7 +1,10 @@
 python-sql >= 0.4
 python-stdnum
-trytond_country >= 4.0, < 4.1
-trytond >= 4.0, < 4.1
+trytond_country >= 4.2, < 4.3
+trytond >= 4.2, < 4.3
 
 [VAT]
 python-stdnum
+
+[phonenumbers]
+phonenumbers
diff --git a/view/address_form.xml b/view/address_form.xml
index 4ccecca..5a994dc 100644
--- a/view/address_form.xml
+++ b/view/address_form.xml
@@ -1,9 +1,12 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="Addresses" col="6">
+<form col="6">
     <label name="party"/>
-    <field name="party" colspan="5"/>
+    <field name="party"/>
+    <label name="sequence"/>
+    <field name="sequence"/>
+    <newline/>
     <label name="name"/>
     <field name="name"/>
     <group colspan="2" col="20" id="checkboxes">
@@ -14,9 +17,7 @@ this repository contains the full copyright notices and license terms. -->
     </group>
     <newline/>
     <label name="street"/>
-    <field name="street"/>
-    <label name="streetbis"/>
-    <field name="streetbis"/>
+    <field name="street" colspan="3"/>
     <newline/>
     <label name="zip"/>
     <field name="zip"/>
diff --git a/view/address_format_form.xml b/view/address_format_form.xml
new file mode 100644
index 0000000..281ce21
--- /dev/null
+++ b/view/address_format_form.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<form>
+    <label name="country"/>
+    <field name="country"/>
+    <label name="active"/>
+    <field name="active"/>
+    <label name="language"/>
+    <field name="language"/>
+    <separator name="format_" colspan="4"/>
+    <field name="format_" colspan="4"/>
+</form>
diff --git a/view/address_format_list.xml b/view/address_format_list.xml
new file mode 100644
index 0000000..101a6c5
--- /dev/null
+++ b/view/address_format_list.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<tree>
+    <field name="country"/>
+    <field name="language"/>
+    <field name="active" tree_invisible="1"/>
+</tree>
diff --git a/view/address_tree.xml b/view/address_tree.xml
index 3560ca9..f126d56 100644
--- a/view/address_tree.xml
+++ b/view/address_tree.xml
@@ -1,11 +1,9 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Addresses">
+<tree>
     <field name="party"/>
     <field name="name"/>
-    <field name="street"/>
-    <field name="streetbis"/>
     <field name="zip"/>
     <field name="city"/>
     <field name="country"/>
diff --git a/view/address_tree_sequence.xml b/view/address_tree_sequence.xml
index 4b6d64a..95f90cb 100644
--- a/view/address_tree_sequence.xml
+++ b/view/address_tree_sequence.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Addresses" sequence="sequence">
+<tree sequence="sequence">
     <field name="name"/>
-    <field name="street"/>
-    <field name="streetbis"/>
     <field name="zip"/>
     <field name="city"/>
     <field name="country"/>
diff --git a/view/category_form.xml b/view/category_form.xml
index 776f950..a29ab65 100644
--- a/view/category_form.xml
+++ b/view/category_form.xml
@@ -1,11 +1,12 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="Category">
+<form>
     <label name="name"/>
     <field name="name"/>
     <label name="active"/>
     <field name="active"/>
     <label name="parent"/>
     <field name="parent"/>
+    <field name="childs" colspan="4"/>
 </form>
diff --git a/view/category_list.xml b/view/category_list.xml
index 2d10151..a7e6430 100644
--- a/view/category_list.xml
+++ b/view/category_list.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Categories">
+<tree>
     <field name="rec_name" expand="1"/>
     <field name="active" tree_invisible="1"/>
 </tree>
diff --git a/view/category_tree.xml b/view/category_tree.xml
index 0a12511..6215ea3 100644
--- a/view/category_tree.xml
+++ b/view/category_tree.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Categories" keyword_open="1">
+<tree keyword_open="1">
     <field name="name" expand="1"/>
     <field name="parent" tree_invisible="1"/>
     <field name="childs" tree_invisible="1"/>
diff --git a/view/check_vies_result.xml b/view/check_vies_result.xml
index f8a6bbb..8656494 100644
--- a/view/check_vies_result.xml
+++ b/view/check_vies_result.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="VAT Information Exchange System Results" col="1">
+<form col="1">
     <field name="parties_succeed"/>
     <field name="parties_failed"/>
 </form>
diff --git a/view/configuration_form.xml b/view/configuration_form.xml
index 66eb72e..11d18e4 100644
--- a/view/configuration_form.xml
+++ b/view/configuration_form.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="Party Configuration">
+<form>
     <label name="party_sequence"/>
     <field name="party_sequence"/>
 </form>
diff --git a/view/contact_mechanism_form.xml b/view/contact_mechanism_form.xml
index 0b3f9ba..5a2970d 100644
--- a/view/contact_mechanism_form.xml
+++ b/view/contact_mechanism_form.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="Contact Mechanism" col="6">
+<form col="6">
     <label name="party"/>
     <field name="party" colspan="5"/>
     <label name="type"/>
diff --git a/view/contact_mechanism_tree.xml b/view/contact_mechanism_tree.xml
index 90d396b..b65a463 100644
--- a/view/contact_mechanism_tree.xml
+++ b/view/contact_mechanism_tree.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Contact Mechanisms">
+<tree>
     <field name="party"/>
     <field name="type"/>
     <field name="value"/>
diff --git a/view/contact_mechanism_tree_sequence.xml b/view/contact_mechanism_tree_sequence.xml
index 2cc33f3..5e9ed25 100644
--- a/view/contact_mechanism_tree_sequence.xml
+++ b/view/contact_mechanism_tree_sequence.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Contact Mechanisms" sequence="sequence"
+<tree sequence="sequence"
     editable="bottom">
     <field name="type"/>
     <field name="value" expand="1"/>
diff --git a/view/identifier_form.xml b/view/identifier_form.xml
index 321ec92..690de9d 100644
--- a/view/identifier_form.xml
+++ b/view/identifier_form.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="Party Identifier">
+<form>
     <label name="party"/>
     <field name="party"/>
-    <newline/>
+    <label name="sequence"/>
+    <field name="sequence"/>
     <label name="type"/>
     <field name="type"/>
     <label name="code"/>
diff --git a/view/identifier_list.xml b/view/identifier_list.xml
index 315582d..3d4d81d 100644
--- a/view/identifier_list.xml
+++ b/view/identifier_list.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Party Identifiers">
+<tree>
     <field name="party"/>
     <field name="type"/>
     <field name="code" expand="1"/>
diff --git a/view/identifier_list.xml b/view/identifier_list_sequence.xml
similarity index 88%
copy from view/identifier_list.xml
copy to view/identifier_list_sequence.xml
index 315582d..53663d0 100644
--- a/view/identifier_list.xml
+++ b/view/identifier_list_sequence.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Party Identifiers">
+<tree sequence="sequence">
     <field name="party"/>
     <field name="type"/>
     <field name="code" expand="1"/>
diff --git a/view/party_form.xml b/view/party_form.xml
index 241228b..326e3a6 100644
--- a/view/party_form.xml
+++ b/view/party_form.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="Party" col="6">
+<form col="6">
     <label name="name"/>
     <field name="name" xexpand="1"/>
     <label name="code"/>
@@ -11,6 +11,8 @@ this repository contains the full copyright notices and license terms. -->
         <field name="active" xexpand="0" width="25"/>
         <!-- Add here some checkboxes ! -->
     </group>
+    <label name="replaced_by"/>
+    <field name="replaced_by"/>
     <notebook colspan="6">
         <page string="General" id="general">
             <field name="addresses" mode="form,tree" colspan="4"
@@ -25,7 +27,8 @@ this repository contains the full copyright notices and license terms. -->
                 view_ids="party.category_view_list"/>
         </page>
         <page name="identifiers">
-            <field name="identifiers" colspan="4" pre_validate="1"/>
+            <field name="identifiers" colspan="4" pre_validate="1"
+                view_ids="party.identifier_list_sequence"/>
         </page>
     </notebook>
 </form>
diff --git a/view/party_tree.xml b/view/party_tree.xml
index 44a5674..2e40d70 100644
--- a/view/party_tree.xml
+++ b/view/party_tree.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Parties">
+<tree>
     <field name="code"/>
     <field name="name"/>
     <field name="lang"/>
-    <field name="vat_code"/>
+    <field name="tax_identifier"/>
     <field name="active" tree_invisible="1"/>
 </tree>
diff --git a/view/replace_ask_form.xml b/view/replace_ask_form.xml
new file mode 100644
index 0000000..f429fc6
--- /dev/null
+++ b/view/replace_ask_form.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<form>
+    <label name="source" string="Party"/>
+    <field name="source"/>
+    <label name="destination" string="Replace By"/>
+    <field name="destination"/>
+</form>
-- 
tryton-modules-party



More information about the tryton-debian-vcs mailing list