[tryton-debian-vcs] tryton-modules-party branch upstream created. 13fc37523b80f8d973dd3de1fb3884969e2f58b3
Mathias Behrle
tryton-debian-vcs at alioth.debian.org
Wed Nov 27 17:03:41 UTC 2013
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=13fc37523b80f8d973dd3de1fb3884969e2f58b3
commit 13fc37523b80f8d973dd3de1fb3884969e2f58b3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Nov 24 17:27:22 2013 +0100
Adding upstream version 3.0.0.
diff --git a/CHANGELOG b/CHANGELOG
index e541923..31e5d55 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 3.0.0 - 2013-10-21
+* Bug fixes (see mercurial logs for details)
+
Version 2.8.0 - 2013-04-22
* Bug fixes (see mercurial logs for details)
* Add url widget to contact mechanism list view
diff --git a/PKG-INFO b/PKG-INFO
index 347464a..500150b 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond_party
-Version: 2.8.0
+Version: 3.0.0
Summary: Tryton module with parties and addresses
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.8/
+Download-URL: http://downloads.tryton.org/3.0/
Description: trytond_party
=============
@@ -60,6 +60,7 @@ Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Russian
+Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
diff --git a/address.py b/address.py
index a1b6c0b..fef948c 100644
--- a/address.py
+++ b/address.py
@@ -4,7 +4,7 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import Eval, If
from trytond.transaction import Transaction
-from trytond.backend import TableHandler
+from trytond import backend
__all__ = ['Address']
@@ -33,9 +33,7 @@ class Address(ModelSQL, ModelView):
'Subdivision', domain=[('country', '=', Eval('country'))],
states=STATES, depends=['active', 'country'])
active = fields.Boolean('Active')
- sequence = fields.Integer("Sequence",
- order_field='(%(table)s.sequence IS NULL) %(order)s, '
- '%(table)s.sequence %(order)s')
+ sequence = fields.Integer("Sequence")
full_address = fields.Function(fields.Text('Full Address'),
'get_full_address')
@@ -50,6 +48,7 @@ class Address(ModelSQL, ModelView):
@classmethod
def __register__(cls, module_name):
+ TableHandler = backend.get('TableHandler')
cursor = Transaction().cursor
table = TableHandler(cursor, cls, module_name)
@@ -59,6 +58,11 @@ class Address(ModelSQL, ModelView):
table.not_null_action('sequence', action='remove')
@staticmethod
+ def order_sequence(tables):
+ table, _ = tables[None]
+ return [table.sequence == None, table.sequence]
+
+ @staticmethod
def default_active():
return True
@@ -101,13 +105,13 @@ class Address(ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
addresses = cls.search(['OR',
- ('zip',) + clause[1:],
- ('city',) + clause[1:],
- ('name',) + clause[1:],
+ ('zip',) + tuple(clause[1:]),
+ ('city',) + tuple(clause[1:]),
+ ('name',) + tuple(clause[1:]),
], order=[])
if addresses:
return [('id', 'in', [address.id for address in addresses])]
- return [('party',) + clause[1:]]
+ return [('party',) + tuple(clause[1:])]
@classmethod
def write(cls, addresses, vals):
diff --git a/category.xml b/category.xml
index 20c84b3..d1b88ed 100644
--- a/category.xml
+++ b/category.xml
@@ -23,7 +23,7 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_category_tree">
<field name="name">Categories</field>
<field name="res_model">party.category</field>
- <field name="domain">[('parent', '=', False)]</field>
+ <field name="domain">[('parent', '=', None)]</field>
</record>
<record model="ir.action.act_window.view" id="act_category_tree_view1">
<field name="sequence" eval="10"/>
diff --git a/contact_mechanism.py b/contact_mechanism.py
index ed2f981..9c979ab 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -3,7 +3,7 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import Eval
from trytond.transaction import Transaction
-from trytond.backend import TableHandler
+from trytond import backend
__all__ = ['ContactMechanism']
@@ -39,9 +39,7 @@ class ContactMechanism(ModelSQL, ModelView):
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',
- order_field='(%(table)s.sequence IS NULL) %(order)s, '
- '%(table)s.sequence %(order)s')
+ sequence = fields.Integer('Sequence')
email = fields.Function(fields.Char('E-Mail', states={
'invisible': Eval('type') != 'email',
'required': Eval('type') == 'email',
@@ -92,6 +90,7 @@ class ContactMechanism(ModelSQL, ModelView):
@classmethod
def __register__(cls, module_name):
+ TableHandler = backend.get('TableHandler')
cursor = Transaction().cursor
table = TableHandler(cursor, cls, module_name)
@@ -101,6 +100,11 @@ class ContactMechanism(ModelSQL, ModelView):
table.not_null_action('sequence', action='remove')
@staticmethod
+ def order_sequence(tables):
+ table, _ = tables[None]
+ return [table.sequence == None, table.sequence]
+
+ @staticmethod
def default_type():
return 'phone'
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 22bf96a..142114f 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -78,15 +78,15 @@ msgstr "Secuencia"
msgctxt "field:party.address,street:"
msgid "Street"
-msgstr "Calle"
+msgstr "Dirección"
msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
-msgstr "Calle (bis)"
+msgstr "Dirección (bis)"
msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
-msgstr "Subdivisión"
+msgstr "Departamento"
msgctxt "field:party.address,write_date:"
msgid "Write Date"
@@ -98,7 +98,7 @@ msgstr "Modificado por Usuario"
msgctxt "field:party.address,zip:"
msgid "Zip"
-msgstr "Código postal"
+msgstr "Código Postal"
msgctxt "field:party.category,active:"
msgid "Active"
@@ -150,7 +150,7 @@ msgstr "ID"
msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Terceros Fallidos"
+msgstr "Terceros Incorrectos"
msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
@@ -334,7 +334,7 @@ msgstr "Nombre"
msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
-msgstr "NIT"
+msgstr "Cód. NIT"
msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
@@ -342,7 +342,7 @@ msgstr "PaÃs del NIT"
msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
-msgstr "NIT"
+msgstr "Número NIT"
msgctxt "field:party.party,website:"
msgid "Website"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 5623465..f232530 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -22,11 +22,11 @@ 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 tercer del contacto \"%s\"."
+msgstr "No puede modificar el tercero del contacto \"%s\"."
msgctxt "error:party.party:"
msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
-msgstr "CIF/NIF \"%(vat)s\" del tercero \"%(party)s\", no es correcto."
+msgstr "El CIF/NIF \"%(vat)s\" del tercero \"%(party)s\" no es correcto."
msgctxt "error:party.party:"
msgid "The code of the party must be unique."
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 87d2b4f..1b5ae2e 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -20,10 +20,6 @@ msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
msgstr "Le service VIES n'est pas disponible, veuillez essayer plus tard."
-msgctxt "error:party.check_vies:"
-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 "You can not modify the party of contact mechanism \"%s\"."
msgstr "Vous ne pouvez pas modifier le tier sur le moyen de contact \"%s\"."
@@ -174,11 +170,11 @@ msgstr "ID"
msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
-msgstr "Langue du tiers"
+msgstr "Langue des tiers"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr "Séquence des tiers"
+msgstr "Séquence de tiers"
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
@@ -515,14 +511,6 @@ msgid "E-Mail"
msgstr "E-Mail"
msgctxt "selection:party.contact_mechanism,type:"
-msgid "E-Mail"
-msgstr "E-Mail"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Fax"
-msgstr "Fax"
-
-msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "Fax"
@@ -531,22 +519,10 @@ msgid "IRC"
msgstr "IRC"
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 "Jabber"
-msgstr "Jabber"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Mobile"
-msgstr "Mobile"
-
-msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Mobile"
@@ -555,22 +531,10 @@ msgid "Other"
msgstr "Autre"
msgctxt "selection:party.contact_mechanism,type:"
-msgid "Other"
-msgstr "Autre"
-
-msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "Téléphone"
msgctxt "selection:party.contact_mechanism,type:"
-msgid "Phone"
-msgstr "Téléphone"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "SIP"
-msgstr "SIP"
-
-msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
@@ -579,14 +543,6 @@ msgid "Skype"
msgstr "Skype"
msgctxt "selection:party.contact_mechanism,type:"
-msgid "Skype"
-msgstr "Skype"
-
-msgctxt "selection:party.contact_mechanism,type:"
-msgid "Website"
-msgstr "Site web"
-
-msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Site web"
@@ -594,23 +550,11 @@ msgctxt "view:party.address:"
msgid "Addresses"
msgstr "Adresses"
-msgctxt "view:party.address:"
-msgid "Addresses"
-msgstr "Adresses"
-
msgctxt "view:party.category:"
msgid "Categories"
msgstr "Catégories"
msgctxt "view:party.category:"
-msgid "Categories"
-msgstr "Catégories"
-
-msgctxt "view:party.category:"
-msgid "Category"
-msgstr "Catégorie"
-
-msgctxt "view:party.category:"
msgid "Category"
msgstr "Catégorie"
@@ -630,23 +574,11 @@ msgctxt "view:party.configuration:"
msgid "Party Configuration"
msgstr "Configuration des tiers"
-msgctxt "view:party.configuration:"
-msgid "Party Configuration"
-msgstr "Configuration des tiers"
-
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "Moyen de contact"
msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanism"
-msgstr "Moyen de contact"
-
-msgctxt "view:party.contact_mechanism:"
-msgid "Contact Mechanisms"
-msgstr "Moyens de contact"
-
-msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "Moyens de contact"
@@ -655,22 +587,10 @@ msgid "Accounting"
msgstr "Comptabilité"
msgctxt "view:party.party:"
-msgid "Accounting"
-msgstr "Comptabilité"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "Général"
msgctxt "view:party.party:"
-msgid "General"
-msgstr "Général"
-
-msgctxt "view:party.party:"
-msgid "Parties"
-msgstr "Tiers"
-
-msgctxt "view:party.party:"
msgid "Parties"
msgstr "Tiers"
@@ -679,14 +599,6 @@ msgid "Party"
msgstr "Tiers"
msgctxt "view:party.party:"
-msgid "Party"
-msgstr "Tiers"
-
-msgctxt "view:party.party:"
-msgid "VAT"
-msgstr "TVA"
-
-msgctxt "view:party.party:"
msgid "VAT"
msgstr "TVA"
diff --git a/locale/es_ES.po b/locale/sl_SI.po
similarity index 73%
copy from locale/es_ES.po
copy to locale/sl_SI.po
index 5623465..b7a6a8c 100644
--- a/locale/es_ES.po
+++ b/locale/sl_SI.po
@@ -4,57 +4,55 @@ 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\"."
+msgstr "Strankin naslov \"%s\" ni možno popravljati."
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."
+msgstr "Neveljavno ime kategorije \"%s\": V imenu uporaba znaka \" / \" ni možna."
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."
+msgstr "Naziv kategorije stranke mora biti edinstven na matiÄno kategorijo."
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."
+msgstr "VIES storitev je nedostopna, poskusite kasneje."
msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of contact mechanism \"%s\"."
-msgstr "No puede modificar el tercer del contacto \"%s\"."
+msgstr "Strankinega kontakta \"%s\" ni možno popravljati."
msgctxt "error:party.party:"
msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
-msgstr "CIF/NIF \"%(vat)s\" del tercero \"%(party)s\", no es correcto."
+msgstr "Neveljavna DDV Å¡tevilka \"%(vat)s\" pri stranki \"%(party)s\"."
msgctxt "error:party.party:"
msgid "The code of the party must be unique."
-msgstr "El código del tercero debe ser único."
+msgstr "Å ifra stranke mora biti edinstvena."
msgctxt "field:party.address,active:"
msgid "Active"
-msgstr "Activo"
+msgstr "Aktivno"
msgctxt "field:party.address,city:"
msgid "City"
-msgstr "Ciudad"
+msgstr "Mesto"
msgctxt "field:party.address,country:"
msgid "Country"
-msgstr "PaÃs"
+msgstr "Država"
msgctxt "field:party.address,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:party.address,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:party.address,full_address:"
msgid "Full Address"
-msgstr "Dirección completa"
+msgstr "Polni naslov"
msgctxt "field:party.address,id:"
msgid "ID"
@@ -62,59 +60,59 @@ msgstr "ID"
msgctxt "field:party.address,name:"
msgid "Name"
-msgstr "Contacto"
+msgstr "Naziv"
msgctxt "field:party.address,party:"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "field:party.address,rec_name:"
msgid "Name"
-msgstr "Contacto"
+msgstr "Ime"
msgctxt "field:party.address,sequence:"
msgid "Sequence"
-msgstr "Secuencia"
+msgstr "Zap.Å¡t."
msgctxt "field:party.address,street:"
msgid "Street"
-msgstr "Calle"
+msgstr "Ulica"
msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
-msgstr "Calle (bis)"
+msgstr "Ulica (dodatno)"
msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
-msgstr "Subdivisión"
+msgstr "Regija"
msgctxt "field:party.address,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:party.address,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:party.address,zip:"
msgid "Zip"
-msgstr "Código postal"
+msgstr "Poštna številka"
msgctxt "field:party.category,active:"
msgid "Active"
-msgstr "Activo"
+msgstr "Aktivno"
msgctxt "field:party.category,childs:"
msgid "Children"
-msgstr "Hijos"
+msgstr "Podkategorije"
msgctxt "field:party.category,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:party.category,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:party.category,id:"
msgid "ID"
@@ -122,23 +120,23 @@ msgstr "ID"
msgctxt "field:party.category,name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Naziv"
msgctxt "field:party.category,parent:"
msgid "Parent"
-msgstr "Padre"
+msgstr "MatiÄna kategorija"
msgctxt "field:party.category,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:party.category,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:party.category,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:party.check_vies.no_result,id:"
msgid "ID"
@@ -150,19 +148,19 @@ msgstr "ID"
msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Tercero erróneo"
+msgstr "Stranke neuspešno preverjene"
msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr "Tercero correcto"
+msgstr "Stranke uspešno preverjene"
msgctxt "field:party.configuration,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:party.configuration,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:party.configuration,id:"
msgid "ID"
@@ -170,43 +168,43 @@ msgstr "ID"
msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
-msgstr "Idioma del tercero"
+msgstr "Jezik stranke"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr "Secuencia del tercero"
+msgstr "Å tetje strank"
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:party.configuration,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:party.configuration,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
-msgstr "Activo"
+msgstr "Aktivno"
msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
-msgstr "Comentario"
+msgstr "Komentar"
msgctxt "field:party.contact_mechanism,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:party.contact_mechanism,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
-msgstr "Correo electrónico"
+msgstr "E-pošta"
msgctxt "field:party.contact_mechanism,id:"
msgid "ID"
@@ -214,19 +212,19 @@ msgstr "ID"
msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
-msgstr "Valor"
+msgstr "Drugo"
msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
-msgstr "Secuencia"
+msgstr "Zap.Å¡t."
msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
@@ -238,7 +236,7 @@ msgstr "Skype"
msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
-msgstr "Tipo"
+msgstr "Tip"
msgctxt "field:party.contact_mechanism,url:"
msgid "URL"
@@ -246,67 +244,67 @@ msgstr "URL"
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
-msgstr "Valor"
+msgstr "Vrednost"
msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
-msgstr "Sitio Web"
+msgstr "Spletna stran"
msgctxt "field:party.contact_mechanism,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:party.contact_mechanism,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:party.party,active:"
msgid "Active"
-msgstr "Activo"
+msgstr "Aktivno"
msgctxt "field:party.party,addresses:"
msgid "Addresses"
-msgstr "Direcciones"
+msgstr "Naslovi"
msgctxt "field:party.party,categories:"
msgid "Categories"
-msgstr "CategorÃas"
+msgstr "Kategorije"
msgctxt "field:party.party,code:"
msgid "Code"
-msgstr "Código"
+msgstr "Å ifra"
msgctxt "field:party.party,code_length:"
msgid "Code Length"
-msgstr "DÃgitos del código"
+msgstr "Dolžina šifre"
msgctxt "field:party.party,code_readonly:"
msgid "Code Readonly"
-msgstr "Código sólo lectura"
+msgstr "Å ifra samo za branje"
msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
+msgstr "Kontakti"
msgctxt "field:party.party,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:party.party,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:party.party,email:"
msgid "E-Mail"
-msgstr "Correo electrónico"
+msgstr "E-pošta"
msgctxt "field:party.party,fax:"
msgid "Fax"
-msgstr "Fax"
+msgstr "Faks"
msgctxt "field:party.party,full_name:"
msgid "Full Name"
-msgstr "Nombre completo"
+msgstr "Polno ime"
msgctxt "field:party.party,id:"
msgid "ID"
@@ -314,59 +312,59 @@ msgstr "ID"
msgctxt "field:party.party,lang:"
msgid "Language"
-msgstr "Idioma"
+msgstr "Jezik"
msgctxt "field:party.party,mobile:"
msgid "Mobile"
-msgstr "Móvil"
+msgstr "Mobilni"
msgctxt "field:party.party,name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Naziv"
msgctxt "field:party.party,phone:"
msgid "Phone"
-msgstr "Teléfono"
+msgstr "Telefon"
msgctxt "field:party.party,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
-msgstr "CIF/NIF"
+msgstr "DDV Å¡ifra"
msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
-msgstr "PaÃs del CIF/NIF"
+msgstr "DDV država"
msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
-msgstr "CIF/NIF"
+msgstr "DDV Å¡tevilka"
msgctxt "field:party.party,website:"
msgid "Website"
-msgstr "Sitio Web"
+msgstr "Spletna stran"
msgctxt "field:party.party,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:party.party,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:party.party-party.category,category:"
msgid "Category"
-msgstr "CategorÃa"
+msgstr "Kategorija"
msgctxt "field:party.party-party.category,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:party.party-party.category,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:party.party-party.category,id:"
msgid "ID"
@@ -374,146 +372,143 @@ msgstr "ID"
msgctxt "field:party.party-party.category,party:"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:party.party-party.category,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:party.party-party.category,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
-msgstr ""
-"El valor de este campo será el valor por defecto del idioma de los terceros."
+msgstr "Vrednost v tem polju bo nastavila jezik za nove stranke."
msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
-msgstr ""
-"Al especificar el paÃs del NIF se habilitará la verificación de dicho "
-"número."
+msgstr "Nastavljena DDV država omogoÄa preverjanje DDV Å¡tevilke."
msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
-msgstr "Número de identificación fiscal."
+msgstr "Å tevilka davka na dodano vrednost"
msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
-msgstr "Direcciones"
+msgstr "Naslovi"
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
-msgstr "CategorÃas"
+msgstr "Kategorije"
msgctxt "model:ir.action,name:act_category_tree"
msgid "Categories"
-msgstr "CategorÃas"
+msgstr "Kategorije"
msgctxt "model:ir.action,name:act_party_by_category"
msgid "Parties by Category"
-msgstr "Terceros por categorÃa"
+msgstr "Stranke po kategorijah"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr "Configuración de terceros"
+msgstr "Konfiguracija strank"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
-msgstr "Terceros"
+msgstr "Stranke"
msgctxt "model:ir.action,name:report_label"
msgid "Labels"
-msgstr "Etiquetas"
+msgstr "Nalepke"
msgctxt "model:ir.action,name:wizard_check_vies"
msgid "Check VIES"
-msgstr "Comprobar VIES"
+msgstr "Preveri z VIES sistemom"
msgctxt "model:ir.sequence,name:sequence_party"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "model:ir.sequence.type,name:sequence_type_party"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "model:ir.ui.menu,name:menu_address_form"
msgid "Addresses"
-msgstr "Direcciones"
+msgstr "Naslovi"
msgctxt "model:ir.ui.menu,name:menu_category_list"
msgid "Categories"
-msgstr "CategorÃas"
+msgstr "Kategorije"
msgctxt "model:ir.ui.menu,name:menu_category_tree"
msgid "Categories"
-msgstr "CategorÃas"
+msgstr "Kategorije"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
-msgstr "Configuración"
+msgstr "Nastavitve"
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
-msgstr "Terceros"
+msgstr "Stranka"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
-msgstr "Terceros"
+msgstr "Konfiguracija"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
-msgstr "Terceros"
+msgstr "Stranke"
msgctxt "model:party.address,name:"
msgid "Address"
-msgstr "Dirección"
+msgstr "Naslov"
msgctxt "model:party.category,name:"
msgid "Category"
-msgstr "CategorÃa"
+msgstr "Kategorija"
msgctxt "model:party.check_vies.no_result,name:"
msgid "Check VIES"
-msgstr "Comprobar VIES"
+msgstr "Preveri z VIES sistemom"
msgctxt "model:party.check_vies.result,name:"
msgid "Check VIES"
-msgstr "Comprobar VIES"
+msgstr "Preveri z VIES sistemom"
msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
-msgstr "Configuración de terceros"
+msgstr "Konfiguracija strank"
msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
-msgstr "Medio de contacto"
+msgstr "Kontakt"
msgctxt "model:party.party,name:"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
-msgstr "Terceros - CategorÃa"
+msgstr "Stranka - Kategorija"
msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
-msgstr "Administración de terceros"
+msgstr "Stranka - vodenje"
msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
-msgstr "Correo electrónico"
+msgstr "E-pošta"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
-msgstr "Fax"
+msgstr "Faks"
msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
@@ -525,15 +520,15 @@ msgstr "Jabber"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
-msgstr "Móvil"
+msgstr "Mobilni"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
-msgstr "Otro"
+msgstr "Drugo"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
-msgstr "Teléfono"
+msgstr "Telefon"
msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
@@ -545,68 +540,68 @@ msgstr "Skype"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
-msgstr "Sitio Web"
+msgstr "Spletna stran"
msgctxt "view:party.address:"
msgid "Addresses"
-msgstr "Direcciones"
+msgstr "Naslovi"
msgctxt "view:party.category:"
msgid "Categories"
-msgstr "CategorÃas"
+msgstr "Kategorije"
msgctxt "view:party.category:"
msgid "Category"
-msgstr "CategorÃa"
+msgstr "Kategorija"
msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr "Sistema de intercambio de información CIF/NIF"
+msgstr "Sistem za izmenjavo DDV informacij"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "Debe tener instalada una versión reciente de \"vatnumber\"."
+msgstr "NameÅ¡Äena mora biti zadnja inaÄica \"DDV Å¡tevilke\"."
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
-msgstr "Resultado del sistema de intercambio de información CIF/NIF"
+msgstr "Rezultati sistem za izmenjavo DDV informacij"
msgctxt "view:party.configuration:"
msgid "Party Configuration"
-msgstr "Configuración de terceros"
+msgstr "Konfiguracija strank"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
-msgstr "Medio de contacto"
+msgstr "Kontakt"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
+msgstr "Kontakti"
msgctxt "view:party.party:"
msgid "Accounting"
-msgstr "Contabilidad"
+msgstr "RaÄunovodstvo"
msgctxt "view:party.party:"
msgid "General"
-msgstr "General"
+msgstr "Splošno"
msgctxt "view:party.party:"
msgid "Parties"
-msgstr "Terceros"
+msgstr "Stranke"
msgctxt "view:party.party:"
msgid "Party"
-msgstr "Tercero"
+msgstr "Stranka"
msgctxt "view:party.party:"
msgid "VAT"
-msgstr "CIF/NIF"
+msgstr "DDV"
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
-msgstr "Aceptar"
+msgstr "V redu"
msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
-msgstr "Aceptar"
+msgstr "V redu"
diff --git a/party.py b/party.py
index b2ee7ac..3104d4c 100644
--- a/party.py
+++ b/party.py
@@ -34,8 +34,6 @@ class Party(ModelSQL, ModelView):
name = fields.Char('Name', required=True, select=True,
states=STATES, depends=DEPENDS)
code = fields.Char('Code', required=True, select=True,
- order_field=("%(table)s.code_length %(order)s, "
- "%(table)s.code %(order)s"),
states={
'readonly': Eval('code_readonly', True),
},
@@ -86,6 +84,11 @@ class Party(ModelSQL, ModelView):
cls._order.insert(0, ('name', 'ASC'))
@staticmethod
+ def order_code(tables):
+ table, _ = tables[None]
+ return [table.code_length, table.code]
+
+ @staticmethod
def default_active():
return True
@@ -170,8 +173,6 @@ class Party(ModelSQL, ModelView):
@classmethod
def copy(cls, parties, default=None):
- Address = Pool().get('party.address')
-
if default is None:
default = {}
default = default.copy()
@@ -218,11 +219,11 @@ class Party(ModelSQL, ModelView):
http://sima-pc.com/nif.php
'''
if not HAS_VATNUMBER:
- return True
+ return
vat_number = self.vat_number
if not self.vat_country:
- return True
+ return
if not getattr(vatnumber, 'check_vat_' +
self.vat_country.lower())(vat_number):
diff --git a/setup.py b/setup.py
index 805e9cb..fcfac67 100644
--- a/setup.py
+++ b/setup.py
@@ -65,6 +65,7 @@ setup(name='trytond_party',
'Natural Language :: French',
'Natural Language :: German',
'Natural Language :: Russian',
+ 'Natural Language :: Slovenian',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.6',
diff --git a/tests/__init__.py b/tests/__init__.py
index c9f2b03..ac2796d 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -2,3 +2,5 @@
#this repository contains the full copyright notices and license terms.
from .test_party import suite
+
+__all__ = ['suite']
diff --git a/tryton.cfg b/tryton.cfg
index 1546871..6e07686 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.8.0
+version=3.0.0
depends:
country
ir
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index dbe05e2..21ec555 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: 2.8.0
+Version: 3.0.0
Summary: Tryton module with parties and addresses
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.8/
+Download-URL: http://downloads.tryton.org/3.0/
Description: trytond_party
=============
@@ -60,6 +60,7 @@ Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Russian
+Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index bceb65a..2e2d904 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -32,6 +32,7 @@ locale/es_ES.po
locale/fr_FR.po
locale/nl_NL.po
locale/ru_RU.po
+locale/sl_SI.po
trytond_party.egg-info/PKG-INFO
trytond_party.egg-info/SOURCES.txt
trytond_party.egg-info/dependency_links.txt
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 3a53a8a..b86a589 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 2.8, < 2.9
-trytond >= 2.8, < 2.9
+trytond_country >= 3.0, < 3.1
+trytond >= 3.0, < 3.1
[VAT]
vatnumber
\ No newline at end of file
commit a1df698cdf47beae9e98a924d0584dca279d352d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu May 2 00:36:35 2013 +0200
Adding upstream version 2.8.0.
diff --git a/CHANGELOG b/CHANGELOG
index 23170cf..e541923 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 2.8.0 - 2013-04-22
+* Bug fixes (see mercurial logs for details)
+* Add url widget to contact mechanism list view
+
Version 2.6.0 - 2012-10-22
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index dfe7d1e..03c5206 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
-Copyright (C) 2008-2012 Cédric Krier.
-Copyright (C) 2008-2012 Bertrand Chenal.
-Copyright (C) 2008-2012 B2CK SPRL.
-Copyright (C) 2008-2011 Udo Spallek.
+Copyright (C) 2008-2013 Cédric Krier.
+Copyright (C) 2008-2013 Bertrand Chenal.
+Copyright (C) 2008-2013 B2CK SPRL.
+Copyright (C) 2008-2013 Udo Spallek.
Copyright (C) 2008-2011 Korbinian Preisler.
Copyright (C) 2008-2011 virtual things.
Copyright (C) 2004-2008 Tiny SPRL.
diff --git a/MANIFEST.in b/MANIFEST.in
index e4632a1..732a76e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,6 +6,7 @@ include CHANGELOG
include LICENSE
include tryton.cfg
include *.xml
+include view/*.xml
include *.odt
include locale/*.po
include doc/*
diff --git a/PKG-INFO b/PKG-INFO
index 48774d1..347464a 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond_party
-Version: 2.6.0
+Version: 2.8.0
Summary: Tryton module with parties and addresses
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.6/
+Download-URL: http://downloads.tryton.org/2.8/
Description: trytond_party
=============
@@ -53,6 +53,7 @@ Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Catalan
Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
diff --git a/address.py b/address.py
index 3017b89..a1b6c0b 100644
--- a/address.py
+++ b/address.py
@@ -45,8 +45,8 @@ class Address(ModelSQL, ModelView):
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 an address!',
- })
+ 'write_party': 'You can not modify the party of address "%s".',
+ })
@classmethod
def __register__(cls, module_name):
@@ -114,7 +114,7 @@ class Address(ModelSQL, ModelView):
if 'party' in vals:
for address in addresses:
if address.party.id != vals['party']:
- cls.raise_user_error('write_party')
+ cls.raise_user_error('write_party', (address.rec_name,))
super(Address, cls).write(addresses, vals)
def on_change_country(self):
diff --git a/address.xml b/address.xml
index 3848526..86eaf4b 100644
--- a/address.xml
+++ b/address.xml
@@ -7,76 +7,20 @@ this repository contains the full copyright notices and license terms. -->
<field name="model">party.address</field>
<field name="type">tree</field>
<field name="priority" eval="10"/>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Addresses">
- <field name="party"/>
- <field name="name"/>
- <field name="street"/>
- <field name="streetbis"/>
- <field name="zip"/>
- <field name="city"/>
- <field name="country"/>
- <field name="subdivision"/>
- <field name="active"/>
- </tree>
- ]]>
- </field>
+ <field name="name">address_tree</field>
</record>
<record model="ir.ui.view" id="address_view_tree_sequence">
<field name="model">party.address</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Addresses" sequence="sequence">
- <field name="name"/>
- <field name="street"/>
- <field name="streetbis"/>
- <field name="zip"/>
- <field name="city"/>
- <field name="country"/>
- <field name="subdivision" expand="1"/>
- </tree>
- ]]>
- </field>
+ <field name="name">address_tree_sequence</field>
</record>
<record model="ir.ui.view" id="address_view_form">
<field name="model">party.address</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Addresses" col="6">
- <label name="party"/>
- <field name="party" colspan="5"/>
- <label name="name"/>
- <field name="name"/>
- <group colspan="2" col="20" id="checkboxes">
- <label name="active"/>
- <field name="active"
- xexpand="0" width="25"/>
- <!-- Add here some checkboxes ! -->
- </group>
- <newline/>
- <label name="street"/>
- <field name="street"/>
- <label name="streetbis"/>
- <field name="streetbis"/>
- <newline/>
- <label name="zip"/>
- <field name="zip"/>
- <label name="city"/>
- <field name="city"/>
- <newline/>
- <label name="country"/>
- <field name="country" widget="selection"/>
- <label name="subdivision"/>
- <field name="subdivision" widget="selection"/>
- </form>
- ]]>
- </field>
+ <field name="name">address_form</field>
</record>
<record model="ir.action.act_window" id="act_address_form">
<field name="name">Addresses</field>
diff --git a/category.py b/category.py
index 8ec6fe5..bf6b3e3 100644
--- a/category.py
+++ b/category.py
@@ -29,26 +29,28 @@ class Category(ModelSQL, ModelView):
super(Category, cls).__setup__()
cls._sql_constraints = [
('name_parent_uniq', 'UNIQUE(name, parent)',
- 'The name of a party category must be unique by parent!'),
- ]
- cls._constraints += [
- ('check_recursion', 'recursive_categories'),
- ('check_name', 'wrong_name'),
- ]
+ 'The name of a party category must be unique by parent.'),
+ ]
cls._error_messages.update({
- 'recursive_categories': 'You can not create recursive categories!',
- 'wrong_name': 'You can not use "%s" in name field!' % SEPARATOR,
- })
+ 'wrong_name': ('Invalid category name "%%s": You can not use '
+ '"%s" in name field.' % SEPARATOR),
+ })
cls._order.insert(1, ('name', 'ASC'))
@staticmethod
def default_active():
return True
+ @classmethod
+ def validate(cls, categories):
+ super(Category, cls).validate(categories)
+ cls.check_recursion(categories, rec_name='name')
+ for category in categories:
+ category.check_name()
+
def check_name(self):
if SEPARATOR in self.name:
- return False
- return True
+ self.raise_user_error('wrong_name', (self.name,))
def get_rec_name(self, name):
if self.parent:
diff --git a/category.xml b/category.xml
index 71e9f47..20c84b3 100644
--- a/category.xml
+++ b/category.xml
@@ -6,44 +6,19 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="category_view_form">
<field name="model">party.category</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Category">
- <label name="name"/>
- <field name="name"/>
- <label name="active"/>
- <field name="active"/>
- <label name="parent"/>
- <field name="parent"/>
- </form>
- ]]>
- </field>
+ <field name="name">category_form</field>
</record>
<record model="ir.ui.view" id="category_view_tree">
<field name="model">party.category</field>
<field name="type">tree</field>
<field name="field_childs">childs</field>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Categories" keyword_open="1">
- <field name="name" expand="1"/>
- <field name="parent" tree_invisible="1"/>
- <field name="childs" tree_invisible="1"/>
- </tree>
- ]]>
- </field>
+ <field name="name">category_tree</field>
</record>
<record model="ir.ui.view" id="category_view_list">
<field name="model">party.category</field>
<field name="type">tree</field>
<field name="priority" eval="10"/>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Categories">
- <field name="rec_name" expand="1"/>
- </tree>
- ]]>
- </field>
+ <field name="name">category_list</field>
</record>
<record model="ir.action.act_window" id="act_category_tree">
<field name="name">Categories</field>
@@ -96,6 +71,5 @@ this repository contains the full copyright notices and license terms. -->
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
-
</data>
</tryton>
diff --git a/configuration.xml b/configuration.xml
index 84e73cc..2d07c6d 100644
--- a/configuration.xml
+++ b/configuration.xml
@@ -6,16 +6,7 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="party_configuration_view_form">
<field name="model">party.configuration</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Party Configuration">
- <label name="party_sequence"/>
- <field name="party_sequence"/>
- <label name="party_lang" />
- <field name="party_lang" widget="selection" />
- </form>
- ]]>
- </field>
+ <field name="name">configuration_form</field>
</record>
<record model="ir.action.act_window" id="act_party_configuration_form">
<field name="name">Party Configuration</field>
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 6dff452..ed2f981 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -32,9 +32,9 @@ class ContactMechanism(ModelSQL, ModelView):
_rec_name = 'value'
type = fields.Selection(_TYPES, 'Type', required=True, states=STATES,
- sort=False, depends=DEPENDS)
+ sort=False, on_change=['value', 'type'], depends=DEPENDS)
value = fields.Char('Value', select=True, states=STATES,
- on_change=['value'], depends=DEPENDS)
+ on_change=['value', 'type'], depends=DEPENDS)
comment = fields.Text('Comment', states=STATES, depends=DEPENDS)
party = fields.Many2One('party.party', 'Party', required=True,
ondelete='CASCADE', states=STATES, select=True, depends=DEPENDS)
@@ -46,32 +46,39 @@ class ContactMechanism(ModelSQL, ModelView):
'invisible': Eval('type') != 'email',
'required': Eval('type') == 'email',
'readonly': ~Eval('active', True),
- }, on_change=['email'], depends=['value', 'type', 'active']),
+ }, on_change=['email', 'type'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
website = fields.Function(fields.Char('Website', states={
'invisible': Eval('type') != 'website',
'required': Eval('type') == 'website',
'readonly': ~Eval('active', True),
- }, on_change=['website'], depends=['value', 'type', 'active']),
+ }, on_change=['website', 'type'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
skype = fields.Function(fields.Char('Skype', states={
'invisible': Eval('type') != 'skype',
'required': Eval('type') == 'skype',
'readonly': ~Eval('active', True),
- }, on_change=['skype'], depends=['value', 'type', 'active']),
+ }, on_change=['skype', 'type'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
sip = fields.Function(fields.Char('SIP', states={
'invisible': Eval('type') != 'sip',
'required': Eval('type') == 'sip',
'readonly': ~Eval('active', True),
- }, on_change=['sip'], depends=['value', 'type', 'active']),
+ }, on_change=['sip', 'type'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
other_value = fields.Function(fields.Char('Value', states={
'invisible': Eval('type').in_(['email', 'website', 'skype', 'sip']),
'required': ~Eval('type').in_(['email', 'website']),
'readonly': ~Eval('active', True),
- }, on_change=['other_value'], depends=['value', 'type', 'active']),
+ }, on_change=['other_value', 'type'],
+ depends=['value', 'type', 'active']),
'get_value', setter='set_value')
+ url = fields.Function(fields.Char('URL', states={
+ 'invisible': (~Eval('type').in_(['email', 'website', 'skype',
+ 'sip'])
+ | ~Eval('url')),
+ }, depends=['type']),
+ 'get_url')
@classmethod
def __setup__(cls):
@@ -79,9 +86,9 @@ class ContactMechanism(ModelSQL, ModelView):
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 ' \
- 'a contact mechanism!',
- })
+ 'write_party': ('You can not modify the party of contact '
+ 'mechanism "%s".'),
+ })
@classmethod
def __register__(cls, module_name):
@@ -106,6 +113,19 @@ class ContactMechanism(ModelSQL, ModelView):
return dict((name, dict((m.id, m.value) for m in mechanisms))
for name in names)
+ def get_url(self, name=None, value=None):
+ if value is None:
+ value = self.value
+ if self.type == 'email':
+ return 'mailto:%s' % value
+ elif self.type == 'website':
+ return value
+ elif self.type == 'skype':
+ return 'callto:%s' % value
+ elif self.type == 'sip':
+ return 'sip:%s' % value
+ return None
+
@classmethod
def set_value(cls, mechanisms, name, value):
cls.write(mechanisms, {
@@ -120,6 +140,12 @@ class ContactMechanism(ModelSQL, ModelView):
'skype': value,
'sip': value,
'other_value': value,
+ 'url': self.get_url(value=value)
+ }
+
+ def on_change_type(self):
+ return {
+ 'url': self.get_url(value=self.value),
}
def on_change_value(self):
@@ -145,5 +171,5 @@ class ContactMechanism(ModelSQL, ModelView):
if 'party' in vals:
for mechanism in mechanisms:
if mechanism.party.id != vals['party']:
- cls.raise_user_error('write_party')
+ cls.raise_user_error('write_party', (mechanism.rec_name,))
super(ContactMechanism, cls).write(mechanisms, vals)
diff --git a/contact_mechanism.xml b/contact_mechanism.xml
index 0ad8cb9..be4f507 100644
--- a/contact_mechanism.xml
+++ b/contact_mechanism.xml
@@ -8,65 +8,20 @@ this repository contains the full copyright notices and license terms. -->
<field name="model">party.contact_mechanism</field>
<field name="type">tree</field>
<field name="priority" eval="10"/>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Contact Mechanisms">
- <field name="party"/>
- <field name="type"/>
- <field name="value"/>
- </tree>
- ]]>
- </field>
+ <field name="name">contact_mechanism_tree</field>
</record>
<record model="ir.ui.view" id="contact_mechanism_view_tree_sequence">
<field name="model">party.contact_mechanism</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Contact Mechanisms" sequence="sequence">
- <field name="type"/>
- <field name="value"/>
- <field name="comment" expand="1"/>
- </tree>
- ]]>
- </field>
+ <field name="name">contact_mechanism_tree_sequence</field>
</record>
<record model="ir.ui.view" id="contact_mechanism_view_form">
<field name="model">party.contact_mechanism</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Contact Mechanism" col="6">
- <label name="party"/>
- <field name="party" colspan="5"/>
- <label name="type"/>
- <field name="type"/>
- <group col="2" colspan="2" id="value">
- <label name="other_value"/>
- <field name="other_value"/>
- <label name="website"/>
- <field name="website" widget="url"/>
- <label name="email"/>
- <field name="email" widget="email"/>
- <label name="skype"/>
- <field name="skype" widget="callto"/>
- <label name="sip"/>
- <field name="sip" widget="sip"/>
- </group>
- <group col="20" colspan="2" id="checkboxes">
- <label name="active"/>
- <field name="active"
- xexpand="0" width="25"/>
- <!-- Add here some checkboxes ! -->
- </group>
- <separator name="comment" colspan="6"/>
- <field name="comment" colspan="6"/>
- </form>
- ]]>
- </field>
+ <field name="name">contact_mechanism_form</field>
</record>
</data>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 0abeacb..d300617 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -3,36 +3,32 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "Ðе може да пÑоменÑÑе паÑÑнÑоÑа за адÑеÑ!"
+msgid "You can not modify the party of address \"%s\"."
+msgstr ""
msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
-msgstr "ÐмеÑо на каÑегоÑиÑÑа на паÑÑнÑоÑа ÑÑÑбва да бÑде Ñникална по ÑодиÑел!"
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
+msgstr ""
msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "Ðе може да ÑÑздаваÑе взаимно вложени каÑегоÑии!"
-
-msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
-msgstr "РимеÑо на полеÑо не може да има \" / \"!"
+msgid "The name of a party category must be unique by parent."
+msgstr ""
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
msgstr "VIES ÑÑлÑгаÑа е недоÑÑÑпна, опиÑайÑе оÑново по-кÑÑно."
msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of a contact mechanism!"
-msgstr "Ðе може да пÑоменÑÑе паÑÑнÑоÑа за наÑин на конÑакÑ!"
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr ""
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "Ðевалиден ÐÐС номеÑ!"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr ""
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
-msgstr "Ðода на паÑÑнÑоÑа ÑÑÑбва да е Ñникален!"
+msgid "The code of the party must be unique."
+msgstr ""
msgctxt "field:party.address,active:"
msgid "Active"
@@ -242,6 +238,11 @@ msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Ðид"
+#, fuzzy
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr "URL"
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "СÑойноÑÑ"
@@ -583,18 +584,6 @@ msgid "Accounting"
msgstr "СÑеÑоводÑÑво"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "ÐдÑеÑи"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "ÐаÑегоÑии"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "ÐаÑини на конÑакÑ"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "ÐÑновен"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 83e9170..c1a2971 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -3,36 +3,34 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "No pot modificar el tercer d'una adreça."
+msgid "You can not modify the party of address \"%s\"."
+msgstr "No podeu modificar el tercer de l'adreça \"%s\"."
msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
-msgstr "No pot usar \"/\" en el camp nomeni."
-
-msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "No pot crear categories recursives."
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
+msgstr ""
+"Nom de categoria \"%s\" no és correcte: No podeu utilitzar \" / \" en el "
+"camp nom."
msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
-msgstr "No pot usar \"/\" en el camp nomeni."
+msgid "The name of a party category must be unique by parent."
+msgstr "El nom de la categorÃa del tercer ha de ser únic segons el pare."
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
-msgstr "El servei VIES no està disponible, intenti-ho de nou més tard"
+msgstr "El servei VIES no està disponible, intenti-ho de nou més tard."
msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of a contact mechanism!"
-msgstr "No pot modificar el tercer d'un contacte."
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr "No podeu modificar el tercer del contacte \"%s\"."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "El CIF/NIF no és và lid"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr "CIF/NIF \"%(vat)s\" del tercer \"%(party)s\", no és correcte."
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
-msgstr "El codi del tercer ha de ser únic"
+msgid "The code of the party must be unique."
+msgstr "El codi del tercer ha de ser únic."
msgctxt "field:party.address,active:"
msgid "Active"
@@ -176,7 +174,7 @@ msgstr "Idioma del tercer"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr "Seqüència tercer"
+msgstr "Seqüència del tercer"
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
@@ -242,6 +240,10 @@ msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Tipus"
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr "URL"
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Valor"
@@ -562,7 +564,7 @@ msgstr "Sistema d'intercanvi d'informació CIF/NIF"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "Ha de tenir instal·lada una versió recent de \"vatnumber\"."
+msgstr "Heu de tenir instal·lada una versió recent de \"vatnumber\"."
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
@@ -581,26 +583,10 @@ msgid "Contact Mechanisms"
msgstr "Mitjà de contacte"
msgctxt "view:party.party:"
-msgid "Account"
-msgstr "Compte"
-
-msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Comptabilitat"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Adreces"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "Categories"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Mitjans de contacte"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "General"
@@ -616,10 +602,6 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "CIF/NIF"
-msgctxt "view:party.party:"
-msgid "_General"
-msgstr "_General"
-
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Accepta"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 41be949..6f11de8 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -3,19 +3,15 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
+msgid "You can not modify the party of address \"%s\"."
msgstr ""
msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
msgstr ""
msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr ""
-
-msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
+msgid "The name of a party category must be unique by parent."
msgstr ""
msgctxt "error:party.check_vies:"
@@ -23,15 +19,15 @@ msgid "The VIES service is unavailable, try again later."
msgstr ""
msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of a contact mechanism!"
+msgid "You can not modify the party of contact mechanism \"%s\"."
msgstr ""
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
msgstr ""
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
+msgid "The code of the party must be unique."
msgstr ""
msgctxt "field:party.address,active:"
@@ -242,6 +238,10 @@ msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr ""
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr ""
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr ""
@@ -583,18 +583,6 @@ msgid "Accounting"
msgstr ""
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr ""
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr ""
-
-msgctxt "view:party.party:"
msgid "General"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index b9330dd..4a7692e 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -3,22 +3,18 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "Die Partei einer Adresse kann nicht geändert werden!"
+msgid "You can not modify the party of address \"%s\"."
+msgstr "Ãnderung der Partei von Adresse \"%s\" nicht möglich."
msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
-msgstr ""
-"Der Name einer Parteikategorie kann pro übergeordneter Kategorie nur einmal "
-"vergeben werden!"
-
-msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "Kategorien können nicht rekursiv angelegt werden!"
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
+msgstr "Ungültiger Kategoriename \"%s\": \" / \" ist in Feld Name nicht erlaubt."
msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
-msgstr "In dem Namensfeld kann \" / \" nicht verwendet werden!"
+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."
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
@@ -26,16 +22,16 @@ msgstr ""
"VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!"
msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of a contact mechanism!"
-msgstr "Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!"
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr "Ãnderung der Partei von Kontaktmechanismus \"%s\" nicht möglich."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "Ungültige USt-ID-Nummer!"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr "Ungültige USt-ID-Nummer \"%(vat)s\" in Partei \"%(party)s\"."
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
-msgstr "Der Name einer Partei kann nur einmal vergeben werden!"
+msgid "The code of the party must be unique."
+msgstr "Der Code für eine Partei kann nur einmal vergeben werden."
msgctxt "field:party.address,active:"
msgid "Active"
@@ -245,6 +241,10 @@ msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Typ"
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr "URL"
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Wert"
@@ -409,19 +409,19 @@ msgstr "Adressen"
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
-msgstr "Kategorien"
+msgstr "Parteikategorien"
msgctxt "model:ir.action,name:act_category_tree"
msgid "Categories"
-msgstr "Kategorien"
+msgstr "Parteikategorien"
msgctxt "model:ir.action,name:act_party_by_category"
msgid "Parties by Category"
-msgstr "Parteien nach Kategorie"
+msgstr "Parteien nach Kategorien"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr "Einstellungen Partei"
+msgstr "Partei"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
@@ -465,7 +465,7 @@ msgstr "Parteien"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
-msgstr "Einstellungen Partei"
+msgstr "Partei"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
@@ -586,30 +586,10 @@ msgid "Contact Mechanisms"
msgstr "Kontaktmöglichkeiten"
msgctxt "view:party.party:"
-msgid "Account"
-msgstr "Konten"
-
-msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Buchhaltung"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Adressen"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "Kategorien"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanism"
-msgstr "Kontaktmöglichkeit"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Kontaktmöglichkeiten"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "Allgemein"
@@ -625,14 +605,6 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "USt"
-msgctxt "view:party.party:"
-msgid "_Accounting"
-msgstr "_Buchhaltung"
-
-msgctxt "view:party.party:"
-msgid "_General"
-msgstr "_Allgemein"
-
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "OK"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index ee63f1f..0452038 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -3,36 +3,35 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "¡No puede modificar la entidad de una dirección!"
+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 "The name of a party category must be unique by parent!"
-msgstr "¡El nombre de una categorÃa de entidad debe ser único por cada padre!"
-
-msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "¡No puede crear categorÃas recursivas!"
+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 "You can not use \" / \" in name field!"
-msgstr "¡No puede usar \" /\" en el campo nombre!"
+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 a contact mechanism!"
-msgstr "¡No puede modificar la entidad de un médio de contacto!"
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr "No puede modificar la entidad del contacto «%s»."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "¡El CUIT no es válido!"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr "CUIT «%(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!"
+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"
@@ -152,7 +151,7 @@ msgstr "ID"
msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Entidades fallaron"
+msgstr "Entidades erróneas"
msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
@@ -176,11 +175,11 @@ msgstr "Idioma de la entidad"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr "Secuencia de Entidades"
+msgstr "Secuencia de entidades"
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
-msgstr "Nombre del campo"
+msgstr "Nombre campo"
msgctxt "field:party.configuration,write_date:"
msgid "Write Date"
@@ -242,6 +241,10 @@ 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"
@@ -280,7 +283,7 @@ msgstr "DÃgitos del código"
msgctxt "field:party.party,code_readonly:"
msgid "Code Readonly"
-msgstr "Código de sólo lectura"
+msgstr "Código sólo lectura"
msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
@@ -389,7 +392,8 @@ msgstr "Usuario modificación"
msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
-"El valor de este campo predeterminada el idioma de las nuevas entidades"
+"El valor de este campo será el valor por defecto del idioma de las nuevas "
+"entidades"
msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
@@ -419,7 +423,7 @@ msgstr "Entidades por categorÃa"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr "Configuración de Entidades"
+msgstr "Configuración de entidades"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
@@ -459,11 +463,11 @@ msgstr "Configuración"
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
-msgstr "Gestión de entidades"
+msgstr "Entidades"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
-msgstr "Configuración de Entidades"
+msgstr "Entidades"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
@@ -487,7 +491,7 @@ msgstr "Comprobar VIES"
msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
-msgstr "Configuración de Entidades"
+msgstr "Configuración de entidades"
msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
@@ -499,7 +503,7 @@ msgstr "Entidad"
msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
-msgstr "Entidad - CategorÃa"
+msgstr "Entidades - CategorÃa"
msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
@@ -571,7 +575,7 @@ msgstr "CUIT Resultados del Sistema de Intercambio de Información"
msgctxt "view:party.configuration:"
msgid "Party Configuration"
-msgstr "Configuración de Entidades"
+msgstr "Configuración de entidades"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
@@ -582,26 +586,10 @@ msgid "Contact Mechanisms"
msgstr "Medios de contacto"
msgctxt "view:party.party:"
-msgid "Account"
-msgstr "Cuenta"
-
-msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Contabilidad"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "CategorÃas"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "General"
@@ -617,10 +605,6 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "CUIT"
-msgctxt "view:party.party:"
-msgid "_General"
-msgstr "_General"
-
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Aceptar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 9e82271..22bf96a 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -3,36 +3,34 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "¡No puede modificar el tercero de una dirección!"
+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 "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.category:"
-msgid "You can not create recursive categories!"
-msgstr "¡No puede crear categorÃas recursivas!"
+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 "You can not use \" / \" in name field!"
-msgstr "¡No puede usar \" /\" en el campo nombre!"
+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 a contact mechanism!"
-msgstr "¡No puede modificar el tercero de un medio de contacto!"
+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.party:"
-msgid "Invalid VAT number!"
-msgstr "¡El NIT no es válido!"
+msgid "Invalid VAT number \"%(vat)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!"
+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"
@@ -242,6 +240,10 @@ 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"
@@ -582,26 +584,10 @@ msgid "Contact Mechanisms"
msgstr "Medios de Contacto"
msgctxt "view:party.party:"
-msgid "Account"
-msgstr "Cuenta"
-
-msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Contabilidad"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "CategorÃas"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Medios de Contacto"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "General"
@@ -617,10 +603,6 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "NIT"
-msgctxt "view:party.party:"
-msgid "_General"
-msgstr "_General"
-
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Aceptar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index ffa036f..5623465 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -3,35 +3,33 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "No puede modificar el tercero de una dirección."
+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 "The name of a party category must be unique by parent!"
-msgstr "El nombre de la categorÃa de terceros debe ser único por padre."
-
-msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "No puede crear categorÃas recursivas."
+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 "You can not use \" / \" in name field!"
-msgstr "No puede usar \"/\" en el campo nombre."
+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 a contact mechanism!"
-msgstr "No puede modificar el tercero de un medio de contacto."
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr "No puede modificar el tercer del contacto \"%s\"."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "El CIF/NIF no es correcto."
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr "CIF/NIF \"%(vat)s\" del tercero \"%(party)s\", no es correcto."
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
+msgid "The code of the party must be unique."
msgstr "El código del tercero debe ser único."
msgctxt "field:party.address,active:"
@@ -172,11 +170,11 @@ msgstr "ID"
msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
-msgstr "Idioma tercero"
+msgstr "Idioma del tercero"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr "Secuencia tercero"
+msgstr "Secuencia del tercero"
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
@@ -242,6 +240,10 @@ 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"
@@ -582,26 +584,10 @@ msgid "Contact Mechanisms"
msgstr "Medios de contacto"
msgctxt "view:party.party:"
-msgid "Account"
-msgstr "Cuenta"
-
-msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Contabilidad"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "CategorÃas"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Medios de contacto"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "General"
@@ -617,10 +603,6 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "CIF/NIF"
-msgctxt "view:party.party:"
-msgid "_General"
-msgstr "_General"
-
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Aceptar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 7e2f614..87d2b4f 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -3,38 +3,18 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "Vous ne pouvez pas modifier le tiers d'une addresse !"
-
-msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "Vous ne pouvez pas modifier le tiers d'une addresse !"
-
-msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
-msgstr ""
-"Le nom d'une catégorie de tiers doit être unique pour un même parent !"
+msgid "You can not modify the party of address \"%s\"."
+msgstr "Vous ne pouvez modifier le tier de l'adresse \"%s\"."
msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
msgstr ""
-"Le nom d'une catégorie de tiers doit être unique pour un même parent !"
-
-msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "Vous ne pouvez pas créer des catégories récursives !"
-
-msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "Vous ne pouvez pas créer des catégories récursives !"
+"Nom de catégorie \"%s\" invalide: vous ne pouvez utiliser \"/\" dans le "
+"champ nom. "
msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
-msgstr "Vous ne pouvez pas utiliser \" / \" dans le champ nom !"
-
-msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
-msgstr "Vous ne pouvez pas utiliser \" / \" dans le champ nom !"
+msgid "The name of a party category must be unique by parent."
+msgstr "Le nom de la catégorie de tiers doit être unique pour un même parent."
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
@@ -45,28 +25,16 @@ 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 "You can not modify the party of a contact mechanism!"
-msgstr "Vous ne pouvez pas modifiez le tiers d'un moyen de contact."
-
-msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of a contact mechanism!"
-msgstr "Vous ne pouvez pas modifiez le tiers d'un moyen de contact."
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr "Vous ne pouvez pas modifier le tier sur le moyen de contact \"%s\"."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "Numéro TVA non valide !"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr "Le numéro de TVA \"%(vat)s\" sur le tiers \"%(party)s\" est invalide."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "Numéro TVA non valide !"
-
-msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
-msgstr "Le code du tiers doit être unique !"
-
-msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
-msgstr "Le code du tiers doit être unique !"
+msgid "The code of the party must be unique."
+msgstr "Le code du tiers doit être unique."
msgctxt "field:party.address,active:"
msgid "Active"
@@ -276,6 +244,10 @@ msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Type"
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr "URL"
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Valeur"
@@ -687,18 +659,6 @@ msgid "Accounting"
msgstr "Comptabilité"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Adresses"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "Catégories"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Moyens de contact"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "Général"
@@ -723,10 +683,6 @@ msgid "Party"
msgstr "Tiers"
msgctxt "view:party.party:"
-msgid "Properties"
-msgstr "Propriétés"
-
-msgctxt "view:party.party:"
msgid "VAT"
msgstr "TVA"
@@ -734,14 +690,6 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "TVA"
-msgctxt "view:party.party:"
-msgid "_Accounting"
-msgstr "Compt_abilité"
-
-msgctxt "view:party.party:"
-msgid "_General"
-msgstr "_Général"
-
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Ok"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 88a1422..21af37d 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -3,36 +3,32 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr "U kunt niet de relatie van een adres veranderen!"
-
-msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
-msgstr "De naam van een relatie-categorie moet per niveau uniek zijn!"
+msgid "You can not modify the party of address \"%s\"."
+msgstr ""
msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "U kunt geen recursieve categorieën aanmaken!"
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
+msgstr ""
msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
-msgstr "Het \"/\" teken mag niet gebruikt worden in een naam veld!"
+msgid "The name of a party category must be unique by parent."
+msgstr ""
msgctxt "error:party.check_vies:"
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 "You can not modify the party of a contact mechanism!"
-msgstr "U kunt niet de relatie van een contactmogelijkheid veranderen!"
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr ""
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "Ongeldig BTW nummer!"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr ""
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
-msgstr "De relatie-code moet uniek zijn!"
+msgid "The code of the party must be unique."
+msgstr ""
msgctxt "field:party.address,active:"
msgid "Active"
@@ -243,6 +239,11 @@ msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Type"
+#, fuzzy
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr "URL"
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Waarde"
@@ -589,18 +590,6 @@ msgid "Accounting"
msgstr "Financieel"
msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "Adressen"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "Categorieën"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "Contactmogelijkheden"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "Algemeen"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 70215be..5cb87fe 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -3,40 +3,40 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
-msgid "You can not modify the party of an address!"
-msgstr ""
+msgid "You can not modify the party of address \"%s\"."
+msgstr "ÐÑ Ð½Ðµ можеÑе измениÑÑ ÐºÐ¾Ð½ÑÑагенÑа в адÑеÑе \"%s\"."
msgctxt "error:party.category:"
-msgid "The name of a party category must be unique by parent!"
+msgid "Invalid category name \"%s\": You can not use \" / \" in name field."
msgstr ""
+"ÐекоÑÑекÑное Ð¸Ð¼Ñ ÐºÐ°ÑегоÑии \"%s\": Ð²Ñ Ð½Ðµ можеÑе иÑполÑзоваÑÑ \" / \" в "
+"названии."
msgctxt "error:party.category:"
-msgid "You can not create recursive categories!"
-msgstr "ÐÑ Ð½Ðµ можеÑе ÑоздаваÑÑ ÑекÑÑÑивнÑе каÑегоÑии!"
-
-msgctxt "error:party.category:"
-msgid "You can not use \" / \" in name field!"
+msgid "The name of a party category must be unique by parent."
msgstr ""
+"Ðазвание каÑегоÑии должно бÑÑÑ ÑникалÑнÑм в пÑеделаÑ
каждого ÑодиÑелÑÑкого "
+"Ñзла."
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
-msgstr ""
+msgstr "СлÑжба VIES недоÑÑÑпна, попÑобÑйÑе позже."
msgctxt "error:party.contact_mechanism:"
-msgid "You can not modify the party of a contact mechanism!"
-msgstr ""
+msgid "You can not modify the party of contact mechanism \"%s\"."
+msgstr "ÐÑ Ð½Ðµ можеÑе измениÑÑ ÐºÐ¾Ð½ÑÑагенÑа в конÑакнÑÑÑ
даннÑÑ
\"%s\"."
msgctxt "error:party.party:"
-msgid "Invalid VAT number!"
-msgstr "ÐÑибка в номеÑе ÐÐÐ"
+msgid "Invalid VAT number \"%(vat)s\" on party \"%(party)s\"."
+msgstr "ÐекоÑÑекÑнÑй Ð½Ð¾Ð¼ÐµÑ ÐÐÐ \"%(vat)s\" Ñ ÐºÐ¾Ð½ÑÑагенÑа \"%(party)s\"."
msgctxt "error:party.party:"
-msgid "The code of the party must be unique!"
+msgid "The code of the party must be unique."
msgstr "Ðод конÑÑагенÑа должен бÑÑÑ ÑникалÑнÑм"
msgctxt "field:party.address,active:"
msgid "Active"
-msgstr "ÐкÑивнÑй"
+msgstr "ÐейÑÑвÑÑÑий"
msgctxt "field:party.address,city:"
msgid "City"
@@ -48,20 +48,19 @@ msgstr "СÑÑана"
msgctxt "field:party.address,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "ÐаÑа ÑозданиÑ"
msgctxt "field:party.address,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано полÑзоваÑелем"
-#, fuzzy
msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr "ÐолнÑй адÑеÑ"
msgctxt "field:party.address,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.address,name:"
msgid "Name"
@@ -77,7 +76,7 @@ msgstr "Ðаименование"
msgctxt "field:party.address,sequence:"
msgid "Sequence"
-msgstr "ÐоÑледоваÑелÑноÑÑÑ"
+msgstr "ÐÑмеÑаÑиÑ"
msgctxt "field:party.address,street:"
msgid "Street"
@@ -93,11 +92,11 @@ 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"
@@ -105,7 +104,7 @@ msgstr "ÐндекÑ"
msgctxt "field:party.category,active:"
msgid "Active"
-msgstr "ÐкÑивнÑй"
+msgstr "ÐейÑÑвÑÑÑий"
msgctxt "field:party.category,childs:"
msgid "Children"
@@ -113,15 +112,15 @@ 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"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.category,name:"
msgid "Name"
@@ -129,7 +128,7 @@ msgstr "Ðаименование"
msgctxt "field:party.category,parent:"
msgid "Parent"
-msgstr "ÐÑновной"
+msgstr "ÐÑедок"
msgctxt "field:party.category,rec_name:"
msgid "Name"
@@ -137,47 +136,47 @@ 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.no_result,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.check_vies.result,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr ""
+msgstr "ÐонÑÑагенÑÑ Ð½Ðµ пÑоÑедÑие пÑовеÑкÑ"
msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr ""
+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"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
-msgstr ""
+msgstr "ЯзÑк конÑÑагенÑа"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr ""
+msgstr "ÐÑмеÑаÑÐ¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑагенÑов"
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
@@ -185,15 +184,15 @@ 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"
-msgstr "ÐкÑивнÑй"
+msgstr "ÐейÑÑвÑÑÑий"
msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
@@ -201,11 +200,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"
@@ -213,7 +212,7 @@ msgstr "Ðл.поÑÑа"
msgctxt "field:party.contact_mechanism,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
@@ -229,20 +228,24 @@ msgstr "Ðаименование"
msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
-msgstr "ÐоÑледоваÑелÑноÑÑÑ"
+msgstr "ÐÑмеÑаÑиÑ"
msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
-msgstr ""
+msgstr "SIP"
msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
-msgstr ""
+msgstr "Skype"
msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Тип"
+msgctxt "field:party.contact_mechanism,url:"
+msgid "URL"
+msgstr "СÑÑлка"
+
msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "ÐнаÑение"
@@ -253,15 +256,15 @@ 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.party,active:"
msgid "Active"
-msgstr "ÐкÑивнÑй"
+msgstr "ÐейÑÑвÑÑÑий"
msgctxt "field:party.party,addresses:"
msgid "Addresses"
@@ -269,7 +272,7 @@ msgstr "ÐдÑеÑа"
msgctxt "field:party.party,categories:"
msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
+msgstr "ÐаÑегоÑии"
msgctxt "field:party.party,code:"
msgid "Code"
@@ -281,19 +284,19 @@ msgstr "Ðлина Ðода"
msgctxt "field:party.party,code_readonly:"
msgid "Code Readonly"
-msgstr ""
+msgstr "Ðод ÑолÑко Ð´Ð»Ñ ÑÑениÑ"
msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
-msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
+msgstr "ÐонÑакÑнÑе ÑпоÑобÑ"
msgctxt "field:party.party,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "ÐаÑа ÑозданиÑ"
msgctxt "field:party.party,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано полÑзоваÑелем"
msgctxt "field:party.party,email:"
msgid "E-Mail"
@@ -309,7 +312,7 @@ msgstr "Ðолное наименование"
msgctxt "field:party.party,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.party,lang:"
msgid "Language"
@@ -319,7 +322,6 @@ msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "ÑоÑ.ÑелеÑон"
-#, fuzzy
msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Ðаименование"
@@ -350,27 +352,27 @@ msgstr "СайÑ"
msgctxt "field:party.party,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "ÐаÑа изменениÑ"
msgctxt "field:party.party,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Ðзменено полÑзоваÑелем"
msgctxt "field:party.party-party.category,category:"
msgid "Category"
-msgstr "ÐаÑегоÑии"
+msgstr "ÐаÑегоÑиÑ"
msgctxt "field:party.party-party.category,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "ÐаÑа ÑозданиÑ"
msgctxt "field:party.party-party.category,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано полÑзоваÑелем"
msgctxt "field:party.party-party.category,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.party-party.category,party:"
msgid "Party"
@@ -382,15 +384,15 @@ msgstr "Ðаименование"
msgctxt "field:party.party-party.category,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "ÐаÑа изменениÑ"
msgctxt "field:party.party-party.category,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Ðзменено полÑзоваÑелем"
msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
-msgstr ""
+msgstr "ÐнаÑение ÑÑого Ð¿Ð¾Ð»Ñ Ð·Ð°Ð´Ð°ÐµÑ ÑзÑк по ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð½Ð¾Ð²ÑÑ
конÑÑагенÑов"
msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
@@ -404,14 +406,13 @@ msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
msgstr "ÐдÑеÑа"
-#, fuzzy
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
+msgstr "ÐаÑегоÑии"
msgctxt "model:ir.action,name:act_category_tree"
msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
+msgstr "ÐаÑегоÑии"
msgctxt "model:ir.action,name:act_party_by_category"
msgid "Parties by Category"
@@ -419,7 +420,7 @@ msgstr "ÐонÑÑагенÑÑ Ð¿Ð¾ каÑегоÑиÑм"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+msgstr "ÐонÑигÑÑаÑÐ¸Ñ ÐºÐ¾Ð½ÑÑагенÑов"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
@@ -427,7 +428,7 @@ msgstr "ÐонÑÑагенÑÑ"
msgctxt "model:ir.action,name:report_label"
msgid "Labels"
-msgstr ""
+msgstr "ÐÑикеÑки"
msgctxt "model:ir.action,name:wizard_check_vies"
msgid "Check VIES"
@@ -445,27 +446,25 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
msgid "Addresses"
msgstr "ÐдÑеÑа"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_category_list"
msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
+msgstr "ÐаÑегоÑии"
msgctxt "model:ir.ui.menu,name:menu_category_tree"
msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
+msgstr "ÐаÑегоÑии в виде деÑева"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "ÐонÑигÑÑаÑиÑ"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
-msgstr "ÐÑганизаÑии"
+msgstr "ÐонÑÑагенÑÑ"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
-msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+msgstr "ÐонÑигÑÑаÑÐ¸Ñ ÐºÐ¾Ð½ÑÑагенÑов"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
@@ -477,23 +476,20 @@ msgstr "ÐдÑеÑ"
msgctxt "model:party.category,name:"
msgid "Category"
-msgstr "ÐаÑегоÑии"
+msgstr "ÐаÑегоÑиÑ"
-#, fuzzy
msgctxt "model:party.check_vies.no_result,name:"
msgid "Check VIES"
msgstr "ÐÑовеÑиÑÑ VIES"
-#, fuzzy
msgctxt "model:party.check_vies.result,name:"
msgid "Check VIES"
msgstr "ÐÑовеÑиÑÑ VIES"
msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
-msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+msgstr "ÐонÑигÑÑаÑÐ¸Ñ ÐºÐ¾Ð½ÑÑагенÑов"
-#, fuzzy
msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "ÐонÑакÑнÑй ÑпоÑоб"
@@ -520,11 +516,11 @@ msgstr "ФакÑ"
msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
-msgstr ""
+msgstr "IRC"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
-msgstr ""
+msgstr "ÐжаббеÑ"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
@@ -540,11 +536,11 @@ msgstr "ТелеÑон"
msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
-msgstr ""
+msgstr "SIP"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
-msgstr ""
+msgstr "Skype"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
@@ -554,37 +550,29 @@ msgctxt "view:party.address:"
msgid "Addresses"
msgstr "ÐдÑеÑа"
-msgctxt "view:party.address:"
-msgid "Job Function"
-msgstr "ÐолжноÑÑÑ"
-
-msgctxt "view:party.address:"
-msgid "Notes"
-msgstr "ÐомменÑаÑии"
-
msgctxt "view:party.category:"
msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
+msgstr "ÐаÑегоÑии"
msgctxt "view:party.category:"
msgid "Category"
-msgstr "ÐаÑегоÑии"
+msgstr "ÐаÑегоÑиÑ"
msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr ""
+msgstr "ÐнÑоÑмаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑлÑжба VAT"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr ""
+msgstr "ÐеобÑ
одима акÑÑалÑÐ½Ð°Ñ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ \"vatnumber\"!"
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
-msgstr ""
+msgstr "РезÑлÑÑаÑÑ Ð¿Ð¾Ð¸Ñка в инÑоÑмаÑионной ÑлÑжбе VAT"
msgctxt "view:party.configuration:"
msgid "Party Configuration"
-msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+msgstr "ÐонÑигÑÑаÑÐ¸Ñ ÐºÐ¾Ð½ÑÑагенÑов"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
@@ -592,49 +580,17 @@ msgstr "ÐонÑакÑнÑй ÑпоÑоб"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
-msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
-
-msgctxt "view:party.party:"
-msgid "Account in Bank"
-msgstr "СÑÐµÑ Ð² банке"
+msgstr "ÐонÑакÑнÑе ÑпоÑобÑ"
msgctxt "view:party.party:"
msgid "Accounting"
msgstr "РегиÑÑÑаÑионнÑе даннÑе"
msgctxt "view:party.party:"
-msgid "Accounts in Banks"
-msgstr "СÑеÑа в банкаÑ
"
-
-msgctxt "view:party.party:"
-msgid "Addresses"
-msgstr "ÐдÑеÑа"
-
-msgctxt "view:party.party:"
-msgid "Categories"
-msgstr "ÐаÑегоÑиÑ"
-
-msgctxt "view:party.party:"
-msgid "Contact Mechanisms"
-msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
-
-msgctxt "view:party.party:"
-msgid "Contacts"
-msgstr "ÐонÑакÑнÑе лиÑа"
-
-msgctxt "view:party.party:"
-msgid "Document"
-msgstr "ÐокÑменÑ"
-
-msgctxt "view:party.party:"
msgid "General"
msgstr "ÐÑновной"
msgctxt "view:party.party:"
-msgid "Legal Document"
-msgstr "РегиÑÑÑаÑионнÑй докÑменÑ"
-
-msgctxt "view:party.party:"
msgid "Parties"
msgstr "ÐонÑÑагенÑÑ"
@@ -646,12 +602,10 @@ msgctxt "view:party.party:"
msgid "VAT"
msgstr "ÐÐÐ"
-#, fuzzy
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
-msgstr "Ðа"
+msgstr "Ðк"
-#, fuzzy
msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
-msgstr "Ðа"
+msgstr "Ðк"
diff --git a/party.py b/party.py
index 1694c99..b2ee7ac 100644
--- a/party.py
+++ b/party.py
@@ -34,8 +34,8 @@ class Party(ModelSQL, ModelView):
name = fields.Char('Name', required=True, select=True,
states=STATES, depends=DEPENDS)
code = fields.Char('Code', required=True, select=True,
- order_field="%(table)s.code_length %(order)s, " \
- "%(table)s.code %(order)s",
+ order_field=("%(table)s.code_length %(order)s, "
+ "%(table)s.code %(order)s"),
states={
'readonly': Eval('code_readonly', True),
},
@@ -77,14 +77,12 @@ class Party(ModelSQL, ModelView):
super(Party, cls).__setup__()
cls._sql_constraints = [
('code_uniq', 'UNIQUE(code)',
- 'The code of the party must be unique!')
- ]
- cls._constraints += [
- ('check_vat', 'invalid_vat'),
+ 'The code of the party must be unique.')
]
cls._error_messages.update({
- 'invalid_vat': 'Invalid VAT number!',
- })
+ 'invalid_vat': ('Invalid VAT number "%(vat)s" on party '
+ '"%(party)s".'),
+ })
cls._order.insert(0, ('name', 'ASC'))
@staticmethod
@@ -100,10 +98,9 @@ class Party(ModelSQL, ModelView):
if Transaction().user == 0:
return []
Address = Pool().get('party.address')
- fields_names = list(x for x in set(Address._fields.keys()
- + Address._inherit_fields.keys())
- if x not in ['id', 'create_uid', 'create_date',
- 'write_uid', 'write_date'])
+ 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)]
@staticmethod
@@ -152,17 +149,17 @@ class Party(ModelSQL, ModelView):
return ''
@classmethod
- def create(cls, values):
+ def create(cls, vlist):
Sequence = Pool().get('ir.sequence')
Configuration = Pool().get('party.configuration')
- values = values.copy()
- if not values.get('code'):
- config = Configuration(1)
- values['code'] = Sequence.get_id(config.party_sequence.id)
-
- values['code_length'] = len(values['code'])
- return super(Party, cls).create(values)
+ vlist = [x.copy() for x in vlist]
+ for values in vlist:
+ if not values.get('code'):
+ config = Configuration(1)
+ values['code'] = Sequence.get_id(config.party_sequence.id)
+ values['code_length'] = len(values['code'])
+ return super(Party, cls).create(vlist)
@classmethod
def write(cls, parties, vals):
@@ -179,17 +176,7 @@ class Party(ModelSQL, ModelView):
default = {}
default = default.copy()
default['code'] = None
- default['addresses'] = None
- new_parties = []
- for party in parties:
- new_party = super(Party, cls).copy(party, default=default)
- Address.copy([x.id for x in new_party.addresses],
- default={
- 'party': new_party.id,
- })
- new_parties.append(new_party)
-
- return new_parties
+ return super(Party, cls).copy(parties, default=default)
@classmethod
def search_rec_name(cls, name, clause):
@@ -219,6 +206,12 @@ class Party(ModelSQL, ModelView):
return address
return default_address
+ @classmethod
+ def validate(cls, parties):
+ super(Party, cls).validate(parties)
+ for party in parties:
+ party.check_vat()
+
def check_vat(self):
'''
Check the VAT number depending of the country.
@@ -231,7 +224,7 @@ class Party(ModelSQL, ModelView):
if not self.vat_country:
return True
- if not getattr(vatnumber, 'check_vat_' + \
+ if not getattr(vatnumber, 'check_vat_' +
self.vat_country.lower())(vat_number):
#Check if user doesn't have put country code in number
@@ -241,8 +234,10 @@ class Party(ModelSQL, ModelView):
'vat_number': vat_number,
})
else:
- return False
- return True
+ self.raise_user_error('invalid_vat', {
+ 'vat': vat_number,
+ 'party': self.rec_name,
+ })
class PartyCategory(ModelSQL):
@@ -292,9 +287,9 @@ class CheckVIES(Wizard):
def __setup__(cls):
super(CheckVIES, cls).__setup__()
cls._error_messages.update({
- 'vies_unavailable': 'The VIES service is unavailable, ' \
- 'try again later.',
- })
+ 'vies_unavailable': ('The VIES service is unavailable, '
+ 'try again later.'),
+ })
def transition_check(self):
Party = Pool().get('party.party')
diff --git a/party.xml b/party.xml
index 2cf86f0..006d73e 100644
--- a/party.xml
+++ b/party.xml
@@ -35,56 +35,12 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="party_view_tree">
<field name="model">party.party</field>
<field name="type">tree</field>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Parties">
- <field name="code"/>
- <field name="name"/>
- <field name="lang"/>
- <field name="vat_code"/>
- </tree>
- ]]>
- </field>
+ <field name="name">party_tree</field>
</record>
<record model="ir.ui.view" id="party_view_form">
<field name="model">party.party</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Party" col="6">
- <label name="name"/>
- <field name="name" xexpand="1"/>
- <label name="code"/>
- <field name="code"/>
- <group col="20" colspan="2" id="checkboxes">
- <label name="active"/>
- <field name="active" xexpand="0" width="25"/>
- <!-- Add here some checkboxes ! -->
- </group>
- <notebook colspan="6">
- <page string="General" id="general">
- <field name="addresses" mode="form,tree" colspan="4"
- view_ids="party.address_view_form,party.address_view_tree_sequence"/>
- <group col="2" colspan="4" id="lang">
- <label name="lang"/>
- <field name="lang" widget="selection" xexpand="0"/>
- </group>
- <field name="contact_mechanisms" colspan="2"
- view_ids="party.contact_mechanism_view_tree_sequence"/>
- <field name="categories" colspan="2"
- view_ids="party.category_view_list"/>
- </page>
- <page string="Accounting" id="accounting">
- <separator string="VAT" colspan="4" id="vat"/>
- <label name="vat_country"/>
- <field name="vat_country"/>
- <label name="vat_number"/>
- <field name="vat_number"/>
- </page>
- </notebook>
- </form>
- ]]>
- </field>
+ <field name="name">party_form</field>
</record>
<record model="ir.action.act_window" id="act_party_form">
<field name="name">Parties</field>
@@ -160,29 +116,13 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="check_vies_no_result">
<field name="model">party.check_vies.no_result</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="VAT Information Exchange System">
- <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
- <label string="You must have a recent version of "vatnumber" installed!"
- id="vatnumber"
- yalign="0.0" xalign="0.0" xexpand="1"/>
- </form>
- ]]>
- </field>
+ <field name="name">check_vies_no_result</field>
</record>
<record model="ir.ui.view" id="check_vies_result">
<field name="model">party.check_vies.result</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="VAT Information Exchange System Results" col="1">
- <field name="parties_succeed"/>
- <field name="parties_failed"/>
- </form>
- ]]>
- </field>
+ <field name="name">check_vies_result</field>
</record>
</data>
diff --git a/setup.py b/setup.py
index 6823c09..805e9cb 100644
--- a/setup.py
+++ b/setup.py
@@ -25,10 +25,10 @@ requires = []
for dep in info.get('depends', []):
if not re.match(r'(ir|res|webdav)(\W|$)', dep):
requires.append('trytond_%s >= %s.%s, < %s.%s' %
- (dep, major_version, minor_version, major_version,
- minor_version + 1))
+ (dep, major_version, minor_version, major_version,
+ minor_version + 1))
requires.append('trytond >= %s.%s, < %s.%s' %
- (major_version, minor_version, major_version, minor_version + 1))
+ (major_version, minor_version, major_version, minor_version + 1))
setup(name='trytond_party',
version=info.get('version', '0.0.1'),
@@ -36,16 +36,17 @@ setup(name='trytond_party',
long_description=read('README'),
author='Tryton',
url='http://www.tryton.org/',
- download_url="http://downloads.tryton.org/" + \
- info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
+ download_url=("http://downloads.tryton.org/" +
+ info.get('version', '0.0.1').rsplit('.', 1)[0] + '/'),
package_dir={'trytond.modules.party': '.'},
packages=[
'trytond.modules.party',
'trytond.modules.party.tests',
],
package_data={
- 'trytond.modules.party': info.get('xml', []) \
- + ['tryton.cfg', 'locale/*.po', '*.odt', 'icons/*.svg'],
+ 'trytond.modules.party': (info.get('xml', [])
+ + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt',
+ 'icons/*.svg']),
},
classifiers=[
'Development Status :: 5 - Production/Stable',
@@ -57,6 +58,7 @@ setup(name='trytond_party',
'Intended Audience :: Manufacturing',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Natural Language :: Bulgarian',
+ 'Natural Language :: Catalan',
'Natural Language :: Czech',
'Natural Language :: Dutch',
'Natural Language :: English',
diff --git a/tests/test_party.py b/tests/test_party.py
index 87adf7f..2ac5e86 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -44,9 +44,9 @@ class PartyTestCase(unittest.TestCase):
'''
with Transaction().start(DB_NAME, USER,
context=CONTEXT) as transaction:
- category1 = self.category.create({
- 'name': 'Category 1',
- })
+ category1, = self.category.create([{
+ 'name': 'Category 1',
+ }])
self.assert_(category1.id)
transaction.cursor.commit()
@@ -59,10 +59,10 @@ class PartyTestCase(unittest.TestCase):
('name', '=', 'Category 1'),
], limit=1)
- category2 = self.category.create({
- 'name': 'Category 2',
- 'parent': category1.id,
- })
+ category2, = self.category.create([{
+ 'name': 'Category 2',
+ 'parent': category1.id,
+ }])
self.assert_(category2.id)
self.assertRaises(Exception, self.category.write,
@@ -76,9 +76,9 @@ class PartyTestCase(unittest.TestCase):
'''
with Transaction().start(DB_NAME, USER,
context=CONTEXT) as transaction:
- party1 = self.party.create({
- 'name': 'Party 1',
- })
+ party1, = self.party.create([{
+ 'name': 'Party 1',
+ }])
self.assert_(party1.id)
transaction.cursor.commit()
@@ -91,9 +91,9 @@ class PartyTestCase(unittest.TestCase):
code = party1.code
- party2 = self.party.create({
- 'name': 'Party 2',
- })
+ party2, = self.party.create([{
+ 'name': 'Party 2',
+ }])
self.assertRaises(Exception, self.party.write,
[party2], {
@@ -107,11 +107,11 @@ class PartyTestCase(unittest.TestCase):
with Transaction().start(DB_NAME, USER, context=CONTEXT):
party1, = self.party.search([], limit=1)
- address = self.address.create({
- 'party': party1.id,
- 'street': 'St sample, 15',
- 'city': 'City',
- })
+ address, = self.address.create([{
+ 'party': party1.id,
+ 'street': 'St sample, 15',
+ 'city': 'City',
+ }])
self.assert_(address.id)
diff --git a/tryton.cfg b/tryton.cfg
index 0732da8..1546871 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.6.0
+version=2.8.0
depends:
country
ir
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 1045038..dbe05e2 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond-party
-Version: 2.6.0
+Version: 2.8.0
Summary: Tryton module with parties and addresses
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.6/
+Download-URL: http://downloads.tryton.org/2.8/
Description: trytond_party
=============
@@ -53,6 +53,7 @@ Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Catalan
Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 5723344..bceb65a 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -38,4 +38,18 @@ trytond_party.egg-info/dependency_links.txt
trytond_party.egg-info/entry_points.txt
trytond_party.egg-info/not-zip-safe
trytond_party.egg-info/requires.txt
-trytond_party.egg-info/top_level.txt
\ No newline at end of file
+trytond_party.egg-info/top_level.txt
+view/address_form.xml
+view/address_tree.xml
+view/address_tree_sequence.xml
+view/category_form.xml
+view/category_list.xml
+view/category_tree.xml
+view/check_vies_no_result.xml
+view/check_vies_result.xml
+view/configuration_form.xml
+view/contact_mechanism_form.xml
+view/contact_mechanism_tree.xml
+view/contact_mechanism_tree_sequence.xml
+view/party_form.xml
+view/party_tree.xml
\ No newline at end of file
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 9c72731..3a53a8a 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 2.6, < 2.7
-trytond >= 2.6, < 2.7
+trytond_country >= 2.8, < 2.9
+trytond >= 2.8, < 2.9
[VAT]
vatnumber
\ No newline at end of file
diff --git a/view/address_form.xml b/view/address_form.xml
new file mode 100644
index 0000000..4ccecca
--- /dev/null
+++ b/view/address_form.xml
@@ -0,0 +1,30 @@
+<?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">
+ <label name="party"/>
+ <field name="party" colspan="5"/>
+ <label name="name"/>
+ <field name="name"/>
+ <group colspan="2" col="20" id="checkboxes">
+ <label name="active"/>
+ <field name="active"
+ xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ </group>
+ <newline/>
+ <label name="street"/>
+ <field name="street"/>
+ <label name="streetbis"/>
+ <field name="streetbis"/>
+ <newline/>
+ <label name="zip"/>
+ <field name="zip"/>
+ <label name="city"/>
+ <field name="city"/>
+ <newline/>
+ <label name="country"/>
+ <field name="country" widget="selection"/>
+ <label name="subdivision"/>
+ <field name="subdivision" widget="selection"/>
+</form>
diff --git a/view/address_tree.xml b/view/address_tree.xml
new file mode 100644
index 0000000..3560ca9
--- /dev/null
+++ b/view/address_tree.xml
@@ -0,0 +1,14 @@
+<?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">
+ <field name="party"/>
+ <field name="name"/>
+ <field name="street"/>
+ <field name="streetbis"/>
+ <field name="zip"/>
+ <field name="city"/>
+ <field name="country"/>
+ <field name="subdivision"/>
+ <field name="active"/>
+</tree>
diff --git a/view/address_tree_sequence.xml b/view/address_tree_sequence.xml
new file mode 100644
index 0000000..4b6d64a
--- /dev/null
+++ b/view/address_tree_sequence.xml
@@ -0,0 +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. -->
+<tree string="Addresses" sequence="sequence">
+ <field name="name"/>
+ <field name="street"/>
+ <field name="streetbis"/>
+ <field name="zip"/>
+ <field name="city"/>
+ <field name="country"/>
+ <field name="subdivision" expand="1"/>
+</tree>
diff --git a/view/category_form.xml b/view/category_form.xml
new file mode 100644
index 0000000..776f950
--- /dev/null
+++ b/view/category_form.xml
@@ -0,0 +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="Category">
+ <label name="name"/>
+ <field name="name"/>
+ <label name="active"/>
+ <field name="active"/>
+ <label name="parent"/>
+ <field name="parent"/>
+</form>
diff --git a/view/category_list.xml b/view/category_list.xml
new file mode 100644
index 0000000..2d10151
--- /dev/null
+++ b/view/category_list.xml
@@ -0,0 +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">
+ <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
new file mode 100644
index 0000000..0a12511
--- /dev/null
+++ b/view/category_tree.xml
@@ -0,0 +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="Categories" keyword_open="1">
+ <field name="name" expand="1"/>
+ <field name="parent" tree_invisible="1"/>
+ <field name="childs" tree_invisible="1"/>
+ <field name="active" tree_invisible="1"/>
+</tree>
diff --git a/view/check_vies_no_result.xml b/view/check_vies_no_result.xml
new file mode 100644
index 0000000..d8dae8e
--- /dev/null
+++ b/view/check_vies_no_result.xml
@@ -0,0 +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. -->
+<form string="VAT Information Exchange System">
+ <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+ <label string="You must have a recent version of "vatnumber" installed!"
+ id="vatnumber"
+ yalign="0.0" xalign="0.0" xexpand="1"/>
+</form>
+
diff --git a/view/check_vies_result.xml b/view/check_vies_result.xml
new file mode 100644
index 0000000..f8a6bbb
--- /dev/null
+++ b/view/check_vies_result.xml
@@ -0,0 +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">
+ <field name="parties_succeed"/>
+ <field name="parties_failed"/>
+</form>
diff --git a/view/configuration_form.xml b/view/configuration_form.xml
new file mode 100644
index 0000000..60ad602
--- /dev/null
+++ b/view/configuration_form.xml
@@ -0,0 +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. -->
+<form string="Party Configuration">
+ <label name="party_sequence"/>
+ <field name="party_sequence"/>
+ <label name="party_lang" />
+ <field name="party_lang" widget="selection" />
+</form>
diff --git a/view/contact_mechanism_form.xml b/view/contact_mechanism_form.xml
new file mode 100644
index 0000000..0b3f9ba
--- /dev/null
+++ b/view/contact_mechanism_form.xml
@@ -0,0 +1,29 @@
+<?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">
+ <label name="party"/>
+ <field name="party" colspan="5"/>
+ <label name="type"/>
+ <field name="type"/>
+ <group col="2" colspan="2" id="value">
+ <label name="other_value"/>
+ <field name="other_value"/>
+ <label name="website"/>
+ <field name="website" widget="url"/>
+ <label name="email"/>
+ <field name="email" widget="email"/>
+ <label name="skype"/>
+ <field name="skype" widget="callto"/>
+ <label name="sip"/>
+ <field name="sip" widget="sip"/>
+ </group>
+ <group col="20" colspan="2" id="checkboxes">
+ <label name="active"/>
+ <field name="active"
+ xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ </group>
+ <separator name="comment" colspan="6"/>
+ <field name="comment" colspan="6"/>
+</form>
diff --git a/view/contact_mechanism_tree.xml b/view/contact_mechanism_tree.xml
new file mode 100644
index 0000000..90d396b
--- /dev/null
+++ b/view/contact_mechanism_tree.xml
@@ -0,0 +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="Contact Mechanisms">
+ <field name="party"/>
+ <field name="type"/>
+ <field name="value"/>
+</tree>
diff --git a/view/contact_mechanism_tree_sequence.xml b/view/contact_mechanism_tree_sequence.xml
new file mode 100644
index 0000000..2cc33f3
--- /dev/null
+++ b/view/contact_mechanism_tree_sequence.xml
@@ -0,0 +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="Contact Mechanisms" sequence="sequence"
+ editable="bottom">
+ <field name="type"/>
+ <field name="value" expand="1"/>
+ <field name="url" widget="url"/>
+</tree>
diff --git a/view/party_form.xml b/view/party_form.xml
new file mode 100644
index 0000000..deef4d6
--- /dev/null
+++ b/view/party_form.xml
@@ -0,0 +1,36 @@
+<?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">
+ <label name="name"/>
+ <field name="name" xexpand="1"/>
+ <label name="code"/>
+ <field name="code"/>
+ <group col="20" colspan="2" id="checkboxes">
+ <label name="active"/>
+ <field name="active" xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ </group>
+ <notebook colspan="6">
+ <page string="General" id="general">
+ <field name="addresses" mode="form,tree" colspan="4"
+ view_ids="party.address_view_form,party.address_view_tree_sequence"/>
+ <group col="2" colspan="4" id="lang">
+ <label name="lang"/>
+ <field name="lang" widget="selection" xexpand="0"/>
+ </group>
+ <field name="contact_mechanisms" colspan="2"
+ view_ids="party.contact_mechanism_view_tree_sequence"/>
+ <field name="categories" colspan="2"
+ view_ids="party.category_view_list"/>
+ </page>
+ <page string="Accounting" id="accounting">
+ <separator string="VAT" colspan="4" id="vat"/>
+ <label name="vat_country"/>
+ <field name="vat_country" xexpand="0"/>
+ <label name="vat_number"/>
+ <field name="vat_number"/>
+ </page>
+ </notebook>
+</form>
+
diff --git a/view/party_tree.xml b/view/party_tree.xml
new file mode 100644
index 0000000..44a5674
--- /dev/null
+++ b/view/party_tree.xml
@@ -0,0 +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">
+ <field name="code"/>
+ <field name="name"/>
+ <field name="lang"/>
+ <field name="vat_code"/>
+ <field name="active" tree_invisible="1"/>
+</tree>
commit 51497c1347fbb1091190389817ce4bfcfe4edb4a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Oct 23 19:53:36 2012 +0200
Adding upstream version 2.6.0.
diff --git a/CHANGELOG b/CHANGELOG
index d26d157..23170cf 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.0 - 2012-10-22
+* Bug fixes (see mercurial logs for details)
+
Version 2.4.0 - 2012-04-24
* Bug fixes (see mercurial logs for details)
* Allow to have no Party Sequence
diff --git a/MANIFEST.in b/MANIFEST.in
index 44a0685..e4632a1 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -4,6 +4,7 @@ include TODO
include COPYRIGHT
include CHANGELOG
include LICENSE
+include tryton.cfg
include *.xml
include *.odt
include locale/*.po
diff --git a/PKG-INFO b/PKG-INFO
index 736842f..48774d1 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,13 +1,48 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 2.4.0
-Summary: Define parties, addresses and co.
+Version: 2.6.0
+Summary: Tryton module with parties and addresses
Home-page: http://www.tryton.org/
-Author: B2CK
-Author-email: info at b2ck.com
+Author: Tryton
+Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.4/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.6/
+Description: trytond_party
+ =============
+
+ The party module of the Tryton application platform.
+
+ Installing
+ ----------
+
+ See INSTALL
+
+ Support
+ -------
+
+ If you encounter any problems with Tryton, please don't hesitate to ask
+ questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+ http://bugs.tryton.org/
+ http://groups.tryton.org/
+ http://wiki.tryton.org/
+ irc://irc.freenode.net/tryton
+
+ License
+ -------
+
+ See LICENSE
+
+ Copyright
+ ---------
+
+ See COPYRIGHT
+
+
+ For more information please visit the Tryton web site:
+
+ http://www.tryton.org/
+
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
diff --git a/README b/README
index 2e6a715..1b63d8f 100644
--- a/README
+++ b/README
@@ -2,7 +2,6 @@ trytond_party
=============
The party module of the Tryton application platform.
-See __tryton__.py
Installing
----------
diff --git a/__init__.py b/__init__.py
index af5a98e..5f25c2a 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,8 +1,25 @@
#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 trytond.pool import Pool
from .category import *
from .party import *
from .address import *
from .contact_mechanism import *
from .configuration import *
+
+
+def register():
+ Pool.register(
+ Category,
+ Party,
+ PartyCategory,
+ CheckVIESResult,
+ CheckVIESNoResult,
+ Address,
+ ContactMechanism,
+ Configuration,
+ module='party', type_='model')
+ Pool.register(
+ CheckVIES,
+ module='party', type_='wizard')
diff --git a/__tryton__.py b/__tryton__.py
deleted file mode 100644
index b5066e0..0000000
--- a/__tryton__.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# -*- coding: utf-8 -*-
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
-{
- 'name': 'Party',
- 'name_bg_BG': 'ÐаÑÑнÑоÑ',
- 'name_ca_ES': 'Tercers',
- 'name_de_DE': 'Parteien',
- 'name_es_AR': 'Entidades',
- 'name_es_CO': 'Terceros',
- 'name_es_ES': 'Terceros',
- 'name_fr_FR': 'Tiers',
- 'name_nl_NL': 'Relaties',
- 'name_ru_RU': 'ÐонÑÑагенÑÑ',
- 'version': '2.4.0',
- 'author': 'B2CK',
- 'email': 'info at b2ck.com',
- 'website': 'http://www.tryton.org/',
- 'description': 'Define parties, addresses and co.',
- 'description_bg_BG': 'Ðадаване на паÑÑнÑоÑи, адÑеÑи и Ñн.',
- 'description_ca_ES': 'Defineix tercers, adreces, etc.',
- 'description_de_DE': 'Ermöglicht die Erstellung von Parteien, Adressen, etc.',
- 'description_es_AR': 'Define entidades, direcciones, etc.',
- 'description_es_CO': 'Definición de terceros, direcciones, etc.',
- 'description_es_ES': 'Define terceros, direcciones, etc.',
- 'description_fr_FR': 'Définit des tiers, des adresses, etc.',
- 'description_nl_NL': 'Definieert relaties, adressen en bedrijven.',
- 'description_ru_RU': 'ÐпÑеделение конÑÑагенÑов, адÑеÑов и Ñп.',
- 'depends': [
- 'ir',
- 'res',
- 'country',
- ],
- 'xml': [
- 'party.xml',
- 'category.xml',
- 'address.xml',
- 'contact_mechanism.xml',
- 'configuration.xml',
- ],
- 'translation': [
- '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_ES.po',
- 'locale/fr_FR.po',
- 'locale/nl_NL.po',
- 'locale/ru_RU.po',
- ],
-}
diff --git a/address.py b/address.py
index 9d0d050..3017b89 100644
--- a/address.py
+++ b/address.py
@@ -3,7 +3,10 @@
'Address'
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import Eval, If
-from trytond.pool import Pool
+from trytond.transaction import Transaction
+from trytond.backend import TableHandler
+
+__all__ = ['Address']
STATES = {
'readonly': ~Eval('active'),
@@ -13,10 +16,9 @@ DEPENDS = ['active']
class Address(ModelSQL, ModelView):
"Address"
- _name = 'party.address'
- _description = __doc__
+ __name__ = 'party.address'
party = fields.Many2One('party.party', 'Party', required=True,
- ondelete='CASCADE', select=True, states={
+ ondelete='CASCADE', select=True, states={
'readonly': If(~Eval('active'), True, Eval('id', 0) > 0),
},
depends=['active', 'id'])
@@ -31,93 +33,92 @@ class Address(ModelSQL, ModelView):
'Subdivision', domain=[('country', '=', Eval('country'))],
states=STATES, depends=['active', 'country'])
active = fields.Boolean('Active')
- sequence = fields.Integer("Sequence", required=True)
+ sequence = fields.Integer("Sequence",
+ order_field='(%(table)s.sequence IS NULL) %(order)s, '
+ '%(table)s.sequence %(order)s')
full_address = fields.Function(fields.Text('Full Address'),
'get_full_address')
- def __init__(self):
- super(Address, self).__init__()
- self._order.insert(0, ('party', 'ASC'))
- self._order.insert(1, ('sequence', 'ASC'))
- self._error_messages.update({
+ @classmethod
+ 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 an address!',
})
- def default_active(self):
+ @classmethod
+ def __register__(cls, module_name):
+ cursor = Transaction().cursor
+ table = TableHandler(cursor, cls, module_name)
+
+ super(Address, cls).__register__(module_name)
+
+ # Migration from 2.4: drop required on sequence
+ table.not_null_action('sequence', action='remove')
+
+ @staticmethod
+ def default_active():
return True
- def get_full_address(self, ids, name):
- if not ids:
- return {}
- res = {}
- for address in self.browse(ids):
- res[address.id] = ''
- if address.name:
- res[address.id] += address.name
- if address.street:
- if res[address.id]:
- res[address.id] += '\n'
- res[address.id] += address.street
- if address.streetbis:
- if res[address.id]:
- res[address.id] += '\n'
- res[address.id] += address.streetbis
- if address.zip or address.city:
- if res[address.id]:
- res[address.id] += '\n'
- if address.zip:
- res[address.id] += address.zip
- if address.city:
- if res[address.id][-1:] != '\n':
- res[address.id] += ' '
- res[address.id] += address.city
- if address.country or address.subdivision:
- if res[address.id]:
- res[address.id] += '\n'
- if address.subdivision:
- res[address.id] += address.subdivision.name
- if address.country:
- if res[address.id][-1:] != '\n':
- res[address.id] += ' '
- res[address.id] += address.country.name
- return res
+ 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.country or self.subdivision:
+ if full_address:
+ full_address += '\n'
+ if self.subdivision:
+ full_address += self.subdivision.name
+ if self.country:
+ if full_address[-1:] != '\n':
+ full_address += ' '
+ full_address += self.country.name
+ return full_address
- def get_rec_name(self, ids, name):
- if not ids:
- return {}
- res = {}
- for address in self.browse(ids):
- res[address.id] = ", ".join(x for x in [address.name,
- address.party.rec_name, address.zip, address.city] if x)
- return res
+ def get_rec_name(self, name):
+ return ", ".join(x for x in [self.name,
+ self.party.rec_name, self.zip, self.city] if x)
- def search_rec_name(self, name, clause):
- ids = self.search(['OR',
- ('zip',) + clause[1:],
- ('city',) + clause[1:],
- ('name',) + clause[1:],
- ], order=[])
- if ids:
- return [('id', 'in', ids)]
+ @classmethod
+ def search_rec_name(cls, name, clause):
+ addresses = cls.search(['OR',
+ ('zip',) + clause[1:],
+ ('city',) + clause[1:],
+ ('name',) + clause[1:],
+ ], order=[])
+ if addresses:
+ return [('id', 'in', [address.id for address in addresses])]
return [('party',) + clause[1:]]
- def write(self, ids, vals):
+ @classmethod
+ def write(cls, addresses, vals):
if 'party' in vals:
- if isinstance(ids, (int, long)):
- ids = [ids]
- for address in self.browse(ids):
+ for address in addresses:
if address.party.id != vals['party']:
- self.raise_user_error('write_party')
- return super(Address, self).write(ids, vals)
-
- def on_change_country(self, vals):
- subdivision_obj = Pool().get('country.subdivision')
- result = dict((k, vals.get(k))
- for k in ('country', 'subdivision'))
- if vals['subdivision']:
- subdivision = subdivision_obj.browse(vals['subdivision'])
- if subdivision.country.id != vals['country']:
- result['subdivision'] = None
- return result
+ cls.raise_user_error('write_party')
+ super(Address, cls).write(addresses, vals)
-Address()
+ def on_change_country(self):
+ if (self.subdivision
+ and self.subdivision.country != self.country):
+ return {'subdivision': None}
+ return {}
diff --git a/category.py b/category.py
index dacca41..8ec6fe5 100644
--- a/category.py
+++ b/category.py
@@ -3,6 +3,8 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import Eval
+__all__ = ['Category']
+
STATES = {
'readonly': ~Eval('active'),
}
@@ -13,8 +15,7 @@ SEPARATOR = ' / '
class Category(ModelSQL, ModelView):
"Category"
- _name = "party.category"
- _description = __doc__
+ __name__ = 'party.category'
name = fields.Char('Name', required=True, states=STATES, translate=True,
depends=DEPENDS)
parent = fields.Many2One('party.category', 'Parent',
@@ -23,48 +24,39 @@ class Category(ModelSQL, ModelView):
'Children', states=STATES, depends=DEPENDS)
active = fields.Boolean('Active')
- def __init__(self):
- super(Category, self).__init__()
- self._sql_constraints = [
+ @classmethod
+ def __setup__(cls):
+ super(Category, cls).__setup__()
+ cls._sql_constraints = [
('name_parent_uniq', 'UNIQUE(name, parent)',
'The name of a party category must be unique by parent!'),
]
- self._constraints += [
+ cls._constraints += [
('check_recursion', 'recursive_categories'),
('check_name', 'wrong_name'),
]
- self._error_messages.update({
+ cls._error_messages.update({
'recursive_categories': 'You can not create recursive categories!',
'wrong_name': 'You can not use "%s" in name field!' % SEPARATOR,
})
- self._order.insert(1, ('name', 'ASC'))
+ cls._order.insert(1, ('name', 'ASC'))
- def default_active(self):
+ @staticmethod
+ def default_active():
return True
- def check_name(self, ids):
- for category in self.browse(ids):
- if SEPARATOR in category.name:
- return False
+ def check_name(self):
+ if SEPARATOR in self.name:
+ return False
return True
- def get_rec_name(self, ids, name):
- if not ids:
- return {}
- res = {}
-
- def _name(category):
- if category.id in res:
- return res[category.id]
- elif category.parent:
- return _name(category.parent) + SEPARATOR + category.name
- else:
- return category.name
- for category in self.browse(ids):
- res[category.id] = _name(category)
- return res
+ def get_rec_name(self, name):
+ if self.parent:
+ return self.parent.get_rec_name(name) + SEPARATOR + self.name
+ return self.name
- def search_rec_name(self, name, clause):
+ @classmethod
+ def search_rec_name(cls, name, clause):
if isinstance(clause[2], basestring):
values = clause[2].split(SEPARATOR)
values.reverse()
@@ -73,9 +65,7 @@ class Category(ModelSQL, ModelView):
for name in values:
domain.append((field, clause[1], name))
field = 'parent.' + field
- ids = self.search(domain, order=[])
- return [('id', 'in', ids)]
+ categories = cls.search(domain, order=[])
+ return [('id', 'in', [category.id for category in categories])]
#TODO Handle list
return [('name',) + tuple(clause[1:])]
-
-Category()
diff --git a/configuration.py b/configuration.py
index 4266280..50b7a4a 100644
--- a/configuration.py
+++ b/configuration.py
@@ -2,11 +2,12 @@
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, ModelSingleton, fields
+__all__ = ['Configuration']
+
class Configuration(ModelSingleton, ModelSQL, ModelView):
'Party Configuration'
- _name = 'party.configuration'
- _description = __doc__
+ __name__ = 'party.configuration'
party_sequence = fields.Property(fields.Many2One('ir.sequence',
'Party Sequence', domain=[
@@ -15,5 +16,3 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
party_lang = fields.Property(fields.Many2One("ir.lang", 'Party Language',
help=('The value set on this field will preset the language on new '
'parties')))
-
-Configuration()
diff --git a/contact_mechanism.py b/contact_mechanism.py
index cadee56..6dff452 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -2,6 +2,10 @@
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import Eval
+from trytond.transaction import Transaction
+from trytond.backend import TableHandler
+
+__all__ = ['ContactMechanism']
STATES = {
'readonly': ~Eval('active'),
@@ -24,8 +28,7 @@ _TYPES = [
class ContactMechanism(ModelSQL, ModelView):
"Contact Mechanism"
- _name = "party.contact_mechanism"
- _description = __doc__
+ __name__ = 'party.contact_mechanism'
_rec_name = 'value'
type = fields.Selection(_TYPES, 'Type', required=True, states=STATES,
@@ -36,7 +39,9 @@ class ContactMechanism(ModelSQL, ModelView):
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', required=True)
+ sequence = fields.Integer('Sequence',
+ order_field='(%(table)s.sequence IS NULL) %(order)s, '
+ '%(table)s.sequence %(order)s')
email = fields.Function(fields.Char('E-Mail', states={
'invisible': Eval('type') != 'email',
'required': Eval('type') == 'email',
@@ -68,32 +73,42 @@ class ContactMechanism(ModelSQL, ModelView):
}, on_change=['other_value'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
- def __init__(self):
- super(ContactMechanism, self).__init__()
- self._order.insert(0, ('party', 'ASC'))
- self._order.insert(1, ('sequence', 'ASC'))
- self._error_messages.update({
+ @classmethod
+ 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 ' \
'a contact mechanism!',
})
- def default_type(self):
+ @classmethod
+ def __register__(cls, module_name):
+ cursor = Transaction().cursor
+ table = TableHandler(cursor, cls, module_name)
+
+ super(ContactMechanism, cls).__register__(module_name)
+
+ # Migration from 2.4: drop required on sequence
+ table.not_null_action('sequence', action='remove')
+
+ @staticmethod
+ def default_type():
return 'phone'
- def default_active(self):
+ @staticmethod
+ def default_active():
return True
- def get_value(self, ids, names):
- res = {}
- for name in names:
- res[name] = {}
- for mechanism in self.browse(ids):
- for name in names:
- res[name][mechanism.id] = mechanism.value
- return res
-
- def set_value(self, ids, name, value):
- self.write(ids, {
+ @classmethod
+ def get_value(cls, mechanisms, names):
+ return dict((name, dict((m.id, m.value) for m in mechanisms))
+ for name in names)
+
+ @classmethod
+ def set_value(cls, mechanisms, name, value):
+ cls.write(mechanisms, {
'value': value,
})
@@ -105,33 +120,30 @@ class ContactMechanism(ModelSQL, ModelView):
'skype': value,
'sip': value,
'other_value': value,
- }
+ }
- def on_change_value(self, vals):
- return self._change_value(vals.get('value'))
+ def on_change_value(self):
+ return self._change_value(self.value)
- def on_change_website(self, vals):
- return self._change_value(vals.get('website'))
+ def on_change_website(self):
+ return self._change_value(self.website)
- def on_change_email(self, vals):
- return self._change_value(vals.get('email'))
+ def on_change_email(self):
+ return self._change_value(self.email)
- def on_change_skype(self, vals):
- return self._change_value(vals.get('skype'))
+ def on_change_skype(self):
+ return self._change_value(self.skype)
- def on_change_sip(self, vals):
- return self._change_value(vals.get('sip'))
+ def on_change_sip(self):
+ return self._change_value(self.sip)
- def on_change_other_value(self, vals):
- return self._change_value(vals.get('other_value'))
+ def on_change_other_value(self):
+ return self._change_value(self.other_value)
- def write(self, ids, vals):
+ @classmethod
+ def write(cls, mechanisms, vals):
if 'party' in vals:
- if isinstance(ids, (int, long)):
- ids = [ids]
- for mechanism in self.browse(ids):
+ for mechanism in mechanisms:
if mechanism.party.id != vals['party']:
- self.raise_user_error('write_party')
- return super(ContactMechanism, self).write(ids, vals)
-
-ContactMechanism()
+ cls.raise_user_error('write_party')
+ super(ContactMechanism, cls).write(mechanisms, vals)
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 7f703ef..0abeacb 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -108,7 +108,7 @@ msgstr "ÐкÑивен"
msgctxt "field:party.category,childs:"
msgid "Children"
-msgstr "ÐеÑа"
+msgstr "ÐаÑледниÑи"
msgctxt "field:party.category,create_date:"
msgid "Create Date"
@@ -280,7 +280,7 @@ msgstr "ÐÑлжина на кода"
msgctxt "field:party.party,code_readonly:"
msgid "Code Readonly"
-msgstr ""
+msgstr "Ðод (Ñамо за ÑеÑене)"
msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 80a9c34..83e9170 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -4,19 +4,19 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
-msgstr "No pot modificar el tercer d'una adreça"
+msgstr "No pot modificar el tercer d'una adreça."
msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
-msgstr ""
+msgstr "No pot usar \"/\" en el camp nomeni."
msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
-msgstr "No pot crear categories recursives"
+msgstr "No pot crear categories recursives."
msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
-msgstr ""
+msgstr "No pot usar \"/\" en el camp nomeni."
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
@@ -24,11 +24,11 @@ msgstr "El servei VIES no està disponible, intenti-ho de nou més tard"
msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
-msgstr "No pot modificar el tercer d'un contacte"
+msgstr "No pot modificar el tercer d'un contacte."
msgctxt "error:party.party:"
msgid "Invalid VAT number!"
-msgstr "El NIF no és và lid"
+msgstr "El CIF/NIF no és và lid"
msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
@@ -48,20 +48,19 @@ msgstr "PaÃs"
msgctxt "field:party.address,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:party.address,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:party.address,full_address:"
msgid "Full Address"
-msgstr ""
+msgstr "Adreça completa"
msgctxt "field:party.address,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.address,name:"
msgid "Name"
@@ -93,11 +92,11 @@ msgstr "Subdivisió"
msgctxt "field:party.address,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:party.address,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "field:party.address,zip:"
msgid "Zip"
@@ -113,16 +112,15 @@ msgstr "Fills"
msgctxt "field:party.category,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:party.category,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:party.category,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.category,name:"
msgid "Name"
@@ -138,62 +136,59 @@ msgstr "Nom"
msgctxt "field:party.category,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:party.category,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "field:party.check_vies.no_result,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.check_vies.result,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr ""
+msgstr "Tercer erroni"
msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr ""
+msgstr "Tercer correcte"
msgctxt "field:party.configuration,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:party.configuration,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:party.configuration,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
-#, fuzzy
msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Idioma del tercer"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr ""
+msgstr "Seqüència tercer"
-#, fuzzy
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
-msgstr "Nom del camp"
+msgstr "Nom"
msgctxt "field:party.configuration,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:party.configuration,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
@@ -205,12 +200,11 @@ msgstr "Comentari"
msgctxt "field:party.contact_mechanism,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:party.contact_mechanism,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
@@ -218,7 +212,7 @@ msgstr "Correu electrònic"
msgctxt "field:party.contact_mechanism,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
@@ -258,11 +252,11 @@ msgstr "Lloc web"
msgctxt "field:party.contact_mechanism,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:party.contact_mechanism,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "field:party.party,active:"
msgid "Active"
@@ -286,7 +280,7 @@ msgstr "DÃgits del codi"
msgctxt "field:party.party,code_readonly:"
msgid "Code Readonly"
-msgstr ""
+msgstr "Codi només lectura"
msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
@@ -294,12 +288,11 @@ msgstr "Mitjans de contacte"
msgctxt "field:party.party,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:party.party,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:party.party,email:"
msgid "E-Mail"
@@ -311,11 +304,11 @@ msgstr "Fax"
msgctxt "field:party.party,full_name:"
msgid "Full Name"
-msgstr ""
+msgstr "Nom complet"
msgctxt "field:party.party,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.party,lang:"
msgid "Language"
@@ -339,7 +332,7 @@ msgstr "Nom"
msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
-msgstr "NIF"
+msgstr "CIF/NIF"
msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
@@ -347,7 +340,7 @@ msgstr "PaÃs del NIF"
msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
-msgstr "NIF"
+msgstr "CIF/NIF"
msgctxt "field:party.party,website:"
msgid "Website"
@@ -355,11 +348,11 @@ msgstr "Lloc web"
msgctxt "field:party.party,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:party.party,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "field:party.party-party.category,category:"
msgid "Category"
@@ -367,16 +360,15 @@ msgstr "Categoria"
msgctxt "field:party.party-party.category,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:party.party-party.category,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:party.party-party.category,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.party-party.category,party:"
msgid "Party"
@@ -388,15 +380,16 @@ msgstr "Nom"
msgctxt "field:party.party-party.category,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:party.party-party.category,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
+"El valor d'aquest camp serà el valor per defecte de l'idioma dels tercers."
msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
@@ -411,7 +404,6 @@ msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
msgstr "Adreces"
-#, fuzzy
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
msgstr "Categories"
@@ -426,7 +418,7 @@ msgstr "Tercers per categoria"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuració de tercers"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
@@ -452,7 +444,6 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
msgid "Addresses"
msgstr "Adreces"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_category_list"
msgid "Categories"
msgstr "Categories"
@@ -465,14 +456,13 @@ msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuració"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
-msgstr "Gestió de tercers"
+msgstr "Tercers"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
-msgstr ""
+msgstr "Tercers"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
@@ -486,19 +476,17 @@ msgctxt "model:party.category,name:"
msgid "Category"
msgstr "Categoria"
-#, fuzzy
msgctxt "model:party.check_vies.no_result,name:"
msgid "Check VIES"
-msgstr "Comprovar VIES"
+msgstr "Comprova VIES"
-#, fuzzy
msgctxt "model:party.check_vies.result,name:"
msgid "Check VIES"
-msgstr "Comprovar VIES"
+msgstr "Comprova VIES"
msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuració de tercers"
msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
@@ -570,19 +558,19 @@ msgstr "Categoria"
msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr ""
+msgstr "Sistema d'intercanvi d'informació CIF/NIF"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr ""
+msgstr "Ha de tenir instal·lada una versió recent de \"vatnumber\"."
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
-msgstr ""
+msgstr "Resultat del sistema d'intercanvi d'informació CIF/NIF"
msgctxt "view:party.configuration:"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuració de tercers"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
@@ -626,18 +614,16 @@ msgstr "Tercer"
msgctxt "view:party.party:"
msgid "VAT"
-msgstr "NIF"
+msgstr "CIF/NIF"
msgctxt "view:party.party:"
msgid "_General"
msgstr "_General"
-#, fuzzy
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
-msgstr "Acceptar"
+msgstr "Accepta"
-#, fuzzy
msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
-msgstr "Acceptar"
+msgstr "Accepta"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 0ff4618..ee63f1f 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -100,7 +100,7 @@ msgstr "Usuario modificación"
msgctxt "field:party.address,zip:"
msgid "Zip"
-msgstr "Código postal"
+msgstr "Código Postal"
msgctxt "field:party.category,active:"
msgid "Active"
@@ -284,7 +284,7 @@ msgstr "Código de sólo lectura"
msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
-msgstr "Médios de contacto"
+msgstr "Medios de contacto"
msgctxt "field:party.party,create_date:"
msgid "Create Date"
@@ -394,12 +394,12 @@ msgstr ""
msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr ""
-"Al especificar el paÃs del NIF se habilitará la verificación de dicho "
+"Al especificar el paÃs del CUIT se habilitará la verificación de dicho "
"número."
msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
-msgstr "Número de identificación fiscal"
+msgstr "Número de Identificación Fiscal"
msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
@@ -491,7 +491,7 @@ msgstr "Configuración de Entidades"
msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
-msgstr "Médio de contacto"
+msgstr "Medio de contacto"
msgctxt "model:party.party,name:"
msgid "Party"
@@ -563,7 +563,7 @@ msgstr "CUIT Sistema de Intercambio de Información"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "¡Debe tener una versión reciente de \"vatnumber\" instalada!"
+msgstr "¡Debe tener una versión reciente de «vatnumber» instalada!"
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
@@ -575,11 +575,11 @@ msgstr "Configuración de Entidades"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
-msgstr "Médio de contacto"
+msgstr "Medio de contacto"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
-msgstr "Médios de contacto"
+msgstr "Medios de contacto"
msgctxt "view:party.party:"
msgid "Account"
@@ -599,7 +599,7 @@ msgstr "CategorÃas"
msgctxt "view:party.party:"
msgid "Contact Mechanisms"
-msgstr "Médios de contacto"
+msgstr "Medios de contacto"
msgctxt "view:party.party:"
msgid "General"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index e5023a3..9e82271 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -4,35 +4,35 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
-msgstr "No puede modificar el tercero de una dirección!"
+msgstr "¡No puede modificar el tercero de una dirección!"
msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
-msgstr ""
+msgstr "¡El nombre de una categorÃa de tercero debe ser único por cada padre!"
msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
-msgstr "No puede crear categorÃas recursivas!"
+msgstr "¡No puede crear categorÃas recursivas!"
msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
-msgstr ""
+msgstr "¡No puede usar \" /\" en el campo nombre!"
msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
-msgstr "El servicio VIES no está disponible, intente más tarde."
+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 a contact mechanism!"
-msgstr "¡No puede modificar un tercero de un mecanismo de contacto!"
+msgstr "¡No puede modificar el tercero de un medio de contacto!"
msgctxt "error:party.party:"
msgid "Invalid VAT number!"
-msgstr "¡Número inválido!"
+msgstr "¡El NIT no es válido!"
msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
-msgstr ""
+msgstr "¡El código del tercero debe ser único!"
msgctxt "field:party.address,active:"
msgid "Active"
@@ -48,24 +48,23 @@ msgstr "PaÃs"
msgctxt "field:party.address,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:party.address,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:party.address,full_address:"
msgid "Full Address"
-msgstr ""
+msgstr "Dirección Completa"
msgctxt "field:party.address,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.address,name:"
msgid "Name"
-msgstr "Nombre de Contacto"
+msgstr "Contacto"
msgctxt "field:party.address,party:"
msgid "Party"
@@ -73,7 +72,7 @@ msgstr "Tercero"
msgctxt "field:party.address,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Contacto"
msgctxt "field:party.address,sequence:"
msgid "Sequence"
@@ -93,11 +92,11 @@ msgstr "Subdivisión"
msgctxt "field:party.address,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:party.address,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "field:party.address,zip:"
msgid "Zip"
@@ -109,20 +108,19 @@ msgstr "Activo"
msgctxt "field:party.category,childs:"
msgid "Children"
-msgstr "Hij at s"
+msgstr "Hijos"
msgctxt "field:party.category,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:party.category,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:party.category,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.category,name:"
msgid "Name"
@@ -138,62 +136,59 @@ msgstr "Nombre"
msgctxt "field:party.category,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:party.category,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "field:party.check_vies.no_result,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.check_vies.result,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr ""
+msgstr "Terceros Fallidos"
msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr ""
+msgstr "Terceros Corrrectos"
msgctxt "field:party.configuration,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:party.configuration,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:party.configuration,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
-#, fuzzy
msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Idioma del Tercero"
msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr ""
+msgstr "Secuencia de Terceros"
-#, fuzzy
msgctxt "field:party.configuration,rec_name:"
msgid "Name"
-msgstr "Nombre de Contacto"
+msgstr "Nombre"
msgctxt "field:party.configuration,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:party.configuration,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
@@ -205,12 +200,11 @@ msgstr "Comentario"
msgctxt "field:party.contact_mechanism,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:party.contact_mechanism,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
@@ -218,7 +212,7 @@ msgstr "Correo electrónico"
msgctxt "field:party.contact_mechanism,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
@@ -258,11 +252,11 @@ msgstr "Sitio Web"
msgctxt "field:party.contact_mechanism,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:party.contact_mechanism,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "field:party.party,active:"
msgid "Active"
@@ -282,24 +276,23 @@ msgstr "Código"
msgctxt "field:party.party,code_length:"
msgid "Code Length"
-msgstr "Longitud del Código"
+msgstr "DÃgitos del Código"
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"
-msgstr "Mecanismos de contacto"
+msgstr "Medios de Contacto"
msgctxt "field:party.party,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:party.party,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:party.party,email:"
msgid "E-Mail"
@@ -311,11 +304,11 @@ msgstr "Fax"
msgctxt "field:party.party,full_name:"
msgid "Full Name"
-msgstr ""
+msgstr "Nombre Completo"
msgctxt "field:party.party,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.party,lang:"
msgid "Language"
@@ -323,7 +316,7 @@ msgstr "Idioma"
msgctxt "field:party.party,mobile:"
msgid "Mobile"
-msgstr "Celular"
+msgstr "Móvil"
msgctxt "field:party.party,name:"
msgid "Name"
@@ -339,15 +332,15 @@ msgstr "Nombre"
msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
-msgstr "Código de IVA"
+msgstr "NIT"
msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
-msgstr "PaÃs"
+msgstr "PaÃs del NIT"
msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
-msgstr "Número"
+msgstr "NIT"
msgctxt "field:party.party,website:"
msgid "Website"
@@ -355,11 +348,11 @@ msgstr "Sitio Web"
msgctxt "field:party.party,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:party.party,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "field:party.party-party.category,category:"
msgid "Category"
@@ -367,16 +360,15 @@ msgstr "CategorÃa"
msgctxt "field:party.party-party.category,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:party.party-party.category,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:party.party-party.category,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:party.party-party.category,party:"
msgid "Party"
@@ -388,29 +380,31 @@ msgstr "Nombre"
msgctxt "field:party.party-party.category,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:party.party-party.category,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
+"El valor de este campo predeterminada el idioma de las nuevos terceros"
msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
-msgstr "Al especificar el paÃs se habilitará la verificación del NIT."
+msgstr ""
+"Al especificar el paÃs del NIT se habilitará la verificación de dicho "
+"número."
msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
-msgstr "Número de Impuesto de Valor Agregado"
+msgstr "Número de Identificación Tributaria"
msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
msgstr "Direcciones"
-#, fuzzy
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
msgstr "CategorÃas"
@@ -421,11 +415,11 @@ msgstr "CategorÃas"
msgctxt "model:ir.action,name:act_party_by_category"
msgid "Parties by Category"
-msgstr "Terceros por CategorÃa"
+msgstr "Terceros por categorÃa"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de Terceros"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
@@ -437,7 +431,7 @@ msgstr "Etiquetas"
msgctxt "model:ir.action,name:wizard_check_vies"
msgid "Check VIES"
-msgstr "Revisar VIES"
+msgstr "Comprobar VIES"
msgctxt "model:ir.sequence,name:sequence_party"
msgid "Party"
@@ -451,7 +445,6 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
msgid "Addresses"
msgstr "Direcciones"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_category_list"
msgid "Categories"
msgstr "CategorÃas"
@@ -464,14 +457,13 @@ msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuración"
-#, fuzzy
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 ""
+msgstr "Configuración de Terceros"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
@@ -485,23 +477,21 @@ msgctxt "model:party.category,name:"
msgid "Category"
msgstr "CategorÃa"
-#, fuzzy
msgctxt "model:party.check_vies.no_result,name:"
msgid "Check VIES"
-msgstr "Revisar VIES"
+msgstr "Comprobar VIES"
-#, fuzzy
msgctxt "model:party.check_vies.result,name:"
msgid "Check VIES"
-msgstr "Revisar VIES"
+msgstr "Comprobar VIES"
msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de Terceros"
msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
-msgstr "Mecanismo de contacto"
+msgstr "Medio de Contacto"
msgctxt "model:party.party,name:"
msgid "Party"
@@ -513,7 +503,7 @@ msgstr "Tercero - CategorÃa"
msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
-msgstr "Terceros"
+msgstr "Administración de Terceros"
msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
@@ -525,7 +515,7 @@ msgstr "Fax"
msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
-msgstr "Chat"
+msgstr "IRC"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
@@ -533,7 +523,7 @@ msgstr "Jabber"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
-msgstr "Celular"
+msgstr "Móvil"
msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
@@ -569,27 +559,27 @@ msgstr "CategorÃa"
msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr ""
+msgstr "NIT Sistema de Intercambio de Información"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr ""
+msgstr "¡Debe tener una versión reciente de \"vatnumber\" instalada!"
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
-msgstr ""
+msgstr "NIT Resultados del Sistema de Intercambio de Información"
msgctxt "view:party.configuration:"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de Terceros"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
-msgstr "Mecanismo de contacto"
+msgstr "Medio de Contacto"
msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
-msgstr "Mecanismos de contacto"
+msgstr "Medios de Contacto"
msgctxt "view:party.party:"
msgid "Account"
@@ -608,12 +598,8 @@ msgid "Categories"
msgstr "CategorÃas"
msgctxt "view:party.party:"
-msgid "Contact Mechanism"
-msgstr "Mecanismo de contacto"
-
-msgctxt "view:party.party:"
msgid "Contact Mechanisms"
-msgstr "Mecanismos de contacto"
+msgstr "Medios de Contacto"
msgctxt "view:party.party:"
msgid "General"
@@ -629,18 +615,16 @@ msgstr "Tercero"
msgctxt "view:party.party:"
msgid "VAT"
-msgstr "IVA"
+msgstr "NIT"
msgctxt "view:party.party:"
msgid "_General"
msgstr "_General"
-#, fuzzy
msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Aceptar"
-#, fuzzy
msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "Aceptar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 5acb724..ffa036f 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -28,7 +28,7 @@ msgstr "No puede modificar el tercero de un medio de contacto."
msgctxt "error:party.party:"
msgid "Invalid VAT number!"
-msgstr "El NIF no es correcto."
+msgstr "El CIF/NIF no es correcto."
msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
@@ -332,15 +332,15 @@ msgstr "Nombre"
msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
-msgstr "NIF"
+msgstr "CIF/NIF"
msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
-msgstr "PaÃs del NIF"
+msgstr "PaÃs del CIF/NIF"
msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
-msgstr "NIF"
+msgstr "CIF/NIF"
msgctxt "field:party.party,website:"
msgid "Website"
@@ -459,7 +459,7 @@ msgstr "Configuración"
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
-msgstr "Tercero"
+msgstr "Terceros"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
@@ -559,7 +559,7 @@ msgstr "CategorÃa"
msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr "Sistema de intercambio de información VAT"
+msgstr "Sistema de intercambio de información CIF/NIF"
msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
@@ -567,7 +567,7 @@ msgstr "Debe tener instalada una versión reciente de \"vatnumber\"."
msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
-msgstr "Resultado del sistema de intercambio de información VAT"
+msgstr "Resultado del sistema de intercambio de información CIF/NIF"
msgctxt "view:party.configuration:"
msgid "Party Configuration"
@@ -615,7 +615,7 @@ msgstr "Tercero"
msgctxt "view:party.party:"
msgid "VAT"
-msgstr "NIF"
+msgstr "CIF/NIF"
msgctxt "view:party.party:"
msgid "_General"
diff --git a/party.py b/party.py
index f5166bb..1694c99 100644
--- a/party.py
+++ b/party.py
@@ -7,6 +7,9 @@ from trytond.pyson import Bool, Eval
from trytond.transaction import Transaction
from trytond.pool import Pool
+__all__ = ['Party', 'PartyCategory', 'CheckVIESNoResult', 'CheckVIESResult',
+ 'CheckVIES']
+
HAS_VATNUMBER = False
VAT_COUNTRIES = [('', '')]
try:
@@ -26,8 +29,7 @@ DEPENDS = ['active']
class Party(ModelSQL, ModelView):
"Party"
- _description = __doc__
- _name = "party.party"
+ __name__ = 'party.party'
name = fields.Char('Name', required=True, select=True,
states=STATES, depends=DEPENDS)
@@ -70,60 +72,64 @@ class Party(ModelSQL, ModelView):
email = fields.Function(fields.Char('E-Mail'), 'get_mechanism')
website = fields.Function(fields.Char('Website'), 'get_mechanism')
- def __init__(self):
- super(Party, self).__init__()
- self._sql_constraints = [
+ @classmethod
+ def __setup__(cls):
+ super(Party, cls).__setup__()
+ cls._sql_constraints = [
('code_uniq', 'UNIQUE(code)',
'The code of the party must be unique!')
]
- self._constraints += [
+ cls._constraints += [
('check_vat', 'invalid_vat'),
]
- self._error_messages.update({
+ cls._error_messages.update({
'invalid_vat': 'Invalid VAT number!',
})
- self._order.insert(0, ('name', 'ASC'))
+ cls._order.insert(0, ('name', 'ASC'))
- def default_active(self):
+ @staticmethod
+ def default_active():
return True
- def default_categories(self):
+ @staticmethod
+ def default_categories():
return Transaction().context.get('categories', [])
- def default_addresses(self):
- address_obj = Pool().get('party.address')
- fields_names = list(x for x in set(address_obj._columns.keys()
- + address_obj._inherit_fields.keys())
+ @staticmethod
+ def default_addresses():
+ if Transaction().user == 0:
+ return []
+ Address = Pool().get('party.address')
+ fields_names = list(x for x in set(Address._fields.keys()
+ + Address._inherit_fields.keys())
if x not in ['id', 'create_uid', 'create_date',
'write_uid', 'write_date'])
- return [address_obj.default_get(fields_names)]
-
- def default_lang(self):
- config_obj = Pool().get('party.configuration')
- config = config_obj.browse(1)
- return config.party_lang.id
-
- def default_code_readonly(self):
- config_obj = Pool().get('party.configuration')
- config = config_obj.browse(1)
+ return [Address.default_get(fields_names)]
+
+ @staticmethod
+ def default_lang():
+ Configuration = Pool().get('party.configuration')
+ config = Configuration(1)
+ if config.party_lang:
+ return config.party_lang.id
+
+ @staticmethod
+ def default_code_readonly():
+ Configuration = Pool().get('party.configuration')
+ config = Configuration(1)
return bool(config.party_sequence)
- def get_code_readonly(self, ids, name):
- return dict((x, True) for x in ids)
+ def get_code_readonly(self, name):
+ return True
- def on_change_with_vat_code(self, vals):
- return (vals.get('vat_country') or '') + (vals.get('vat_number') or '')
+ def on_change_with_vat_code(self):
+ return (self.vat_country or '') + (self.vat_number or '')
- def get_vat_code(self, ids, name):
- if not ids:
- return []
- res = {}
- for party in self.browse(ids):
- res[party.id] = ((party.vat_country or '')
- + (party.vat_number or ''))
- return res
+ def get_vat_code(self, name):
+ return (self.vat_country or '') + (self.vat_number or '')
- def search_vat_code(self, name, clause):
+ @classmethod
+ def search_vat_code(cls, name, clause):
res = []
value = clause[2]
for country, _ in VAT_COUNTRIES:
@@ -136,150 +142,127 @@ class Party(ModelSQL, ModelView):
res.append(('vat_number', clause[1], value))
return res
- def get_full_name(self, ids, name):
- if not ids:
- return []
- res = {}
- for party in self.browse(ids):
- res[party.id] = party.name
- return res
+ def get_full_name(self, name):
+ return self.name
- def get_mechanism(self, ids, name):
- if not ids:
- return []
- res = {}
- for party in self.browse(ids):
- res[party.id] = ''
- for mechanism in party.contact_mechanisms:
- if mechanism.type == name:
- res[party.id] = mechanism.value
- break
- return res
+ def get_mechanism(self, name):
+ for mechanism in self.contact_mechanisms:
+ if mechanism.type == name:
+ return mechanism.value
+ return ''
- def create(self, values):
- sequence_obj = Pool().get('ir.sequence')
- config_obj = Pool().get('party.configuration')
+ @classmethod
+ def create(cls, values):
+ Sequence = Pool().get('ir.sequence')
+ Configuration = Pool().get('party.configuration')
values = values.copy()
if not values.get('code'):
- config = config_obj.browse(1)
- values['code'] = sequence_obj.get_id(config.party_sequence.id)
+ config = Configuration(1)
+ values['code'] = Sequence.get_id(config.party_sequence.id)
values['code_length'] = len(values['code'])
- return super(Party, self).create(values)
+ return super(Party, cls).create(values)
- def write(self, ids, vals):
+ @classmethod
+ def write(cls, parties, vals):
if vals.get('code'):
vals = vals.copy()
vals['code_length'] = len(vals['code'])
- return super(Party, self).write(ids, vals)
-
- def copy(self, ids, default=None):
- address_obj = Pool().get('party.address')
+ super(Party, cls).write(parties, vals)
- int_id = False
- if isinstance(ids, (int, long)):
- int_id = True
- ids = [ids]
+ @classmethod
+ def copy(cls, parties, default=None):
+ Address = Pool().get('party.address')
if default is None:
default = {}
default = default.copy()
default['code'] = None
default['addresses'] = None
- new_ids = []
- for party in self.browse(ids):
- new_id = super(Party, self).copy(party.id, default=default)
- address_obj.copy([x.id for x in party.addresses],
+ new_parties = []
+ for party in parties:
+ new_party = super(Party, cls).copy(party, default=default)
+ Address.copy([x.id for x in new_party.addresses],
default={
- 'party': new_id,
+ 'party': new_party.id,
})
- new_ids.append(new_id)
+ new_parties.append(new_party)
+
+ return new_parties
- if int_id:
- return new_ids[0]
- return new_ids
+ @classmethod
+ def search_rec_name(cls, name, clause):
+ parties = cls.search([('code',) + tuple(clause[1:])], order=[])
+ if parties:
+ parties += cls.search([('name',) + tuple(clause[1:])], order=[])
- def search_rec_name(self, name, clause):
- ids = self.search([('code',) + clause[1:]], order=[])
- if ids:
- ids += self.search([('name',) + clause[1:]], order=[])
- return [('id', 'in', ids)]
- return [('name',) + clause[1:]]
+ return [('id', 'in', [party.id for party in parties])]
+ return [('name',) + tuple(clause[1:])]
- def address_get(self, party_id, type=None):
+ def address_get(self, type=None):
"""
- Try to find an address for the given type, if no type match
- the first address is return.
+ Try to find an address for the given type, if no type matches
+ the first address is returned.
"""
- address_obj = Pool().get("party.address")
- address_ids = address_obj.search(
- [("party", "=", party_id), ("active", "=", True)],
+ Address = Pool().get("party.address")
+ addresses = Address.search(
+ [("party", "=", self.id), ("active", "=", True)],
order=[('sequence', 'ASC'), ('id', 'ASC')])
- if not address_ids:
+ if not addresses:
return None
- default_address = address_ids[0]
+ default_address = addresses[0]
if not type:
return default_address
- for address in address_obj.browse(address_ids):
- if address[type]:
- return address.id
+ for address in addresses:
+ if getattr(address, type):
+ return address
return default_address
- def check_vat(self, ids):
+ def check_vat(self):
'''
Check the VAT number depending of the country.
http://sima-pc.com/nif.php
'''
if not HAS_VATNUMBER:
return True
- for party in self.browse(ids):
- vat_number = party.vat_number
-
- if not party.vat_country:
- continue
+ vat_number = self.vat_number
- if not getattr(vatnumber, 'check_vat_' + \
- party.vat_country.lower())(vat_number):
+ if not self.vat_country:
+ return True
- #Check if user doesn't have put country code in number
- if vat_number.startswith(party.vat_country):
- vat_number = vat_number[len(party.vat_country):]
- self.write(party.id, {
- 'vat_number': vat_number,
- })
- else:
- return False
+ if not getattr(vatnumber, 'check_vat_' + \
+ self.vat_country.lower())(vat_number):
+
+ #Check if user doesn't have put country code in number
+ if vat_number.startswith(self.vat_country):
+ vat_number = vat_number[len(self.vat_country):]
+ Party.write([self], {
+ 'vat_number': vat_number,
+ })
+ else:
+ return False
return True
-Party()
-
class PartyCategory(ModelSQL):
'Party - Category'
- _name = 'party.party-party.category'
+ __name__ = 'party.party-party.category'
_table = 'party_category_rel'
- _description = __doc__
party = fields.Many2One('party.party', 'Party', ondelete='CASCADE',
required=True, select=True)
category = fields.Many2One('party.category', 'Category',
ondelete='CASCADE', required=True, select=True)
-PartyCategory()
-
class CheckVIESNoResult(ModelView):
'Check VIES'
- _name = 'party.check_vies.no_result'
- _description = __doc__
-
-CheckVIESNoResult()
+ __name__ = 'party.check_vies.no_result'
class CheckVIESResult(ModelView):
'Check VIES'
- _name = 'party.check_vies.result'
- _description = __doc__
+ __name__ = 'party.check_vies.result'
parties_succeed = fields.Many2Many('party.party', None, None,
'Parties Succeed', readonly=True, states={
'invisible': ~Eval('parties_succeed'),
@@ -289,12 +272,10 @@ class CheckVIESResult(ModelView):
'invisible': ~Eval('parties_failed'),
})
-CheckVIESResult()
-
class CheckVIES(Wizard):
'Check VIES'
- _name = 'party.check_vies'
+ __name__ = 'party.check_vies'
start_state = 'check'
check = StateTransition()
@@ -307,22 +288,23 @@ class CheckVIES(Wizard):
Button('Ok', 'end', 'tryton-ok', True),
])
- def __init__(self):
- super(CheckVIES, self).__init__()
- self._error_messages.update({
+ @classmethod
+ def __setup__(cls):
+ super(CheckVIES, cls).__setup__()
+ cls._error_messages.update({
'vies_unavailable': 'The VIES service is unavailable, ' \
'try again later.',
})
- def transition_check(self, session):
- party_obj = Pool().get('party.party')
+ def transition_check(self):
+ Party = Pool().get('party.party')
if not HAS_VATNUMBER or not hasattr(vatnumber, 'check_vies'):
return 'no_result'
parties_succeed = []
parties_failed = []
- parties = party_obj.browse(Transaction().context.get('active_ids'))
+ parties = Party.browse(Transaction().context.get('active_ids'))
for party in parties:
if not party.vat_code:
continue
@@ -343,14 +325,12 @@ class CheckVIES(Wizard):
or e.faultstring.find('SERVER_BUSY'):
self.raise_user_error('vies_unavailable')
raise
- session.result.parties_succeed = parties_succeed
- session.result.parties_failed = parties_failed
+ self.result.parties_succeed = parties_succeed
+ self.result.parties_failed = parties_failed
return 'result'
- def default_result(self, session, fields):
+ def default_result(self, fields):
return {
- 'parties_succeed': [p.id for p in session.result.parties_succeed],
- 'parties_failed': [p.id for p in session.result.parties_failed],
+ 'parties_succeed': [p.id for p in self.result.parties_succeed],
+ 'parties_failed': [p.id for p in self.result.parties_failed],
}
-
-CheckVIES()
diff --git a/party.xml b/party.xml
index 24ecad4..2cf86f0 100644
--- a/party.xml
+++ b/party.xml
@@ -67,7 +67,7 @@ this repository contains the full copyright notices and license terms. -->
view_ids="party.address_view_form,party.address_view_tree_sequence"/>
<group col="2" colspan="4" id="lang">
<label name="lang"/>
- <field name="lang" widget="selection"/>
+ <field name="lang" widget="selection" xexpand="0"/>
</group>
<field name="contact_mechanisms" colspan="2"
view_ids="party.contact_mechanism_view_tree_sequence"/>
diff --git a/setup.py b/setup.py
index 648ecf8..6823c09 100644
--- a/setup.py
+++ b/setup.py
@@ -4,8 +4,19 @@
from setuptools import setup
import re
+import os
+import ConfigParser
-info = eval(open('__tryton__.py').read())
+
+def read(fname):
+ return open(os.path.join(os.path.dirname(__file__), fname)).read()
+
+config = ConfigParser.ConfigParser()
+config.readfp(open('tryton.cfg'))
+info = dict(config.items('tryton'))
+for key in ('depends', 'extras_depend', 'xml'):
+ if key in info:
+ info[key] = info[key].strip().splitlines()
major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
major_version = int(major_version)
minor_version = int(minor_version)
@@ -21,22 +32,21 @@ requires.append('trytond >= %s.%s, < %s.%s' %
setup(name='trytond_party',
version=info.get('version', '0.0.1'),
- description=info.get('description', ''),
- author=info.get('author', ''),
- author_email=info.get('email', ''),
- url=info.get('website', ''),
+ description='Tryton module with parties and addresses',
+ long_description=read('README'),
+ author='Tryton',
+ url='http://www.tryton.org/',
download_url="http://downloads.tryton.org/" + \
- info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
+ info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
package_dir={'trytond.modules.party': '.'},
packages=[
'trytond.modules.party',
'trytond.modules.party.tests',
- ],
+ ],
package_data={
'trytond.modules.party': info.get('xml', []) \
- + info.get('translation', []) \
- + ['*.odt', 'icons/*.svg'],
- },
+ + ['tryton.cfg', 'locale/*.po', '*.odt', 'icons/*.svg'],
+ },
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -58,12 +68,12 @@ setup(name='trytond_party',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Topic :: Office/Business',
- ],
+ ],
license='GPL-3',
install_requires=requires,
extras_require={
'VAT': ['vatnumber'],
- },
+ },
zip_safe=False,
entry_points="""
[trytond.modules]
@@ -71,4 +81,4 @@ setup(name='trytond_party',
""",
test_suite='tests',
test_loader='trytond.test_loader:Loader',
-)
+ )
diff --git a/tests/test_party.py b/tests/test_party.py
index 358ecdc..87adf7f 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -44,10 +44,10 @@ class PartyTestCase(unittest.TestCase):
'''
with Transaction().start(DB_NAME, USER,
context=CONTEXT) as transaction:
- category1_id = self.category.create({
+ category1 = self.category.create({
'name': 'Category 1',
})
- self.assert_(category1_id)
+ self.assert_(category1.id)
transaction.cursor.commit()
def test0020category_recursion(self):
@@ -55,20 +55,20 @@ class PartyTestCase(unittest.TestCase):
Test category recursion.
'''
with Transaction().start(DB_NAME, USER, context=CONTEXT):
- category1_id = self.category.search([
+ category1, = self.category.search([
('name', '=', 'Category 1'),
- ], limit=1)[0]
+ ], limit=1)
- category2_id = self.category.create({
+ category2 = self.category.create({
'name': 'Category 2',
- 'parent': category1_id,
+ 'parent': category1.id,
})
- self.assert_(category2_id)
+ self.assert_(category2.id)
- self.failUnlessRaises(Exception, self.category.write,
- category1_id, {
- 'parent': category2_id,
- })
+ self.assertRaises(Exception, self.category.write,
+ [category1], {
+ 'parent': category2.id,
+ })
def test0030party(self):
'''
@@ -76,10 +76,10 @@ class PartyTestCase(unittest.TestCase):
'''
with Transaction().start(DB_NAME, USER,
context=CONTEXT) as transaction:
- party1_id = self.party.create({
+ party1 = self.party.create({
'name': 'Party 1',
})
- self.assert_(party1_id)
+ self.assert_(party1.id)
transaction.cursor.commit()
def test0040party_code(self):
@@ -87,32 +87,32 @@ class PartyTestCase(unittest.TestCase):
Test party code constraint.
'''
with Transaction().start(DB_NAME, USER, context=CONTEXT):
- party1_id = self.party.search([], limit=1)[0]
+ party1, = self.party.search([], limit=1)
- code = self.party.read(party1_id, ['code'])['code']
+ code = party1.code
- party2_id = self.party.create({
+ party2 = self.party.create({
'name': 'Party 2',
})
- self.failUnlessRaises(Exception, self.party.write,
- party2_id, {
- 'code': code,
- })
+ self.assertRaises(Exception, self.party.write,
+ [party2], {
+ 'code': code,
+ })
def test0050address(self):
'''
Create address.
'''
with Transaction().start(DB_NAME, USER, context=CONTEXT):
- party1_id = self.party.search([], limit=1)[0]
+ party1, = self.party.search([], limit=1)
- self.address.create({
- 'party': party1_id,
+ address = self.address.create({
+ 'party': party1.id,
'street': 'St sample, 15',
'city': 'City',
})
- self.assert_(party1_id)
+ self.assert_(address.id)
def suite():
diff --git a/tryton.cfg b/tryton.cfg
new file mode 100644
index 0000000..0732da8
--- /dev/null
+++ b/tryton.cfg
@@ -0,0 +1,12 @@
+[tryton]
+version=2.6.0
+depends:
+ country
+ ir
+ res
+xml:
+ party.xml
+ category.xml
+ address.xml
+ contact_mechanism.xml
+ configuration.xml
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 50f41cd..1045038 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,13 +1,48 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 2.4.0
-Summary: Define parties, addresses and co.
+Version: 2.6.0
+Summary: Tryton module with parties and addresses
Home-page: http://www.tryton.org/
-Author: B2CK
-Author-email: info at b2ck.com
+Author: Tryton
+Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.4/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.6/
+Description: trytond_party
+ =============
+
+ The party module of the Tryton application platform.
+
+ Installing
+ ----------
+
+ See INSTALL
+
+ Support
+ -------
+
+ If you encounter any problems with Tryton, please don't hesitate to ask
+ questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+ http://bugs.tryton.org/
+ http://groups.tryton.org/
+ http://wiki.tryton.org/
+ irc://irc.freenode.net/tryton
+
+ License
+ -------
+
+ See LICENSE
+
+ Copyright
+ ---------
+
+ See COPYRIGHT
+
+
+ For more information please visit the Tryton web site:
+
+ http://www.tryton.org/
+
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 0a18132..5723344 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -11,8 +11,8 @@ contact_mechanism.xml
label.odt
party.xml
setup.py
+tryton.cfg
./__init__.py
-./__tryton__.py
./address.py
./category.py
./configuration.py
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index fd49155..9c72731 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 2.4, < 2.5
-trytond >= 2.4, < 2.5
+trytond_country >= 2.6, < 2.7
+trytond >= 2.6, < 2.7
[VAT]
vatnumber
\ No newline at end of file
commit 82e3e93c5c0d50526c5f0a47bcb28c5af7db0c9e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Apr 24 19:30:46 2012 +0200
Adding upstream version 2.4.0.
diff --git a/CHANGELOG b/CHANGELOG
index c200abf..d26d157 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
-Version 2.2.1 - 2011-12-26
+Version 2.4.0 - 2012-04-24
* Bug fixes (see mercurial logs for details)
+* Allow to have no Party Sequence
Version 2.2.0 - 2011-10-24
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index d4db09d..dfe7d1e 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2011 Cédric Krier.
-Copyright (C) 2008-2011 Bertrand Chenal.
-Copyright (C) 2008-2011 B2CK SPRL.
+Copyright (C) 2008-2012 Cédric Krier.
+Copyright (C) 2008-2012 Bertrand Chenal.
+Copyright (C) 2008-2012 B2CK SPRL.
Copyright (C) 2008-2011 Udo Spallek.
Copyright (C) 2008-2011 Korbinian Preisler.
Copyright (C) 2008-2011 virtual things.
diff --git a/INSTALL b/INSTALL
index 86ff4bd..cdfd97c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,7 @@ Installing trytond_party
Prerequisites
-------------
- * Python 2.5 or later (http://www.python.org/)
+ * Python 2.6 or later (http://www.python.org/)
* trytond (http://www.tryton.org/)
* trytond_country (http://www.tryton.org/)
* Optional: vatnumber (http://code.google.com/p/vatnumber/)
diff --git a/PKG-INFO b/PKG-INFO
index 949e835..736842f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
Name: trytond_party
-Version: 2.2.1
+Version: 2.4.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.2/
+Download-URL: http://downloads.tryton.org/2.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__init__.py b/__init__.py
index d36f1c0..af5a98e 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,8 +1,8 @@
#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 category import *
-from party import *
-from address import *
-from contact_mechanism import *
-from configuration import *
+from .category import *
+from .party import *
+from .address import *
+from .contact_mechanism import *
+from .configuration import *
diff --git a/__tryton__.py b/__tryton__.py
index 6e2fc81..b5066e0 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -2,32 +2,36 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
{
- 'name' : 'Party',
+ 'name': 'Party',
'name_bg_BG': 'ÐаÑÑнÑоÑ',
+ 'name_ca_ES': 'Tercers',
'name_de_DE': 'Parteien',
+ 'name_es_AR': 'Entidades',
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
'name_nl_NL': 'Relaties',
'name_ru_RU': 'ÐонÑÑагенÑÑ',
- 'version' : '2.2.1',
- 'author' : 'B2CK',
+ 'version': '2.4.0',
+ 'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
'description': 'Define parties, addresses and co.',
'description_bg_BG': 'Ðадаване на паÑÑнÑоÑи, адÑеÑи и Ñн.',
+ 'description_ca_ES': 'Defineix tercers, adreces, etc.',
'description_de_DE': 'Ermöglicht die Erstellung von Parteien, Adressen, etc.',
+ 'description_es_AR': 'Define entidades, direcciones, etc.',
'description_es_CO': 'Definición de terceros, direcciones, etc.',
- 'description_es_ES': 'Define terceros, direcciones, etc...',
+ 'description_es_ES': 'Define terceros, direcciones, etc.',
'description_fr_FR': 'Définit des tiers, des adresses, etc.',
'description_nl_NL': 'Definieert relaties, adressen en bedrijven.',
'description_ru_RU': 'ÐпÑеделение конÑÑагенÑов, адÑеÑов и Ñп.',
- 'depends' : [
+ 'depends': [
'ir',
'res',
'country',
],
- 'xml' : [
+ 'xml': [
'party.xml',
'category.xml',
'address.xml',
@@ -36,8 +40,10 @@
],
'translation': [
'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_ES.po',
'locale/fr_FR.po',
diff --git a/address.py b/address.py
index 1558f40..9d0d050 100644
--- a/address.py
+++ b/address.py
@@ -16,15 +16,14 @@ class Address(ModelSQL, ModelView):
_name = 'party.address'
_description = __doc__
party = fields.Many2One('party.party', 'Party', required=True,
- ondelete='CASCADE', select=1, states={
+ ondelete='CASCADE', select=True, states={
'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)
- zip = fields.Char('Zip', change_default=True,
- 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',
on_change=['country', 'subdivision'], states=STATES, depends=DEPENDS)
@@ -32,7 +31,7 @@ class Address(ModelSQL, ModelView):
'Subdivision', domain=[('country', '=', Eval('country'))],
states=STATES, depends=['active', 'country'])
active = fields.Boolean('Active')
- sequence = fields.Integer("Sequence")
+ sequence = fields.Integer("Sequence", required=True)
full_address = fields.Function(fields.Text('Full Address'),
'get_full_address')
@@ -113,12 +112,12 @@ class Address(ModelSQL, ModelView):
def on_change_country(self, vals):
subdivision_obj = Pool().get('country.subdivision')
- result = dict((k, vals.get(k, False))
+ result = dict((k, vals.get(k))
for k in ('country', 'subdivision'))
if vals['subdivision']:
subdivision = subdivision_obj.browse(vals['subdivision'])
if subdivision.country.id != vals['country']:
- result['subdivision'] = False
+ result['subdivision'] = None
return result
Address()
diff --git a/address.xml b/address.xml
index d0d0d6d..3848526 100644
--- a/address.xml
+++ b/address.xml
@@ -6,6 +6,7 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="address_view_tree">
<field name="model">party.address</field>
<field name="type">tree</field>
+ <field name="priority" eval="10"/>
<field name="arch" type="xml">
<![CDATA[
<tree string="Addresses">
@@ -22,6 +23,26 @@ this repository contains the full copyright notices and license terms. -->
]]>
</field>
</record>
+
+ <record model="ir.ui.view" id="address_view_tree_sequence">
+ <field name="model">party.address</field>
+ <field name="type">tree</field>
+ <field name="priority" eval="20"/>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Addresses" sequence="sequence">
+ <field name="name"/>
+ <field name="street"/>
+ <field name="streetbis"/>
+ <field name="zip"/>
+ <field name="city"/>
+ <field name="country"/>
+ <field name="subdivision" expand="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+
<record model="ir.ui.view" id="address_view_form">
<field name="model">party.address</field>
<field name="type">form</field>
diff --git a/category.py b/category.py
index 5db851b..dacca41 100644
--- a/category.py
+++ b/category.py
@@ -18,7 +18,7 @@ class Category(ModelSQL, ModelView):
name = fields.Char('Name', required=True, states=STATES, translate=True,
depends=DEPENDS)
parent = fields.Many2One('party.category', 'Parent',
- select=1, states=STATES, depends=DEPENDS)
+ select=True, states=STATES, depends=DEPENDS)
childs = fields.One2Many('party.category', 'parent',
'Children', states=STATES, depends=DEPENDS)
active = fields.Boolean('Active')
@@ -40,7 +40,7 @@ class Category(ModelSQL, ModelView):
self._order.insert(1, ('name', 'ASC'))
def default_active(self):
- return 1
+ return True
def check_name(self, ids):
for category in self.browse(ids):
@@ -52,6 +52,7 @@ class Category(ModelSQL, ModelView):
if not ids:
return {}
res = {}
+
def _name(category):
if category.id in res:
return res[category.id]
diff --git a/category.xml b/category.xml
index fe5e162..71e9f47 100644
--- a/category.xml
+++ b/category.xml
@@ -25,8 +25,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="field_childs">childs</field>
<field name="arch" type="xml">
<![CDATA[
- <tree string="Categories" fill="1" keyword_open="1">
- <field name="name"/>
+ <tree string="Categories" keyword_open="1">
+ <field name="name" expand="1"/>
<field name="parent" tree_invisible="1"/>
<field name="childs" tree_invisible="1"/>
</tree>
@@ -39,8 +39,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="priority" eval="10"/>
<field name="arch" type="xml">
<![CDATA[
- <tree string="Categories" fill="1">
- <field name="rec_name"/>
+ <tree string="Categories">
+ <field name="rec_name" expand="1"/>
</tree>
]]>
</field>
diff --git a/configuration.py b/configuration.py
index 349842e..4266280 100644
--- a/configuration.py
+++ b/configuration.py
@@ -11,7 +11,7 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
party_sequence = fields.Property(fields.Many2One('ir.sequence',
'Party Sequence', domain=[
('code', '=', 'party.party'),
- ], required=True))
+ ]))
party_lang = fields.Property(fields.Many2One("ir.lang", 'Party Language',
help=('The value set on this field will preset the language on new '
'parties')))
diff --git a/configuration.xml b/configuration.xml
index 06fb820..84e73cc 100644
--- a/configuration.xml
+++ b/configuration.xml
@@ -33,7 +33,6 @@ this repository contains the full copyright notices and license terms. -->
sequence="0" icon="tryton-list"/>
<record model="ir.property" id="property_party_sequence">
- <field name="name">party_sequence</field>
<field name="field"
search="[('model.model', '=', 'party.configuration'), ('name', '=', 'party_sequence')]"/>
<field name="value" eval="'ir.sequence,' + str(ref('sequence_party'))"/>
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 691457e..cadee56 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -30,13 +30,13 @@ class ContactMechanism(ModelSQL, ModelView):
type = fields.Selection(_TYPES, 'Type', required=True, states=STATES,
sort=False, depends=DEPENDS)
- value = fields.Char('Value', select=1, states=STATES, on_change=['value'],
- depends=DEPENDS)
+ value = fields.Char('Value', select=True, states=STATES,
+ on_change=['value'], depends=DEPENDS)
comment = fields.Text('Comment', states=STATES, depends=DEPENDS)
party = fields.Many2One('party.party', 'Party', required=True,
- ondelete='CASCADE', states=STATES, select=1, depends=DEPENDS)
- active = fields.Boolean('Active', select=1)
- sequence = fields.Integer('Sequence')
+ ondelete='CASCADE', states=STATES, select=True, depends=DEPENDS)
+ active = fields.Boolean('Active', select=True)
+ sequence = fields.Integer('Sequence', required=True)
email = fields.Function(fields.Char('E-Mail', states={
'invisible': Eval('type') != 'email',
'required': Eval('type') == 'email',
@@ -49,7 +49,7 @@ class ContactMechanism(ModelSQL, ModelView):
'readonly': ~Eval('active', True),
}, on_change=['website'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
- skype = fields.Function(fields.Char('Skype',states={
+ skype = fields.Function(fields.Char('Skype', states={
'invisible': Eval('type') != 'skype',
'required': Eval('type') == 'skype',
'readonly': ~Eval('active', True),
diff --git a/contact_mechanism.xml b/contact_mechanism.xml
index e36f43a..0ad8cb9 100644
--- a/contact_mechanism.xml
+++ b/contact_mechanism.xml
@@ -7,6 +7,7 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="contact_mechanism_view_tree">
<field name="model">party.contact_mechanism</field>
<field name="type">tree</field>
+ <field name="priority" eval="10"/>
<field name="arch" type="xml">
<![CDATA[
<tree string="Contact Mechanisms">
@@ -18,6 +19,21 @@ this repository contains the full copyright notices and license terms. -->
</field>
</record>
+ <record model="ir.ui.view" id="contact_mechanism_view_tree_sequence">
+ <field name="model">party.contact_mechanism</field>
+ <field name="type">tree</field>
+ <field name="priority" eval="20"/>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Contact Mechanisms" sequence="sequence">
+ <field name="type"/>
+ <field name="value"/>
+ <field name="comment" expand="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+
<record model="ir.ui.view" id="contact_mechanism_view_form">
<field name="model">party.contact_mechanism</field>
<field name="type">form</field>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 81826ec..7f703ef 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -2,267 +2,399 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr "Ðе може да пÑоменÑÑе паÑÑнÑоÑа за адÑеÑ!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr "ÐмеÑо на каÑегоÑиÑÑа на паÑÑнÑоÑа ÑÑÑбва да бÑде Ñникална по ÑодиÑел!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr "Ðе може да ÑÑздаваÑе взаимно вложени каÑегоÑии!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr "РимеÑо на полеÑо не може да има \" / \"!"
-msgctxt "error:party.check_vies:0"
+msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
msgstr "VIES ÑÑлÑгаÑа е недоÑÑÑпна, опиÑайÑе оÑново по-кÑÑно."
-msgctxt "error:party.contact_mechanism:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
msgstr "Ðе може да пÑоменÑÑе паÑÑнÑоÑа за наÑин на конÑакÑ!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr "Ðевалиден ÐÐС номеÑ!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr "Ðода на паÑÑнÑоÑа ÑÑÑбва да е Ñникален!"
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "ÐкÑивен"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "ÐÑад"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "ÐÑÑжава"
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr "СÑздадено на"
+
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr "СÑздадено оÑ"
+
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr "ÐÑлен адÑеÑ"
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "ÐаÑÑнÑоÑ"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "ÐоÑледоваÑелноÑÑ"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "УлиÑа"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "УлиÑа 2"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "ÐодÑазделение"
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr "ÐÑоменено на"
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr "ÐÑоменено оÑ"
+
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr "ÐоÑ. код"
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "ÐкÑивен"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "ÐеÑа"
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr "СÑздадено на"
+
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr "СÑздадено оÑ"
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "РодиÑел"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr "ÐÑоменено на"
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr "ÐÑоменено оÑ"
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
msgstr "ÐаÑÑнÑоÑа не е валиден"
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
msgstr "Ðалиден паÑÑнÑоÑ"
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr "СÑздадено на"
+
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr "СÑздадено оÑ"
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Ðзик на паÑÑнÑоÑ"
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr "ÐоÑледоваÑелноÑÑ Ð·Ð° паÑÑнÑоÑ"
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr "ÐÑоменено на"
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr "ÐÑоменено оÑ"
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "ÐкÑивен"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "ÐоменÑаÑ"
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr "СÑздадено на"
+
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr "СÑздадено оÑ"
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr "СÑойноÑÑ"
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "ÐаÑÑнÑоÑ"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "ÐоÑледоваÑелноÑÑ"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr "SIP"
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr "Skype"
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Ðид"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "СÑойноÑÑ"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "Website"
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr "ÐÑоменено на"
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr "ÐÑоменено оÑ"
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr "ÐкÑивен"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "ÐдÑеÑи"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "ÐаÑегоÑии"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Ðод"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "ÐÑлжина на кода"
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr "ÐаÑини на конÑакÑ"
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr "СÑздадено на"
+
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr "СÑздадено оÑ"
+
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "ФакÑ"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr "ÐÑлно име"
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "Ðзик"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "Ðобилен"
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "ТелеÑон"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "ÐÐС код"
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "ÐÐС дÑÑжава"
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "ÐÐС номеÑ"
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "Website"
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr "ÐÑоменено на"
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr "ÐÑоменено оÑ"
+
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr "ÐаÑегоÑиÑ"
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr "СÑздадено на"
+
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr "СÑздадено оÑ"
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr "ÐаÑÑнÑоÑ"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Ðме"
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr "ÐÑоменено на"
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr "ÐÑоменено оÑ"
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr "СÑойноÑÑÑа в Ñова поле Ñе Ñе използва за език пÑи нови паÑÑнÑоÑи."
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr "Ðказвайки дÑÑжава за ÐÐС Ñе позволи да Ñе пÑовеÑи ÐÐС номеÑа."
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr "ÐÐС номеÑ"
@@ -270,7 +402,6 @@ msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
msgstr "ÐдÑеÑи"
-#, fuzzy
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
msgstr "ÐаÑегоÑии"
@@ -311,7 +442,6 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
msgid "Addresses"
msgstr "ÐдÑеÑи"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_category_list"
msgid "Categories"
msgstr "ÐаÑегоÑии"
@@ -324,7 +454,6 @@ msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "ÐонÑигÑÑаÑиÑ"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
msgstr "УпÑавление на паÑÑнÑоÑ"
@@ -337,35 +466,35 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "ÐаÑÑнÑоÑи"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "ÐдÑеÑ"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "ÐаÑегоÑиÑ"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - пÑовеÑка"
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "ÐÑовека в VIES"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - без пÑовеÑка"
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "ÐÑовека в VIES"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr "ÐонÑигÑÑиÑане на паÑÑнÑоÑ"
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "ÐаÑин на конÑакÑ"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "ÐаÑÑнÑоÑ"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr "ÐаÑÑнÑÐ¾Ñ - ÐаÑегоÑиÑ"
@@ -373,126 +502,118 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr "УпÑавление на паÑÑнÑоÑ"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "ФакÑ"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr "IRC"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr "Jabber"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Ðобилен"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "ÐÑÑг"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "ТелеÑон"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr "Skype"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Website"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "ÐдÑеÑи"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "ÐаÑегоÑии"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr "ÐаÑегоÑиÑ"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
-msgstr "ÐаÑÑнÑоÑа не е валиден"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
-msgstr "Ðалиден паÑÑнÑоÑ"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "VAT Information Exchange System Results"
-msgstr "РезÑлÑаÑи Ð¾Ñ Ð¡Ð¸ÑÑема за обмен на инÑиоÑмаÑÐ¸Ñ Ð·Ð° ÐÐС"
-
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
msgstr "СиÑÑема за обмен на ÐÐС инÑоÑмаÑиÑ"
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
msgstr "ТÑÑбва да имаÑе инÑÑалиÑана поÑледнаÑа веÑÑÐ¸Ñ Ð½Ð° \"vatnumber\"!"
-msgctxt "view:party.configuration:0"
+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:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "ÐаÑин на конÑакÑ"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "ÐаÑини на конÑакÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "СÑеÑоводÑÑво"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "ÐдÑеÑи"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "ÐаÑегоÑии"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr "ÐаÑини на конÑакÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "ÐÑновен"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "ÐаÑÑнÑоÑи"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr "ÐаÑÑнÑоÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "ÐÐС"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "ÐобÑе"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "ÐобÑе"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
new file mode 100644
index 0000000..80a9c34
--- /dev/null
+++ b/locale/ca_ES.po
@@ -0,0 +1,643 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:"
+msgid "You can not modify the party of an address!"
+msgstr "No pot modificar el tercer d'una adreça"
+
+msgctxt "error:party.category:"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+
+msgctxt "error:party.category:"
+msgid "You can not create recursive categories!"
+msgstr "No pot crear categories recursives"
+
+msgctxt "error:party.category:"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:party.check_vies:"
+msgid "The VIES service is unavailable, try again later."
+msgstr "El servei VIES no està disponible, intenti-ho de nou més tard"
+
+msgctxt "error:party.contact_mechanism:"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "No pot modificar el tercer d'un contacte"
+
+msgctxt "error:party.party:"
+msgid "Invalid VAT number!"
+msgstr "El NIF no és và lid"
+
+msgctxt "error:party.party:"
+msgid "The code of the party must be unique!"
+msgstr "El codi del tercer ha de ser únic"
+
+msgctxt "field:party.address,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:party.address,city:"
+msgid "City"
+msgstr "Ciutat"
+
+msgctxt "field:party.address,country:"
+msgid "Country"
+msgstr "PaÃs"
+
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:party.address,full_address:"
+msgid "Full Address"
+msgstr ""
+
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address,name:"
+msgid "Name"
+msgstr "Contacte"
+
+msgctxt "field:party.address,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:party.address,rec_name:"
+msgid "Name"
+msgstr "Contacte"
+
+msgctxt "field:party.address,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+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 ""
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.address,zip:"
+msgid "Zip"
+msgstr "Codi postal"
+
+msgctxt "field:party.category,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:party.category,childs:"
+msgid "Children"
+msgstr "Fills"
+
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.category,name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.category,parent:"
+msgid "Parent"
+msgstr "Pare"
+
+msgctxt "field:party.category,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,parties_failed:"
+msgid "Parties Failed"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,parties_succeed:"
+msgid "Parties Succeed"
+msgstr ""
+
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.configuration,party_lang:"
+msgid "Party Language"
+msgstr "Idioma del tercer"
+
+msgctxt "field:party.configuration,party_sequence:"
+msgid "Party Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.configuration,rec_name:"
+msgid "Name"
+msgstr "Nom del camp"
+
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:party.contact_mechanism,comment:"
+msgid "Comment"
+msgstr "Comentari"
+
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:party.contact_mechanism,email:"
+msgid "E-Mail"
+msgstr "Correu electrònic"
+
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,other_value:"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:party.contact_mechanism,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:party.contact_mechanism,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.contact_mechanism,sequence:"
+msgid "Sequence"
+msgstr "Seqüència"
+
+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 "Tipus"
+
+msgctxt "field:party.contact_mechanism,value:"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:party.contact_mechanism,website:"
+msgid "Website"
+msgstr "Lloc web"
+
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party,active:"
+msgid "Active"
+msgstr "Actiu"
+
+msgctxt "field:party.party,addresses:"
+msgid "Addresses"
+msgstr "Adreces"
+
+msgctxt "field:party.party,categories:"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "field:party.party,code:"
+msgid "Code"
+msgstr "Codi"
+
+msgctxt "field:party.party,code_length:"
+msgid "Code Length"
+msgstr "DÃgits del codi"
+
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:"
+msgid "Contact Mechanisms"
+msgstr "Mitjans de contacte"
+
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:party.party,email:"
+msgid "E-Mail"
+msgstr "Correu electrònic"
+
+msgctxt "field:party.party,fax:"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "field:party.party,full_name:"
+msgid "Full Name"
+msgstr ""
+
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party,lang:"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:party.party,mobile:"
+msgid "Mobile"
+msgstr "Mòbil"
+
+msgctxt "field:party.party,name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.party,phone:"
+msgid "Phone"
+msgstr "Telèfon"
+
+msgctxt "field:party.party,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.party,vat_code:"
+msgid "VAT Code"
+msgstr "NIF"
+
+msgctxt "field:party.party,vat_country:"
+msgid "VAT Country"
+msgstr "PaÃs del NIF"
+
+msgctxt "field:party.party,vat_number:"
+msgid "VAT Number"
+msgstr "NIF"
+
+msgctxt "field:party.party,website:"
+msgid "Website"
+msgstr "Lloc web"
+
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,category:"
+msgid "Category"
+msgstr "Categoria"
+
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party-party.category,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:party.party-party.category,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "help:party.configuration,party_lang:"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+
+msgctxt "help:party.party,vat_country:"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr ""
+"En especificar el paÃs del NIF s'habilitarà la verificació del número."
+
+msgctxt "help:party.party,vat_number:"
+msgid "Value Added Tax number"
+msgstr "Número d'identificació fiscal"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "Adreces"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr "Tercers per categoria"
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr "Tercers"
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr "Etiquetes"
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr "Comprovar VIES"
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+msgstr "Adreces"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_category_list"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "model:ir.ui.menu,name:menu_category_tree"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr "Configuració"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr "Gestió de tercers"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "Tercers"
+
+msgctxt "model:party.address,name:"
+msgid "Address"
+msgstr "Adreça"
+
+msgctxt "model:party.category,name:"
+msgid "Category"
+msgstr "Categoria"
+
+#, fuzzy
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "Comprovar VIES"
+
+#, fuzzy
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "Comprovar VIES"
+
+msgctxt "model:party.configuration,name:"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:party.contact_mechanism,name:"
+msgid "Contact Mechanism"
+msgstr "Mitjà de contacte"
+
+msgctxt "model:party.party,name:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "model:party.party-party.category,name:"
+msgid "Party - Category"
+msgstr "Tercer - Categoria"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "Administració de tercers"
+
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "E-Mail"
+msgstr "Correu electrònic"
+
+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òbil"
+
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Other"
+msgstr "Un altre"
+
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Phone"
+msgstr "Telèfon"
+
+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 "Lloc Web"
+
+msgctxt "view:party.address:"
+msgid "Addresses"
+msgstr "Adreces"
+
+msgctxt "view:party.category:"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "view:party.category:"
+msgid "Category"
+msgstr "Categoria"
+
+msgctxt "view:party.check_vies.no_result:"
+msgid "VAT Information Exchange System"
+msgstr ""
+
+msgctxt "view:party.check_vies.no_result:"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+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 "Mitjà de contacte"
+
+msgctxt "view:party.contact_mechanism:"
+msgid "Contact Mechanisms"
+msgstr "Mitjà de contacte"
+
+msgctxt "view:party.party:"
+msgid "Account"
+msgstr "Compte"
+
+msgctxt "view:party.party:"
+msgid "Accounting"
+msgstr "Comptabilitat"
+
+msgctxt "view:party.party:"
+msgid "Addresses"
+msgstr "Adreces"
+
+msgctxt "view:party.party:"
+msgid "Categories"
+msgstr "Categories"
+
+msgctxt "view:party.party:"
+msgid "Contact Mechanisms"
+msgstr "Mitjans de contacte"
+
+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 "view:party.party:"
+msgid "VAT"
+msgstr "NIF"
+
+msgctxt "view:party.party:"
+msgid "_General"
+msgstr "_General"
+
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,no_result,end:"
+msgid "Ok"
+msgstr "Acceptar"
+
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "Ok"
+msgstr "Acceptar"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 1f484b6..41be949 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -2,267 +2,399 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr ""
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr ""
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr ""
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr ""
-msgctxt "error:party.check_vies:0"
+msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
msgstr ""
-msgctxt "error:party.contact_mechanism:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
msgstr ""
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr ""
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr ""
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr ""
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr ""
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr ""
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr ""
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr ""
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr ""
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr ""
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr ""
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr ""
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr ""
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr ""
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr ""
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr ""
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
msgstr ""
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
msgstr ""
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr ""
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr ""
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr ""
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr ""
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr ""
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr ""
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr ""
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr ""
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr ""
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr ""
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr ""
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr ""
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr ""
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr ""
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr ""
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr ""
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr ""
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr ""
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr ""
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr ""
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr ""
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr ""
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr ""
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr ""
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr ""
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr ""
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr ""
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr ""
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr ""
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr ""
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr ""
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr ""
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr ""
@@ -334,35 +466,35 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr ""
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr ""
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr ""
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
msgstr ""
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
msgstr ""
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr ""
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr ""
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr ""
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr ""
@@ -370,126 +502,118 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr ""
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr ""
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr ""
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr ""
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
+msgctxt "view:party.check_vies.no_result:"
+msgid "VAT Information Exchange System"
msgstr ""
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
+msgctxt "view:party.check_vies.no_result:"
+msgid "You must have a recent version of \"vatnumber\" installed!"
msgstr ""
-msgctxt "view:party.check_vies.check:0"
+msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
msgstr ""
-msgctxt "view:party.check_vies.no_check:0"
-msgid "VAT Information Exchange System"
-msgstr ""
-
-msgctxt "view:party.check_vies.no_check:0"
-msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr ""
-
-msgctxt "view:party.configuration:0"
+msgctxt "view:party.configuration:"
msgid "Party Configuration"
msgstr ""
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr ""
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr ""
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr ""
-msgctxt "wizard_button:party.check_vies,check,end:0"
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr ""
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 0dfa4e8..b9330dd 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -2,332 +2,404 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr "Die Partei einer Adresse kann nicht geändert werden!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr ""
"Der Name einer Parteikategorie kann pro übergeordneter Kategorie nur einmal "
"vergeben werden!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr "Kategorien können nicht rekursiv angelegt werden!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr "In dem Namensfeld kann \" / \" nicht verwendet werden!"
-msgctxt "error:party.check_vies:0"
+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!"
-msgctxt "error:party.contact_mechanism:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
msgstr "Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr "Ungültige USt-ID-Nummer!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr "Der Name einer Partei kann nur einmal vergeben werden!"
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "Aktiv"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "Stadt"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "Staat"
-msgctxt "field:party.address,create_date:0"
-msgid "Creation date"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
msgstr "Erstellungsdatum"
-msgctxt "field:party.address,create_uid:0"
-msgid "Creation user"
-msgstr "Ersteller"
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr "Vollständige Adresse"
-msgctxt "field:party.address,id:0"
+msgctxt "field:party.address,id:"
msgid "ID"
msgstr "ID"
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "Partei"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "Reihenfolge"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "Anschrift 1"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "Anschrift 2"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "Subnationale Einheit"
-msgctxt "field:party.address,write_date:0"
-msgid "Last modification date"
-msgstr "Zuletzt geändert am"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
-msgctxt "field:party.address,write_uid:0"
-msgid "Last modification by"
-msgstr "Zuletzt geändert von"
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr "Letzte Ãnderung durch"
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr "Postleitzahl"
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "Aktiv"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "Untergeordnet (Kategorien)"
-msgctxt "field:party.category,create_date:0"
-msgid "Creation date"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
msgstr "Erstellungsdatum"
-msgctxt "field:party.category,create_uid:0"
-msgid "Creation user"
-msgstr "Ersteller"
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
-msgctxt "field:party.category,id:0"
+msgctxt "field:party.category,id:"
msgid "ID"
msgstr "ID"
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr "Kategorie Name"
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "Ãbergeordnet (Kategorie)"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.category,write_date:0"
-msgid "Last modification date"
-msgstr "Zuletzt geändert am"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
-msgctxt "field:party.category,write_uid:0"
-msgid "Last modification by"
-msgstr "Zuletzt geändert von"
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr "Letzte Ãnderung durch"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
msgstr "Parteien mit fehlgeschlagener Ãberprüfung"
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
msgstr "Parteien mit erfolgreicher Ãberprüfung"
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Sprache Partei"
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr "Nummernkreis Partei"
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr "Letzte Ãnderung durch"
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "Aktiv"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "Kommentar"
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr "Wert"
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "Partei"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "Reihenfolge"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr "SIP"
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr "Skype"
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Typ"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Wert"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "Homepage"
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr "Letzte Ãnderung durch"
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr "Aktiv"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "Adressen"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "Kategorien"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Code Partei"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "Code Länge"
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr "Code (nur lesbar)"
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr "Kontaktmöglichkeiten"
-msgctxt "field:party.party,create_date:0"
-msgid "Creation date"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
msgstr "Erstellungsdatum"
-msgctxt "field:party.party,create_uid:0"
-msgid "Creation user"
-msgstr "Ersteller"
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "Fax"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr "Vollständiger Name"
-msgctxt "field:party.party,id:0"
+msgctxt "field:party.party,id:"
msgid "ID"
msgstr "ID"
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "Sprache"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "Mobiltelefon"
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "Telefon"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "USt-ID-Nr."
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "USt-ID-Präfix"
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "USt-ID-Nr."
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "Website"
-msgctxt "field:party.party,write_date:0"
-msgid "Last modification date"
-msgstr "Zuletzt geändert am"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
-msgctxt "field:party.party,write_uid:0"
-msgid "Last modification by"
-msgstr "Zuletzt geändert von"
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr "Letzte Ãnderung durch"
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr "Kategorie"
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr "Partei"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr "Letzte Ãnderung durch"
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
"Ein Wert in diesem Feld dient als Voreinstellung für die Sprache von neu "
"angelegten Parteien"
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr "Ein Eintrag in USt-ID-Präfix aktiviert die Ãberprüfung der USt-ID-Nr."
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr "Umsatzsteueridentifikationsnummer"
@@ -399,35 +471,35 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "Parteien"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "Adresse"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "Kategorie"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "Ãberprüfung VIES - Durchführen"
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "USt-ID-Nr. per VIES überprüfen"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "Ãberprüfung VIES - Nicht durchführen"
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "USt-ID-Nr. per VIES überprüfen"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr "Einstellungen Partei"
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "Kontaktmöglichkeit"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "Partei"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr "Partei - Parteikategorie"
@@ -435,144 +507,136 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr "Parteien Administration"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "Fax"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr "IRC"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr "Jabber"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Mobiltelefon"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "Anderer Kontakt"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "Telefon"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr "Skype"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Homepage"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "Adressen"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "Kategorien"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr "Kategorie"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
-msgstr "Parteien mit fehlgeschlagener Ãberprüfung"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
-msgstr "Parteien mit erfolgreicher Ãberprüfung"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "VAT Information Exchange System Results"
-msgstr "Ergebnisse des Ãberprüfungssystems für USt-ID-Nummern (VIES)"
-
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
msgstr "Ãberprüfungssystem für USt-ID-Nummern (VIES)"
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
msgstr ""
"Es muss eine aktuelle Version des Python-Moduls \"vatnumber\" installiert "
"sein!"
-msgctxt "view:party.configuration:0"
+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:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "Kontaktmöglichkeit"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "Kontaktmöglichkeiten"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Account"
msgstr "Konten"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Buchhaltung"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "Adressen"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "Kategorien"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanism"
msgstr "Kontaktmöglichkeit"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr "Kontaktmöglichkeiten"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "Allgemein"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "Parteien"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr "Partei"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "USt"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "_Accounting"
msgstr "_Buchhaltung"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "_General"
msgstr "_Allgemein"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "OK"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "OK"
diff --git a/locale/es_AR.po b/locale/es_AR.po
new file mode 100644
index 0000000..0ff4618
--- /dev/null
+++ b/locale/es_AR.po
@@ -0,0 +1,630 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:"
+msgid "You can not modify the party of an address!"
+msgstr "¡No puede modificar la entidad de una dirección!"
+
+msgctxt "error:party.category:"
+msgid "The name of a party category must be unique by parent!"
+msgstr "¡El nombre de una categorÃa de entidad debe ser único por cada padre!"
+
+msgctxt "error:party.category:"
+msgid "You can not create recursive categories!"
+msgstr "¡No puede crear categorÃas recursivas!"
+
+msgctxt "error:party.category:"
+msgid "You can not use \" / \" in name field!"
+msgstr "¡No puede usar \" /\" en el campo nombre!"
+
+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 a contact mechanism!"
+msgstr "¡No puede modificar la entidad de un médio de contacto!"
+
+msgctxt "error:party.party:"
+msgid "Invalid VAT number!"
+msgstr "¡El CUIT no es válido!"
+
+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.no_result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,parties_failed:"
+msgid "Parties Failed"
+msgstr "Entidades fallaron"
+
+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_lang:"
+msgid "Party Language"
+msgstr "Idioma de la entidad"
+
+msgctxt "field:party.configuration,party_sequence:"
+msgid "Party Sequence"
+msgstr "Secuencia de Entidades"
+
+msgctxt "field:party.configuration,rec_name:"
+msgid "Name"
+msgstr "Nombre del campo"
+
+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,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.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_length:"
+msgid "Code Length"
+msgstr "DÃgitos del 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 "Médios 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,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,vat_country:"
+msgid "VAT Country"
+msgstr "PaÃs del CUIT"
+
+msgctxt "field:party.party,vat_number:"
+msgid "VAT Number"
+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 "help:party.configuration,party_lang:"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+"El valor de este campo predeterminada el idioma de las nuevas entidades"
+
+msgctxt "help:party.party,vat_country:"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr ""
+"Al especificar el paÃs del NIF se habilitará la verificación de dicho "
+"número."
+
+msgctxt "help:party.party,vat_number:"
+msgid "Value Added Tax number"
+msgstr "Número de identificación fiscal"
+
+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_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_party"
+msgid "Party"
+msgstr "Gestión de entidades"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr "Configuración de 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.no_result,name:"
+msgid "Check VIES"
+msgstr "Comprobar VIES"
+
+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 "Médio de contacto"
+
+msgctxt "model:party.party,name:"
+msgid "Party"
+msgstr "Entidad"
+
+msgctxt "model:party.party-party.category,name:"
+msgid "Party - Category"
+msgstr "Entidad - 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.no_result:"
+msgid "VAT Information Exchange System"
+msgstr "CUIT Sistema de Intercambio de Información"
+
+msgctxt "view:party.check_vies.no_result:"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr "¡Debe tener una versión reciente de \"vatnumber\" instalada!"
+
+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 "Médio de contacto"
+
+msgctxt "view:party.contact_mechanism:"
+msgid "Contact Mechanisms"
+msgstr "Médios de contacto"
+
+msgctxt "view:party.party:"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "view:party.party:"
+msgid "Accounting"
+msgstr "Contabilidad"
+
+msgctxt "view:party.party:"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "view:party.party:"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "view:party.party:"
+msgid "Contact Mechanisms"
+msgstr "Médios de contacto"
+
+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 "view:party.party:"
+msgid "VAT"
+msgstr "CUIT"
+
+msgctxt "view:party.party:"
+msgid "_General"
+msgstr "_General"
+
+msgctxt "wizard_button:party.check_vies,no_result,end:"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:party.check_vies,result,end:"
+msgid "Ok"
+msgstr "Aceptar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 8d57ec0..e5023a3 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -2,269 +2,407 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr "No puede modificar el tercero de una dirección!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr ""
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr "No puede crear categorÃas recursivas!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr ""
-msgctxt "error:party.check_vies:0"
+msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
msgstr "El servicio VIES no está disponible, intente más tarde."
-msgctxt "error:party.contact_mechanism:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
msgstr "¡No puede modificar un tercero de un mecanismo de contacto!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr "¡Número inválido!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr ""
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "Ciudad"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "PaÃs"
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr ""
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Nombre de Contacto"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "Secuencia"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "Calle"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "Calle (bis)"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "Subdivisión"
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr "Código postal"
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "Hij at s"
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "Padre"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Los terceros fallaron"
+msgstr ""
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr "Terceros válidos"
+msgstr ""
+
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr ""
#, fuzzy
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Idioma del Tercero"
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr ""
#, fuzzy
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr "Nombre de Contacto"
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "Comentario"
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr "Correo electrónico"
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr "Valor"
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "Secuencia"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr "SIP"
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr "Skype"
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Tipo"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Valor"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "Sitio Web"
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "Direcciones"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "CategorÃas"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Código"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "Longitud del Código"
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr "Mecanismos de contacto"
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr "Correo electrónico"
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "Fax"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr ""
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "Idioma"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "Celular"
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "Teléfono"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "Código de IVA"
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "PaÃs"
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "Número"
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "Sitio Web"
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr "CategorÃa"
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr "Al especificar el paÃs se habilitará la verificación del NIT."
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr "Número de Impuesto de Valor Agregado"
@@ -339,35 +477,37 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "Terceros"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "Dirección"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "CategorÃa"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "Revisar VIES - Revisar"
+#, fuzzy
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "Revisar VIES"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "Revisar VIES - NO revisar"
+#, fuzzy
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "Revisar VIES"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr ""
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "Mecanismo de contacto"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "Tercero"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr "Tercero - CategorÃa"
@@ -375,138 +515,132 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr "Terceros"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "Correo electrónico"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "Fax"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr "Chat"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr "Jabber"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Celular"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "Otro"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "Teléfono"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr "Skype"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Sitio Web"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "Direcciones"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "CategorÃas"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr "CategorÃa"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
-msgstr "Los terceros fallaron"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
-msgstr "Los terceros fueron válidos"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "VAT Information Exchange System Results"
-msgstr "Resultado de Sistema de Información de intercambio IVA"
-
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr "Sistema de Información de Intercambio IVA"
+msgstr ""
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "Debe tener una versión reciente de \"vatnumber\" instalada!"
+msgstr ""
-msgctxt "view:party.configuration:0"
+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:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "Mecanismo de contacto"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "Mecanismos de contacto"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Account"
msgstr "Cuenta"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Contabilidad"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "Direcciones"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "CategorÃas"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanism"
msgstr "Mecanismo de contacto"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr "Mecanismos de contacto"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "General"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "Terceros"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "IVA"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "_General"
msgstr "_General"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Aceptar"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "Aceptar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index f0643df..5acb724 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -2,279 +2,409 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
-msgstr "No puede modificar el tercero de una dirección"
+msgstr "No puede modificar el tercero de una dirección."
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
-msgstr ""
+msgstr "El nombre de la categorÃa de terceros debe ser único por padre."
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
-msgstr "No puede crear categorÃas recursivas"
+msgstr "No puede crear categorÃas recursivas."
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
-msgstr ""
+msgstr "No puede usar \"/\" en el campo nombre."
-msgctxt "error:party.check_vies:0"
+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"
+msgstr "El servicio VIES no está disponible, inténtelo de nuevo más tarde."
-msgctxt "error:party.contact_mechanism:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
-msgstr "No puede modificar el tercero de un médio de contacto"
+msgstr "No puede modificar el tercero de un medio de contacto."
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
-msgstr "El NIF no es válido"
+msgstr "El NIF no es correcto."
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
-msgstr "El código del tercero debe ser único"
+msgstr "El código del tercero debe ser único."
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "Ciudad"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "PaÃs"
-msgctxt "field:party.address,full_address:0"
+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 ""
+msgstr "Dirección completa"
+
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr "ID"
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Contacto"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Contacto"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "Secuencia"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "Calle"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "Calle (bis)"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "Subdivisión"
-msgctxt "field:party.address,zip:0"
+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:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "Hijos"
-msgctxt "field:party.category,name:0"
+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:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "Padre"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+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.no_result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Terceros rechazados"
+msgstr "Tercero erróneo"
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr "Terceros aceptados"
+msgstr "Tercero correcto"
-#, fuzzy
-msgctxt "field:party.configuration,party_lang:0"
+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_lang:"
msgid "Party Language"
-msgstr "Idioma del tercero"
+msgstr "Idioma tercero"
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
-msgstr ""
+msgstr "Secuencia tercero"
-#, fuzzy
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
-msgstr "Nombre del campo"
+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:0"
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "Comentario"
-msgctxt "field:party.contact_mechanism,email:0"
+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,other_value:0"
+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:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "Secuencia"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr "SIP"
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr "Skype"
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Tipo"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Valor"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "Sitio Web"
-msgctxt "field:party.party,active:0"
+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.party,active:"
msgid "Active"
msgstr "Activo"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "Direcciones"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "CategorÃas"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Código"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "DÃgitos del código"
-msgctxt "field:party.party,contact_mechanisms:0"
+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 "Médios de contacto"
+msgstr "Medios de contacto"
+
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
-msgctxt "field:party.party,email:0"
+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:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "Fax"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
-msgstr ""
+msgstr "Nombre completo"
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "Idioma"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "Móvil"
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "Teléfono"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "NIF"
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "PaÃs del NIF"
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "NIF"
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "Sitio Web"
-msgctxt "field:party.party-party.category,category:0"
+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,party:0"
+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 "Tercero"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "help:party.configuration,party_lang:0"
+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 "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
+"El valor de este campo será el valor por defecto del idioma de los terceros."
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr ""
"Al especificar el paÃs del NIF se habilitará la verificación de dicho "
"número."
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
-msgstr "Número de identificación fiscal"
+msgstr "Número de identificación fiscal."
msgctxt "model:ir.action,name:act_address_form"
msgid "Addresses"
msgstr "Direcciones"
-#, fuzzy
msgctxt "model:ir.action,name:act_category_list"
msgid "Categories"
msgstr "CategorÃas"
@@ -289,7 +419,7 @@ msgstr "Terceros por categorÃa"
msgctxt "model:ir.action,name:act_party_configuration_form"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de terceros"
msgctxt "model:ir.action,name:act_party_form"
msgid "Parties"
@@ -315,7 +445,6 @@ msgctxt "model:ir.ui.menu,name:menu_address_form"
msgid "Addresses"
msgstr "Direcciones"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_category_list"
msgid "Categories"
msgstr "CategorÃas"
@@ -328,183 +457,174 @@ msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuración"
-#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_party"
msgid "Party"
-msgstr "Gestión de terceros"
+msgstr "Tercero"
msgctxt "model:ir.ui.menu,name:menu_party_configuration"
msgid "Party Configuration"
-msgstr ""
+msgstr "Terceros"
msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "Terceros"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "Dirección"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "CategorÃa"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "Comprobación VIES - Comprobar"
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "Comprobar VIES"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "Comprobación VIES - No comprobar"
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "Comprobar VIES"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de terceros"
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
-msgstr "Médio de contacto"
+msgstr "Medio de contacto"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "Tercero"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
-msgstr "Tercero - CategorÃa"
+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:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "Correo electrónico"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "Fax"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr "IRC"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr "Jabber"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Móvil"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "Otro"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "Teléfono"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr "Skype"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Sitio Web"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "Direcciones"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "CategorÃas"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr "CategorÃa"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
-msgstr "Terceros rechazados"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
-msgstr "Terceros aceptados"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "VAT Information Exchange System Results"
-msgstr "Resultado del sistema de intercambio de información de IVA"
-
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr "Sistema de intercambio de información de IVA"
+msgstr "Sistema de intercambio de información VAT"
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "Necesita instalar una versión más actualizada de «vatnumber»"
+msgstr "Debe tener instalada una versión reciente de \"vatnumber\"."
-msgctxt "view:party.configuration:0"
+msgctxt "view:party.check_vies.result:"
+msgid "VAT Information Exchange System Results"
+msgstr "Resultado del sistema de intercambio de información VAT"
+
+msgctxt "view:party.configuration:"
msgid "Party Configuration"
-msgstr ""
+msgstr "Configuración de terceros"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
-msgstr "Médio de contacto"
+msgstr "Medio de contacto"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
-msgstr "Médios de contacto"
+msgstr "Medios de contacto"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Account"
msgstr "Cuenta"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Contabilidad"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "Direcciones"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "CategorÃas"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
-msgstr "Médios de contacto"
+msgstr "Medios de contacto"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "General"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "Terceros"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "NIF"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "_General"
msgstr "_General"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Aceptar"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "Aceptar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 109e025..7e2f614 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -2,270 +2,435 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr "Vous ne pouvez pas modifier le tiers d'une addresse !"
-msgctxt "error:party.category:0"
+msgctxt "error:party.address:"
+msgid "You can not modify the party of an address!"
+msgstr "Vous ne pouvez pas modifier le tiers d'une addresse !"
+
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr ""
"Le nom d'une catégorie de tiers doit être unique pour un même parent !"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+"Le nom d'une catégorie de tiers doit être unique pour un même parent !"
+
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr "Vous ne pouvez pas créer des catégories récursives !"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
+msgid "You can not create recursive categories!"
+msgstr "Vous ne pouvez pas créer des catégories récursives !"
+
+msgctxt "error:party.category:"
+msgid "You can not use \" / \" in name field!"
+msgstr "Vous ne pouvez pas utiliser \" / \" dans le champ nom !"
+
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr "Vous ne pouvez pas utiliser \" / \" dans le champ nom !"
-msgctxt "error:party.check_vies:0"
+msgctxt "error:party.check_vies:"
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:0"
+msgctxt "error:party.check_vies:"
+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 "You can not modify the party of a contact mechanism!"
msgstr "Vous ne pouvez pas modifiez le tiers d'un moyen de contact."
-msgctxt "error:party.party:0"
+msgctxt "error:party.contact_mechanism:"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "Vous ne pouvez pas modifiez le tiers d'un moyen de contact."
+
+msgctxt "error:party.party:"
+msgid "Invalid VAT number!"
+msgstr "Numéro TVA non valide !"
+
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr "Numéro TVA non valide !"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
+msgid "The code of the party must be unique!"
+msgstr "Le code du tiers doit être unique !"
+
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr "Le code du tiers doit être unique !"
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "Actif"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "Ville"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "Pays"
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr "Adresse complète"
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "Tiers"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "Séquence"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "Rue"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "Rue (bis)"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "Subdivision"
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr "Code Postal"
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "Actif"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "Enfants"
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "Parent"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Tiers non validés"
+msgstr "Tiers échoués"
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr "Tiers validés"
+msgstr "Tiers réussis"
+
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Langue du tiers"
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr "Séquence des tiers"
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "Actif"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "Commentaire"
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr "E-mail"
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr "Valeur"
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "Tiers"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "Séquence"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr "SIP"
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr "Skype"
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Type"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Valeur"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "Site web"
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr "Actif"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "Adresses"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "Catégories"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Code"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "Longueur du code"
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr "Code en lecture seule"
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr "Moyens de contact"
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "Fax"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr "Nom complet"
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "Langue"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "Mobile"
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "Téléphone"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "Code TVA"
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "Code Pays TVA"
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "Numéro de TVA"
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "Site web"
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr "Catégorie"
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr "Tiers"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
"La valeur de ce champs sera la valeur par défaut pour la langue des nouveaux"
" tiers"
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr "Ajouter un code pays TVA activera la vérification du numéro de TVA."
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr "Numéro de taxe sur la valeur ajoutée"
@@ -337,35 +502,35 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "Tiers"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "Adresse"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "Catégorie"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "Validation VIES - Validé"
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "Validation VIES"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "Validation VIES - Non validé"
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "Validation VIES"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr "Configuration des tiers"
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "Moyen de contact"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "Tiers"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr "Tiers - Catégorie"
@@ -373,138 +538,214 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr "Administration des tiers"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "E-Mail"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "Fax"
-msgctxt "selection:party.contact_mechanism,type:0"
+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 "IRC"
msgstr "IRC"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr "Jabber"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Mobile"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Mobile"
+msgstr "Mobile"
+
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Other"
+msgstr "Autre"
+
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "Autre"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Phone"
+msgstr "Téléphone"
+
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "Téléphone"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
-msgctxt "selection:party.contact_mechanism,type:0"
+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 "Skype"
msgstr "Skype"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
+msgid "Website"
+msgstr "Site web"
+
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Site web"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
+msgid "Addresses"
+msgstr "Adresses"
+
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "Adresses"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "Catégories"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "view:party.category:"
msgid "Category"
msgstr "Catégorie"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
-msgstr "Tiers non validés"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
-msgstr "Tiers validés"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "VAT Information Exchange System Results"
-msgstr "Système d'échange d'information TVA - Résultats"
+msgctxt "view:party.category:"
+msgid "Category"
+msgstr "Catégorie"
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr "Système d'échange d'information TVA"
+msgstr "VIES"
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "Vous devez avoir une version récente de \"vatnumber\" installée !"
+msgstr "Vous devez avoir une version récente de \"vatnumber\" installée"
+
+msgctxt "view:party.check_vies.result:"
+msgid "VAT Information Exchange System Results"
+msgstr "Résultats VIES"
-msgctxt "view:party.configuration:0"
+msgctxt "view:party.configuration:"
msgid "Party Configuration"
msgstr "Configuration des tiers"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.configuration:"
+msgid "Party Configuration"
+msgstr "Configuration des tiers"
+
+msgctxt "view:party.contact_mechanism:"
+msgid "Contact Mechanism"
+msgstr "Moyen de contact"
+
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "Moyen de contact"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
+msgid "Contact Mechanisms"
+msgstr "Moyens de contact"
+
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "Moyens de contact"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
+msgid "Accounting"
+msgstr "Comptabilité"
+
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Comptabilité"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "Adresses"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "Catégories"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr "Moyens de contact"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "Général"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:party.party:"
+msgid "Parties"
+msgstr "Tiers"
+
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "Tiers"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "view:party.party:"
msgid "Party"
msgstr "Tiers"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Properties"
msgstr "Propriétés"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
+msgid "VAT"
+msgstr "TVA"
+
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "TVA"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "_Accounting"
msgstr "Compt_abilité"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "_General"
msgstr "_Général"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Ok"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "Ok"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index e4ba9d2..88a1422 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -2,268 +2,400 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr "U kunt niet de relatie van een adres veranderen!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr "De naam van een relatie-categorie moet per niveau uniek zijn!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr "U kunt geen recursieve categorieën aanmaken!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr "Het \"/\" teken mag niet gebruikt worden in een naam veld!"
-msgctxt "error:party.check_vies:0"
+msgctxt "error:party.check_vies:"
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:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
msgstr "U kunt niet de relatie van een contactmogelijkheid veranderen!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr "Ongeldig BTW nummer!"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr "De relatie-code moet uniek zijn!"
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "Actief"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "Stad"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "Land"
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr "Volledig adres"
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Aanhef"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "Relatie"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "Reeks"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "Straat"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "Extra aanduiding"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "Provincie"
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr "Postcode"
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "Actief"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "Onderliggende niveaus"
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "Bovenliggend niveau"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
-msgstr "Controle relatie mislukt"
+msgstr ""
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
-msgstr "Controle relatie gelukt"
+msgstr ""
+
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr ""
#, fuzzy
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr "Taal relatie"
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr "Relatiecode"
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "Actief"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "Opmerking"
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr "E-mail"
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr "Waarde"
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "Relatie"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "Reeks"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr "SIP"
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr "Skype"
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Type"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "Waarde"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "Website"
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr "Actief"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "Adressen"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "Categorieën"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Code"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "Lengte code"
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr "Contactmogelijkheden"
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr "E-mail"
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "Fax"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr "Naam voluit"
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "Taal"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "Mobiel"
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "Telefoon"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Naam"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "BTW-nummer"
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "BTW-land"
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "BTW-nummer"
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "Website"
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr "Categorie"
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr "Relatie"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Naam"
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr "De keuze van een BTW land maakt controle van het BTW nummer mogelijk."
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr "Nummer omzetbelasting"
@@ -338,35 +470,37 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "Relaties"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "Adres"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "Categorie"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "Check VIES - Oké"
+#, fuzzy
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "Check VIES"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "Check VIES - Mislukt"
+#, fuzzy
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "Check VIES"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr "Relatie instellingen"
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "Contactmogelijkheid"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "Relatie"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr "Relatie categorie"
@@ -374,126 +508,120 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr "Relatiebeheer"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "E-mail"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "Fax"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr "IRC"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr "Jabber"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "Mobiel"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "Overig"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "Telefoon"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr "SIP"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr "Skype"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "Website"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "Adressen"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "Categorieën"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr "Categorie"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
-msgstr "Controle relatie mislukt"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
-msgstr "Controle relatie gelukt"
-
-msgctxt "view:party.check_vies.check:0"
-msgid "VAT Information Exchange System Results"
-msgstr "BTW Informatie Dienst"
-
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "VAT Information Exchange System"
-msgstr "BTW Informatie Dienst"
+msgstr ""
-msgctxt "view:party.check_vies.no_check:0"
+msgctxt "view:party.check_vies.no_result:"
msgid "You must have a recent version of \"vatnumber\" installed!"
-msgstr "U moet een recente versie van \"python-vatnumber\" geïnstalleerd hebben!"
+msgstr ""
-msgctxt "view:party.configuration:0"
+msgctxt "view:party.check_vies.result:"
+msgid "VAT Information Exchange System Results"
+msgstr ""
+
+msgctxt "view:party.configuration:"
msgid "Party Configuration"
msgstr "Relatie instellingen"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "Contactmogelijkheid"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "Contactmogelijkheden"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "Financieel"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "Adressen"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "Categorieën"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr "Contactmogelijkheden"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "Algemeen"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "Relaties"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr "Relatie"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "Omzetbelasting"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Oké"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "Oké"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 5e8bb40..70215be 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -2,269 +2,401 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:party.address:0"
+msgctxt "error:party.address:"
msgid "You can not modify the party of an address!"
msgstr ""
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "The name of a party category must be unique by parent!"
msgstr ""
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not create recursive categories!"
msgstr "ÐÑ Ð½Ðµ можеÑе ÑоздаваÑÑ ÑекÑÑÑивнÑе каÑегоÑии!"
-msgctxt "error:party.category:0"
+msgctxt "error:party.category:"
msgid "You can not use \" / \" in name field!"
msgstr ""
-msgctxt "error:party.check_vies:0"
+msgctxt "error:party.check_vies:"
msgid "The VIES service is unavailable, try again later."
msgstr ""
-msgctxt "error:party.contact_mechanism:0"
+msgctxt "error:party.contact_mechanism:"
msgid "You can not modify the party of a contact mechanism!"
msgstr ""
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "Invalid VAT number!"
msgstr "ÐÑибка в номеÑе ÐÐÐ"
-msgctxt "error:party.party:0"
+msgctxt "error:party.party:"
msgid "The code of the party must be unique!"
msgstr "Ðод конÑÑагенÑа должен бÑÑÑ ÑникалÑнÑм"
-msgctxt "field:party.address,active:0"
+msgctxt "field:party.address,active:"
msgid "Active"
msgstr "ÐкÑивнÑй"
-msgctxt "field:party.address,city:0"
+msgctxt "field:party.address,city:"
msgid "City"
msgstr "ÐоÑод"
-msgctxt "field:party.address,country:0"
+msgctxt "field:party.address,country:"
msgid "Country"
msgstr "СÑÑана"
+msgctxt "field:party.address,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.address,create_uid:"
+msgid "Create User"
+msgstr ""
+
#, fuzzy
-msgctxt "field:party.address,full_address:0"
+msgctxt "field:party.address,full_address:"
msgid "Full Address"
msgstr "ÐолнÑй адÑеÑ"
-msgctxt "field:party.address,name:0"
+msgctxt "field:party.address,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.address,name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.address,party:0"
+msgctxt "field:party.address,party:"
msgid "Party"
msgstr "ÐонÑÑагенÑ"
-msgctxt "field:party.address,rec_name:0"
+msgctxt "field:party.address,rec_name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.address,sequence:0"
+msgctxt "field:party.address,sequence:"
msgid "Sequence"
msgstr "ÐоÑледоваÑелÑноÑÑÑ"
-msgctxt "field:party.address,street:0"
+msgctxt "field:party.address,street:"
msgid "Street"
msgstr "ÑлиÑа"
-msgctxt "field:party.address,streetbis:0"
+msgctxt "field:party.address,streetbis:"
msgid "Street (bis)"
msgstr "ÑлиÑа (доп.)"
-msgctxt "field:party.address,subdivision:0"
+msgctxt "field:party.address,subdivision:"
msgid "Subdivision"
msgstr "ÐодÑаздел"
-msgctxt "field:party.address,zip:0"
+msgctxt "field:party.address,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.address,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.address,zip:"
msgid "Zip"
msgstr "ÐндекÑ"
-msgctxt "field:party.category,active:0"
+msgctxt "field:party.category,active:"
msgid "Active"
msgstr "ÐкÑивнÑй"
-msgctxt "field:party.category,childs:0"
+msgctxt "field:party.category,childs:"
msgid "Children"
msgstr "ÐодÑиненÑй"
-msgctxt "field:party.category,name:0"
+msgctxt "field:party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.category,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.category,name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.category,parent:0"
+msgctxt "field:party.category,parent:"
msgid "Parent"
msgstr "ÐÑновной"
-msgctxt "field:party.category,rec_name:0"
+msgctxt "field:party.category,rec_name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.check_vies.check,parties_failed:0"
+msgctxt "field:party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.check_vies.no_result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.check_vies.result,parties_failed:"
msgid "Parties Failed"
msgstr ""
-msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgctxt "field:party.check_vies.result,parties_succeed:"
msgid "Parties Succeed"
msgstr ""
-msgctxt "field:party.configuration,party_lang:0"
+msgctxt "field:party.configuration,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.configuration,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.configuration,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.configuration,party_lang:"
msgid "Party Language"
msgstr ""
-msgctxt "field:party.configuration,party_sequence:0"
+msgctxt "field:party.configuration,party_sequence:"
msgid "Party Sequence"
msgstr ""
-msgctxt "field:party.configuration,rec_name:0"
+msgctxt "field:party.configuration,rec_name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.contact_mechanism,active:0"
+msgctxt "field:party.configuration,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.configuration,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,active:"
msgid "Active"
msgstr "ÐкÑивнÑй"
-msgctxt "field:party.contact_mechanism,comment:0"
+msgctxt "field:party.contact_mechanism,comment:"
msgid "Comment"
msgstr "ÐомменÑаÑии"
-msgctxt "field:party.contact_mechanism,email:0"
+msgctxt "field:party.contact_mechanism,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,email:"
msgid "E-Mail"
msgstr "Ðл.поÑÑа"
-msgctxt "field:party.contact_mechanism,other_value:0"
+msgctxt "field:party.contact_mechanism,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,other_value:"
msgid "Value"
msgstr "ÐнаÑение"
-msgctxt "field:party.contact_mechanism,party:0"
+msgctxt "field:party.contact_mechanism,party:"
msgid "Party"
msgstr "ÐонÑÑагенÑ"
-msgctxt "field:party.contact_mechanism,rec_name:0"
+msgctxt "field:party.contact_mechanism,rec_name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.contact_mechanism,sequence:0"
+msgctxt "field:party.contact_mechanism,sequence:"
msgid "Sequence"
msgstr "ÐоÑледоваÑелÑноÑÑÑ"
-msgctxt "field:party.contact_mechanism,sip:0"
+msgctxt "field:party.contact_mechanism,sip:"
msgid "SIP"
msgstr ""
-msgctxt "field:party.contact_mechanism,skype:0"
+msgctxt "field:party.contact_mechanism,skype:"
msgid "Skype"
msgstr ""
-msgctxt "field:party.contact_mechanism,type:0"
+msgctxt "field:party.contact_mechanism,type:"
msgid "Type"
msgstr "Тип"
-msgctxt "field:party.contact_mechanism,value:0"
+msgctxt "field:party.contact_mechanism,value:"
msgid "Value"
msgstr "ÐнаÑение"
-msgctxt "field:party.contact_mechanism,website:0"
+msgctxt "field:party.contact_mechanism,website:"
msgid "Website"
msgstr "СайÑ"
-msgctxt "field:party.party,active:0"
+msgctxt "field:party.contact_mechanism,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party,active:"
msgid "Active"
msgstr "ÐкÑивнÑй"
-msgctxt "field:party.party,addresses:0"
+msgctxt "field:party.party,addresses:"
msgid "Addresses"
msgstr "ÐдÑеÑа"
-msgctxt "field:party.party,categories:0"
+msgctxt "field:party.party,categories:"
msgid "Categories"
msgstr "ÐаÑегоÑиÑ"
-msgctxt "field:party.party,code:0"
+msgctxt "field:party.party,code:"
msgid "Code"
msgstr "Ðод"
-msgctxt "field:party.party,code_length:0"
+msgctxt "field:party.party,code_length:"
msgid "Code Length"
msgstr "Ðлина Ðода"
-msgctxt "field:party.party,contact_mechanisms:0"
+msgctxt "field:party.party,code_readonly:"
+msgid "Code Readonly"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:"
msgid "Contact Mechanisms"
msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
-msgctxt "field:party.party,email:0"
+msgctxt "field:party.party,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.party,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.party,email:"
msgid "E-Mail"
msgstr "Ðл.поÑÑа"
-msgctxt "field:party.party,fax:0"
+msgctxt "field:party.party,fax:"
msgid "Fax"
msgstr "ФакÑ"
-msgctxt "field:party.party,full_name:0"
+msgctxt "field:party.party,full_name:"
msgid "Full Name"
msgstr "Ðолное наименование"
-msgctxt "field:party.party,lang:0"
+msgctxt "field:party.party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party,lang:"
msgid "Language"
msgstr "ЯзÑк"
-msgctxt "field:party.party,mobile:0"
+msgctxt "field:party.party,mobile:"
msgid "Mobile"
msgstr "ÑоÑ.ÑелеÑон"
#, fuzzy
-msgctxt "field:party.party,name:0"
+msgctxt "field:party.party,name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.party,phone:0"
+msgctxt "field:party.party,phone:"
msgid "Phone"
msgstr "ТелеÑон"
-msgctxt "field:party.party,rec_name:0"
+msgctxt "field:party.party,rec_name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "field:party.party,vat_code:0"
+msgctxt "field:party.party,vat_code:"
msgid "VAT Code"
msgstr "Ðод ÐÐÐ"
-msgctxt "field:party.party,vat_country:0"
+msgctxt "field:party.party,vat_country:"
msgid "VAT Country"
msgstr "СÑÑана ÐÐÐ "
-msgctxt "field:party.party,vat_number:0"
+msgctxt "field:party.party,vat_number:"
msgid "VAT Number"
msgstr "ÐÐÐ"
-msgctxt "field:party.party,website:0"
+msgctxt "field:party.party,website:"
msgid "Website"
msgstr "СайÑ"
-msgctxt "field:party.party-party.category,category:0"
+msgctxt "field:party.party,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,category:"
msgid "Category"
msgstr "ÐаÑегоÑии"
-msgctxt "field:party.party-party.category,party:0"
+msgctxt "field:party.party-party.category,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:party.party-party.category,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:party.party-party.category,party:"
msgid "Party"
msgstr "ÐонÑÑагенÑ"
-msgctxt "field:party.party-party.category,rec_name:0"
+msgctxt "field:party.party-party.category,rec_name:"
msgid "Name"
msgstr "Ðаименование"
-msgctxt "help:party.configuration,party_lang:0"
+msgctxt "field:party.party-party.category,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:party.party-party.category,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "help:party.configuration,party_lang:"
msgid "The value set on this field will preset the language on new parties"
msgstr ""
-msgctxt "help:party.party,vat_country:0"
+msgctxt "help:party.party,vat_country:"
msgid "Setting VAT country will enable validation of the VAT number."
msgstr "УÑÑановиÑе ÑÑÑÐ°Ð½Ñ ÑегиÑÑÑаÑии оÑганизаÑии Ð´Ð»Ñ Ð¿ÑовеÑки"
-msgctxt "help:party.party,vat_number:0"
+msgctxt "help:party.party,vat_number:"
msgid "Value Added Tax number"
msgstr "ÐÐÐ"
@@ -339,36 +471,38 @@ msgctxt "model:ir.ui.menu,name:menu_party_form"
msgid "Parties"
msgstr "ÐонÑÑагенÑÑ"
-msgctxt "model:party.address,name:0"
+msgctxt "model:party.address,name:"
msgid "Address"
msgstr "ÐдÑеÑ"
-msgctxt "model:party.category,name:0"
+msgctxt "model:party.category,name:"
msgid "Category"
msgstr "ÐаÑегоÑии"
-msgctxt "model:party.check_vies.check,name:0"
-msgid "Check VIES - Check"
-msgstr "ÐÑовеÑиÑÑ VIES - пÑовеÑиÑÑ"
+#, fuzzy
+msgctxt "model:party.check_vies.no_result,name:"
+msgid "Check VIES"
+msgstr "ÐÑовеÑиÑÑ VIES"
-msgctxt "model:party.check_vies.no_check,name:0"
-msgid "Check VIES - No Check"
-msgstr "ÐÑовеÑиÑÑ VIES - не пÑовеÑÑÑÑ"
+#, fuzzy
+msgctxt "model:party.check_vies.result,name:"
+msgid "Check VIES"
+msgstr "ÐÑовеÑиÑÑ VIES"
-msgctxt "model:party.configuration,name:0"
+msgctxt "model:party.configuration,name:"
msgid "Party Configuration"
msgstr "ÐаÑÑÑойка конÑÑагенÑов"
#, fuzzy
-msgctxt "model:party.contact_mechanism,name:0"
+msgctxt "model:party.contact_mechanism,name:"
msgid "Contact Mechanism"
msgstr "ÐонÑакÑнÑй ÑпоÑоб"
-msgctxt "model:party.party,name:0"
+msgctxt "model:party.party,name:"
msgid "Party"
msgstr "ÐонÑÑагенÑ"
-msgctxt "model:party.party-party.category,name:0"
+msgctxt "model:party.party-party.category,name:"
msgid "Party - Category"
msgstr "ÐонÑÑÐ°Ð³ÐµÐ½Ñ - ÐаÑегоÑии"
@@ -376,154 +510,148 @@ msgctxt "model:res.group,name:group_party_admin"
msgid "Party Administration"
msgstr "ÐдминиÑÑÑиÑование конÑÑагенÑов"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "E-Mail"
msgstr "Ðл.поÑÑа"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Fax"
msgstr "ФакÑ"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "IRC"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Jabber"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Mobile"
msgstr "ÑоÑ.ÑелеÑон"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Other"
msgstr "ÐÑоÑий"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Phone"
msgstr "ТелеÑон"
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "SIP"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Skype"
msgstr ""
-msgctxt "selection:party.contact_mechanism,type:0"
+msgctxt "selection:party.contact_mechanism,type:"
msgid "Website"
msgstr "СайÑ"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Addresses"
msgstr "ÐдÑеÑа"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Job Function"
msgstr "ÐолжноÑÑÑ"
-msgctxt "view:party.address:0"
+msgctxt "view:party.address:"
msgid "Notes"
msgstr "ÐомменÑаÑии"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Categories"
msgstr "ÐаÑегоÑиÑ"
-msgctxt "view:party.category:0"
+msgctxt "view:party.category:"
msgid "Category"
msgstr "ÐаÑегоÑии"
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Failed"
+msgctxt "view:party.check_vies.no_result:"
+msgid "VAT Information Exchange System"
msgstr ""
-msgctxt "view:party.check_vies.check:0"
-msgid "Parties Succeed"
+msgctxt "view:party.check_vies.no_result:"
+msgid "You must have a recent version of \"vatnumber\" installed!"
msgstr ""
-msgctxt "view:party.check_vies.check:0"
+msgctxt "view:party.check_vies.result:"
msgid "VAT Information Exchange System Results"
-msgstr "ÐÐРСиÑÑема обмена инÑоÑмаÑией о ÑезÑлÑÑаÑаÑ
"
-
-msgctxt "view:party.check_vies.no_check:0"
-msgid "VAT Information Exchange System"
-msgstr "ÐÐРСиÑÑема обмена инÑоÑмаÑией"
-
-msgctxt "view:party.check_vies.no_check:0"
-msgid "You must have a recent version of \"vatnumber\" installed!"
msgstr ""
-msgctxt "view:party.configuration:0"
+msgctxt "view:party.configuration:"
msgid "Party Configuration"
msgstr "ÐаÑÑÑойка конÑÑагенÑов"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanism"
msgstr "ÐонÑакÑнÑй ÑпоÑоб"
-msgctxt "view:party.contact_mechanism:0"
+msgctxt "view:party.contact_mechanism:"
msgid "Contact Mechanisms"
msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Account in Bank"
msgstr "СÑÐµÑ Ð² банке"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounting"
msgstr "РегиÑÑÑаÑионнÑе даннÑе"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Accounts in Banks"
msgstr "СÑеÑа в банкаÑ
"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Addresses"
msgstr "ÐдÑеÑа"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Categories"
msgstr "ÐаÑегоÑиÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contact Mechanisms"
msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Contacts"
msgstr "ÐонÑакÑнÑе лиÑа"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Document"
msgstr "ÐокÑменÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "General"
msgstr "ÐÑновной"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Legal Document"
msgstr "РегиÑÑÑаÑионнÑй докÑменÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Parties"
msgstr "ÐонÑÑагенÑÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "Party"
msgstr "ÐонÑÑагенÑ"
-msgctxt "view:party.party:0"
+msgctxt "view:party.party:"
msgid "VAT"
msgstr "ÐÐÐ"
-msgctxt "wizard_button:party.check_vies,check,end:0"
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,no_result,end:"
msgid "Ok"
msgstr "Ðа"
-msgctxt "wizard_button:party.check_vies,no_check,end:0"
+#, fuzzy
+msgctxt "wizard_button:party.check_vies,result,end:"
msgid "Ok"
msgstr "Ðа"
diff --git a/party.py b/party.py
index d5a3395..f5166bb 100644
--- a/party.py
+++ b/party.py
@@ -2,7 +2,7 @@
#this repository contains the full copyright notices and license terms.
import logging
from trytond.model import ModelView, ModelSQL, fields
-from trytond.wizard import Wizard
+from trytond.wizard import Wizard, StateTransition, StateView, Button
from trytond.pyson import Bool, Eval
from trytond.transaction import Transaction
from trytond.pool import Pool
@@ -29,12 +29,18 @@ class Party(ModelSQL, ModelView):
_description = __doc__
_name = "party.party"
- name = fields.Char('Name', required=True, select=1,
+ name = fields.Char('Name', required=True, select=True,
states=STATES, depends=DEPENDS)
- code = fields.Char('Code', required=True, select=1,
- readonly=True, order_field="%(table)s.code_length %(order)s, " \
- "%(table)s.code %(order)s")
- code_length = fields.Integer('Code Length', select=1, readonly=True)
+ code = fields.Char('Code', required=True, select=True,
+ order_field="%(table)s.code_length %(order)s, " \
+ "%(table)s.code %(order)s",
+ states={
+ 'readonly': Eval('code_readonly', True),
+ },
+ depends=['code_readonly'])
+ code_length = fields.Integer('Code Length', select=True, readonly=True)
+ code_readonly = fields.Function(fields.Boolean('Code Readonly'),
+ 'get_code_readonly')
lang = fields.Many2One("ir.lang", 'Language', states=STATES,
depends=DEPENDS)
vat_number = fields.Char('VAT Number', help="Value Added Tax number",
@@ -56,7 +62,7 @@ class Party(ModelSQL, ModelView):
'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=1)
+ active = fields.Boolean('Active', select=True)
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')
@@ -97,6 +103,14 @@ class Party(ModelSQL, ModelView):
config = config_obj.browse(1)
return config.party_lang.id
+ def default_code_readonly(self):
+ config_obj = Pool().get('party.configuration')
+ config = config_obj.browse(1)
+ return bool(config.party_sequence)
+
+ def get_code_readonly(self, ids, name):
+ return dict((x, True) for x in ids)
+
def on_change_with_vat_code(self, vals):
return (vals.get('vat_country') or '') + (vals.get('vat_number') or '')
@@ -105,7 +119,8 @@ class Party(ModelSQL, ModelView):
return []
res = {}
for party in self.browse(ids):
- res[party.id] = (party.vat_country or '') + (party.vat_number or '')
+ res[party.id] = ((party.vat_country or '')
+ + (party.vat_number or ''))
return res
def search_vat_code(self, name, clause):
@@ -170,8 +185,8 @@ class Party(ModelSQL, ModelView):
if default is None:
default = {}
default = default.copy()
- default['code'] = False
- default['addresses'] = False
+ default['code'] = None
+ default['addresses'] = None
new_ids = []
for party in self.browse(ids):
new_id = super(Party, self).copy(party.id, default=default)
@@ -202,7 +217,7 @@ class Party(ModelSQL, ModelView):
[("party", "=", party_id), ("active", "=", True)],
order=[('sequence', 'ASC'), ('id', 'ASC')])
if not address_ids:
- return False
+ return None
default_address = address_ids[0]
if not type:
return default_address
@@ -246,24 +261,24 @@ class PartyCategory(ModelSQL):
_table = 'party_category_rel'
_description = __doc__
party = fields.Many2One('party.party', 'Party', ondelete='CASCADE',
- required=True, select=1)
- category = fields.Many2One('party.category', 'Category', ondelete='CASCADE',
- required=True, select=1)
+ required=True, select=True)
+ category = fields.Many2One('party.category', 'Category',
+ ondelete='CASCADE', required=True, select=True)
PartyCategory()
-class CheckVIESNoCheck(ModelView):
- 'Check VIES - No Check'
- _name = 'party.check_vies.no_check'
+class CheckVIESNoResult(ModelView):
+ 'Check VIES'
+ _name = 'party.check_vies.no_result'
_description = __doc__
-CheckVIESNoCheck()
+CheckVIESNoResult()
-class CheckVIESCheck(ModelView):
- 'Check VIES - Check'
- _name = 'party.check_vies.check'
+class CheckVIESResult(ModelView):
+ 'Check VIES'
+ _name = 'party.check_vies.result'
_description = __doc__
parties_succeed = fields.Many2Many('party.party', None, None,
'Parties Succeed', readonly=True, states={
@@ -274,39 +289,23 @@ class CheckVIESCheck(ModelView):
'invisible': ~Eval('parties_failed'),
})
-CheckVIESCheck()
+CheckVIESResult()
class CheckVIES(Wizard):
'Check VIES'
_name = 'party.check_vies'
- states = {
- 'init': {
- 'result': {
- 'type': 'choice',
- 'next_state': '_choice',
- },
- },
- 'no_check': {
- 'result': {
- 'type': 'form',
- 'object': 'party.check_vies.no_check',
- 'state': [
- ('end', 'Ok', 'tryton-ok', True),
- ],
- },
- },
- 'check': {
- 'actions': ['_check'],
- 'result': {
- 'type': 'form',
- 'object': 'party.check_vies.check',
- 'state': [
- ('end', 'Ok', 'tryton-ok', True),
- ],
- },
- },
- }
+ start_state = 'check'
+
+ check = StateTransition()
+ result = StateView('party.check_vies.result',
+ 'party.check_vies_result', [
+ Button('Ok', 'end', 'tryton-ok', True),
+ ])
+ no_result = StateView('party.check_vies.no_result',
+ 'party.check_vies_no_result', [
+ Button('Ok', 'end', 'tryton-ok', True),
+ ])
def __init__(self):
super(CheckVIES, self).__init__()
@@ -315,31 +314,28 @@ class CheckVIES(Wizard):
'try again later.',
})
- def _choice(self, data):
+ def transition_check(self, session):
+ party_obj = Pool().get('party.party')
+
if not HAS_VATNUMBER or not hasattr(vatnumber, 'check_vies'):
- return 'no_check'
- return 'check'
+ return 'no_result'
- def _check(self, data):
- party_obj = Pool().get('party.party')
- res = {
- 'parties_succeed': [],
- 'parties_failed': [],
- }
- parties = party_obj.browse(data['ids'])
+ parties_succeed = []
+ parties_failed = []
+ parties = party_obj.browse(Transaction().context.get('active_ids'))
for party in parties:
if not party.vat_code:
continue
try:
if not vatnumber.check_vies(party.vat_code):
- res['parties_failed'].append(party.id)
+ parties_failed.append(party.id)
else:
- res['parties_succeed'].append(party.id)
+ parties_succeed.append(party.id)
except Exception, e:
if hasattr(e, 'faultstring') \
and hasattr(e.faultstring, 'find'):
if e.faultstring.find('INVALID_INPUT'):
- res['parties_failed'].append(party.id)
+ parties_failed.append(party.id)
continue
if e.faultstring.find('SERVICE_UNAVAILABLE') \
or e.faultstring.find('MS_UNAVAILABLE') \
@@ -347,6 +343,14 @@ class CheckVIES(Wizard):
or e.faultstring.find('SERVER_BUSY'):
self.raise_user_error('vies_unavailable')
raise
- return res
+ session.result.parties_succeed = parties_succeed
+ session.result.parties_failed = parties_failed
+ return 'result'
+
+ def default_result(self, session, fields):
+ return {
+ 'parties_succeed': [p.id for p in session.result.parties_succeed],
+ 'parties_failed': [p.id for p in session.result.parties_failed],
+ }
CheckVIES()
diff --git a/party.xml b/party.xml
index a11cc55..24ecad4 100644
--- a/party.xml
+++ b/party.xml
@@ -63,35 +63,16 @@ this repository contains the full copyright notices and license terms. -->
</group>
<notebook colspan="6">
<page string="General" id="general">
- <field name="addresses" mode="form,tree" colspan="4">
- <tree string="Addresses" sequence="sequence"
- fill="1">
- <field name="name"/>
- <field name="street"/>
- <field name="streetbis"/>
- <field name="zip"/>
- <field name="city"/>
- <field name="country"/>
- <field name="subdivision"/>
- </tree>
- </field>
+ <field name="addresses" mode="form,tree" colspan="4"
+ view_ids="party.address_view_form,party.address_view_tree_sequence"/>
<group col="2" colspan="4" id="lang">
<label name="lang"/>
<field name="lang" widget="selection"/>
</group>
- <field name="contact_mechanisms" colspan="2">
- <tree string="Contact Mechanisms" sequence="sequence"
- fill="1">
- <field name="type"/>
- <field name="value"/>
- <field name="comment"/>
- </tree>
- </field>
- <field name="categories" colspan="2">
- <tree string="Categories" fill="1">
- <field name="rec_name"/>
- </tree>
- </field>
+ <field name="contact_mechanisms" colspan="2"
+ view_ids="party.contact_mechanism_view_tree_sequence"/>
+ <field name="categories" colspan="2"
+ view_ids="party.category_view_list"/>
</page>
<page string="Accounting" id="accounting">
<separator string="VAT" colspan="4" id="vat"/>
@@ -176,8 +157,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="wizard_check_vies"/>
</record>
- <record model="ir.ui.view" id="check_vies_no_check">
- <field name="model">party.check_vies.no_check</field>
+ <record model="ir.ui.view" id="check_vies_no_result">
+ <field name="model">party.check_vies.no_result</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
@@ -191,26 +172,14 @@ this repository contains the full copyright notices and license terms. -->
</field>
</record>
- <record model="ir.ui.view" id="check_vies_check">
- <field name="model">party.check_vies.check</field>
+ <record model="ir.ui.view" id="check_vies_result">
+ <field name="model">party.check_vies.result</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
<form string="VAT Information Exchange System Results" col="1">
- <field name="parties_succeed">
- <tree string="Parties Succeed" fill="1">
- <field name="code"/>
- <field name="name"/>
- <field name="vat_code"/>
- </tree>
- </field>
- <field name="parties_failed">
- <tree string="Parties Failed" fill="1">
- <field name="code"/>
- <field name="name"/>
- <field name="vat_code"/>
- </tree>
- </field>
+ <field name="parties_succeed"/>
+ <field name="parties_failed"/>
</form>
]]>
</field>
diff --git a/setup.py b/setup.py
index f5fa9f6..648ecf8 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@ minor_version = int(minor_version)
requires = []
for dep in info.get('depends', []):
- if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
+ if not re.match(r'(ir|res|webdav)(\W|$)', dep):
requires.append('trytond_%s >= %s.%s, < %s.%s' %
(dep, major_version, minor_version, major_version,
minor_version + 1))
diff --git a/tests/__init__.py b/tests/__init__.py
index 1c2ce41..c9f2b03 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
#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 test_party import suite
+from .test_party import suite
diff --git a/tests/test_party.py b/tests/test_party.py
index 21293a0..358ecdc 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -1,7 +1,8 @@
#!/usr/bin/env python
#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 sys, os
+import sys
+import os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', '..', '..', '..', 'trytond')))
if os.path.isdir(DIR):
@@ -64,7 +65,7 @@ class PartyTestCase(unittest.TestCase):
})
self.assert_(category2_id)
- self.failUnlessRaises(Exception, self.category.write,
+ self.failUnlessRaises(Exception, self.category.write,
category1_id, {
'parent': category2_id,
})
@@ -94,7 +95,7 @@ class PartyTestCase(unittest.TestCase):
'name': 'Party 2',
})
- self.failUnlessRaises(Exception, self.party.write,
+ self.failUnlessRaises(Exception, self.party.write,
party2_id, {
'code': code,
})
@@ -106,13 +107,14 @@ class PartyTestCase(unittest.TestCase):
with Transaction().start(DB_NAME, USER, context=CONTEXT):
party1_id = self.party.search([], limit=1)[0]
- address1_id = self.address.create({
+ self.address.create({
'party': party1_id,
'street': 'St sample, 15',
'city': 'City',
})
self.assert_(party1_id)
+
def suite():
suite = trytond.tests.test_tryton.suite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(PartyTestCase))
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 778dba3..50f41cd 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
Name: trytond-party
-Version: 2.2.1
+Version: 2.4.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.2/
+Download-URL: http://downloads.tryton.org/2.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 0fba1ee..0a18132 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -23,8 +23,10 @@ setup.py
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_ES.po
locale/fr_FR.po
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 37c0d8d..fd49155 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 2.2, < 2.3
-trytond >= 2.2, < 2.3
+trytond_country >= 2.4, < 2.5
+trytond >= 2.4, < 2.5
[VAT]
vatnumber
\ No newline at end of file
commit 83c3075f9561905a7edcdaec887ffe0de1f398eb
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Dec 26 13:35:51 2011 +0100
Adding upstream version 2.2.1.
diff --git a/CHANGELOG b/CHANGELOG
index 40813dc..c200abf 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.2.1 - 2011-12-26
+* Bug fixes (see mercurial logs for details)
+
Version 2.2.0 - 2011-10-24
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index e3584ce..949e835 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond_party
-Version: 2.2.0
+Version: 2.2.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/__tryton__.py b/__tryton__.py
index 50ed7a4..6e2fc81 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -10,7 +10,7 @@
'name_fr_FR': 'Tiers',
'name_nl_NL': 'Relaties',
'name_ru_RU': 'ÐонÑÑагенÑÑ',
- 'version' : '2.2.0',
+ 'version' : '2.2.1',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/tests/test_party.py b/tests/test_party.py
index ba3b974..21293a0 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -41,7 +41,8 @@ class PartyTestCase(unittest.TestCase):
'''
Create category.
'''
- with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ with Transaction().start(DB_NAME, USER,
+ context=CONTEXT) as transaction:
category1_id = self.category.create({
'name': 'Category 1',
})
@@ -52,7 +53,7 @@ class PartyTestCase(unittest.TestCase):
'''
Test category recursion.
'''
- with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
category1_id = self.category.search([
('name', '=', 'Category 1'),
], limit=1)[0]
@@ -72,7 +73,8 @@ class PartyTestCase(unittest.TestCase):
'''
Create party.
'''
- with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ with Transaction().start(DB_NAME, USER,
+ context=CONTEXT) as transaction:
party1_id = self.party.create({
'name': 'Party 1',
})
@@ -83,7 +85,7 @@ class PartyTestCase(unittest.TestCase):
'''
Test party code constraint.
'''
- with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
party1_id = self.party.search([], limit=1)[0]
code = self.party.read(party1_id, ['code'])['code']
@@ -101,7 +103,7 @@ class PartyTestCase(unittest.TestCase):
'''
Create address.
'''
- with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
party1_id = self.party.search([], limit=1)[0]
address1_id = self.address.create({
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 618d9d9..778dba3 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond-party
-Version: 2.2.0
+Version: 2.2.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
commit e57031a48ead280484166dcad29efc77246a2342
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Oct 31 16:20:57 2011 +0100
Adding upstream version 2.2.0.
diff --git a/CHANGELOG b/CHANGELOG
index a4e5381..40813dc 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,4 @@
-Version 2.0.1 - 2011-10-01
+Version 2.2.0 - 2011-10-24
* Bug fixes (see mercurial logs for details)
Version 2.0.0 - 2011-04-27
diff --git a/MANIFEST.in b/MANIFEST.in
index 47da692..44a0685 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,6 +6,6 @@ include CHANGELOG
include LICENSE
include *.xml
include *.odt
-include *.csv
+include locale/*.po
include doc/*
include icons/*
diff --git a/PKG-INFO b/PKG-INFO
index 20dcc7a..e3584ce 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,22 +1,24 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 2.0.1
+Version: 2.2.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
+Classifier: Framework :: Tryton
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: French
@@ -24,7 +26,6 @@ Classifier: Natural Language :: German
Classifier: Natural Language :: Russian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/__tryton__.py b/__tryton__.py
index 892f559..50ed7a4 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -10,7 +10,7 @@
'name_fr_FR': 'Tiers',
'name_nl_NL': 'Relaties',
'name_ru_RU': 'ÐонÑÑагенÑÑ',
- 'version' : '2.0.1',
+ 'version' : '2.2.0',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -35,12 +35,13 @@
'configuration.xml',
],
'translation': [
- 'bg_BG.csv',
- 'de_DE.csv',
- 'es_CO.csv',
- 'es_ES.csv',
- 'fr_FR.csv',
- 'nl_NL.csv',
- 'ru_RU.csv',
+ 'locale/bg_BG.po',
+ 'locale/cs_CZ.po',
+ 'locale/de_DE.po',
+ 'locale/es_CO.po',
+ 'locale/es_ES.po',
+ 'locale/fr_FR.po',
+ 'locale/nl_NL.po',
+ 'locale/ru_RU.po',
],
}
diff --git a/address.py b/address.py
index aeed740..1558f40 100644
--- a/address.py
+++ b/address.py
@@ -2,11 +2,13 @@
#this repository contains the full copyright notices and license terms.
'Address'
from trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Not, Bool, Eval, If, Greater
+from trytond.pyson import Eval, If
+from trytond.pool import Pool
STATES = {
- 'readonly': Not(Bool(Eval('active'))),
-}
+ 'readonly': ~Eval('active'),
+ }
+DEPENDS = ['active']
class Address(ModelSQL, ModelView):
@@ -14,21 +16,21 @@ class Address(ModelSQL, ModelView):
_name = 'party.address'
_description = __doc__
party = fields.Many2One('party.party', 'Party', required=True,
- ondelete='CASCADE', select=1, states={
- 'readonly': If(Not(Bool(Eval('active'))),
- True, Greater(Eval('active_id', 0), 0)),
- })
- name = fields.Char('Name', states=STATES)
- street = fields.Char('Street', states=STATES)
- streetbis = fields.Char('Street (bis)', states=STATES)
+ ondelete='CASCADE', select=1, states={
+ '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)
zip = fields.Char('Zip', change_default=True,
- states=STATES)
- city = fields.Char('City', states=STATES)
+ states=STATES, depends=DEPENDS)
+ city = fields.Char('City', states=STATES, depends=DEPENDS)
country = fields.Many2One('country.country', 'Country',
- on_change=['country', 'subdivision'], states=STATES)
+ on_change=['country', 'subdivision'], states=STATES, depends=DEPENDS)
subdivision = fields.Many2One("country.subdivision",
'Subdivision', domain=[('country', '=', Eval('country'))],
- states=STATES)
+ states=STATES, depends=['active', 'country'])
active = fields.Boolean('Active')
sequence = fields.Integer("Sequence")
full_address = fields.Function(fields.Text('Full Address'),
@@ -110,7 +112,7 @@ class Address(ModelSQL, ModelView):
return super(Address, self).write(ids, vals)
def on_change_country(self, vals):
- subdivision_obj = self.pool.get('country.subdivision')
+ subdivision_obj = Pool().get('country.subdivision')
result = dict((k, vals.get(k, False))
for k in ('country', 'subdivision'))
if vals['subdivision']:
diff --git a/address.xml b/address.xml
index 078f062..d0d0d6d 100644
--- a/address.xml
+++ b/address.xml
@@ -9,15 +9,15 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Addresses">
- <field name="party" select="1"/>
- <field name="name" select="1"/>
- <field name="street" select="2"/>
- <field name="streetbis" select="2"/>
- <field name="zip" select="2"/>
- <field name="city" select="2"/>
- <field name="country" select="1"/>
- <field name="subdivision" select="2"/>
- <field name="active" select="2"/>
+ <field name="party"/>
+ <field name="name"/>
+ <field name="street"/>
+ <field name="streetbis"/>
+ <field name="zip"/>
+ <field name="city"/>
+ <field name="country"/>
+ <field name="subdivision"/>
+ <field name="active"/>
</tree>
]]>
</field>
@@ -74,22 +74,5 @@ 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.action.act_window" id="act_address_form2">
- <field name="name">Addresses</field>
- <field name="res_model">party.address</field>
- </record>
- <record model="ir.action.act_window.view" id="act_address_form2_view1">
- <field name="sequence" eval="10"/>
- <field name="view" ref="address_view_form"/>
- <field name="act_window" ref="act_address_form2"/>
- </record>
- <record model="ir.action.act_window.view" id="act_address_form2_view2">
- <field name="sequence" eval="20"/>
- <field name="view" ref="address_view_tree"/>
- <field name="act_window" ref="act_address_form2"/>
- </record>
- <menuitem name="New Address" parent="menu_address_form"
- action="act_address_form2"
- id="menu_address_form2"/>
</data>
</tryton>
diff --git a/bg_BG.csv b/bg_BG.csv
deleted file mode 100644
index 74c989c..0000000
--- a/bg_BG.csv
+++ /dev/null
@@ -1,130 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,Ðе може да пÑоменÑÑе паÑÑнÑоÑа за адÑеÑ!,0
-error,party.category,0,The name of a party category must be unique by parent!,ÐмеÑо на каÑегоÑиÑÑа на паÑÑнÑоÑа ÑÑÑбва да бÑде Ñникална по ÑодиÑел!,0
-error,party.category,0,You can not create recursive categories!,Ðе може да ÑÑздаваÑе взаимно вложени каÑегоÑии!,0
-error,party.category,0,"You can not use "" / "" in name field!","РимеÑо на полеÑо не може да има "" / ""!",0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES ÑÑлÑгаÑа е недоÑÑÑпна, опиÑайÑе оÑново по-кÑÑно.",0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Ðе може да пÑоменÑÑе паÑÑнÑоÑа за наÑин на конÑакÑ!,0
-error,party.party,0,Invalid VAT number!,Ðевалиден ÐÐС номеÑ!,0
-error,party.party,0,The code of the party must be unique!,Ðода на паÑÑнÑоÑа ÑÑÑбва да е Ñникален!,0
-field,"party.address,active",0,Active,ÐкÑивен,0
-field,"party.address,city",0,City,ÐÑад,0
-field,"party.address,country",0,Country,ÐÑÑжава,0
-field,"party.address,full_address",0,Full Address,ÐÑлен адÑеÑ,0
-field,"party.address,name",0,Name,Ðме,0
-field,"party.address,party",0,Party,ÐаÑÑнÑоÑ,0
-field,"party.address,rec_name",0,Name,Ðме,0
-field,"party.address,sequence",0,Sequence,ÐоÑледоваÑелноÑÑ,0
-field,"party.address,street",0,Street,УлиÑа,0
-field,"party.address,streetbis",0,Street (bis),УлиÑа 2,0
-field,"party.address,subdivision",0,Subdivision,ÐодÑазделение,0
-field,"party.address,zip",0,Zip,ÐоÑ. код,0
-field,"party.category,active",0,Active,ÐкÑивен,0
-field,"party.category,childs",0,Children,ÐеÑа,0
-field,"party.category,name",0,Name,Ðме,0
-field,"party.category,parent",0,Parent,РодиÑел,0
-field,"party.category,rec_name",0,Name,Ðме,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,ÐаÑÑнÑоÑа не е валиден,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Ðалиден паÑÑнÑоÑ,0
-field,"party.configuration,party_lang",0,Party Language,Ðзик на паÑÑнÑоÑ,0
-field,"party.configuration,party_sequence",0,Party Sequence,ÐоÑледоваÑелноÑÑ Ð·Ð° паÑÑнÑоÑ,0
-field,"party.configuration,rec_name",0,Name,Ðме,0
-field,"party.contact_mechanism,active",0,Active,ÐкÑивен,0
-field,"party.contact_mechanism,comment",0,Comment,ÐоменÑаÑ,0
-field,"party.contact_mechanism,email",0,E-Mail,E-Mail,0
-field,"party.contact_mechanism,other_value",0,Value,СÑойноÑÑ,0
-field,"party.contact_mechanism,party",0,Party,ÐаÑÑнÑоÑ,0
-field,"party.contact_mechanism,rec_name",0,Name,Ðме,0
-field,"party.contact_mechanism,sequence",0,Sequence,ÐоÑледоваÑелноÑÑ,0
-field,"party.contact_mechanism,sip",0,SIP,SIP,0
-field,"party.contact_mechanism,skype",0,Skype,Skype,0
-field,"party.contact_mechanism,type",0,Type,Ðид,0
-field,"party.contact_mechanism,value",0,Value,СÑойноÑÑ,0
-field,"party.contact_mechanism,website",0,Website,Website,0
-field,"party.party,active",0,Active,ÐкÑивен,0
-field,"party.party,addresses",0,Addresses,ÐдÑеÑи,0
-field,"party.party,categories",0,Categories,ÐаÑегоÑии,0
-field,"party.party,code",0,Code,Ðод,0
-field,"party.party,code_length",0,Code Length,ÐÑлжина на кода,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,ÐаÑини на конÑакÑ,0
-field,"party.party,email",0,E-Mail,E-Mail,0
-field,"party.party,fax",0,Fax,ФакÑ,0
-field,"party.party,full_name",0,Full Name,ÐÑлно име,0
-field,"party.party,lang",0,Language,Ðзик,0
-field,"party.party,mobile",0,Mobile,Ðобилен,0
-field,"party.party,name",0,Name,Ðме,0
-field,"party.party,phone",0,Phone,ТелеÑон,0
-field,"party.party,rec_name",0,Name,Ðме,0
-field,"party.party,vat_code",0,VAT Code,ÐÐС код,0
-field,"party.party,vat_country",0,VAT Country,ÐÐС дÑÑжава,0
-field,"party.party,vat_number",0,VAT Number,ÐÐС номеÑ,0
-field,"party.party,website",0,Website,Website,0
-field,"party.party-party.category,category",0,Category,ÐаÑегоÑиÑ,0
-field,"party.party-party.category,party",0,Party,ÐаÑÑнÑоÑ,0
-field,"party.party-party.category,rec_name",0,Name,Ðме,0
-help,"party.configuration,party_lang",0,The value set on this field will preset the language on new parties,СÑойноÑÑÑа в Ñова поле Ñе Ñе използва за език пÑи нови паÑÑнÑоÑи.,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ðказвайки дÑÑжава за ÐÐС Ñе позволи да Ñе пÑовеÑи ÐÐС номеÑа.,0
-help,"party.party,vat_number",0,Value Added Tax number,ÐÐС номеÑ,0
-model,"ir.action,name",,Categories,ÐаÑегоÑии,0
-model,"ir.action,name",act_address_form,Addresses,ÐдÑеÑи,0
-model,"ir.action,name",act_address_form2,Addresses,ÐдÑеÑи,0
-model,"ir.action,name",act_category_form,Categories,ÐаÑегоÑии,0
-model,"ir.action,name",act_category_tree,Categories,ÐаÑегоÑии,0
-model,"ir.action,name",act_party_by_category,Parties by Category,ÐаÑнÑоÑи по каÑегоÑиÑ,0
-model,"ir.action,name",act_party_configuration_form,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
-model,"ir.action,name",act_party_form,Parties,ÐаÑÑнÑоÑи,0
-model,"ir.action,name",act_party_form2,Parties,ÐаÑÑнÑоÑи,0
-model,"ir.action,name",report_label,Labels,ÐÑикеÑи,0
-model,"ir.action,name",wizard_check_vies,Check VIES,ÐÑовека в VIES,0
-model,"ir.sequence,name",sequence_party,Party,ÐаÑÑнÑоÑ,0
-model,"ir.sequence.type,name",sequence_type_party,Party,ÐаÑÑнÑоÑ,0
-model,"ir.ui.menu,name",,New category,Ðова каÑегоÑиÑ,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,ÐдÑеÑи,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Ðов адÑеÑ,0
-model,"ir.ui.menu,name",menu_category_form,New Category,Ðова каÑегоÑиÑ,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,ÐаÑегоÑии,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,ÐонÑигÑÑаÑиÑ,0
-model,"ir.ui.menu,name",menu_party,Party Management,УпÑавление на паÑÑнÑоÑ,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
-model,"ir.ui.menu,name",menu_party_form,Parties,ÐаÑÑнÑоÑи,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Ðов паÑÑнÑоÑ,0
-model,"party.address,name",0,Address,ÐдÑеÑ,0
-model,"party.category,name",0,Category,ÐаÑегоÑиÑ,0
-model,"party.check_vies.check,name",0,Check VIES - Check,ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - пÑовеÑка,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - без пÑовеÑка,0
-model,"party.configuration,name",0,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
-model,"party.contact_mechanism,name",0,Contact Mechanism,ÐаÑин на конÑакÑ,0
-model,"party.party,name",0,Party,ÐаÑÑнÑоÑ,0
-model,"party.party-party.category,name",0,Party - Category,ÐаÑÑнÑÐ¾Ñ - ÐаÑегоÑиÑ,0
-model,"res.group,name",group_party_admin,Party Administration,УпÑавление на паÑÑнÑоÑ,0
-selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
-selection,"party.contact_mechanism,type",0,Fax,ФакÑ,0
-selection,"party.contact_mechanism,type",0,IRC,IRC,0
-selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Ðобилен,0
-selection,"party.contact_mechanism,type",0,Other,ÐÑÑг,0
-selection,"party.contact_mechanism,type",0,Phone,ТелеÑон,0
-selection,"party.contact_mechanism,type",0,SIP,SIP,0
-selection,"party.contact_mechanism,type",0,Skype,Skype,0
-selection,"party.contact_mechanism,type",0,Website,Website,0
-view,party.address,0,Addresses,ÐдÑеÑи,0
-view,party.category,0,Categories,ÐаÑегоÑии,0
-view,party.category,0,Category,ÐаÑегоÑиÑ,0
-view,party.check_vies.check,0,Parties Failed,ÐаÑÑнÑоÑа не е валиден,0
-view,party.check_vies.check,0,Parties Succeed,Ðалиден паÑÑнÑоÑ,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,РезÑлÑаÑи Ð¾Ñ Ð¡Ð¸ÑÑема за обмен на инÑиоÑмаÑÐ¸Ñ Ð·Ð° ÐÐС,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,СиÑÑема за обмен на ÐÐС инÑоÑмаÑиÑ,0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","ТÑÑбва да имаÑе инÑÑалиÑана поÑледнаÑа веÑÑÐ¸Ñ Ð½Ð° ""vatnumber""!",0
-view,party.configuration,0,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
-view,party.contact_mechanism,0,Contact Mechanism,ÐаÑин на конÑакÑ,0
-view,party.contact_mechanism,0,Contact Mechanisms,ÐаÑини на конÑакÑ,0
-view,party.party,0,Accounting,СÑеÑоводÑÑво,0
-view,party.party,0,Addresses,ÐдÑеÑи,0
-view,party.party,0,Categories,ÐаÑегоÑии,0
-view,party.party,0,Contact Mechanisms,ÐаÑини на конÑакÑ,0
-view,party.party,0,General,ÐÑновен,0
-view,party.party,0,Parties,ÐаÑÑнÑоÑи,0
-view,party.party,0,Party,ÐаÑÑнÑоÑ,0
-view,party.party,0,VAT,ÐÐС,0
-wizard_button,"party.check_vies,check,end",0,Ok,ÐобÑе,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,ÐобÑе,0
diff --git a/category.py b/category.py
index 1dcae09..5db851b 100644
--- a/category.py
+++ b/category.py
@@ -1,11 +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 trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Not, Bool, Eval
+from trytond.pyson import Eval
STATES = {
- 'readonly': Not(Bool(Eval('active'))),
+ 'readonly': ~Eval('active'),
}
+DEPENDS = ['active']
SEPARATOR = ' / '
@@ -14,11 +15,12 @@ class Category(ModelSQL, ModelView):
"Category"
_name = "party.category"
_description = __doc__
- name = fields.Char('Name', required=True, states=STATES)
+ name = fields.Char('Name', required=True, states=STATES, translate=True,
+ depends=DEPENDS)
parent = fields.Many2One('party.category', 'Parent',
- select=1, states=STATES)
+ select=1, states=STATES, depends=DEPENDS)
childs = fields.One2Many('party.category', 'parent',
- 'Children', states=STATES)
+ 'Children', states=STATES, depends=DEPENDS)
active = fields.Boolean('Active')
def __init__(self):
diff --git a/category.xml b/category.xml
index 12a691f..fe5e162 100644
--- a/category.xml
+++ b/category.xml
@@ -26,7 +26,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Categories" fill="1" keyword_open="1">
- <field name="name" select="1"/>
+ <field name="name"/>
<field name="parent" tree_invisible="1"/>
<field name="childs" tree_invisible="1"/>
</tree>
@@ -40,7 +40,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Categories" fill="1">
- <field name="rec_name" select="1"/>
+ <field name="rec_name"/>
</tree>
]]>
</field>
@@ -81,23 +81,6 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="menu_category_tree" action="act_category_list"
id="menu_category_list"/>
- <record model="ir.action.act_window" id="act_category_form">
- <field name="name">Categories</field>
- <field name="res_model">party.category</field>
- </record>
- <record model="ir.action.act_window.view" id="act_category_form_view1">
- <field name="sequence" eval="10"/>
- <field name="view" ref="category_view_form"/>
- <field name="act_window" ref="act_category_form"/>
- </record>
- <record model="ir.action.act_window.view" id="act_category_form_view2">
- <field name="sequence" eval="20"/>
- <field name="view" ref="category_view_list"/>
- <field name="act_window" ref="act_category_form"/>
- </record>
- <menuitem name="New Category" parent="menu_category_tree"
- action="act_category_form" id="menu_category_form"/>
-
<record model="ir.model.access" id="access_party_category">
<field name="model" search="[('model', '=', 'party.category')]"/>
<field name="perm_read" eval="True"/>
diff --git a/configuration.py b/configuration.py
index 120c090..349842e 100644
--- a/configuration.py
+++ b/configuration.py
@@ -1,7 +1,6 @@
#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 trytond.model import ModelView, ModelSQL, ModelSingleton, fields
-from trytond.pyson import Eval
class Configuration(ModelSingleton, ModelSQL, ModelView):
@@ -10,10 +9,9 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
_description = __doc__
party_sequence = fields.Property(fields.Many2One('ir.sequence',
- 'Party Sequence', domain=[
- ('company', 'in', [Eval('company'), False]),
- ('code', '=', 'party.party'),
- ], required=True))
+ 'Party Sequence', domain=[
+ ('code', '=', 'party.party'),
+ ], required=True))
party_lang = fields.Property(fields.Many2One("ir.lang", 'Party Language',
help=('The value set on this field will preset the language on new '
'parties')))
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 19d1b29..691457e 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -1,11 +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 trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Not, Bool, Eval, Equal, In
+from trytond.pyson import Eval
STATES = {
- 'readonly': Not(Bool(Eval('active'))),
-}
+ 'readonly': ~Eval('active'),
+ }
+DEPENDS = ['active']
_TYPES = [
('phone', 'Phone'),
@@ -28,41 +29,42 @@ class ContactMechanism(ModelSQL, ModelView):
_rec_name = 'value'
type = fields.Selection(_TYPES, 'Type', required=True, states=STATES,
- sort=False)
- value = fields.Char('Value', select=1, states=STATES, on_change=['value'])
- comment = fields.Text('Comment', states=STATES)
+ sort=False, depends=DEPENDS)
+ value = fields.Char('Value', select=1, states=STATES, on_change=['value'],
+ depends=DEPENDS)
+ comment = fields.Text('Comment', states=STATES, depends=DEPENDS)
party = fields.Many2One('party.party', 'Party', required=True,
- ondelete='CASCADE', states=STATES, select=1)
+ ondelete='CASCADE', states=STATES, select=1, depends=DEPENDS)
active = fields.Boolean('Active', select=1)
sequence = fields.Integer('Sequence')
email = fields.Function(fields.Char('E-Mail', states={
- 'invisible': Not(Equal(Eval('type'), 'email')),
- 'required': Equal(Eval('type'), 'email'),
- 'readonly': Not(Bool(Eval('active'))),
+ 'invisible': Eval('type') != 'email',
+ 'required': Eval('type') == 'email',
+ 'readonly': ~Eval('active', True),
}, on_change=['email'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
website = fields.Function(fields.Char('Website', states={
- 'invisible': Not(Equal(Eval('type'), 'website')),
- 'required': Equal(Eval('type'), 'website'),
- 'readonly': Not(Bool(Eval('active'))),
+ 'invisible': Eval('type') != 'website',
+ 'required': Eval('type') == 'website',
+ 'readonly': ~Eval('active', True),
}, on_change=['website'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
skype = fields.Function(fields.Char('Skype',states={
- 'invisible': Not(Equal(Eval('type'), 'skype')),
- 'required': Equal(Eval('type'), 'skype'),
- 'readonly': Not(Bool(Eval('active'))),
+ 'invisible': Eval('type') != 'skype',
+ 'required': Eval('type') == 'skype',
+ 'readonly': ~Eval('active', True),
}, on_change=['skype'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
sip = fields.Function(fields.Char('SIP', states={
- 'invisible': Not(Equal(Eval('type'), 'sip')),
- 'required': Equal(Eval('type'), 'sip'),
- 'readonly': Not(Bool(Eval('active'))),
+ 'invisible': Eval('type') != 'sip',
+ 'required': Eval('type') == 'sip',
+ 'readonly': ~Eval('active', True),
}, on_change=['sip'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
other_value = fields.Function(fields.Char('Value', states={
- 'invisible': In(Eval('type'), ['email', 'website', 'skype', 'sip']),
- 'required': Not(In(Eval('type'), ['email', 'website'])),
- 'readonly': Not(Bool(Eval('active'))),
+ 'invisible': Eval('type').in_(['email', 'website', 'skype', 'sip']),
+ 'required': ~Eval('type').in_(['email', 'website']),
+ 'readonly': ~Eval('active', True),
}, on_change=['other_value'], depends=['value', 'type', 'active']),
'get_value', setter='set_value')
diff --git a/contact_mechanism.xml b/contact_mechanism.xml
index cbf2f6c..e36f43a 100644
--- a/contact_mechanism.xml
+++ b/contact_mechanism.xml
@@ -10,9 +10,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Contact Mechanisms">
- <field name="party" select="1"/>
- <field name="type" select="1"/>
- <field name="value" select="1"/>
+ <field name="party"/>
+ <field name="type"/>
+ <field name="value"/>
</tree>
]]>
</field>
diff --git a/de_DE.csv b/de_DE.csv
deleted file mode 100644
index e694ed9..0000000
--- a/de_DE.csv
+++ /dev/null
@@ -1,182 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,Die Partei einer Adresse kann nicht geändert werden!,0
-error,party.category,0,The name of a party category must be unique by parent!,Der Name einer Parteikategorie kann pro Ãbergeordneter Partei nur einmal vergeben werden!,0
-error,party.category,0,You can not create recursive categories!,Kategorien können nicht rekursiv angelegt werden!,0
-error,party.category,0,"You can not use "" / "" in name field!","In dem Namensfeld kann "" / "" nicht verwendet werden!",0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!",0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!,0
-error,party.party,0,Invalid VAT number!,Ungültige USt-ID-Nummer!,0
-error,party.party,0,The code of the party must be unique!,Der Name einer Partei kann nur einmal vergeben werden!,0
-field,"party.address,active",0,Active,Aktiv,0
-field,"party.address,city",0,City,Stadt,0
-field,"party.address,country",0,Country,Staat,0
-field,"party.address,create_date",0,Creation date,Erstellungsdatum,0
-field,"party.address,create_uid",0,Creation user,Ersteller,0
-field,"party.address,full_address",0,Full Address,Vollständige Adresse,0
-field,"party.address,id",0,ID,ID,0
-field,"party.address,name",0,Name,Name,0
-field,"party.address,party",0,Party,Partei,0
-field,"party.address,rec_name",0,Name,Name,0
-field,"party.address,sequence",0,Sequence,Reihenfolge,0
-field,"party.address,street",0,Street,Anschrift 1,0
-field,"party.address,streetbis",0,Street (bis),Anschrift 2,0
-field,"party.address,subdivision",0,Subdivision,Subnationale Einheit,0
-field,"party.address,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"party.address,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"party.address,zip",0,Zip,Postleitzahl,0
-field,"party.category,active",0,Active,Aktiv,0
-field,"party.category,childs",0,Children,Untergeordnet (Kategorien),0
-field,"party.category,create_date",0,Creation date,Erstellungsdatum,0
-field,"party.category,create_uid",0,Creation user,Ersteller,0
-field,"party.category,id",0,ID,ID,0
-field,"party.category,name",0,Name,Kategorie Name,0
-field,"party.category,parent",0,Parent,Ãbergeordnet (Kategorie),0
-field,"party.category,rec_name",0,Name,Name,0
-field,"party.category,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"party.category,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,Parteien mit fehlgeschlagener Ãberprüfung,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Parteien mit erfolgreicher Ãberprüfung,0
-field,"party.configuration,party_lang",0,Party Language,Sprache Partei,0
-field,"party.configuration,party_sequence",0,Party Sequence,Nummernkreis Partei,0
-field,"party.configuration,rec_name",0,Name,Name,0
-field,"party.contact_mechanism,active",0,Active,Aktiv,0
-field,"party.contact_mechanism,comment",0,Comment,Kommentar,0
-field,"party.contact_mechanism,email",0,E-Mail,E-Mail,0
-field,"party.contact_mechanism,other_value",0,Value,Wert,0
-field,"party.contact_mechanism,party",0,Party,Partei,0
-field,"party.contact_mechanism,rec_name",0,Name,Name,0
-field,"party.contact_mechanism,sequence",0,Sequence,Reihenfolge,0
-field,"party.contact_mechanism,sip",0,SIP,SIP,0
-field,"party.contact_mechanism,skype",0,Skype,Skype,0
-field,"party.contact_mechanism,type",0,Type,Typ,0
-field,"party.contact_mechanism,value",0,Value,Wert,0
-field,"party.contact_mechanism,website",0,Website,Homepage,0
-field,"party.party,active",0,Active,Aktiv,0
-field,"party.party,addresses",0,Addresses,Adressen,0
-field,"party.party,categories",0,Categories,Kategorien,0
-field,"party.party,code",0,Code,Code Partei,0
-field,"party.party,code_length",0,Code Length,Code Länge,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,Kontaktmöglichkeiten,0
-field,"party.party,create_date",0,Creation date,Erstellungsdatum,0
-field,"party.party,create_uid",0,Creation user,Ersteller,0
-field,"party.party,email",0,E-Mail,E-Mail,0
-field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,Full Name,Vollständiger Name,0
-field,"party.party,id",0,ID,ID,0
-field,"party.party,lang",0,Language,Sprache,0
-field,"party.party,mobile",0,Mobile,Mobiltelefon,0
-field,"party.party,name",0,Name,Name,0
-field,"party.party,phone",0,Phone,Telefon,0
-field,"party.party,rec_name",0,Name,Name,0
-field,"party.party,vat_code",0,VAT Code,USt-ID-Nr.,0
-field,"party.party,vat_country",0,VAT Country,USt-ID Präfix,0
-field,"party.party,vat_number",0,VAT Number,USt-ID-Nr.,0
-field,"party.party,website",0,Website,Website,0
-field,"party.party,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"party.party,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"party.party-party.category,category",0,Category,Kategorie,0
-field,"party.party-party.category,party",0,Party,Partei,0
-field,"party.party-party.category,rec_name",0,Name,Name,0
-help,"party.configuration,party_lang",0,The value set on this field will preset the language on new parties,Ein Wert in diesem Feld dient als Voreinstellung für die Sprache von neu angelegten Parteien,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ein Eintrag in USt-ID-Präfix aktiviert die Ãberprüfung der USt-ID-Nr.,0
-help,"party.party,vat_number",0,Value Added Tax number,Umsatzsteueridentifikationsnummer,0
-model,"ir.action,name",act_address_form,Addresses,Adressen,0
-model,"ir.action,name",act_address_form2,Addresses,Adressen,0
-model,"ir.action,name",act_category_form,Categories,Kategorien,0
-model,"ir.action,name",act_category_list,Categories,Kategorien,0
-model,"ir.action,name",act_category_tree,Categories,Kategorien,0
-model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach Kategorie,0
-model,"ir.action,name",act_party_configuration_form,Party Configuration,Einstellungen Partei,0
-model,"ir.action,name",act_party_form,Parties,Parteien,0
-model,"ir.action,name",act_party_form2,Parties,Parteien,0
-model,"ir.action,name",report_label,Labels,Etiketten,0
-model,"ir.action,name",wizard_check_vies,Check VIES,USt-ID-Nr. per VIES überprüfen,0
-model,"ir.sequence,name",sequence_party,Party,Partei,0
-model,"ir.sequence.type,name",sequence_type_party,Party,Partei,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Neue Adresse,0
-model,"ir.ui.menu,name",menu_category_form,New Category,Neue Parteikategorie,0
-model,"ir.ui.menu,name",menu_category_list,Categories,Kategorien,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,Parteikategorien,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Einstellungen,0
-model,"ir.ui.menu,name",menu_party,Party Management,Parteien,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Einstellungen Partei,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Parteien,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Neue Partei,0
-model,"party.address,name",0,Address,Adresse,0
-model,"party.category,name",0,Category,Kategorie,0
-model,"party.check_vies.check,name",0,Check VIES - Check,Ãberprüfung VIES - Durchführen,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,Ãberprüfung VIES - Nicht durchführen,0
-model,"party.configuration,name",0,Party Configuration,Einstellungen Partei,0
-model,"party.contact_mechanism,name",0,Contact Mechanism,Kontaktmöglichkeit,0
-model,"party.party,name",0,Party,Partei,0
-model,"party.party-party.category,name",0,Party - Category,Partei - Parteikategorie,0
-model,"res.group,name",group_party_admin,Party Administration,Parteien Administration,0
-selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
-selection,"party.contact_mechanism,type",0,Fax,Fax,0
-selection,"party.contact_mechanism,type",0,IRC,IRC,0
-selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Mobiltelefon,0
-selection,"party.contact_mechanism,type",0,Other,Anderer Kontakt,0
-selection,"party.contact_mechanism,type",0,Phone,Telefon,0
-selection,"party.contact_mechanism,type",0,SIP,SIP,0
-selection,"party.contact_mechanism,type",0,Skype,Skype,0
-selection,"party.contact_mechanism,type",0,Website,Homepage,0
-selection,"party.party,vat_country",0,,,0
-selection,"party.party,vat_country",0,AL,AL,0
-selection,"party.party,vat_country",0,AT,AT,0
-selection,"party.party,vat_country",0,BE,BE,0
-selection,"party.party,vat_country",0,BG,BG,0
-selection,"party.party,vat_country",0,CY,CY,0
-selection,"party.party,vat_country",0,CZ,CZ,0
-selection,"party.party,vat_country",0,DE,DE,0
-selection,"party.party,vat_country",0,DK,DK,0
-selection,"party.party,vat_country",0,EE,EE,0
-selection,"party.party,vat_country",0,EL,EL,0
-selection,"party.party,vat_country",0,ES,ES,0
-selection,"party.party,vat_country",0,FI,FI,0
-selection,"party.party,vat_country",0,FR,FR,0
-selection,"party.party,vat_country",0,GB,GB,0
-selection,"party.party,vat_country",0,GR,GR,0
-selection,"party.party,vat_country",0,HU,HU,0
-selection,"party.party,vat_country",0,IE,IE,0
-selection,"party.party,vat_country",0,IT,IT,0
-selection,"party.party,vat_country",0,LT,LT,0
-selection,"party.party,vat_country",0,LU,LU,0
-selection,"party.party,vat_country",0,LV,LV,0
-selection,"party.party,vat_country",0,MT,MT,0
-selection,"party.party,vat_country",0,NL,NL,0
-selection,"party.party,vat_country",0,PL,PL,0
-selection,"party.party,vat_country",0,PT,PT,0
-selection,"party.party,vat_country",0,RO,RO,0
-selection,"party.party,vat_country",0,SE,SE,0
-selection,"party.party,vat_country",0,SI,SI,0
-selection,"party.party,vat_country",0,SK,SK,0
-selection,"party.party,vat_country",0,SM,SM,0
-selection,"party.party,vat_country",0,UA,UA,0
-selection,"party.party,vat_country",0,UK,UK,0
-view,party.address,0,Addresses,Adressen,0
-view,party.category,0,Categories,Kategorien,0
-view,party.category,0,Category,Kategorie,0
-view,party.check_vies.check,0,Parties Failed,Parteien mit fehlgeschlagener Ãberprüfung,0
-view,party.check_vies.check,0,Parties Succeed,Parteien mit erfolgreicher Ãberprüfung,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,Ergebnisse des Ãberprüfungssystems für USt-ID-Nummern (VIES),0
-view,party.check_vies.no_check,0,VAT Information Exchange System,Ãberprüfungssystem für USt-ID-Nummern (VIES),0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Es muss eine aktuelle Version des Python-Moduls ""vatnumber"" installiert sein!",0
-view,party.configuration,0,Party Configuration,Einstellungen Partei,0
-view,party.contact_mechanism,0,Contact Mechanism,Kontaktmöglichkeit,0
-view,party.contact_mechanism,0,Contact Mechanisms,Kontaktmöglichkeiten,0
-view,party.party,0,Account,Konten,0
-view,party.party,0,Accounting,Buchhaltung,0
-view,party.party,0,Addresses,Adressen,0
-view,party.party,0,Categories,Kategorien,0
-view,party.party,0,Contact Mechanism,Kontaktmöglichkeit,0
-view,party.party,0,Contact Mechanisms,Kontaktmöglichkeiten,0
-view,party.party,0,General,Allgemein,0
-view,party.party,0,Parties,Parteien,0
-view,party.party,0,Party,Partei,0
-view,party.party,0,VAT,USt,0
-view,party.party,0,_Accounting,_Buchhaltung,0
-view,party.party,0,_General,_Allgemein,0
-wizard_button,"party.check_vies,check,end",0,Ok,OK,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,OK,0
diff --git a/es_CO.csv b/es_CO.csv
deleted file mode 100644
index 5986e01..0000000
--- a/es_CO.csv
+++ /dev/null
@@ -1,131 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección!,0
-error,party.category,0,The name of a party category must be unique by parent!,,0
-error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas!,0
-error,party.category,0,"You can not use "" / "" in name field!",,0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, intente más tarde.",0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,¡No puede modificar un tercero de un mecanismo de contacto!,0
-error,party.party,0,Invalid VAT number!,¡Número inválido!,0
-field,"party.address,active",0,Active,Activo,0
-field,"party.address,city",0,City,Ciudad,0
-field,"party.address,country",0,Country,PaÃs,0
-field,"party.address,full_address",0,,,0
-field,"party.address,name",0,Name,Nombre de Contacto,0
-field,"party.address,party",0,Party,Tercero,0
-field,"party.address,rec_name",0,Name,Nombre,0
-field,"party.address,sequence",0,Sequence,Secuencia,0
-field,"party.address,street",0,Street,Calle,0
-field,"party.address,streetbis",0,Street (bis),Calle (bis),0
-field,"party.address,subdivision",0,Subdivision,Subdivisión,0
-field,"party.address,zip",0,Zip,Código postal,0
-field,"party.category,active",0,Active,Activo,0
-field,"party.category,childs",0,Children,Hij at s,0
-field,"party.category,name",0,Name,Nombre,0
-field,"party.category,parent",0,Parent,Padre,0
-field,"party.category,rec_name",0,Name,Nombre,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,Los terceros fallaron,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Terceros válidos,0
-field,"party.configuration,party_sequence",0,Party Reference Sequence,,0
-field,"party.configuration,rec_name",0,Name,Nombre de Contacto,1
-field,"party.contact_mechanism,active",0,Active,Activo,0
-field,"party.contact_mechanism,comment",0,Comment,Comentario,0
-field,"party.contact_mechanism,email",0,E-Mail,Correo electrónico,0
-field,"party.contact_mechanism,other_value",0,Value,Valor,0
-field,"party.contact_mechanism,party",0,Party,Tercero,0
-field,"party.contact_mechanism,rec_name",0,Name,Nombre,0
-field,"party.contact_mechanism,sequence",0,Sequence,Secuencia,0
-field,"party.contact_mechanism,sip",0,SIP,SIP,0
-field,"party.contact_mechanism,skype",0,Skype,Skype,0
-field,"party.contact_mechanism,type",0,Type,Tipo,0
-field,"party.contact_mechanism,value",0,Value,Valor,0
-field,"party.contact_mechanism,website",0,Website,Sitio Web,0
-field,"party.party,active",0,Active,Activo,0
-field,"party.party,addresses",0,Addresses,Direcciones,0
-field,"party.party,categories",0,Categories,CategorÃas,0
-field,"party.party,code",0,Code,Código,0
-field,"party.party,code_length",0,Code Length,Longitud del Código,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,Mecanismos de contacto,0
-field,"party.party,email",0,E-Mail,Correo electrónico,0
-field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,,,0
-field,"party.party,lang",0,Language,Idioma,0
-field,"party.party,mobile",0,Mobile,Celular,0
-field,"party.party,name",0,Name,Nombre,0
-field,"party.party-party.category,category",0,Category,CategorÃa,0
-field,"party.party-party.category,party",0,Party,Tercero,0
-field,"party.party-party.category,rec_name",0,Name,Nombre,0
-field,"party.party,phone",0,Phone,Teléfono,0
-field,"party.party,rec_name",0,Name,Nombre,0
-field,"party.party,vat_code",0,VAT Code,Código de IVA,0
-field,"party.party,vat_country",0,VAT Country,PaÃs,0
-field,"party.party,vat_number",0,VAT Number,Número,0
-field,"party.party,website",0,Website,Sitio Web,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el paÃs se habilitará la verificación del NIT.,0
-help,"party.party,vat_number",0,Value Added Tax number,Número de Impuesto de Valor Agregado,0
-model,"ir.action,name",act_address_form,Addresses,Direcciones,0
-model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
-model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
-model,"ir.action,name",act_category_form,Categories,CategorÃas,0
-model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
-model,"ir.action,name",wizard_check_vies,Check VIES,Revisar VIES,0
-model,"ir.action,name",report_label,Labels,Etiquetas,0
-model,"ir.action,name",act_party_form,Parties,Terceros,0
-model,"ir.action,name",act_party_form2,Parties,Terceros,0
-model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por CategorÃa,0
-model,"ir.action,name",act_party_configuration_form,Party Configuration,,0
-model,"ir.sequence,name",sequence_party,Party,Tercero,0
-model,"ir.sequence.type,name",sequence_type_party,Party,Tercero,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,Direcciones,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,CategorÃas,0
-model,"ir.ui.menu,name",menu_category_form,Categories,CategorÃas,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Configuración,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva Dirección,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Nueva CategorÃa,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo Tercero,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Terceros,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,,0
-model,"ir.ui.menu,name",menu_party,Party Management,Gestión de Terceros,0
-model,"party.address,name",0,Address,Dirección,0
-model,"party.category,name",0,Category,CategorÃa,0
-model,"party.check_vies.check,name",0,Check VIES - Check,Revisar VIES - Revisar,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,Revisar VIES - NO revisar,0
-model,"party.configuration,name",0,party.configuration,,0
-model,"party.contact_mechanism,name",0,Contact Mechanism,Mecanismo de contacto,0
-model,"party.party,name",0,Party,Tercero,0
-model,"party.party-party.category,name",0,Party - Category,Tercero - CategorÃa,0
-model,"res.group,name",group_party_admin,Party Administration,Terceros,0
-selection,"party.contact_mechanism,type",0,E-Mail,Correo electrónico,0
-selection,"party.contact_mechanism,type",0,Fax,Fax,0
-selection,"party.contact_mechanism,type",0,IRC,Chat,0
-selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Celular,0
-selection,"party.contact_mechanism,type",0,Other,Otro,0
-selection,"party.contact_mechanism,type",0,Phone,Teléfono,0
-selection,"party.contact_mechanism,type",0,SIP,SIP,0
-selection,"party.contact_mechanism,type",0,Skype,Skype,0
-selection,"party.contact_mechanism,type",0,Website,Sitio Web,0
-selection,"party.party,vat_country",0,,,0
-view,party.address,0,Addresses,Direcciones,0
-view,party.category,0,Categories,CategorÃas,0
-view,party.category,0,Category,CategorÃa,0
-view,party.check_vies.check,0,Parties Failed,Los terceros fallaron,0
-view,party.check_vies.check,0,Parties Succeed,Los terceros fueron válidos,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado de Sistema de Información de intercambio IVA,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de Información de Intercambio IVA,0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Debe tener una versión reciente de ""vatnumber"" instalada!",0
-view,party.configuration,0,Party Configuration,,0
-view,party.contact_mechanism,0,Contact Mechanism,Mecanismo de contacto,0
-view,party.contact_mechanism,0,Contact Mechanisms,Mecanismos de contacto,0
-view,party.party,0,Account,Cuenta,0
-view,party.party,0,Accounting,Contabilidad,0
-view,party.party,0,Addresses,Direcciones,0
-view,party.party,0,Categories,CategorÃas,0
-view,party.party,0,Contact Mechanism,Mecanismo de contacto,0
-view,party.party,0,Contact Mechanisms,Mecanismos de contacto,0
-view,party.party,0,General,General,0
-view,party.party,0,_General,_General,0
-view,party.party,0,Parties,Terceros,0
-view,party.party,0,Party,Tercero,0
-view,party.party,0,VAT,IVA,0
-wizard_button,"party.check_vies,check,end",0,Ok,Aceptar,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,Aceptar,0
diff --git a/es_ES.csv b/es_ES.csv
deleted file mode 100644
index 1148d1d..0000000
--- a/es_ES.csv
+++ /dev/null
@@ -1,154 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección,0
-error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas,0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, inténtelo de nuevo más tarde",0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,No puede modificar el tercero de un médio de contacto,0
-error,party.party,0,Invalid VAT number!,El NIF no es válido,0
-error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único,0
-field,"party.address,active",0,Active,Activo,0
-field,"party.address,city",0,City,Ciudad,0
-field,"party.address,country",0,Country,PaÃs,0
-field,"party.address,full_address",0,,,0
-field,"party.address,name",0,Name,Contacto,0
-field,"party.address,party",0,Party,Tercero,0
-field,"party.address,rec_name",0,Name,Contacto,0
-field,"party.address,sequence",0,Sequence,Secuencia,0
-field,"party.address,street",0,Street,Calle,0
-field,"party.address,streetbis",0,Street (bis),Calle (bis),0
-field,"party.address,subdivision",0,Subdivision,Subdivisión,0
-field,"party.address,zip",0,Zip,Código postal,0
-field,"party.category,active",0,Active,Activo,0
-field,"party.category,childs",0,Children,Hijos,0
-field,"party.category,name",0,Name,Nombre,0
-field,"party.category,parent",0,Parent,Padre,0
-field,"party.category,rec_name",0,Name,Nombre,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,Terceros rechazados,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Terceros aceptados,0
-field,"party.contact_mechanism,active",0,Active,Activo,0
-field,"party.contact_mechanism,comment",0,Comment,Comentario,0
-field,"party.contact_mechanism,email",0,E-Mail,Correo electrónico,0
-field,"party.contact_mechanism,other_value",0,Value,Valor,0
-field,"party.contact_mechanism,party",0,Party,Tercero,0
-field,"party.contact_mechanism,rec_name",0,Name,Nombre,0
-field,"party.contact_mechanism,sequence",0,Sequence,Secuencia,0
-field,"party.contact_mechanism,sip",0,SIP,SIP,0
-field,"party.contact_mechanism,skype",0,Skype,Skype,0
-field,"party.contact_mechanism,type",0,Type,Tipo,0
-field,"party.contact_mechanism,value",0,Value,Valor,0
-field,"party.contact_mechanism,website",0,Website,Sitio Web,0
-field,"party.party,active",0,Active,Activo,0
-field,"party.party,addresses",0,Addresses,Direcciones,0
-field,"party.party,categories",0,Categories,CategorÃas,0
-field,"party.party,code",0,Code,Código,0
-field,"party.party,code_length",0,Code Length,DÃgitos del código,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,Médios de contacto,0
-field,"party.party,email",0,E-Mail,Correo electrónico,0
-field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,,,0
-field,"party.party,lang",0,Language,Idioma,0
-field,"party.party,mobile",0,Mobile,Móvil,0
-field,"party.party,name",0,Name,Nombre,0
-field,"party.party-party.category,category",0,Category,CategorÃa,0
-field,"party.party-party.category,party",0,Party,Tercero,0
-field,"party.party-party.category,rec_name",0,Name,Nombre,0
-field,"party.party,phone",0,Phone,Teléfono,0
-field,"party.party,rec_name",0,Name,Nombre,0
-field,"party.party,vat_code",0,VAT Code,NIF,0
-field,"party.party,vat_country",0,VAT Country,PaÃs del NIF,0
-field,"party.party,vat_number",0,VAT Number,NIF,0
-field,"party.party,website",0,Website,Sitio Web,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el paÃs del NIF se habilitará la verificación de dicho número.,0
-help,"party.party,vat_number",0,Value Added Tax number,Número de identificación fiscal,0
-model,"ir.action,name",act_address_form,Addresses,Direcciones,0
-model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
-model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
-model,"ir.action,name",act_category_form,Categories,CategorÃas,0
-model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
-model,"ir.action,name",wizard_check_vies,Check VIES,Comprobar VIES,0
-model,"ir.action,name",report_label,Labels,Etiquetas,0
-model,"ir.action,name",act_party_form,Parties,Terceros,0
-model,"ir.action,name",act_party_form2,Parties,Terceros,0
-model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por categorÃa,0
-model,"ir.sequence,name",sequence_party,Party,Tercero,0
-model,"ir.sequence.type,name",sequence_type_party,Party,Tercero,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,Direcciones,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,CategorÃas,0
-model,"ir.ui.menu,name",menu_category_form,Categories,CategorÃas,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Configuración,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva dirección,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Nueva categorÃa,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo tercero,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Terceros,0
-model,"ir.ui.menu,name",menu_party,Party Management,Gestión de terceros,0
-model,"party.address,name",0,Address,Dirección,0
-model,"party.category,name",0,Category,CategorÃa,0
-model,"party.check_vies.check,name",0,Check VIES - Check,Comprobación VIES - Comprobar,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,Comprobación VIES - No comprobar,0
-model,"party.contact_mechanism,name",0,Contact Mechanism,Médio de contacto,0
-model,"party.party,name",0,Party,Tercero,0
-model,"party.party-party.category,name",0,Party - Category,Tercero - CategorÃa,0
-model,"res.group,name",group_party_admin,Party Administration,Administración de terceros,0
-selection,"party.contact_mechanism,type",0,E-Mail,Correo electrónico,0
-selection,"party.contact_mechanism,type",0,Fax,Fax,0
-selection,"party.contact_mechanism,type",0,IRC,IRC,0
-selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Móvil,0
-selection,"party.contact_mechanism,type",0,Other,Otro,0
-selection,"party.contact_mechanism,type",0,Phone,Teléfono,0
-selection,"party.contact_mechanism,type",0,SIP,SIP,0
-selection,"party.contact_mechanism,type",0,Skype,Skype,0
-selection,"party.contact_mechanism,type",0,Website,Sitio Web,0
-selection,"party.party,vat_country",0,AL,AL,0
-selection,"party.party,vat_country",0,AT,AT,0
-selection,"party.party,vat_country",0,BE,BE,0
-selection,"party.party,vat_country",0,BG,BG,0
-selection,"party.party,vat_country",0,CY,CY,0
-selection,"party.party,vat_country",0,CZ,CZ,0
-selection,"party.party,vat_country",0,DE,DE,0
-selection,"party.party,vat_country",0,DK,DK,0
-selection,"party.party,vat_country",0,EE,EE,0
-selection,"party.party,vat_country",0,EL,EL,0
-selection,"party.party,vat_country",0,ES,ES,0
-selection,"party.party,vat_country",0,FI,FI,0
-selection,"party.party,vat_country",0,FR,FR,0
-selection,"party.party,vat_country",0,GB,GB,0
-selection,"party.party,vat_country",0,GR,GR,0
-selection,"party.party,vat_country",0,HU,HU,0
-selection,"party.party,vat_country",0,IE,IE,0
-selection,"party.party,vat_country",0,IT,IT,0
-selection,"party.party,vat_country",0,LT,LT,0
-selection,"party.party,vat_country",0,LU,LU,0
-selection,"party.party,vat_country",0,LV,LV,0
-selection,"party.party,vat_country",0,MT,MT,0
-selection,"party.party,vat_country",0,NL,NL,0
-selection,"party.party,vat_country",0,PL,PL,0
-selection,"party.party,vat_country",0,PT,PT,0
-selection,"party.party,vat_country",0,RO,RO,0
-selection,"party.party,vat_country",0,SE,SE,0
-selection,"party.party,vat_country",0,SI,SI,0
-selection,"party.party,vat_country",0,SK,SK,0
-selection,"party.party,vat_country",0,SM,SM,0
-selection,"party.party,vat_country",0,UA,UA,0
-selection,"party.party,vat_country",0,UK,UK,0
-view,party.address,0,Addresses,Direcciones,0
-view,party.category,0,Categories,CategorÃas,0
-view,party.category,0,Category,CategorÃa,0
-view,party.check_vies.check,0,Parties Failed,Terceros rechazados,0
-view,party.check_vies.check,0,Parties Succeed,Terceros aceptados,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado del sistema de intercambio de información de IVA,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de intercambio de información de IVA,0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!",Necesita instalar una versión más actualizada de «vatnumber»,0
-view,party.contact_mechanism,0,Contact Mechanism,Médio de contacto,0
-view,party.contact_mechanism,0,Contact Mechanisms,Médios de contacto,0
-view,party.party,0,Account,Cuenta,0
-view,party.party,0,Accounting,Contabilidad,0
-view,party.party,0,Addresses,Direcciones,0
-view,party.party,0,Categories,CategorÃas,0
-view,party.party,0,Contact Mechanisms,Médios de contacto,0
-view,party.party,0,General,General,0
-view,party.party,0,_General,_General,0
-view,party.party,0,Parties,Terceros,0
-view,party.party,0,Party,Tercero,0
-view,party.party,0,VAT,NIF,0
-wizard_button,"party.check_vies,check,end",0,Ok,Aceptar,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,Aceptar,0
diff --git a/fr_FR.csv b/fr_FR.csv
deleted file mode 100644
index ee5f9de..0000000
--- a/fr_FR.csv
+++ /dev/null
@@ -1,134 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,Vous ne pouvez pas modifier le tiers d'une addresse !,0
-error,party.category,0,The name of a party category must be unique by parent!,Le nom d'une catégorie de tiers doit être unique pour un même parent !,0
-error,party.category,0,You can not create recursive categories!,Vous ne pouvez pas créer des catégories récursives !,0
-error,party.category,0,"You can not use "" / "" in name field!","Vous ne pouvez pas utiliser "" / "" dans le champ Nom !",0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.","Le service VIES n'est pas disponible, veuillez essayer plus tard.",0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Vous ne pouvez pas modifiez le tiers d'un moyen de contact.,0
-error,party.party,0,Invalid VAT number!,Numéro TVA non valide !,0
-error,party.party,0,The code of the party must be unique!,Le code du tiers doit être unique !,0
-field,"party.address,active",0,Active,Actif,0
-field,"party.address,city",0,City,Ville,0
-field,"party.address,country",0,Country,Pays,0
-field,"party.address,full_address",0,Full Address,Adresse complète,0
-field,"party.address,name",0,Name,Nom,0
-field,"party.address,party",0,Party,Tiers,0
-field,"party.address,rec_name",0,Name,Nom,0
-field,"party.address,sequence",0,Sequence,Séquence,0
-field,"party.address,street",0,Street,Rue,0
-field,"party.address,streetbis",0,Street (bis),Rue (bis),0
-field,"party.address,subdivision",0,Subdivision,Subdivision,0
-field,"party.address,zip",0,Zip,Code Postal,0
-field,"party.category,active",0,Active,Actif,0
-field,"party.category,childs",0,Children,Enfants,0
-field,"party.category,name",0,Name,Nom,0
-field,"party.category,parent",0,Parent,Parent,0
-field,"party.category,rec_name",0,Name,Nom,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,Tiers non validés,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Tiers validés,0
-field,"party.configuration,party_lang",0,Party Language,Langue du tiers,1
-field,"party.configuration,party_sequence",0,Party Sequence,Séquence des tiers,0
-field,"party.configuration,rec_name",0,Name,Nom,0
-field,"party.contact_mechanism,active",0,Active,Actif,0
-field,"party.contact_mechanism,comment",0,Comment,Commentaire,0
-field,"party.contact_mechanism,email",0,E-Mail,E-mail,0
-field,"party.contact_mechanism,other_value",0,Value,Valeur,0
-field,"party.contact_mechanism,party",0,Party,Tiers,0
-field,"party.contact_mechanism,rec_name",0,Name,Nom,0
-field,"party.contact_mechanism,sequence",0,Sequence,Séquence,0
-field,"party.contact_mechanism,sip",0,SIP,SIP,0
-field,"party.contact_mechanism,skype",0,Skype,Skype,0
-field,"party.contact_mechanism,type",0,Type,Type,0
-field,"party.contact_mechanism,value",0,Value,Valeur,0
-field,"party.contact_mechanism,website",0,Website,Site web,0
-field,"party.party,active",0,Active,Actif,0
-field,"party.party,addresses",0,Addresses,Adresses,0
-field,"party.party,categories",0,Categories,Catégories,0
-field,"party.party,code",0,Code,Code,0
-field,"party.party,code_length",0,Code Length,Longueur du code,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,Moyens de contact,0
-field,"party.party,email",0,E-Mail,E-Mail,0
-field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,Full Name,Nom complet,0
-field,"party.party,lang",0,Language,Langue,0
-field,"party.party,mobile",0,Mobile,Mobile,0
-field,"party.party,name",0,Name,Nom,0
-field,"party.party,phone",0,Phone,Téléphone,0
-field,"party.party,rec_name",0,Name,Nom,0
-field,"party.party,vat_code",0,VAT Code,Code TVA,0
-field,"party.party,vat_country",0,VAT Country,Code Pays TVA,0
-field,"party.party,vat_number",0,VAT Number,Numéro de TVA,0
-field,"party.party,website",0,Website,Site web,0
-field,"party.party-party.category,category",0,Category,Catégorie,0
-field,"party.party-party.category,party",0,Party,Tiers,0
-field,"party.party-party.category,rec_name",0,Name,Nom,0
-help,"party.configuration,party_lang",0,The value set on this field will preset the language on new parties,La valeur de ce champs sera la valeur par défaut pour la langue des nouveaux tiers,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ajouter un code pays TVA activera la vérification du numéro de TVA.,0
-help,"party.party,vat_number",0,Value Added Tax number,Numéro de taxe sur la valeur ajoutée,0
-model,"ir.action,name",act_address_form,Addresses,Adresses,0
-model,"ir.action,name",act_address_form2,Addresses,Adresses,0
-model,"ir.action,name",act_category_form,Categories,Catégories,0
-model,"ir.action,name",act_category_list,Categories,Catégories,1
-model,"ir.action,name",act_category_tree,Categories,Catégories,0
-model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
-model,"ir.action,name",act_party_configuration_form,Party Configuration,Configuration des relations,0
-model,"ir.action,name",act_party_form,Parties,Tiers,0
-model,"ir.action,name",act_party_form2,Parties,Tiers,0
-model,"ir.action,name",report_label,Labels,Ãtiquettes,0
-model,"ir.action,name",wizard_check_vies,Check VIES,Validation VIES,0
-model,"ir.sequence,name",sequence_party,Party,Tiers,0
-model,"ir.sequence.type,name",sequence_type_party,Party,Tiers,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,Adresses,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Nouvelle adresse,0
-model,"ir.ui.menu,name",menu_category_form,New Category,Nouvelle catégorie,0
-model,"ir.ui.menu,name",menu_category_list,Categories,Catégories,1
-model,"ir.ui.menu,name",menu_category_tree,Categories,Catégories,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Configuration,0
-model,"ir.ui.menu,name",menu_party,Party Management,Gestion des relations,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Configuration des relations,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Tiers,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Nouveau tiers,0
-model,"party.address,name",0,Address,Adresse,0
-model,"party.category,name",0,Category,Catégorie,0
-model,"party.check_vies.check,name",0,Check VIES - Check,Validation VIES - Validé,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,Validation VIES - Non validé,0
-model,"party.configuration,name",0,Party Configuration,Configuration des relations,0
-model,"party.contact_mechanism,name",0,Contact Mechanism,Moyen de contact,0
-model,"party.party,name",0,Party,Tiers,0
-model,"party.party-party.category,name",0,Party - Category,Tiers - Catégorie,0
-model,"res.group,name",group_party_admin,Party Administration,Administration des tiers,0
-selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
-selection,"party.contact_mechanism,type",0,Fax,Fax,0
-selection,"party.contact_mechanism,type",0,IRC,IRC,0
-selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Mobile,0
-selection,"party.contact_mechanism,type",0,Other,Autre,0
-selection,"party.contact_mechanism,type",0,Phone,Téléphone,0
-selection,"party.contact_mechanism,type",0,SIP,SIP,0
-selection,"party.contact_mechanism,type",0,Skype,Skype,0
-selection,"party.contact_mechanism,type",0,Website,Site web,0
-selection,"party.party,vat_country",0,,,0
-view,party.address,0,Addresses,Adresses,0
-view,party.category,0,Categories,Catégories,0
-view,party.category,0,Category,Catégorie,0
-view,party.check_vies.check,0,Parties Failed,Tiers non validés,0
-view,party.check_vies.check,0,Parties Succeed,Tiers validés,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,Système d'échange d'information TVA - Résultats,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,Système d'échange d'information TVA,0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Vous devez avoir une version récente de ""vatnumber"" installée !",0
-view,party.configuration,0,Party Configuration,Configuration des relations,0
-view,party.contact_mechanism,0,Contact Mechanism,Moyen de contact,0
-view,party.contact_mechanism,0,Contact Mechanisms,Moyens de contact,0
-view,party.party,0,Accounting,Comptabilité,0
-view,party.party,0,Addresses,Adresses,0
-view,party.party,0,Categories,Catégories,0
-view,party.party,0,Contact Mechanisms,Moyens de contact,0
-view,party.party,0,General,Général,0
-view,party.party,0,Parties,Tiers,0
-view,party.party,0,Party,Tiers,0
-view,party.party,0,Properties,Propriétés,0
-view,party.party,0,VAT,TVA,0
-view,party.party,0,_Accounting,Compt_abilité,0
-view,party.party,0,_General,_Général,0
-wizard_button,"party.check_vies,check,end",0,Ok,Ok,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,Ok,0
diff --git a/icons/__init__.py b/icons/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/icons/tryton-party.svg b/icons/tryton-party.svg
new file mode 100644
index 0000000..7d628b8
--- /dev/null
+++ b/icons/tryton-party.svg
@@ -0,0 +1,539 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg2108"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
+ sodipodi:docname="system-users.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs3">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective72" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4356">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4358" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4360" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4344">
+ <stop
+ style="stop-color:#727e0a;stop-opacity:1;"
+ offset="0"
+ id="stop4346" />
+ <stop
+ style="stop-color:#5b6508;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop4348" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4338">
+ <stop
+ id="stop4340"
+ offset="0.0000000"
+ style="stop-color:#e9b15e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4342"
+ offset="1.0000000"
+ style="stop-color:#966416;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4163">
+ <stop
+ style="stop-color:#3b74bc;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4165" />
+ <stop
+ style="stop-color:#2d5990;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop4167" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3824">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3826" />
+ <stop
+ style="stop-color:#c9c9c9;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3828" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3816">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop3818" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3820" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3800">
+ <stop
+ style="stop-color:#f4d9b1;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3802" />
+ <stop
+ style="stop-color:#df9725;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3804" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3800"
+ id="radialGradient3806"
+ cx="29.344931"
+ cy="17.064077"
+ fx="29.344931"
+ fy="17.064077"
+ r="9.1620579"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient3822"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient3830"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4163"
+ id="radialGradient4169"
+ cx="28.089741"
+ cy="27.203083"
+ fx="28.089741"
+ fy="27.203083"
+ r="13.565360"
+ gradientTransform="matrix(1.297564,2.881172e-16,-1.964720e-16,0.884831,-8.358505,4.940469)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3800"
+ id="radialGradient4171"
+ gradientUnits="userSpaceOnUse"
+ cx="29.344931"
+ cy="17.064077"
+ fx="29.344931"
+ fy="17.064077"
+ r="9.1620579"
+ gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient4175"
+ gradientUnits="userSpaceOnUse"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ gradientTransform="translate(0.707108,0.000000)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient4179"
+ gradientUnits="userSpaceOnUse"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient4326"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.41789,-7.000000)"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4338"
+ id="radialGradient4328"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)"
+ cx="29.344931"
+ cy="17.064077"
+ fx="29.344931"
+ fy="17.064077"
+ r="9.1620579" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient4330"
+ gradientUnits="userSpaceOnUse"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient4332"
+ gradientUnits="userSpaceOnUse"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ gradientTransform="translate(-13.12500,-7.000000)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient4336"
+ gradientUnits="userSpaceOnUse"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4344"
+ id="radialGradient4350"
+ cx="16.214741"
+ cy="19.836468"
+ fx="16.214741"
+ fy="19.836468"
+ r="13.565360"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4362"
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4366"
+ gradientUnits="userSpaceOnUse"
+ x1="22.686766"
+ y1="36.390400"
+ x2="21.408455"
+ y2="35.739632"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.10960,-3.945209)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
+ x1="22.686766"
+ y1="36.390400"
+ x2="21.408455"
+ y2="35.739632" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient1366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
+ x1="22.686766"
+ y1="36.390400"
+ x2="21.408455"
+ y2="35.739632" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient1369"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient1372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.41789,-7.000000)"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4344"
+ id="radialGradient1381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
+ cx="16.214741"
+ cy="19.836468"
+ fx="16.214741"
+ fy="19.836468"
+ r="13.565360" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:showpageshadow="false"
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="-130.79856"
+ inkscape:cy="13.86274"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ fill="#9db029"
+ stroke="#727e0a"
+ inkscape:window-width="872"
+ inkscape:window-height="815"
+ inkscape:window-x="265"
+ inkscape:window-y="33" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>People</dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>users</rdf:li>
+ <rdf:li>people</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="cipek"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ transform="matrix(1.775510,0.000000,0.000000,0.959183,-37.37822,11.77153)"
+ sodipodi:type="arc"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4336);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path4177"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1381);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#404604;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 12.861174,34.636039 L 23.467776,34.636039 C 26.472980,34.636039 29.448260,33.534107 30.538843,30.393398 C 31.574482,27.410922 30.715620,21.731340 23.998106,17.135146 L 11.446960,17.135146 C 4.7294460,21.377786 3.8899690,27.179977 5.4365530,30.570174 C 7.0121480,34.023964 9.6791930,34.636039 12.861174,34.636039 z "
+ id="path2329"
+ sodipodi:nodetypes="cczcczc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3812"
+ d="M 17.932367,19.786797 C 17.932367,19.786797 15.781044,21.447132 15.966376,23.447330 C 13.925150,21.646536 13.866503,18.195806 13.866503,18.195806 L 17.932367,19.786797 z "
+ style="opacity:1.0000000;color:#000000;fill:#9db029;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cczcczc"
+ id="path3838"
+ d="M 12.966639,33.571836 L 23.283309,33.571836 C 25.923032,33.571836 28.536470,32.603917 29.494421,29.845169 C 30.404110,27.225409 29.399699,22.236555 23.499142,18.199332 L 11.974417,18.199332 C 6.0738600,21.925999 5.0864770,27.022551 6.4449710,30.000446 C 7.8289490,33.034200 10.171638,33.571836 12.966639,33.571836 z "
+ style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:#9db029;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 18.910795,19.786797 C 18.910795,19.786797 21.062118,21.447132 20.876786,23.447330 C 22.918012,21.646536 22.976659,18.195806 22.976659,18.195806 L 18.910795,19.786797 z "
+ id="path3810"
+ sodipodi:nodetypes="cccc" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path3814"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4330);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="translate(-13.25000,-3.500000)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4328);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#6f4709;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path2327"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ transform="translate(-13.12500,-7.000000)" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path3834"
+ style="opacity:0.12658228;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="matrix(0.877095,0.000000,0.000000,0.877095,-9.301073,-4.663733)" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#linearGradient1372);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 22.583894,27.034641 L 26.826534,27.034641 L 24.351661,24.736544 L 23.821331,25.443651 L 23.291000,24.913321 L 22.583894,27.034641 z "
+ id="path4173" />
+ <path
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient1369);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 8.5479535,33.601747 C 7.3003465,33.056778 6.7419595,31.743470 6.7419595,31.743470 C 7.5832405,27.674334 10.461885,24.697254 10.461885,24.697254 C 10.461885,24.697254 8.1825635,31.108768 8.5479535,33.601747 z "
+ id="path4368"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4370"
+ d="M 27.453661,32.743396 C 28.684912,32.162418 29.258041,30.741075 29.258041,30.741075 C 28.298921,26.698092 25.281892,23.898254 25.281892,23.898254 C 25.281892,23.898254 27.746485,30.240856 27.453661,32.743396 z "
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient1366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="dalsi cipek"
+ style="display:inline">
+ <path
+ transform="matrix(1.77551,0,0,0.583984,-24.25322,28.27856)"
+ sodipodi:type="arc"
+ style="opacity:1;color:black;fill:url(#radialGradient4179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4306"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4169);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#204a87;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 25.986174,41.636039 L 36.592776,41.636039 C 39.597980,41.636039 42.573260,40.534107 43.663843,37.393398 C 44.699482,34.410922 43.840620,28.731340 37.123106,24.135146 L 24.571960,24.135146 C 17.854446,28.377786 17.014969,34.179977 18.561553,37.570174 C 20.137148,41.023964 22.804193,41.636039 25.986174,41.636039 z "
+ id="path4308"
+ sodipodi:nodetypes="cczcczc" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#linearGradient3830);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 26.693281,25.726136 C 29.875261,28.554563 31.289475,38.807612 31.289475,38.807612 C 31.289475,38.807612 32.703688,28.554564 35.178562,25.549360 L 26.693281,25.726136 z "
+ id="path4310"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4312"
+ d="M 28.972721,26.786797 C 28.972721,26.786797 26.821398,28.447132 27.006730,30.447330 C 24.965504,28.646536 24.906857,25.195806 24.906857,25.195806 L 28.972721,26.786797 z "
+ style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cczcczc"
+ id="path4314"
+ d="M 25.914862,40.593933 L 36.408309,40.571836 C 39.048032,40.571836 41.661470,39.603917 42.619421,36.845169 C 43.529110,34.225409 42.524699,29.236555 36.624142,25.199332 L 25.099417,24.956264 C 19.198860,28.682931 18.056797,33.779483 19.437388,37.000446 C 20.817980,40.221409 22.832599,40.571836 25.914862,40.593933 z "
+ style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 33.410795,26.786797 C 33.410795,26.786797 35.562118,28.447132 35.376786,30.447330 C 37.418012,28.646536 37.476659,25.195806 37.476659,25.195806 L 33.410795,26.786797 z "
+ id="path4316"
+ sodipodi:nodetypes="cccc" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path4318"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient3822);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="translate(-0.125000,3.500000)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4171);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#c17d11;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path4320"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path4322"
+ style="opacity:0.19620253;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="matrix(0.877095,0.000000,0.000000,0.877095,3.823927,2.336267)" />
+ <path
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4362);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 21.851790,40.775197 C 20.604183,40.230228 20.045796,38.916920 20.045796,38.916920 C 20.887077,34.847784 23.765721,31.870704 23.765721,31.870704 C 23.765721,31.870704 21.486400,38.282218 21.851790,40.775197 z "
+ id="path4354"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4364"
+ d="M 40.757497,39.916846 C 41.988748,39.335868 42.561877,37.914525 42.561877,37.914525 C 41.602757,33.871542 38.585728,31.071704 38.585728,31.071704 C 38.585728,31.071704 41.050321,37.414306 40.757497,39.916846 z "
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ </g>
+</svg>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
new file mode 100644
index 0000000..81826ec
--- /dev/null
+++ b/locale/bg_BG.po
@@ -0,0 +1,498 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr "Ðе може да пÑоменÑÑе паÑÑнÑоÑа за адÑеÑ!"
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr "ÐмеÑо на каÑегоÑиÑÑа на паÑÑнÑоÑа ÑÑÑбва да бÑде Ñникална по ÑодиÑел!"
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "Ðе може да ÑÑздаваÑе взаимно вложени каÑегоÑии!"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "РимеÑо на полеÑо не може да има \" / \"!"
+
+msgctxt "error:party.check_vies:0"
+msgid "The VIES service is unavailable, try again later."
+msgstr "VIES ÑÑлÑгаÑа е недоÑÑÑпна, опиÑайÑе оÑново по-кÑÑно."
+
+msgctxt "error:party.contact_mechanism:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "Ðе може да пÑоменÑÑе паÑÑнÑоÑа за наÑин на конÑакÑ!"
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "Ðевалиден ÐÐС номеÑ!"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr "Ðода на паÑÑнÑоÑа ÑÑÑбва да е Ñникален!"
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "ÐкÑивен"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "ÐÑад"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "ÐÑÑжава"
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr "ÐÑлен адÑеÑ"
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "ÐоÑледоваÑелноÑÑ"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "УлиÑа"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "УлиÑа 2"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "ÐодÑазделение"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "ÐоÑ. код"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "ÐкÑивен"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "ÐеÑа"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "РодиÑел"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr "ÐаÑÑнÑоÑа не е валиден"
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr "Ðалиден паÑÑнÑоÑ"
+
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr "Ðзик на паÑÑнÑоÑ"
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr "ÐоÑледоваÑелноÑÑ Ð·Ð° паÑÑнÑоÑ"
+
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "ÐкÑивен"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "ÐоменÑаÑ"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "СÑойноÑÑ"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "ÐоÑледоваÑелноÑÑ"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Ðид"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "СÑойноÑÑ"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "ÐкÑивен"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "ÐдÑеÑи"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Ðод"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "ÐÑлжина на кода"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "ÐаÑини на конÑакÑ"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "ФакÑ"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr "ÐÑлно име"
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "Ðзик"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "Ðобилен"
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "ТелеÑон"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "ÐÐС код"
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "ÐÐС дÑÑжава"
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "ÐÐС номеÑ"
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Ðме"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr "СÑойноÑÑÑа в Ñова поле Ñе Ñе използва за език пÑи нови паÑÑнÑоÑи."
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr "Ðказвайки дÑÑжава за ÐÐС Ñе позволи да Ñе пÑовеÑи ÐÐС номеÑа."
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "ÐÐС номеÑ"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "ÐдÑеÑи"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr "ÐаÑнÑоÑи по каÑегоÑиÑ"
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr "ÐонÑигÑÑиÑане на паÑÑнÑоÑ"
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr "ÐаÑÑнÑоÑи"
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr "ÐÑикеÑи"
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr "ÐÑовека в VIES"
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+msgstr "ÐдÑеÑи"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_category_list"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "model:ir.ui.menu,name:menu_category_tree"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr "ÐонÑигÑÑаÑиÑ"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr "УпÑавление на паÑÑнÑоÑ"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr "ÐонÑигÑÑиÑане на паÑÑнÑоÑ"
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "ÐаÑÑнÑоÑи"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "ÐдÑеÑ"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - пÑовеÑка"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - без пÑовеÑка"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr "ÐонÑигÑÑиÑане на паÑÑнÑоÑ"
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "ÐаÑин на конÑакÑ"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr "ÐаÑÑнÑÐ¾Ñ - ÐаÑегоÑиÑ"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "УпÑавление на паÑÑнÑоÑ"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "ФакÑ"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr "IRC"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "Ðобилен"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "ÐÑÑг"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "ТелеÑон"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "ÐдÑеÑи"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr "ÐаÑÑнÑоÑа не е валиден"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr "Ðалиден паÑÑнÑоÑ"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "РезÑлÑаÑи Ð¾Ñ Ð¡Ð¸ÑÑема за обмен на инÑиоÑмаÑÐ¸Ñ Ð·Ð° ÐÐС"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "СиÑÑема за обмен на ÐÐС инÑоÑмаÑиÑ"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr "ТÑÑбва да имаÑе инÑÑалиÑана поÑледнаÑа веÑÑÐ¸Ñ Ð½Ð° \"vatnumber\"!"
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr "ÐонÑигÑÑиÑане на паÑÑнÑоÑ"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "ÐаÑин на конÑакÑ"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "ÐаÑини на конÑакÑ"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "СÑеÑоводÑÑво"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "ÐдÑеÑи"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "ÐаÑини на конÑакÑ"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "ÐÑновен"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "ÐаÑÑнÑоÑи"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "ÐаÑÑнÑоÑ"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "ÐÐС"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "ÐобÑе"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "ÐобÑе"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
new file mode 100644
index 0000000..1f484b6
--- /dev/null
+++ b/locale/cs_CZ.po
@@ -0,0 +1,495 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:party.check_vies:0"
+msgid "The VIES service is unavailable, try again later."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr ""
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr ""
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr ""
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr ""
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr ""
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr ""
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr ""
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr ""
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr ""
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr ""
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr ""
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr ""
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr ""
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr ""
+
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr ""
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr ""
+
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr ""
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr ""
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr ""
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr ""
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr ""
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr ""
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr ""
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr ""
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr ""
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr ""
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr ""
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr ""
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr ""
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr ""
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr ""
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr ""
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr ""
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr ""
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr ""
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr ""
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+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 ""
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr ""
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr ""
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr ""
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr ""
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr ""
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr ""
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr ""
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr ""
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr ""
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr ""
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr ""
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr ""
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr ""
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr ""
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr ""
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr ""
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr ""
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
new file mode 100644
index 0000000..0dfa4e8
--- /dev/null
+++ b/locale/de_DE.po
@@ -0,0 +1,578 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr "Die Partei einer Adresse kann nicht geändert werden!"
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+"Der Name einer Parteikategorie kann pro übergeordneter Kategorie nur einmal "
+"vergeben werden!"
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "Kategorien können nicht rekursiv angelegt werden!"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "In dem Namensfeld kann \" / \" nicht verwendet werden!"
+
+msgctxt "error:party.check_vies:0"
+msgid "The VIES service is unavailable, try again later."
+msgstr ""
+"VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!"
+
+msgctxt "error:party.contact_mechanism:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!"
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "Ungültige USt-ID-Nummer!"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr "Der Name einer Partei kann nur einmal vergeben werden!"
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "Stadt"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "Staat"
+
+msgctxt "field:party.address,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.address,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr "Vollständige Adresse"
+
+msgctxt "field:party.address,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "Anschrift 1"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "Anschrift 2"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "Subnationale Einheit"
+
+msgctxt "field:party.address,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:party.address,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "Postleitzahl"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "Untergeordnet (Kategorien)"
+
+msgctxt "field:party.category,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.category,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:party.category,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Kategorie Name"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "Ãbergeordnet (Kategorie)"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.category,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:party.category,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr "Parteien mit fehlgeschlagener Ãberprüfung"
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr "Parteien mit erfolgreicher Ãberprüfung"
+
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr "Sprache Partei"
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr "Nummernkreis Partei"
+
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "Kommentar"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "Wert"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "Wert"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "Homepage"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "Kategorien"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Code Partei"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "Code Länge"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "Kontaktmöglichkeiten"
+
+msgctxt "field:party.party,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:party.party,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr "Vollständiger Name"
+
+msgctxt "field:party.party,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "Mobiltelefon"
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "Telefon"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "USt-ID-Nr."
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "USt-ID-Präfix"
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "USt-ID-Nr."
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:party.party,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:party.party,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "Kategorie"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+"Ein Wert in diesem Feld dient als Voreinstellung für die Sprache von neu "
+"angelegten Parteien"
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr "Ein Eintrag in USt-ID-Präfix aktiviert die Ãberprüfung der USt-ID-Nr."
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "Umsatzsteueridentifikationsnummer"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr "Kategorien"
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr "Kategorien"
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr "Parteien nach Kategorie"
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr "Einstellungen Partei"
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr "Parteien"
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr "Etiketten"
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr "USt-ID-Nr. per VIES überprüfen"
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "model:ir.ui.menu,name:menu_category_list"
+msgid "Categories"
+msgstr "Kategorien"
+
+msgctxt "model:ir.ui.menu,name:menu_category_tree"
+msgid "Categories"
+msgstr "Parteikategorien"
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr "Einstellungen"
+
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr "Parteien"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr "Einstellungen Partei"
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "Parteien"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "Adresse"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "Kategorie"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "Ãberprüfung VIES - Durchführen"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "Ãberprüfung VIES - Nicht durchführen"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr "Einstellungen Partei"
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "Kontaktmöglichkeit"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr "Partei - Parteikategorie"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "Parteien Administration"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr "IRC"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "Mobiltelefon"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "Anderer Kontakt"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "Telefon"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "Homepage"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "Kategorien"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "Kategorie"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr "Parteien mit fehlgeschlagener Ãberprüfung"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr "Parteien mit erfolgreicher Ãberprüfung"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "Ergebnisse des Ãberprüfungssystems für USt-ID-Nummern (VIES)"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "Ãberprüfungssystem für USt-ID-Nummern (VIES)"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr ""
+"Es muss eine aktuelle Version des Python-Moduls \"vatnumber\" installiert "
+"sein!"
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr "Einstellungen Partei"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "Kontaktmöglichkeit"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "Kontaktmöglichkeiten"
+
+msgctxt "view:party.party:0"
+msgid "Account"
+msgstr "Konten"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "Buchhaltung"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "Kategorien"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanism"
+msgstr "Kontaktmöglichkeit"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "Kontaktmöglichkeiten"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "Parteien"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "USt"
+
+msgctxt "view:party.party:0"
+msgid "_Accounting"
+msgstr "_Buchhaltung"
+
+msgctxt "view:party.party:0"
+msgid "_General"
+msgstr "_Allgemein"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "OK"
diff --git a/locale/es_CO.po b/locale/es_CO.po
new file mode 100644
index 0000000..8d57ec0
--- /dev/null
+++ b/locale/es_CO.po
@@ -0,0 +1,512 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr "No puede modificar el tercero de una dirección!"
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "No puede crear categorÃas recursivas!"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:party.check_vies:0"
+msgid "The VIES service is unavailable, try again later."
+msgstr "El servicio VIES no está disponible, intente más tarde."
+
+msgctxt "error:party.contact_mechanism:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "¡No puede modificar un tercero de un mecanismo de contacto!"
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "¡Número inválido!"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr ""
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "Ciudad"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "PaÃs"
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr ""
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "Calle"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "Calle (bis)"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "Subdivisión"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "Código postal"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "Hij at s"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "Padre"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr "Los terceros fallaron"
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr "Terceros válidos"
+
+#, fuzzy
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr "Idioma del Tercero"
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "Longitud del Código"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "Mecanismos de contacto"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr ""
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "Celular"
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "Teléfono"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "Código de IVA"
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "PaÃs"
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "Número"
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "CategorÃa"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr "Al especificar el paÃs se habilitará la verificación del NIT."
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "Número de Impuesto de Valor Agregado"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "Direcciones"
+
+#, fuzzy
+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_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 ""
+
+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 "Revisar 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"
+
+#, fuzzy
+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"
+
+#, fuzzy
+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 ""
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "Terceros"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "Dirección"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "CategorÃa"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "Revisar VIES - Revisar"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "Revisar VIES - NO revisar"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "Mecanismo de contacto"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr "Tercero - CategorÃa"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "Terceros"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr "Chat"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "Celular"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "Otro"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "Teléfono"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "CategorÃa"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr "Los terceros fallaron"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr "Los terceros fueron válidos"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "Resultado de Sistema de Información de intercambio IVA"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "Sistema de Información de Intercambio IVA"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr "Debe tener una versión reciente de \"vatnumber\" instalada!"
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "Mecanismo de contacto"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "Mecanismos de contacto"
+
+msgctxt "view:party.party:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "Contabilidad"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanism"
+msgstr "Mecanismo de contacto"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "Mecanismos de contacto"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "Terceros"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "IVA"
+
+msgctxt "view:party.party:0"
+msgid "_General"
+msgstr "_General"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "Aceptar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
new file mode 100644
index 0000000..f0643df
--- /dev/null
+++ b/locale/es_ES.po
@@ -0,0 +1,510 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr "No puede modificar el tercero de una dirección"
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "No puede crear categorÃas recursivas"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:party.check_vies:0"
+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:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "No puede modificar el tercero de un médio de contacto"
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "El NIF no es válido"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr "El código del tercero debe ser único"
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "Ciudad"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "PaÃs"
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr ""
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Contacto"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Contacto"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "Calle"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "Calle (bis)"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "Subdivisión"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "Código postal"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "Hijos"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "Padre"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr "Terceros rechazados"
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr "Terceros aceptados"
+
+#, fuzzy
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr "Idioma del tercero"
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "Comentario"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "DÃgitos del código"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "Médios de contacto"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr ""
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "Móvil"
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "Teléfono"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "NIF"
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "PaÃs del NIF"
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "NIF"
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "CategorÃa"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr ""
+"Al especificar el paÃs del NIF se habilitará la verificación de dicho "
+"número."
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "Número de identificación fiscal"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "Direcciones"
+
+#, fuzzy
+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_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 ""
+
+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"
+
+#, fuzzy
+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"
+
+#, fuzzy
+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 ""
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "Terceros"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "Dirección"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "CategorÃa"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "Comprobación VIES - Comprobar"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "Comprobación VIES - No comprobar"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "Médio de contacto"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "model:party.party-party.category,name:0"
+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:0"
+msgid "E-Mail"
+msgstr "Correo electrónico"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr "IRC"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "Móvil"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "Otro"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "Teléfono"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "CategorÃa"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr "Terceros rechazados"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr "Terceros aceptados"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "Resultado del sistema de intercambio de información de IVA"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "Sistema de intercambio de información de IVA"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr "Necesita instalar una versión más actualizada de «vatnumber»"
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr ""
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "Médio de contacto"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "Médios de contacto"
+
+msgctxt "view:party.party:0"
+msgid "Account"
+msgstr "Cuenta"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "Contabilidad"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "Direcciones"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "CategorÃas"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "Médios de contacto"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "Terceros"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "NIF"
+
+msgctxt "view:party.party:0"
+msgid "_General"
+msgstr "_General"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "Aceptar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
new file mode 100644
index 0000000..109e025
--- /dev/null
+++ b/locale/fr_FR.po
@@ -0,0 +1,510 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr "Vous ne pouvez pas modifier le tiers d'une addresse !"
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+"Le nom d'une catégorie de tiers doit être unique pour un même parent !"
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "Vous ne pouvez pas créer des catégories récursives !"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "Vous ne pouvez pas utiliser \" / \" dans le champ nom !"
+
+msgctxt "error:party.check_vies:0"
+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:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "Vous ne pouvez pas modifiez le tiers d'un moyen de contact."
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "Numéro TVA non valide !"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr "Le code du tiers doit être unique !"
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "Ville"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "Pays"
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr "Adresse complète"
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "Rue"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "Rue (bis)"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "Subdivision"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "Code Postal"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "Enfants"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "Parent"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr "Tiers non validés"
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr "Tiers validés"
+
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr "Langue du tiers"
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr "Séquence des tiers"
+
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "Commentaire"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "Valeur"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "Valeur"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "Site web"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "Adresses"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "Longueur du code"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "Moyens de contact"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr "Nom complet"
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "Mobile"
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "Téléphone"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "Code TVA"
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "Code Pays TVA"
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "Numéro de TVA"
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "Site web"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "Catégorie"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+"La valeur de ce champs sera la valeur par défaut pour la langue des nouveaux"
+" tiers"
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr "Ajouter un code pays TVA activera la vérification du numéro de TVA."
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "Numéro de taxe sur la valeur ajoutée"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "Adresses"
+
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr "Tiers par catégorie"
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr "Configuration des tiers"
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr "Tiers"
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr "Ãtiquettes"
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr "Validation VIES"
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+msgstr "Adresses"
+
+msgctxt "model:ir.ui.menu,name:menu_category_list"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "model:ir.ui.menu,name:menu_category_tree"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr "Configuration"
+
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr "Configuration des tiers"
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "Tiers"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "Adresse"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "Catégorie"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "Validation VIES - Validé"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "Validation VIES - Non validé"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr "Configuration des tiers"
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "Moyen de contact"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr "Tiers - Catégorie"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "Administration des tiers"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr "E-Mail"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr "IRC"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "Mobile"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "Autre"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "Téléphone"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "Site web"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "Adresses"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "Catégorie"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr "Tiers non validés"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr "Tiers validés"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "Système d'échange d'information TVA - Résultats"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "Système d'échange d'information TVA"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr "Vous devez avoir une version récente de \"vatnumber\" installée !"
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr "Configuration des tiers"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "Moyen de contact"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "Moyens de contact"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "Comptabilité"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "Adresses"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "Catégories"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "Moyens de contact"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "Tiers"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "view:party.party:0"
+msgid "Properties"
+msgstr "Propriétés"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "TVA"
+
+msgctxt "view:party.party:0"
+msgid "_Accounting"
+msgstr "Compt_abilité"
+
+msgctxt "view:party.party:0"
+msgid "_General"
+msgstr "_Général"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "Ok"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
new file mode 100644
index 0000000..e4ba9d2
--- /dev/null
+++ b/locale/nl_NL.po
@@ -0,0 +1,499 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr "U kunt niet de relatie van een adres veranderen!"
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr "De naam van een relatie-categorie moet per niveau uniek zijn!"
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "U kunt geen recursieve categorieën aanmaken!"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "Het \"/\" teken mag niet gebruikt worden in een naam veld!"
+
+msgctxt "error:party.check_vies:0"
+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:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr "U kunt niet de relatie van een contactmogelijkheid veranderen!"
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "Ongeldig BTW nummer!"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr "De relatie-code moet uniek zijn!"
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "Stad"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "Land"
+
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr "Volledig adres"
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Aanhef"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "Straat"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "Extra aanduiding"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "Provincie"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "Postcode"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "Onderliggende niveaus"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "Bovenliggend niveau"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr "Controle relatie mislukt"
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr "Controle relatie gelukt"
+
+#, fuzzy
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr "Taal relatie"
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr "Relatiecode"
+
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "Opmerking"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "Waarde"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "Waarde"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "Lengte code"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "Contactmogelijkheden"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr "Naam voluit"
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "Mobiel"
+
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "Telefoon"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "BTW-nummer"
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "BTW-land"
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "BTW-nummer"
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "Categorie"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr "De keuze van een BTW land maakt controle van het BTW nummer mogelijk."
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "Nummer omzetbelasting"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "Adressen"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr "Relaties per categorie"
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr "Relatie instellingen"
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr "Relaties"
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr "Etiketten"
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr "Check VIES"
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+msgstr "Adressen"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_category_list"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "model:ir.ui.menu,name:menu_category_tree"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr "Instellingen"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr "Relatiebeheer"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr "Relatie instellingen"
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "Relaties"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "Adres"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "Categorie"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "Check VIES - Oké"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "Check VIES - Mislukt"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr "Relatie instellingen"
+
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "Contactmogelijkheid"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr "Relatie categorie"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "Relatiebeheer"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr "E-mail"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "Fax"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr "IRC"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr "Jabber"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "Mobiel"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "Overig"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "Telefoon"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr "SIP"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr "Skype"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "Categorie"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr "Controle relatie mislukt"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr "Controle relatie gelukt"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "BTW Informatie Dienst"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "BTW Informatie Dienst"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr "U moet een recente versie van \"python-vatnumber\" geïnstalleerd hebben!"
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr "Relatie instellingen"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "Contactmogelijkheid"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "Contactmogelijkheden"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "Financieel"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "Adressen"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "Categorieën"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "Contactmogelijkheden"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "Relaties"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "Relatie"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "Omzetbelasting"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "Oké"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
new file mode 100644
index 0000000..5e8bb40
--- /dev/null
+++ b/locale/ru_RU.po
@@ -0,0 +1,529 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:party.address:0"
+msgid "You can not modify the party of an address!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "The name of a party category must be unique by parent!"
+msgstr ""
+
+msgctxt "error:party.category:0"
+msgid "You can not create recursive categories!"
+msgstr "ÐÑ Ð½Ðµ можеÑе ÑоздаваÑÑ ÑекÑÑÑивнÑе каÑегоÑии!"
+
+msgctxt "error:party.category:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:party.check_vies:0"
+msgid "The VIES service is unavailable, try again later."
+msgstr ""
+
+msgctxt "error:party.contact_mechanism:0"
+msgid "You can not modify the party of a contact mechanism!"
+msgstr ""
+
+msgctxt "error:party.party:0"
+msgid "Invalid VAT number!"
+msgstr "ÐÑибка в номеÑе ÐÐÐ"
+
+msgctxt "error:party.party:0"
+msgid "The code of the party must be unique!"
+msgstr "Ðод конÑÑагенÑа должен бÑÑÑ ÑникалÑнÑм"
+
+msgctxt "field:party.address,active:0"
+msgid "Active"
+msgstr "ÐкÑивнÑй"
+
+msgctxt "field:party.address,city:0"
+msgid "City"
+msgstr "ÐоÑод"
+
+msgctxt "field:party.address,country:0"
+msgid "Country"
+msgstr "СÑÑана"
+
+#, fuzzy
+msgctxt "field:party.address,full_address:0"
+msgid "Full Address"
+msgstr "ÐолнÑй адÑеÑ"
+
+msgctxt "field:party.address,name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.address,party:0"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "field:party.address,rec_name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.address,sequence:0"
+msgid "Sequence"
+msgstr "ÐоÑледоваÑелÑноÑÑÑ"
+
+msgctxt "field:party.address,street:0"
+msgid "Street"
+msgstr "ÑлиÑа"
+
+msgctxt "field:party.address,streetbis:0"
+msgid "Street (bis)"
+msgstr "ÑлиÑа (доп.)"
+
+msgctxt "field:party.address,subdivision:0"
+msgid "Subdivision"
+msgstr "ÐодÑаздел"
+
+msgctxt "field:party.address,zip:0"
+msgid "Zip"
+msgstr "ÐндекÑ"
+
+msgctxt "field:party.category,active:0"
+msgid "Active"
+msgstr "ÐкÑивнÑй"
+
+msgctxt "field:party.category,childs:0"
+msgid "Children"
+msgstr "ÐодÑиненÑй"
+
+msgctxt "field:party.category,name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.category,parent:0"
+msgid "Parent"
+msgstr "ÐÑновной"
+
+msgctxt "field:party.category,rec_name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.check_vies.check,parties_failed:0"
+msgid "Parties Failed"
+msgstr ""
+
+msgctxt "field:party.check_vies.check,parties_succeed:0"
+msgid "Parties Succeed"
+msgstr ""
+
+msgctxt "field:party.configuration,party_lang:0"
+msgid "Party Language"
+msgstr ""
+
+msgctxt "field:party.configuration,party_sequence:0"
+msgid "Party Sequence"
+msgstr ""
+
+msgctxt "field:party.configuration,rec_name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.contact_mechanism,active:0"
+msgid "Active"
+msgstr "ÐкÑивнÑй"
+
+msgctxt "field:party.contact_mechanism,comment:0"
+msgid "Comment"
+msgstr "ÐомменÑаÑии"
+
+msgctxt "field:party.contact_mechanism,email:0"
+msgid "E-Mail"
+msgstr "Ðл.поÑÑа"
+
+msgctxt "field:party.contact_mechanism,other_value:0"
+msgid "Value"
+msgstr "ÐнаÑение"
+
+msgctxt "field:party.contact_mechanism,party:0"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "field:party.contact_mechanism,rec_name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.contact_mechanism,sequence:0"
+msgid "Sequence"
+msgstr "ÐоÑледоваÑелÑноÑÑÑ"
+
+msgctxt "field:party.contact_mechanism,sip:0"
+msgid "SIP"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,skype:0"
+msgid "Skype"
+msgstr ""
+
+msgctxt "field:party.contact_mechanism,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:party.contact_mechanism,value:0"
+msgid "Value"
+msgstr "ÐнаÑение"
+
+msgctxt "field:party.contact_mechanism,website:0"
+msgid "Website"
+msgstr "СайÑ"
+
+msgctxt "field:party.party,active:0"
+msgid "Active"
+msgstr "ÐкÑивнÑй"
+
+msgctxt "field:party.party,addresses:0"
+msgid "Addresses"
+msgstr "ÐдÑеÑа"
+
+msgctxt "field:party.party,categories:0"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "field:party.party,code:0"
+msgid "Code"
+msgstr "Ðод"
+
+msgctxt "field:party.party,code_length:0"
+msgid "Code Length"
+msgstr "Ðлина Ðода"
+
+msgctxt "field:party.party,contact_mechanisms:0"
+msgid "Contact Mechanisms"
+msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
+
+msgctxt "field:party.party,email:0"
+msgid "E-Mail"
+msgstr "Ðл.поÑÑа"
+
+msgctxt "field:party.party,fax:0"
+msgid "Fax"
+msgstr "ФакÑ"
+
+msgctxt "field:party.party,full_name:0"
+msgid "Full Name"
+msgstr "Ðолное наименование"
+
+msgctxt "field:party.party,lang:0"
+msgid "Language"
+msgstr "ЯзÑк"
+
+msgctxt "field:party.party,mobile:0"
+msgid "Mobile"
+msgstr "ÑоÑ.ÑелеÑон"
+
+#, fuzzy
+msgctxt "field:party.party,name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.party,phone:0"
+msgid "Phone"
+msgstr "ТелеÑон"
+
+msgctxt "field:party.party,rec_name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "field:party.party,vat_code:0"
+msgid "VAT Code"
+msgstr "Ðод ÐÐÐ"
+
+msgctxt "field:party.party,vat_country:0"
+msgid "VAT Country"
+msgstr "СÑÑана ÐÐÐ "
+
+msgctxt "field:party.party,vat_number:0"
+msgid "VAT Number"
+msgstr "ÐÐÐ"
+
+msgctxt "field:party.party,website:0"
+msgid "Website"
+msgstr "СайÑ"
+
+msgctxt "field:party.party-party.category,category:0"
+msgid "Category"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "field:party.party-party.category,party:0"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "field:party.party-party.category,rec_name:0"
+msgid "Name"
+msgstr "Ðаименование"
+
+msgctxt "help:party.configuration,party_lang:0"
+msgid "The value set on this field will preset the language on new parties"
+msgstr ""
+
+msgctxt "help:party.party,vat_country:0"
+msgid "Setting VAT country will enable validation of the VAT number."
+msgstr "УÑÑановиÑе ÑÑÑÐ°Ð½Ñ ÑегиÑÑÑаÑии оÑганизаÑии Ð´Ð»Ñ Ð¿ÑовеÑки"
+
+msgctxt "help:party.party,vat_number:0"
+msgid "Value Added Tax number"
+msgstr "ÐÐÐ"
+
+msgctxt "model:ir.action,name:act_address_form"
+msgid "Addresses"
+msgstr "ÐдÑеÑа"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_category_list"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "model:ir.action,name:act_category_tree"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "model:ir.action,name:act_party_by_category"
+msgid "Parties by Category"
+msgstr "ÐонÑÑагенÑÑ Ð¿Ð¾ каÑегоÑиÑм"
+
+msgctxt "model:ir.action,name:act_party_configuration_form"
+msgid "Party Configuration"
+msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+
+msgctxt "model:ir.action,name:act_party_form"
+msgid "Parties"
+msgstr "ÐонÑÑагенÑÑ"
+
+msgctxt "model:ir.action,name:report_label"
+msgid "Labels"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_check_vies"
+msgid "Check VIES"
+msgstr "ÐÑовеÑиÑÑ VIES"
+
+msgctxt "model:ir.sequence,name:sequence_party"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "model:ir.sequence.type,name:sequence_type_party"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "model:ir.ui.menu,name:menu_address_form"
+msgid "Addresses"
+msgstr "ÐдÑеÑа"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_category_list"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "model:ir.ui.menu,name:menu_category_tree"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "model:ir.ui.menu,name:menu_configuration"
+msgid "Configuration"
+msgstr "ÐонÑигÑÑаÑиÑ"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_party"
+msgid "Party"
+msgstr "ÐÑганизаÑии"
+
+msgctxt "model:ir.ui.menu,name:menu_party_configuration"
+msgid "Party Configuration"
+msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+
+msgctxt "model:ir.ui.menu,name:menu_party_form"
+msgid "Parties"
+msgstr "ÐонÑÑагенÑÑ"
+
+msgctxt "model:party.address,name:0"
+msgid "Address"
+msgstr "ÐдÑеÑ"
+
+msgctxt "model:party.category,name:0"
+msgid "Category"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "model:party.check_vies.check,name:0"
+msgid "Check VIES - Check"
+msgstr "ÐÑовеÑиÑÑ VIES - пÑовеÑиÑÑ"
+
+msgctxt "model:party.check_vies.no_check,name:0"
+msgid "Check VIES - No Check"
+msgstr "ÐÑовеÑиÑÑ VIES - не пÑовеÑÑÑÑ"
+
+msgctxt "model:party.configuration,name:0"
+msgid "Party Configuration"
+msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+
+#, fuzzy
+msgctxt "model:party.contact_mechanism,name:0"
+msgid "Contact Mechanism"
+msgstr "ÐонÑакÑнÑй ÑпоÑоб"
+
+msgctxt "model:party.party,name:0"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "model:party.party-party.category,name:0"
+msgid "Party - Category"
+msgstr "ÐонÑÑÐ°Ð³ÐµÐ½Ñ - ÐаÑегоÑии"
+
+msgctxt "model:res.group,name:group_party_admin"
+msgid "Party Administration"
+msgstr "ÐдминиÑÑÑиÑование конÑÑагенÑов"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "E-Mail"
+msgstr "Ðл.поÑÑа"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Fax"
+msgstr "ФакÑ"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "IRC"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Jabber"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Mobile"
+msgstr "ÑоÑ.ÑелеÑон"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Other"
+msgstr "ÐÑоÑий"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Phone"
+msgstr "ТелеÑон"
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "SIP"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Skype"
+msgstr ""
+
+msgctxt "selection:party.contact_mechanism,type:0"
+msgid "Website"
+msgstr "СайÑ"
+
+msgctxt "view:party.address:0"
+msgid "Addresses"
+msgstr "ÐдÑеÑа"
+
+msgctxt "view:party.address:0"
+msgid "Job Function"
+msgstr "ÐолжноÑÑÑ"
+
+msgctxt "view:party.address:0"
+msgid "Notes"
+msgstr "ÐомменÑаÑии"
+
+msgctxt "view:party.category:0"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "view:party.category:0"
+msgid "Category"
+msgstr "ÐаÑегоÑии"
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Failed"
+msgstr ""
+
+msgctxt "view:party.check_vies.check:0"
+msgid "Parties Succeed"
+msgstr ""
+
+msgctxt "view:party.check_vies.check:0"
+msgid "VAT Information Exchange System Results"
+msgstr "ÐÐРСиÑÑема обмена инÑоÑмаÑией о ÑезÑлÑÑаÑаÑ
"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "VAT Information Exchange System"
+msgstr "ÐÐРСиÑÑема обмена инÑоÑмаÑией"
+
+msgctxt "view:party.check_vies.no_check:0"
+msgid "You must have a recent version of \"vatnumber\" installed!"
+msgstr ""
+
+msgctxt "view:party.configuration:0"
+msgid "Party Configuration"
+msgstr "ÐаÑÑÑойка конÑÑагенÑов"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanism"
+msgstr "ÐонÑакÑнÑй ÑпоÑоб"
+
+msgctxt "view:party.contact_mechanism:0"
+msgid "Contact Mechanisms"
+msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
+
+msgctxt "view:party.party:0"
+msgid "Account in Bank"
+msgstr "СÑÐµÑ Ð² банке"
+
+msgctxt "view:party.party:0"
+msgid "Accounting"
+msgstr "РегиÑÑÑаÑионнÑе даннÑе"
+
+msgctxt "view:party.party:0"
+msgid "Accounts in Banks"
+msgstr "СÑеÑа в банкаÑ
"
+
+msgctxt "view:party.party:0"
+msgid "Addresses"
+msgstr "ÐдÑеÑа"
+
+msgctxt "view:party.party:0"
+msgid "Categories"
+msgstr "ÐаÑегоÑиÑ"
+
+msgctxt "view:party.party:0"
+msgid "Contact Mechanisms"
+msgstr "ÐонÑакÑнÑй ÑпоÑобÑ"
+
+msgctxt "view:party.party:0"
+msgid "Contacts"
+msgstr "ÐонÑакÑнÑе лиÑа"
+
+msgctxt "view:party.party:0"
+msgid "Document"
+msgstr "ÐокÑменÑ"
+
+msgctxt "view:party.party:0"
+msgid "General"
+msgstr "ÐÑновной"
+
+msgctxt "view:party.party:0"
+msgid "Legal Document"
+msgstr "РегиÑÑÑаÑионнÑй докÑменÑ"
+
+msgctxt "view:party.party:0"
+msgid "Parties"
+msgstr "ÐонÑÑагенÑÑ"
+
+msgctxt "view:party.party:0"
+msgid "Party"
+msgstr "ÐонÑÑагенÑ"
+
+msgctxt "view:party.party:0"
+msgid "VAT"
+msgstr "ÐÐÐ"
+
+msgctxt "wizard_button:party.check_vies,check,end:0"
+msgid "Ok"
+msgstr "Ðа"
+
+msgctxt "wizard_button:party.check_vies,no_check,end:0"
+msgid "Ok"
+msgstr "Ðа"
diff --git a/nl_NL.csv b/nl_NL.csv
deleted file mode 100644
index e6f6c3b..0000000
--- a/nl_NL.csv
+++ /dev/null
@@ -1,128 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,U kunt niet de relatie van een adres veranderen!,0
-error,party.category,0,The name of a party category must be unique by parent!,De naam van een relatie-categorie moet per niveau uniek zijn!,0
-error,party.category,0,You can not create recursive categories!,U kunt geen recursieve categorieën aanmaken!,0
-error,party.category,0,"You can not use "" / "" in name field!","Het ""/"" teken mag niet gebruikt worden in een naam veld!",0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.","De VIES is niet beschikbaar, probeer het later nog eens!",0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,U kunt niet de relatie van een contactmogelijkheid veranderen!,0
-error,party.party,0,Invalid VAT number!,Ongeldig BTW nummer!,0
-error,party.party,0,The code of the party must be unique!,De relatie-code moet uniek zijn!,0
-field,"party.address,active",0,Active,Actief,0
-field,"party.address,city",0,City,Stad,0
-field,"party.address,country",0,Country,Land,0
-field,"party.address,full_address",0,Full Address,Volledig adres,0
-field,"party.address,name",0,Name,Aanhef,0
-field,"party.address,party",0,Party,Relatie,0
-field,"party.address,rec_name",0,Name,Naam,0
-field,"party.address,sequence",0,Sequence,Reeks,0
-field,"party.address,street",0,Street,Straat,0
-field,"party.address,streetbis",0,Street (bis),Extra aanduiding,0
-field,"party.address,subdivision",0,Subdivision,Provincie,0
-field,"party.address,zip",0,Zip,Postcode,0
-field,"party.category,active",0,Active,Actief,0
-field,"party.category,childs",0,Children,Onderliggende niveaus,0
-field,"party.category,name",0,Name,Naam,0
-field,"party.category,parent",0,Parent,Bovenliggend niveau,0
-field,"party.category,rec_name",0,Name,Naam,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,Controle relatie mislukt,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Controle relatie gelukt,0
-field,"party.configuration,party_sequence",0,Party Sequence,Relatiecode,0
-field,"party.configuration,rec_name",0,Name,Naam,0
-field,"party.contact_mechanism,active",0,Active,Actief,0
-field,"party.contact_mechanism,comment",0,Comment,Opmerking,0
-field,"party.contact_mechanism,email",0,E-Mail,E-mail,0
-field,"party.contact_mechanism,other_value",0,Value,Waarde,0
-field,"party.contact_mechanism,party",0,Party,Relatie,0
-field,"party.contact_mechanism,rec_name",0,Name,Naam,0
-field,"party.contact_mechanism,sequence",0,Sequence,Reeks,0
-field,"party.contact_mechanism,sip",0,SIP,SIP,0
-field,"party.contact_mechanism,skype",0,Skype,Skype,0
-field,"party.contact_mechanism,type",0,Type,Type,0
-field,"party.contact_mechanism,value",0,Value,Waarde,0
-field,"party.contact_mechanism,website",0,Website,Website,0
-field,"party.party,active",0,Active,Actief,0
-field,"party.party,addresses",0,Addresses,Adressen,0
-field,"party.party,categories",0,Categories,Categorieën,0
-field,"party.party,code",0,Code,Code,0
-field,"party.party,code_length",0,Code Length,Lengte code,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,Contactmogelijkheden,0
-field,"party.party,email",0,E-Mail,E-mail,0
-field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,Full Name,Naam voluit,0
-field,"party.party,lang",0,Language,Taal,0
-field,"party.party,mobile",0,Mobile,Mobiel,0
-field,"party.party,name",0,Name,Naam,0
-field,"party.party,phone",0,Phone,Telefoon,0
-field,"party.party,rec_name",0,Name,Naam,0
-field,"party.party,vat_code",0,VAT Code,BTW-nummer,0
-field,"party.party,vat_country",0,VAT Country,BTW-land,0
-field,"party.party,vat_number",0,VAT Number,BTW-nummer,0
-field,"party.party,website",0,Website,Website,0
-field,"party.party-party.category,category",0,Category,Categorie,0
-field,"party.party-party.category,party",0,Party,Relatie,0
-field,"party.party-party.category,rec_name",0,Name,Naam,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,De keuze van een BTW land maakt controle van het BTW nummer mogelijk.,0
-help,"party.party,vat_number",0,Value Added Tax number,Nummer omzetbelasting,0
-model,"ir.action,name",act_address_form,Addresses,Adressen,0
-model,"ir.action,name",act_address_form2,Addresses,Adressen,0
-model,"ir.action,name",act_category_form,Categories,Categorieën,0
-model,"ir.action,name",act_category_form2,Categories,Categorieën,0
-model,"ir.action,name",act_category_tree,Categories,Categorieën,0
-model,"ir.action,name",act_party_by_category,Parties by Category,Relaties per categorie,0
-model,"ir.action,name",act_party_configuration_form,Party Configuration,Relatie instellingen,0
-model,"ir.action,name",act_party_form,Parties,Relaties,0
-model,"ir.action,name",act_party_form2,Parties,Relaties,0
-model,"ir.action,name",report_label,Labels,Etiketten,0
-model,"ir.action,name",wizard_check_vies,Check VIES,Check VIES,0
-model,"ir.sequence,name",sequence_party,Party,Relatie,0
-model,"ir.sequence.type,name",sequence_type_party,Party,Relatie,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Nieuw adres,0
-model,"ir.ui.menu,name",menu_category_form,Categories,Categorieën,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Nieuwe categorie,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,Categorieën,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Instellingen,0
-model,"ir.ui.menu,name",menu_party,Party Management,Relatiebeheer,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Relatie instellingen,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Relaties,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Nieuwe relatie,0
-model,"party.address,name",0,Address,Adres,0
-model,"party.category,name",0,Category,Categorie,0
-model,"party.check_vies.check,name",0,Check VIES - Check,Check VIES - Oké,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,Check VIES - Mislukt,0
-model,"party.configuration,name",0,Party Configuration,Relatie instellingen,0
-model,"party.contact_mechanism,name",0,Contact Mechanism,Contactmogelijkheid,0
-model,"party.party,name",0,Party,Relatie,0
-model,"party.party-party.category,name",0,Party - Category,Relatie categorie,0
-model,"res.group,name",group_party_admin,Party Administration,Relatiebeheer,0
-selection,"party.contact_mechanism,type",0,E-Mail,E-mail,0
-selection,"party.contact_mechanism,type",0,Fax,Fax,0
-selection,"party.contact_mechanism,type",0,IRC,IRC,0
-selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Mobiel,0
-selection,"party.contact_mechanism,type",0,Other,Overig,0
-selection,"party.contact_mechanism,type",0,Phone,Telefoon,0
-selection,"party.contact_mechanism,type",0,SIP,SIP,0
-selection,"party.contact_mechanism,type",0,Skype,Skype,0
-selection,"party.contact_mechanism,type",0,Website,Website,0
-view,party.address,0,Addresses,Adressen,0
-view,party.category,0,Categories,Categorieën,0
-view,party.category,0,Category,Categorie,0
-view,party.check_vies.check,0,Parties Failed,Controle relatie mislukt,0
-view,party.check_vies.check,0,Parties Succeed,Controle relatie gelukt,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,BTW Informatie Dienst,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,BTW Informatie Dienst,0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","U moet een recente versie van ""python-vatnumber"" geïnstalleerd hebben!",0
-view,party.configuration,0,Party Configuration,Relatie instellingen,0
-view,party.contact_mechanism,0,Contact Mechanism,Contactmogelijkheid,0
-view,party.contact_mechanism,0,Contact Mechanisms,Contactmogelijkheden,0
-view,party.party,0,Accounting,Financieel,0
-view,party.party,0,Addresses,Adressen,0
-view,party.party,0,Categories,Categorieën,0
-view,party.party,0,Contact Mechanisms,Contactmogelijkheden,0
-view,party.party,0,General,Algemeen,0
-view,party.party,0,Parties,Relaties,0
-view,party.party,0,Party,Relatie,0
-view,party.party,0,VAT,Omzetbelasting,0
-wizard_button,"party.check_vies,check,end",0,Ok,Oké,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,Oké,0
diff --git a/party.py b/party.py
index 2d27960..d5a3395 100644
--- a/party.py
+++ b/party.py
@@ -3,8 +3,9 @@
import logging
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
-from trytond.pyson import Not, Bool, Eval
+from trytond.pyson import Bool, Eval
from trytond.transaction import Transaction
+from trytond.pool import Pool
HAS_VATNUMBER = False
VAT_COUNTRIES = [('', '')]
@@ -18,8 +19,9 @@ except ImportError:
'Unable to import vatnumber. VAT number validation disabled.')
STATES = {
- 'readonly': Not(Bool(Eval('active'))),
+ 'readonly': ~Eval('active', True),
}
+DEPENDS = ['active']
class Party(ModelSQL, ModelView):
@@ -28,29 +30,32 @@ class Party(ModelSQL, ModelView):
_name = "party.party"
name = fields.Char('Name', required=True, select=1,
- states=STATES)
+ states=STATES, depends=DEPENDS)
code = fields.Char('Code', required=True, select=1,
readonly=True, order_field="%(table)s.code_length %(order)s, " \
"%(table)s.code %(order)s")
code_length = fields.Integer('Code Length', select=1, readonly=True)
- lang = fields.Many2One("ir.lang", 'Language', states=STATES)
+ lang = fields.Many2One("ir.lang", 'Language', states=STATES,
+ depends=DEPENDS)
vat_number = fields.Char('VAT Number', help="Value Added Tax number",
- states={
- 'readonly': Not(Bool(Eval('active'))),
- 'required': Bool(Eval('vat_country')),
- })
+ states={
+ 'readonly': ~Eval('active', True),
+ 'required': Bool(Eval('vat_country')),
+ },
+ depends=['active', 'vat_country'])
vat_country = fields.Selection(VAT_COUNTRIES, 'VAT Country', states=STATES,
+ depends=DEPENDS,
help="Setting VAT country will enable validation of the VAT number.",
translate=False)
vat_code = fields.Function(fields.Char('VAT Code',
on_change_with=['vat_number', 'vat_country']), 'get_vat_code',
searcher='search_vat_code')
addresses = fields.One2Many('party.address', 'party',
- 'Addresses', states=STATES)
+ 'Addresses', states=STATES, depends=DEPENDS)
contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
- 'Contact Mechanisms', states=STATES)
+ 'Contact Mechanisms', states=STATES, depends=DEPENDS)
categories = fields.Many2Many('party.party-party.category',
- 'party', 'category', 'Categories', states=STATES)
+ 'party', 'category', 'Categories', states=STATES, depends=DEPENDS)
active = fields.Boolean('Active', select=1)
full_name = fields.Function(fields.Char('Full Name'), 'get_full_name')
phone = fields.Function(fields.Char('Phone'), 'get_mechanism')
@@ -80,7 +85,7 @@ class Party(ModelSQL, ModelView):
return Transaction().context.get('categories', [])
def default_addresses(self):
- address_obj = self.pool.get('party.address')
+ address_obj = Pool().get('party.address')
fields_names = list(x for x in set(address_obj._columns.keys()
+ address_obj._inherit_fields.keys())
if x not in ['id', 'create_uid', 'create_date',
@@ -88,7 +93,7 @@ class Party(ModelSQL, ModelView):
return [address_obj.default_get(fields_names)]
def default_lang(self):
- config_obj = self.pool.get('party.configuration')
+ config_obj = Pool().get('party.configuration')
config = config_obj.browse(1)
return config.party_lang.id
@@ -137,8 +142,8 @@ class Party(ModelSQL, ModelView):
return res
def create(self, values):
- sequence_obj = self.pool.get('ir.sequence')
- config_obj = self.pool.get('party.configuration')
+ sequence_obj = Pool().get('ir.sequence')
+ config_obj = Pool().get('party.configuration')
values = values.copy()
if not values.get('code'):
@@ -155,7 +160,7 @@ class Party(ModelSQL, ModelView):
return super(Party, self).write(ids, vals)
def copy(self, ids, default=None):
- address_obj = self.pool.get('party.address')
+ address_obj = Pool().get('party.address')
int_id = False
if isinstance(ids, (int, long)):
@@ -192,7 +197,7 @@ class Party(ModelSQL, ModelView):
Try to find an address for the given type, if no type match
the first address is return.
"""
- address_obj = self.pool.get("party.address")
+ address_obj = Pool().get("party.address")
address_ids = address_obj.search(
[("party", "=", party_id), ("active", "=", True)],
order=[('sequence', 'ASC'), ('id', 'ASC')])
@@ -261,13 +266,13 @@ class CheckVIESCheck(ModelView):
_name = 'party.check_vies.check'
_description = __doc__
parties_succeed = fields.Many2Many('party.party', None, None,
- 'Parties Succeed', readonly=True, states={
- 'invisible': Not(Bool(Eval('parties_succeed'))),
- })
+ 'Parties Succeed', readonly=True, states={
+ 'invisible': ~Eval('parties_succeed'),
+ })
parties_failed = fields.Many2Many('party.party', None, None,
- 'Parties Failed', readonly=True, states={
- 'invisible': Not(Bool(Eval('parties_failed'))),
- })
+ 'Parties Failed', readonly=True, states={
+ 'invisible': ~Eval('parties_failed'),
+ })
CheckVIESCheck()
@@ -316,7 +321,7 @@ class CheckVIES(Wizard):
return 'check'
def _check(self, data):
- party_obj = self.pool.get('party.party')
+ party_obj = Pool().get('party.party')
res = {
'parties_succeed': [],
'parties_failed': [],
diff --git a/party.xml b/party.xml
index c5602b6..a11cc55 100644
--- a/party.xml
+++ b/party.xml
@@ -6,23 +6,31 @@ this repository contains the full copyright notices and license terms. -->
<record model="res.group" id="group_party_admin">
<field name="name">Party Administration</field>
</record>
- <record model="res.user" id="res.user_admin">
- <field name="groups" eval="[('add', ref('group_party_admin'))]"/>
+ <record model="res.user-res.group"
+ id="user_admin_group_party_admin">
+ <field name="user" ref="res.user_admin"/>
+ <field name="group" ref="group_party_admin"/>
</record>
- <record model="res.user" id="res.user_trigger">
- <field name="groups" eval="[('add', ref('group_party_admin'))]"/>
+ <record model="res.user-res.group"
+ id="user_trigger_group_party_admin">
+ <field name="user" ref="res.user_trigger"/>
+ <field name="group" ref="group_party_admin"/>
</record>
<record model="ir.ui.icon" id="party_icon">
<field name="name">tryton-party</field>
<field name="path">icons/tryton-party.svg</field>
</record>
- <menuitem name="Party Management" sequence="0" id="menu_party"
+ <menuitem name="Party" sequence="0" id="menu_party"
icon="tryton-party"/>
<menuitem name="Configuration" parent="menu_party"
- id="menu_configuration" groups="group_party_admin"
- sequence="0" icon="tryton-preferences"/>
+ id="menu_configuration" sequence="0" icon="tryton-preferences"/>
+ <record model="ir.ui.menu-res.group"
+ id="menu_party_group_party_admin">
+ <field name="menu" ref="menu_configuration"/>
+ <field name="group" ref="group_party_admin"/>
+ </record>
<record model="ir.ui.view" id="party_view_tree">
<field name="model">party.party</field>
@@ -30,10 +38,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Parties">
- <field name="code" select="1"/>
- <field name="name" select="1"/>
- <field name="lang" select="2"/>
- <field name="vat_code" select="1"/>
+ <field name="code"/>
+ <field name="name"/>
+ <field name="lang"/>
+ <field name="vat_code"/>
</tree>
]]>
</field>
@@ -79,14 +87,11 @@ this repository contains the full copyright notices and license terms. -->
<field name="comment"/>
</tree>
</field>
- <group col="1" colspan="2" id="categories">
- <separator string="Categories" id="categories"/>
- <field name="categories">
- <tree string="Categories" fill="1">
- <field name="rec_name" select="1"/>
- </tree>
- </field>
- </group>
+ <field name="categories" colspan="2">
+ <tree string="Categories" fill="1">
+ <field name="rec_name"/>
+ </tree>
+ </field>
</page>
<page string="Accounting" id="accounting">
<separator string="VAT" colspan="4" id="vat"/>
@@ -116,22 +121,7 @@ this repository contains the full copyright notices and license terms. -->
</record>
<menuitem parent="menu_party" sequence="1"
action="act_party_form" id="menu_party_form"/>
- <record model="ir.action.act_window" id="act_party_form2">
- <field name="name">Parties</field>
- <field name="res_model">party.party</field>
- </record>
- <record model="ir.action.act_window.view" id="act_party_form2_view1">
- <field name="sequence" eval="10"/>
- <field name="view" ref="party_view_form"/>
- <field name="act_window" ref="act_party_form2"/>
- </record>
- <record model="ir.action.act_window.view" id="act_party_form2_view2">
- <field name="sequence" eval="20"/>
- <field name="view" ref="party_view_tree"/>
- <field name="act_window" ref="act_party_form2"/>
- </record>
- <menuitem name="New Party" parent="menu_party_form" sequence="1"
- action="act_party_form2" id="menu_party_form2"/>
+
<record model="ir.action.act_window" id="act_party_by_category">
<field name="name">Parties by Category</field>
<field name="res_model">party.party</field>
@@ -140,7 +130,7 @@ this repository contains the full copyright notices and license terms. -->
</record>
<record model="ir.action.keyword" id="act_party_by_category_keyword1">
<field name="keyword">tree_open</field>
- <field name="model">party.category,0</field>
+ <field name="model">party.category,-1</field>
<field name="action" ref="act_party_by_category"/>
</record>
<record model="ir.action.report" id="report_label">
@@ -151,16 +141,25 @@ this repository contains the full copyright notices and license terms. -->
</record>
<record model="ir.action.keyword" id="report_label_party">
<field name="keyword">form_print</field>
- <field name="model">party.party,0</field>
+ <field name="model">party.party,-1</field>
<field name="action" ref="report_label"/>
</record>
<record model="ir.sequence.type" id="sequence_type_party">
<field name="name">Party</field>
<field name="code">party.party</field>
- <field name="groups"
- eval="[('add', ref('res.group_admin')), ('add', ref('group_party_admin'))]"/>
</record>
+ <record model="ir.sequence.type-res.group"
+ id="sequence_type_party_group_admin">
+ <field name="sequence_type" ref="sequence_type_party"/>
+ <field name="group" ref="res.group_admin"/>
+ </record>
+ <record model="ir.sequence.type-res.group"
+ id="sequence_type_party_group_party_admin">
+ <field name="sequence_type" ref="sequence_type_party"/>
+ <field name="group" ref="group_party_admin"/>
+ </record>
+
<record model="ir.sequence" id="sequence_party">
<field name="name">Party</field>
<field name="code">party.party</field>
@@ -173,7 +172,7 @@ this repository contains the full copyright notices and license terms. -->
</record>
<record model="ir.action.keyword" id="check_vies_keyword">
<field name="keyword">form_action</field>
- <field name="model">party.party,0</field>
+ <field name="model">party.party,-1</field>
<field name="action" ref="wizard_check_vies"/>
</record>
@@ -183,7 +182,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<form string="VAT Information Exchange System">
- <label string="You must have a recent version of "vatnumber" installed!" id="vatnumber"/>
+ <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+ <label string="You must have a recent version of "vatnumber" installed!"
+ id="vatnumber"
+ yalign="0.0" xalign="0.0" xexpand="1"/>
</form>
]]>
</field>
@@ -195,7 +197,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<form string="VAT Information Exchange System Results" col="1">
- <separator name="parties_succeed"/>
<field name="parties_succeed">
<tree string="Parties Succeed" fill="1">
<field name="code"/>
@@ -203,7 +204,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="vat_code"/>
</tree>
</field>
- <separator name="parties_failed"/>
<field name="parties_failed">
<tree string="Parties Failed" fill="1">
<field name="code"/>
diff --git a/ru_RU.csv b/ru_RU.csv
deleted file mode 100644
index e7fd108..0000000
--- a/ru_RU.csv
+++ /dev/null
@@ -1,204 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,,0
-error,party.category,0,You can not create recursive categories!,ÐÑ Ð½Ðµ можеÑе ÑоздаваÑÑ ÑекÑÑÑивнÑе каÑегоÑии!,0
-error,party.check_vies,0,"The VIES service is unavailable, try again later.",,0
-error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,,0
-error,party.party,0,Invalid VAT number!,ÐÑибка в номеÑе ÐÐÐ,0
-error,party.party,0,The INN of the party must be unique!,ÐÐРдолжно бÑÑÑ ÑникалÑнÑм,0
-error,party.party,0,The Name of the party must be unique!,,0
-error,party.party,0,The code of the party must be unique!,Ðод конÑÑагенÑа должен бÑÑÑ ÑникалÑнÑм,0
-field,"party.address,active",0,Active,ÐкÑивнÑй,0
-field,"party.address,area_residence",0,Area of residence,Район пÑоживаниÑ,0
-field,"party.address,city",0,City,ÐоÑод,0
-field,"party.address,country",0,Country,СÑÑана,0
-field,"party.address,date_end",0,Date End,ÐаÑа оконÑаниÑ,0
-field,"party.address,full_address",0,Full address,ÐолнÑй адÑеÑ,0
-field,"party.address,name",0,Name,Ðаименование,0
-field,"party.address,party",0,Party,ÐонÑÑагенÑ,0
-field,"party.address,rec_name",0,Name,Ðаименование,0
-field,"party.address,sequence",0,Sequence,ÐоÑледоваÑелÑноÑÑÑ,0
-field,"party.address,street",0,Street,ÑлиÑа,0
-field,"party.address,streetbis",0,Street (bis),ÑлиÑа (доп.),0
-field,"party.address,subdivision",0,Subdivision,ÐодÑаздел,0
-field,"party.address,zip",0,Zip,ÐндекÑ,0
-field,"party.category,active",0,Active,ÐкÑивнÑй,0
-field,"party.category,childs",0,Children,ÐодÑиненÑй,0
-field,"party.category,name",0,Name,Ðаименование,0
-field,"party.category,parent",0,Parent,ÐÑновной,0
-field,"party.category,rec_name",0,Name,Ðаименование,0
-field,"party.check_vies.check,parties_failed",0,Parties Failed,,0
-field,"party.check_vies.check,parties_succeed",0,Parties Succeed,,0
-field,"party.configuration,party_sequence",0,Party Sequence,,0
-field,"party.configuration,rec_name",0,Name,Ðаименование,0
-field,"party.contact_mechanism,active",0,Active,ÐкÑивнÑй,0
-field,"party.contact_mechanism,comment",0,Comment,ÐомменÑаÑии,0
-field,"party.contact_mechanism,email",0,E-Mail,Ðл.поÑÑа,0
-field,"party.contact_mechanism,other_value",0,Value,ÐнаÑение,0
-field,"party.contact_mechanism,party",0,Party,ÐонÑÑагенÑ,0
-field,"party.contact_mechanism,rec_name",0,Name,Ðаименование,0
-field,"party.contact_mechanism,sequence",0,Sequence,ÐоÑледоваÑелÑноÑÑÑ,0
-field,"party.contact_mechanism,sip",0,Sip phone,,0
-field,"party.contact_mechanism,skype",0,Skype,,0
-field,"party.contact_mechanism,type",0,Type,Тип,0
-field,"party.contact_mechanism,value",0,Value,ÐнаÑение,0
-field,"party.contact_mechanism,website",0,Website,СайÑ,0
-field,"party.party,active",0,Active,ÐкÑивнÑй,0
-field,"party.party,addresses",0,Addresses,ÐдÑеÑа,0
-field,"party.party,banks",0,Accounts in Banks,СÑеÑа в ÐанкаÑ
,0
-field,"party.party,birthday",0,Birthday,ÐÐµÐ½Ñ ÑождениÑ,0
-field,"party.party,categories",0,Categories,ÐаÑегоÑиÑ,0
-field,"party.party,code",0,Code,Ðод,0
-field,"party.party,code_length",0,Code Length,Ðлина Ðода,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,ÐонÑакÑнÑй ÑпоÑобÑ,0
-field,"party.party,contacts",0,Contact,ÐонÑакÑое лиÑо,0
-field,"party.party,customer",0,Customer,ÐаказÑик,0
-field,"party.party,document",0,Legal Documents,Рег.докÑменÑ,0
-field,"party.party,email",0,E-Mail,Ðл.поÑÑа,0
-field,"party.party,fax",0,Fax,ФакÑ,0
-field,"party.party,full_name",0,Full Name,Ðолное наименование,0
-field,"party.party,id_1c",0,ID import from 1C,,0
-field,"party.party,individual",0,Individual,Физ.лиÑо,0
-field,"party.party,kpp_number",0,Reason code setting,ÐÐÐ,0
-field,"party.party,lang",0,Language,ЯзÑк,0
-field,"party.party,legal_form",0,Legal Form,,0
-field,"party.party,mobile",0,Mobile,ÑоÑ.ÑелеÑон,0
-field,"party.party,name",0,Full Name,Ðаименование,0
-field,"party.party,note",0,Notes,ÐомменÑаÑии,0
-field,"party.party,ogrn_number",0,OGRN registration number,ÐÐÐ Ð,0
-field,"party.party,okpo_number",0,OKPO registration number,ÐÐÐÐ,0
-field,"party.party,okved_number",0,OKVED registration number,ÐÐÐÐÐ,0
-field,"party.party,phone",0,Phone,ТелеÑон,0
-field,"party.party,photo",0,Person Photo or Logo,ФоÑогÑаÑÐ¸Ñ Ð¸Ð»Ð¸ ÐогоÑип,0
-field,"party.party,photo_file",0,Person Photo or Logo,ФоÑогÑаÑÐ¸Ñ Ð¸Ð»Ð¸ ÐогоÑип,0
-field,"party.party,rec_name",0,Name,Ðаименование,0
-field,"party.party,shortcut",0,ShortCut,ÐÑаÑко,0
-field,"party.party,shortname",0,Short Name,ÐÑаÑко,0
-field,"party.party,supplier",0,Supplier,ÐоÑÑавÑик,0
-field,"party.party,vat_code",0,VAT Code,Ðод ÐÐÐ,0
-field,"party.party,vat_country",0,VAT Country,СÑÑана ÐÐÐ ,0
-field,"party.party,vat_number",0,VAT Number,ÐÐÐ,0
-field,"party.party,website",0,Website,СайÑ,0
-field,"party.party-party.category,category",0,Category,ÐаÑегоÑии,0
-field,"party.party-party.category,party",0,Party,ÐонÑÑагенÑ,0
-field,"party.party-party.category,rec_name",0,Name,Ðаименование,0
-field,"party.person,birthday",0,Birthday,ÐÐµÐ½Ñ ÑождениÑ,0
-field,"party.person,party",0,Party,ÐонÑÑагенÑ,0
-field,"party.person,rec_name",0,Name,Ðаименование,0
-help,"party.party,customer",0,Check this box if the party is a Cusmomer.,"ÐÑмеÑÑÑе, еÑли ÑÑо заказÑик",0
-help,"party.party,individual",0,Check this box if the party is a Individual.,"ÐÑмеÑÑÑе, еÑли ÑÑо ÑизиÑеÑкие лиÑо",0
-help,"party.party,supplier",0,Check this box if the party is a Supplier.,"ÐÑмеÑÑÑе, еÑли ÑÑо поÑÑавÑик",0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,УÑÑановиÑе ÑÑÑÐ°Ð½Ñ ÑегиÑÑÑаÑии оÑганизаÑии Ð´Ð»Ñ Ð¿ÑовеÑки,0
-help,"party.party,vat_number",0,Value Added Tax number,ÐÐÐ,0
-model,"ir.action,name",act_address_form,Addresses,ÐдÑеÑа,0
-model,"ir.action,name",act_address_form2,Addresses,ÐдÑеÑа,0
-model,"ir.action,name",act_category_form,Categories,ÐаÑегоÑиÑ,0
-model,"ir.action,name",act_category_form2,Categories,ÐаÑегоÑиÑ,0
-model,"ir.action,name",act_category_tree,Categories,ÐаÑегоÑиÑ,0
-model,"ir.action,name",act_party_by_category,Parties by Category,ÐонÑÑагенÑÑ Ð¿Ð¾ каÑегоÑиÑм,0
-model,"ir.action,name",act_party_configuration_form,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
-model,"ir.action,name",act_party_contact_form,Contact,ÐонÑакÑое лиÑо,0
-model,"ir.action,name",act_party_form,Parties,ÐонÑÑагенÑÑ,0
-model,"ir.action,name",act_party_form2,Parties,ÐонÑÑагенÑÑ,0
-model,"ir.action,name",report_label,Labels,,0
-model,"ir.action,name",wizard_check_vies,Check VIES,ÐÑовеÑиÑÑ VIES,0
-model,"ir.lang,name",lang_ru,Russian,Ð ÑÑÑкий,0
-model,"ir.sequence,name",sequence_party,Party,ÐонÑÑагенÑ,0
-model,"ir.sequence.type,name",sequence_type_party,Party,ÐонÑÑагенÑ,0
-model,"ir.ui.menu,name",menu_address_form,Addresses,ÐдÑеÑа,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,ÐовÑй адÑеÑ,0
-model,"ir.ui.menu,name",menu_category_form,Categories,ÐаÑегоÑиÑ,0
-model,"ir.ui.menu,name",menu_category_form2,New category,ÐовÑе каÑегоÑии,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,ÐаÑегоÑиÑ,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,ÐонÑигÑÑаÑиÑ,0
-model,"ir.ui.menu,name",menu_party,Party Management,ÐÑганизаÑии,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
-model,"ir.ui.menu,name",menu_party_contact_form,Contact,ÐонÑакÑое лиÑо,0
-model,"ir.ui.menu,name",menu_party_form,Parties,ÐонÑÑагенÑÑ,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,ÐовÑй конÑÑагенÑ,0
-model,"ir.ui.menu,name",menu_person_form,Persons,ФизиÑеÑкие лиÑа,0
-model,"party.address,name",0,Address,ÐдÑеÑ,0
-model,"party.category,name",0,Category,ÐаÑегоÑии,0
-model,"party.check_vies.check,name",0,Check VIES - Check,ÐÑовеÑиÑÑ VIES - пÑовеÑиÑÑ,0
-model,"party.check_vies.no_check,name",0,Check VIES - No Check,ÐÑовеÑиÑÑ VIES - не пÑовеÑÑÑÑ,0
-model,"party.configuration,name",0,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
-model,"party.party,name",0,Party,ÐонÑÑагенÑ,0
-model,"party.party-party.category,name",0,Party - Category,ÐонÑÑÐ°Ð³ÐµÐ½Ñ - ÐаÑегоÑии,0
-model,"res.group,name",group_party,Party (read),ÐÑганизаÑии (ÑÑение),0
-model,"res.group,name",group_party_admin,Party Administration,ÐдминиÑÑÑиÑование конÑÑагенÑов,0
-model,"res.group,name",group_party_write,Party (write),ÐÑганизаÑии (запиÑÑ) ,0
-selection,"party.contact_mechanism,type",0,E-Mail,Ðл.поÑÑа,0
-selection,"party.contact_mechanism,type",0,Fax,ФакÑ,0
-selection,"party.contact_mechanism,type",0,Home Phone,ÐомаÑний ÑелеÑон,0
-selection,"party.contact_mechanism,type",0,IRC,,0
-selection,"party.contact_mechanism,type",0,Jabber,,0
-selection,"party.contact_mechanism,type",0,Mobile,ÑоÑ.ÑелеÑон,0
-selection,"party.contact_mechanism,type",0,Other,ÐÑоÑий,0
-selection,"party.contact_mechanism,type",0,Phone,ТелеÑон,0
-selection,"party.contact_mechanism,type",0,SIP,,0
-selection,"party.contact_mechanism,type",0,Skype,,0
-selection,"party.contact_mechanism,type",0,Website,СайÑ,0
-selection,"party.contact_mechanism,type",0,Work Phone,РабоÑий ÑелеÑон,0
-selection,"party.party,vat_country",0,,РезеÑвнÑй ÑÑеÑ,0
-selection,"party.party,vat_country",0,AL,,0
-selection,"party.party,vat_country",0,AT,,0
-selection,"party.party,vat_country",0,BE,,0
-selection,"party.party,vat_country",0,BG,,0
-selection,"party.party,vat_country",0,CL,,0
-selection,"party.party,vat_country",0,CO,,0
-selection,"party.party,vat_country",0,CY,,0
-selection,"party.party,vat_country",0,CZ,,0
-selection,"party.party,vat_country",0,DE,,0
-selection,"party.party,vat_country",0,DK,,0
-selection,"party.party,vat_country",0,EE,,0
-selection,"party.party,vat_country",0,EL,,0
-selection,"party.party,vat_country",0,ES,,0
-selection,"party.party,vat_country",0,FI,,0
-selection,"party.party,vat_country",0,FR,,0
-selection,"party.party,vat_country",0,GB,,0
-selection,"party.party,vat_country",0,GR,,0
-selection,"party.party,vat_country",0,HU,,0
-selection,"party.party,vat_country",0,IE,,0
-selection,"party.party,vat_country",0,IT,,0
-selection,"party.party,vat_country",0,LT,,0
-selection,"party.party,vat_country",0,LU,,0
-selection,"party.party,vat_country",0,LV,,0
-selection,"party.party,vat_country",0,MT,,0
-selection,"party.party,vat_country",0,NL,,0
-selection,"party.party,vat_country",0,PL,,0
-selection,"party.party,vat_country",0,PT,,0
-selection,"party.party,vat_country",0,RO,,0
-selection,"party.party,vat_country",0,RU,,0
-selection,"party.party,vat_country",0,SE,,0
-selection,"party.party,vat_country",0,SI,,0
-selection,"party.party,vat_country",0,SK,,0
-selection,"party.party,vat_country",0,SM,,0
-selection,"party.party,vat_country",0,UA,,0
-selection,"party.party,vat_country",0,UK,,0
-view,party.address,0,Addresses,ÐдÑеÑа,0
-view,party.address,0,Job Function,ÐолжноÑÑÑ,0
-view,party.address,0,Notes,ÐомменÑаÑии,0
-view,party.category,0,Categories,ÐаÑегоÑиÑ,0
-view,party.category,0,Category,ÐаÑегоÑии,0
-view,party.check_vies.check,0,Parties Failed,,0
-view,party.check_vies.check,0,Parties Succeed,,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,ÐÐРСиÑÑема обмена инÑоÑмаÑией о ÑезÑлÑÑаÑаÑ
,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,ÐÐРСиÑÑема обмена инÑоÑмаÑией,0
-view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!",,0
-view,party.configuration,0,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
-view,party.contact_mechanism,0,Contact Mechanism,ÐонÑакÑнÑй ÑпоÑоб,0
-view,party.contact_mechanism,0,Contact Mechanisms,ÐонÑакÑнÑй ÑпоÑобÑ,0
-view,party.party,0,Account in Bank,СÑÐµÑ Ð² банке,0
-view,party.party,0,Accounting,РегиÑÑÑаÑионнÑе даннÑе,0
-view,party.party,0,Accounts in Banks,СÑеÑа в банкаÑ
,0
-view,party.party,0,Addresses,ÐдÑеÑа,0
-view,party.party,0,Categories,ÐаÑегоÑиÑ,0
-view,party.party,0,Contact Mechanisms,ÐонÑакÑнÑй ÑпоÑобÑ,0
-view,party.party,0,Contacts,ÐонÑакÑнÑе лиÑа,0
-view,party.party,0,Document,ÐокÑменÑ,0
-view,party.party,0,General,ÐÑновной,0
-view,party.party,0,Legal Document,РегиÑÑÑаÑионнÑй докÑменÑ,0
-view,party.party,0,Parties,ÐонÑÑагенÑÑ,0
-view,party.party,0,Party,ÐонÑÑагенÑ,0
-view,party.party,0,VAT,ÐÐÐ,0
-wizard_button,"party.check_vies,check,end",0,Ok,Ðа,0
-wizard_button,"party.check_vies,no_check,end",0,Ok,Ðа,0
diff --git a/setup.py b/setup.py
index 0c7d529..f5fa9f6 100644
--- a/setup.py
+++ b/setup.py
@@ -31,23 +31,23 @@ setup(name='trytond_party',
packages=[
'trytond.modules.party',
'trytond.modules.party.tests',
- 'trytond.modules.party.icons',
],
package_data={
'trytond.modules.party': info.get('xml', []) \
+ info.get('translation', []) \
- + ['label.odt'],
- 'trytond.modules.party.icons': ['tryton-party.svg'],
+ + ['*.odt', 'icons/*.svg'],
},
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
+ 'Framework :: Tryton',
'Intended Audience :: Developers',
'Intended Audience :: Financial and Insurance Industry',
'Intended Audience :: Legal Industry',
'Intended Audience :: Manufacturing',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Natural Language :: Bulgarian',
+ 'Natural Language :: Czech',
'Natural Language :: Dutch',
'Natural Language :: English',
'Natural Language :: French',
@@ -55,7 +55,6 @@ setup(name='trytond_party',
'Natural Language :: Russian',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
- 'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Topic :: Office/Business',
diff --git a/tests/test_party.py b/tests/test_party.py
index 35edb1d..ba3b974 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -1,7 +1,6 @@
#!/usr/bin/env python
#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 __future__ import with_statement
import sys, os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', '..', '..', '..', 'trytond')))
@@ -10,7 +9,8 @@ if os.path.isdir(DIR):
import unittest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view
+from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
+ test_depends
from trytond.transaction import Transaction
@@ -31,6 +31,12 @@ class PartyTestCase(unittest.TestCase):
'''
test_view('party')
+ def test0006depends(self):
+ '''
+ Test depends.
+ '''
+ test_depends()
+
def test0010category(self):
'''
Create category.
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 989ed8a..618d9d9 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,22 +1,24 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 2.0.1
+Version: 2.2.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
+Classifier: Framework :: Tryton
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: French
@@ -24,7 +26,6 @@ Classifier: Natural Language :: German
Classifier: Natural Language :: Russian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 144218e..0fba1ee 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -5,18 +5,11 @@ LICENSE
MANIFEST.in
README
address.xml
-bg_BG.csv
category.xml
configuration.xml
contact_mechanism.xml
-de_DE.csv
-es_CO.csv
-es_ES.csv
-fr_FR.csv
label.odt
-nl_NL.csv
party.xml
-ru_RU.csv
setup.py
./__init__.py
./__tryton__.py
@@ -25,13 +18,18 @@ setup.py
./configuration.py
./contact_mechanism.py
./party.py
-./icons/__init__.py
./tests/__init__.py
./tests/test_party.py
doc/index.rst
-icons/LICENSE
-icons/__init__.py
icons/tryton-party.svg
+locale/bg_BG.po
+locale/cs_CZ.po
+locale/de_DE.po
+locale/es_CO.po
+locale/es_ES.po
+locale/fr_FR.po
+locale/nl_NL.po
+locale/ru_RU.po
trytond_party.egg-info/PKG-INFO
trytond_party.egg-info/SOURCES.txt
trytond_party.egg-info/dependency_links.txt
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index f9c54d1..37c0d8d 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 2.0, < 2.1
-trytond >= 2.0, < 2.1
+trytond_country >= 2.2, < 2.3
+trytond >= 2.2, < 2.3
[VAT]
vatnumber
\ No newline at end of file
commit 342b18e26b6f37bf083d6f84b6a63e810f2ad8a2
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Oct 3 14:43:00 2011 +0200
Adding upstream version 2.0.1+dfsg.
diff --git a/CHANGELOG b/CHANGELOG
index 58380c4..a4e5381 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.0.1 - 2011-10-01
+* Bug fixes (see mercurial logs for details)
+
Version 2.0.0 - 2011-04-27
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index df191a0..20dcc7a 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 2.0.0
+Version: 2.0.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/__tryton__.py b/__tryton__.py
index 9e0f94d..892f559 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -10,7 +10,7 @@
'name_fr_FR': 'Tiers',
'name_nl_NL': 'Relaties',
'name_ru_RU': 'ÐонÑÑагенÑÑ',
- 'version' : '2.0.0',
+ 'version' : '2.0.1',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/category.py b/category.py
index 471199d..1dcae09 100644
--- a/category.py
+++ b/category.py
@@ -73,6 +73,6 @@ class Category(ModelSQL, ModelView):
ids = self.search(domain, order=[])
return [('id', 'in', ids)]
#TODO Handle list
- return [('name',) + clause[1:]]
+ return [('name',) + tuple(clause[1:])]
Category()
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index a893ba4..989ed8a 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 2.0.0
+Version: 2.0.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
commit 1e3191d372522d70b4a720ae32c373b201a59776
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Jul 12 17:09:06 2011 +0200
Adding upstream version 2.0.0+dfsg.
diff --git a/icons/LICENSE b/icons/LICENSE
deleted file mode 100644
index 11782c0..0000000
--- a/icons/LICENSE
+++ /dev/null
@@ -1,264 +0,0 @@
- [1]Creative Commons
-
- Creative Commons Legal Code
-
- Attribution-ShareAlike 2.0
- CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
- LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
- ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
- INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
- REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
- DAMAGES RESULTING FROM ITS USE.
-
- License
-
- THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
- CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
- PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
- WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
- PROHIBITED.
-
- BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
- AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS
- YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF
- SUCH TERMS AND CONDITIONS.
-
- 1. Definitions
- a. "Collective Work" means a work, such as a periodical issue,
- anthology or encyclopedia, in which the Work in its entirety in
- unmodified form, along with a number of other contributions,
- constituting separate and independent works in themselves, are
- assembled into a collective whole. A work that constitutes a
- Collective Work will not be considered a Derivative Work (as
- defined below) for the purposes of this License.
- b. "Derivative Work" means a work based upon the Work or upon the
- Work and other pre-existing works, such as a translation, musical
- arrangement, dramatization, fictionalization, motion picture
- version, sound recording, art reproduction, abridgment,
- condensation, or any other form in which the Work may be recast,
- transformed, or adapted, except that a work that constitutes a
- Collective Work will not be considered a Derivative Work for the
- purpose of this License. For the avoidance of doubt, where the
- Work is a musical composition or sound recording, the
- synchronization of the Work in timed-relation with a moving image
- ("synching") will be considered a Derivative Work for the purpose
- of this License.
- c. "Licensor" means the individual or entity that offers the Work
- under the terms of this License.
- d. "Original Author" means the individual or entity who created the
- Work.
- e. "Work" means the copyrightable work of authorship offered under
- the terms of this License.
- f. "You" means an individual or entity exercising rights under this
- License who has not previously violated the terms of this License
- with respect to the Work, or who has received express permission
- from the Licensor to exercise rights under this License despite a
- previous violation.
- g. "License Elements" means the following high-level license
- attributes as selected by Licensor and indicated in the title of
- this License: Attribution, ShareAlike.
-
- 2. Fair Use Rights. Nothing in this license is intended to reduce,
- limit, or restrict any rights arising from fair use, first sale or
- other limitations on the exclusive rights of the copyright owner under
- copyright law or other applicable laws.
-
- 3. License Grant. Subject to the terms and conditions of this License,
- Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
- perpetual (for the duration of the applicable copyright) license to
- exercise the rights in the Work as stated below:
- a. to reproduce the Work, to incorporate the Work into one or more
- Collective Works, and to reproduce the Work as incorporated in the
- Collective Works;
- b. to create and reproduce Derivative Works;
- c. to distribute copies or phonorecords of, display publicly, perform
- publicly, and perform publicly by means of a digital audio
- transmission the Work including as incorporated in Collective
- Works;
- d. to distribute copies or phonorecords of, display publicly, perform
- publicly, and perform publicly by means of a digital audio
- transmission Derivative Works.
- e. For the avoidance of doubt, where the work is a musical
- composition:
- i. Performance Royalties Under Blanket Licenses. Licensor waives
- the exclusive right to collect, whether individually or via a
- performance rights society (e.g. ASCAP, BMI, SESAC),
- royalties for the public performance or public digital
- performance (e.g. webcast) of the Work.
- ii. Mechanical Rights and Statutory Royalties. Licensor waives
- the exclusive right to collect, whether individually or via a
- music rights society or designated agent (e.g. Harry Fox
- Agency), royalties for any phonorecord You create from the
- Work ("cover version") and distribute, subject to the
- compulsory license created by 17 USC Section 115 of the US
- Copyright Act (or the equivalent in other jurisdictions).
- f. Webcasting Rights and Statutory Royalties. For the avoidance of
- doubt, where the Work is a sound recording, Licensor waives the
- exclusive right to collect, whether individually or via a
- performance-rights society (e.g. SoundExchange), royalties for the
- public digital performance (e.g. webcast) of the Work, subject to
- the compulsory license created by 17 USC Section 114 of the US
- Copyright Act (or the equivalent in other jurisdictions).
-
- The above rights may be exercised in all media and formats whether now
- known or hereafter devised. The above rights include the right to make
- such modifications as are technically necessary to exercise the rights
- in other media and formats. All rights not expressly granted by
- Licensor are hereby reserved.
-
- 4. Restrictions.The license granted in Section 3 above is expressly
- made subject to and limited by the following restrictions:
- a. You may distribute, publicly display, publicly perform, or
- publicly digitally perform the Work only under the terms of this
- License, and You must include a copy of, or the Uniform Resource
- Identifier for, this License with every copy or phonorecord of the
- Work You distribute, publicly display, publicly perform, or
- publicly digitally perform. You may not offer or impose any terms
- on the Work that alter or restrict the terms of this License or
- the recipients' exercise of the rights granted hereunder. You may
- not sublicense the Work. You must keep intact all notices that
- refer to this License and to the disclaimer of warranties. You may
- not distribute, publicly display, publicly perform, or publicly
- digitally perform the Work with any technological measures that
- control access or use of the Work in a manner inconsistent with
- the terms of this License Agreement. The above applies to the Work
- as incorporated in a Collective Work, but this does not require
- the Collective Work apart from the Work itself to be made subject
- to the terms of this License. If You create a Collective Work,
- upon notice from any Licensor You must, to the extent practicable,
- remove from the Collective Work any reference to such Licensor or
- the Original Author, as requested. If You create a Derivative
- Work, upon notice from any Licensor You must, to the extent
- practicable, remove from the Derivative Work any reference to such
- Licensor or the Original Author, as requested.
- b. You may distribute, publicly display, publicly perform, or
- publicly digitally perform a Derivative Work only under the terms
- of this License, a later version of this License with the same
- License Elements as this License, or a Creative Commons iCommons
- license that contains the same License Elements as this License
- (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy
- of, or the Uniform Resource Identifier for, this License or other
- license specified in the previous sentence with every copy or
- phonorecord of each Derivative Work You distribute, publicly
- display, publicly perform, or publicly digitally perform. You may
- not offer or impose any terms on the Derivative Works that alter
- or restrict the terms of this License or the recipients' exercise
- of the rights granted hereunder, and You must keep intact all
- notices that refer to this License and to the disclaimer of
- warranties. You may not distribute, publicly display, publicly
- perform, or publicly digitally perform the Derivative Work with
- any technological measures that control access or use of the Work
- in a manner inconsistent with the terms of this License Agreement.
- The above applies to the Derivative Work as incorporated in a
- Collective Work, but this does not require the Collective Work
- apart from the Derivative Work itself to be made subject to the
- terms of this License.
- c. If you distribute, publicly display, publicly perform, or publicly
- digitally perform the Work or any Derivative Works or Collective
- Works, You must keep intact all copyright notices for the Work and
- give the Original Author credit reasonable to the medium or means
- You are utilizing by conveying the name (or pseudonym if
- applicable) of the Original Author if supplied; the title of the
- Work if supplied; to the extent reasonably practicable, the
- Uniform Resource Identifier, if any, that Licensor specifies to be
- associated with the Work, unless such URI does not refer to the
- copyright notice or licensing information for the Work; and in the
- case of a Derivative Work, a credit identifying the use of the
- Work in the Derivative Work (e.g., "French translation of the Work
- by Original Author," or "Screenplay based on original Work by
- Original Author"). Such credit may be implemented in any
- reasonable manner; provided, however, that in the case of a
- Derivative Work or Collective Work, at a minimum such credit will
- appear where any other comparable authorship credit appears and in
- a manner at least as prominent as such other comparable authorship
- credit.
-
- 5. Representations, Warranties and Disclaimer
-
- UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
- THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
- CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
- INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
- FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
- LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
- ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
- THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
- TO YOU.
-
- 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
- APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
- LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR
- EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK,
- EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- 7. Termination
- a. This License and the rights granted hereunder will terminate
- automatically upon any breach by You of the terms of this License.
- Individuals or entities who have received Derivative Works or
- Collective Works from You under this License, however, will not
- have their licenses terminated provided such individuals or
- entities remain in full compliance with those licenses. Sections
- 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
- b. Subject to the above terms and conditions, the license granted
- here is perpetual (for the duration of the applicable copyright in
- the Work). Notwithstanding the above, Licensor reserves the right
- to release the Work under different license terms or to stop
- distributing the Work at any time; provided, however that any such
- election will not serve to withdraw this License (or any other
- license that has been, or is required to be, granted under the
- terms of this License), and this License will continue in full
- force and effect unless terminated as stated above.
-
- 8. Miscellaneous
- a. Each time You distribute or publicly digitally perform the Work or
- a Collective Work, the Licensor offers to the recipient a license
- to the Work on the same terms and conditions as the license
- granted to You under this License.
- b. Each time You distribute or publicly digitally perform a
- Derivative Work, Licensor offers to the recipient a license to the
- original Work on the same terms and conditions as the license
- granted to You under this License.
- c. If any provision of this License is invalid or unenforceable under
- applicable law, it shall not affect the validity or enforceability
- of the remainder of the terms of this License, and without further
- action by the parties to this agreement, such provision shall be
- reformed to the minimum extent necessary to make such provision
- valid and enforceable.
- d. No term or provision of this License shall be deemed waived and no
- breach consented to unless such waiver or consent shall be in
- writing and signed by the party to be charged with such waiver or
- consent.
- e. This License constitutes the entire agreement between the parties
- with respect to the Work licensed here. There are no
- understandings, agreements or representations with respect to the
- Work not specified here. Licensor shall not be bound by any
- additional provisions that may appear in any communication from
- You. This License may not be modified without the mutual written
- agreement of the Licensor and You.
-
- Creative Commons is not a party to this License, and makes no warranty
- whatsoever in connection with the Work. Creative Commons will not be
- liable to You or any party on any legal theory for any damages
- whatsoever, including without limitation any general, special,
- incidental or consequential damages arising in connection to this
- license. Notwithstanding the foregoing two (2) sentences, if Creative
- Commons has expressly identified itself as the Licensor hereunder, it
- shall have all rights and obligations of Licensor.
-
- Except for the limited purpose of indicating to the public that the
- Work is licensed under the CCPL, neither party will use the trademark
- "Creative Commons" or any related trademark or logo of Creative
- Commons without the prior written consent of Creative Commons. Any
- permitted use will be in compliance with Creative Commons'
- then-current trademark usage guidelines, as may be published on its
- website or otherwise made available upon request from time to time.
-
- Creative Commons may be contacted at [2]http://creativecommons.org/.
-
- [3]« Back to Commons Deed
-
-References
-
- 1. http://creativecommons.org/
- 2. http://creativecommons.org/
- 3. http://creativecommons.org/licenses/by-sa/2.0/
diff --git a/icons/tryton-party.svg b/icons/tryton-party.svg
deleted file mode 100644
index c686f2c..0000000
--- a/icons/tryton-party.svg
+++ /dev/null
@@ -1,537 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg2108"
- sodipodi:version="0.32"
- inkscape:version="0.43+devel"
- sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
- sodipodi:docname="system-users.svg">
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4356">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4358" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop4360" />
- </linearGradient>
- <linearGradient
- id="linearGradient4344">
- <stop
- style="stop-color:#727e0a;stop-opacity:1;"
- offset="0"
- id="stop4346" />
- <stop
- style="stop-color:#5b6508;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop4348" />
- </linearGradient>
- <linearGradient
- id="linearGradient4338">
- <stop
- id="stop4340"
- offset="0.0000000"
- style="stop-color:#e9b15e;stop-opacity:1.0000000;" />
- <stop
- id="stop4342"
- offset="1.0000000"
- style="stop-color:#966416;stop-opacity:1.0000000;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4163">
- <stop
- style="stop-color:#3b74bc;stop-opacity:1.0000000;"
- offset="0.0000000"
- id="stop4165" />
- <stop
- style="stop-color:#2d5990;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop4167" />
- </linearGradient>
- <linearGradient
- id="linearGradient3824">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3826" />
- <stop
- style="stop-color:#c9c9c9;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop3828" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3816">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop3818" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop3820" />
- </linearGradient>
- <linearGradient
- id="linearGradient3800">
- <stop
- style="stop-color:#f4d9b1;stop-opacity:1.0000000;"
- offset="0.0000000"
- id="stop3802" />
- <stop
- style="stop-color:#df9725;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop3804" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3800"
- id="radialGradient3806"
- cx="29.344931"
- cy="17.064077"
- fx="29.344931"
- fy="17.064077"
- r="9.1620579"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3816"
- id="radialGradient3822"
- cx="31.112698"
- cy="19.008621"
- fx="31.112698"
- fy="19.008621"
- r="8.6620579"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3824"
- id="linearGradient3830"
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4163"
- id="radialGradient4169"
- cx="28.089741"
- cy="27.203083"
- fx="28.089741"
- fy="27.203083"
- r="13.565360"
- gradientTransform="matrix(1.297564,2.881172e-16,-1.964720e-16,0.884831,-8.358505,4.940469)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3800"
- id="radialGradient4171"
- gradientUnits="userSpaceOnUse"
- cx="29.344931"
- cy="17.064077"
- fx="29.344931"
- fy="17.064077"
- r="9.1620579"
- gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3824"
- id="linearGradient4175"
- gradientUnits="userSpaceOnUse"
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- gradientTransform="translate(0.707108,0.000000)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3816"
- id="radialGradient4179"
- gradientUnits="userSpaceOnUse"
- cx="31.112698"
- cy="19.008621"
- fx="31.112698"
- fy="19.008621"
- r="8.6620579" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3824"
- id="linearGradient4326"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-12.41789,-7.000000)"
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4338"
- id="radialGradient4328"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)"
- cx="29.344931"
- cy="17.064077"
- fx="29.344931"
- fy="17.064077"
- r="9.1620579" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3816"
- id="radialGradient4330"
- gradientUnits="userSpaceOnUse"
- cx="31.112698"
- cy="19.008621"
- fx="31.112698"
- fy="19.008621"
- r="8.6620579" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3824"
- id="linearGradient4332"
- gradientUnits="userSpaceOnUse"
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- gradientTransform="translate(-13.12500,-7.000000)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3816"
- id="radialGradient4336"
- gradientUnits="userSpaceOnUse"
- cx="31.112698"
- cy="19.008621"
- fx="31.112698"
- fy="19.008621"
- r="8.6620579" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4344"
- id="radialGradient4350"
- cx="16.214741"
- cy="19.836468"
- fx="16.214741"
- fy="19.836468"
- r="13.565360"
- gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4356"
- id="linearGradient4362"
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4356"
- id="linearGradient4366"
- gradientUnits="userSpaceOnUse"
- x1="22.686766"
- y1="36.390400"
- x2="21.408455"
- y2="35.739632"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.10960,-3.945209)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4356"
- id="linearGradient4372"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4356"
- id="linearGradient4374"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
- x1="22.686766"
- y1="36.390400"
- x2="21.408455"
- y2="35.739632" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4356"
- id="linearGradient1366"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
- x1="22.686766"
- y1="36.390400"
- x2="21.408455"
- y2="35.739632" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4356"
- id="linearGradient1369"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3824"
- id="linearGradient1372"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-12.41789,-7.000000)"
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4344"
- id="radialGradient1381"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
- cx="16.214741"
- cy="19.836468"
- fx="16.214741"
- fy="19.836468"
- r="13.565360" />
- </defs>
- <sodipodi:namedview
- inkscape:showpageshadow="false"
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="31.201438"
- inkscape:cy="13.86274"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- fill="#9db029"
- stroke="#727e0a"
- inkscape:window-width="872"
- inkscape:window-height="815"
- inkscape:window-x="265"
- inkscape:window-y="121" />
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>People</dc:title>
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>users</rdf:li>
- <rdf:li>people</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Attribution" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="cipek"
- inkscape:groupmode="layer"
- style="display:inline">
- <path
- transform="matrix(1.775510,0.000000,0.000000,0.959183,-37.37822,11.77153)"
- sodipodi:type="arc"
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4336);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- id="path4177"
- sodipodi:cx="31.112698"
- sodipodi:cy="19.008621"
- sodipodi:rx="8.6620579"
- sodipodi:ry="8.6620579"
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
- <path
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1381);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#404604;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 12.861174,34.636039 L 23.467776,34.636039 C 26.472980,34.636039 29.448260,33.534107 30.538843,30.393398 C 31.574482,27.410922 30.715620,21.731340 23.998106,17.135146 L 11.446960,17.135146 C 4.7294460,21.377786 3.8899690,27.179977 5.4365530,30.570174 C 7.0121480,34.023964 9.6791930,34.636039 12.861174,34.636039 z "
- id="path2329"
- sodipodi:nodetypes="cczcczc" />
- <path
- sodipodi:nodetypes="cccc"
- id="path3812"
- d="M 17.932367,19.786797 C 17.932367,19.786797 15.781044,21.447132 15.966376,23.447330 C 13.925150,21.646536 13.866503,18.195806 13.866503,18.195806 L 17.932367,19.786797 z "
- style="opacity:1.0000000;color:#000000;fill:#9db029;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cczcczc"
- id="path3838"
- d="M 12.966639,33.571836 L 23.283309,33.571836 C 25.923032,33.571836 28.536470,32.603917 29.494421,29.845169 C 30.404110,27.225409 29.399699,22.236555 23.499142,18.199332 L 11.974417,18.199332 C 6.0738600,21.925999 5.0864770,27.022551 6.4449710,30.000446 C 7.8289490,33.034200 10.171638,33.571836 12.966639,33.571836 z "
- style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:1.0000000;color:#000000;fill:#9db029;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 18.910795,19.786797 C 18.910795,19.786797 21.062118,21.447132 20.876786,23.447330 C 22.918012,21.646536 22.976659,18.195806 22.976659,18.195806 L 18.910795,19.786797 z "
- id="path3810"
- sodipodi:nodetypes="cccc" />
- <path
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
- sodipodi:ry="8.6620579"
- sodipodi:rx="8.6620579"
- sodipodi:cy="19.008621"
- sodipodi:cx="31.112698"
- id="path3814"
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4330);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- transform="translate(-13.25000,-3.500000)" />
- <path
- sodipodi:type="arc"
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4328);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#6f4709;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- id="path2327"
- sodipodi:cx="31.112698"
- sodipodi:cy="19.008621"
- sodipodi:rx="8.6620579"
- sodipodi:ry="8.6620579"
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
- transform="translate(-13.12500,-7.000000)" />
- <path
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
- sodipodi:ry="8.6620579"
- sodipodi:rx="8.6620579"
- sodipodi:cy="19.008621"
- sodipodi:cx="31.112698"
- id="path3834"
- style="opacity:0.12658228;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- transform="matrix(0.877095,0.000000,0.000000,0.877095,-9.301073,-4.663733)" />
- <path
- style="opacity:1.0000000;color:#000000;fill:url(#linearGradient1372);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 22.583894,27.034641 L 26.826534,27.034641 L 24.351661,24.736544 L 23.821331,25.443651 L 23.291000,24.913321 L 22.583894,27.034641 z "
- id="path4173" />
- <path
- style="opacity:0.22784807;color:#000000;fill:url(#linearGradient1369);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 8.5479535,33.601747 C 7.3003465,33.056778 6.7419595,31.743470 6.7419595,31.743470 C 7.5832405,27.674334 10.461885,24.697254 10.461885,24.697254 C 10.461885,24.697254 8.1825635,31.108768 8.5479535,33.601747 z "
- id="path4368"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- id="path4370"
- d="M 27.453661,32.743396 C 28.684912,32.162418 29.258041,30.741075 29.258041,30.741075 C 28.298921,26.698092 25.281892,23.898254 25.281892,23.898254 C 25.281892,23.898254 27.746485,30.240856 27.453661,32.743396 z "
- style="opacity:0.22784807;color:#000000;fill:url(#linearGradient1366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="dalsi cipek"
- style="display:inline">
- <path
- transform="matrix(1.77551,0,0,0.583984,-24.25322,28.27856)"
- sodipodi:type="arc"
- style="opacity:1;color:black;fill:url(#radialGradient4179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path4306"
- sodipodi:cx="31.112698"
- sodipodi:cy="19.008621"
- sodipodi:rx="8.6620579"
- sodipodi:ry="8.6620579"
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
- <path
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4169);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#204a87;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 25.986174,41.636039 L 36.592776,41.636039 C 39.597980,41.636039 42.573260,40.534107 43.663843,37.393398 C 44.699482,34.410922 43.840620,28.731340 37.123106,24.135146 L 24.571960,24.135146 C 17.854446,28.377786 17.014969,34.179977 18.561553,37.570174 C 20.137148,41.023964 22.804193,41.636039 25.986174,41.636039 z "
- id="path4308"
- sodipodi:nodetypes="cczcczc" />
- <path
- style="opacity:1.0000000;color:#000000;fill:url(#linearGradient3830);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 26.693281,25.726136 C 29.875261,28.554563 31.289475,38.807612 31.289475,38.807612 C 31.289475,38.807612 32.703688,28.554564 35.178562,25.549360 L 26.693281,25.726136 z "
- id="path4310"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- id="path4312"
- d="M 28.972721,26.786797 C 28.972721,26.786797 26.821398,28.447132 27.006730,30.447330 C 24.965504,28.646536 24.906857,25.195806 24.906857,25.195806 L 28.972721,26.786797 z "
- style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cczcczc"
- id="path4314"
- d="M 25.914862,40.593933 L 36.408309,40.571836 C 39.048032,40.571836 41.661470,39.603917 42.619421,36.845169 C 43.529110,34.225409 42.524699,29.236555 36.624142,25.199332 L 25.099417,24.956264 C 19.198860,28.682931 18.056797,33.779483 19.437388,37.000446 C 20.817980,40.221409 22.832599,40.571836 25.914862,40.593933 z "
- style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 33.410795,26.786797 C 33.410795,26.786797 35.562118,28.447132 35.376786,30.447330 C 37.418012,28.646536 37.476659,25.195806 37.476659,25.195806 L 33.410795,26.786797 z "
- id="path4316"
- sodipodi:nodetypes="cccc" />
- <path
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
- sodipodi:ry="8.6620579"
- sodipodi:rx="8.6620579"
- sodipodi:cy="19.008621"
- sodipodi:cx="31.112698"
- id="path4318"
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient3822);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- transform="translate(-0.125000,3.500000)" />
- <path
- sodipodi:type="arc"
- style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4171);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#c17d11;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- id="path4320"
- sodipodi:cx="31.112698"
- sodipodi:cy="19.008621"
- sodipodi:rx="8.6620579"
- sodipodi:ry="8.6620579"
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
- <path
- d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
- sodipodi:ry="8.6620579"
- sodipodi:rx="8.6620579"
- sodipodi:cy="19.008621"
- sodipodi:cx="31.112698"
- id="path4322"
- style="opacity:0.19620253;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- transform="matrix(0.877095,0.000000,0.000000,0.877095,3.823927,2.336267)" />
- <path
- style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4362);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
- d="M 21.851790,40.775197 C 20.604183,40.230228 20.045796,38.916920 20.045796,38.916920 C 20.887077,34.847784 23.765721,31.870704 23.765721,31.870704 C 23.765721,31.870704 21.486400,38.282218 21.851790,40.775197 z "
- id="path4354"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- id="path4364"
- d="M 40.757497,39.916846 C 41.988748,39.335868 42.561877,37.914525 42.561877,37.914525 C 41.602757,33.871542 38.585728,31.071704 38.585728,31.071704 C 38.585728,31.071704 41.050321,37.414306 40.757497,39.916846 z "
- style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
- </g>
-</svg>
commit dc5a6674828e8b02cf468b8806a738ac6c140f51
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue May 24 19:12:50 2011 +0200
Adding upstream version 2.0.0.
diff --git a/CHANGELOG b/CHANGELOG
index 84b4452..58380c4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.0.0 - 2011-04-27
+* Bug fixes (see mercurial logs for details)
+
Version 1.8.0 - 2010-11-01
* Bug fixes (see mercurial logs for details)
* Add default address on party
diff --git a/COPYRIGHT b/COPYRIGHT
index cc0e0c8..d4db09d 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,10 +1,10 @@
+Copyright (C) 2008-2011 Cédric Krier.
+Copyright (C) 2008-2011 Bertrand Chenal.
+Copyright (C) 2008-2011 B2CK SPRL.
+Copyright (C) 2008-2011 Udo Spallek.
+Copyright (C) 2008-2011 Korbinian Preisler.
+Copyright (C) 2008-2011 virtual things.
Copyright (C) 2004-2008 Tiny SPRL.
-Copyright (C) 2008-2010 Cédric Krier.
-Copyright (C) 2008-2010 Bertrand Chenal.
-Copyright (C) 2008-2010 B2CK SPRL.
-Copyright (C) 2008-2010 Udo Spallek.
-Copyright (C) 2008-2010 Korbinian Preisler.
-Copyright (C) 2008-2010 virtual things.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/MANIFEST.in b/MANIFEST.in
index dcb2afa..47da692 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,3 +8,4 @@ include *.xml
include *.odt
include *.csv
include doc/*
+include icons/*
diff --git a/PKG-INFO b/PKG-INFO
index c165573..df191a0 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.8.0
+Version: 2.0.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
+Download-URL: http://downloads.tryton.org/2.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
@@ -16,10 +16,15 @@ Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
+Classifier: Natural Language :: Russian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/__tryton__.py b/__tryton__.py
index f2fd76d..9e0f94d 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -3,19 +3,25 @@
#this repository contains the full copyright notices and license terms.
{
'name' : 'Party',
+ 'name_bg_BG': 'ÐаÑÑнÑоÑ',
'name_de_DE': 'Parteien',
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
- 'version' : '1.8.0',
+ 'name_nl_NL': 'Relaties',
+ 'name_ru_RU': 'ÐонÑÑагенÑÑ',
+ 'version' : '2.0.0',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
'description': 'Define parties, addresses and co.',
+ 'description_bg_BG': 'Ðадаване на паÑÑнÑоÑи, адÑеÑи и Ñн.',
'description_de_DE': 'Ermöglicht die Erstellung von Parteien, Adressen, etc.',
'description_es_CO': 'Definición de terceros, direcciones, etc.',
'description_es_ES': 'Define terceros, direcciones, etc...',
'description_fr_FR': 'Définit des tiers, des adresses, etc.',
+ 'description_nl_NL': 'Definieert relaties, adressen en bedrijven.',
+ 'description_ru_RU': 'ÐпÑеделение конÑÑагенÑов, адÑеÑов и Ñп.',
'depends' : [
'ir',
'res',
@@ -29,9 +35,12 @@
'configuration.xml',
],
'translation': [
+ 'bg_BG.csv',
'de_DE.csv',
'es_CO.csv',
'es_ES.csv',
'fr_FR.csv',
+ 'nl_NL.csv',
+ 'ru_RU.csv',
],
}
diff --git a/address.py b/address.py
index 155791a..aeed740 100644
--- a/address.py
+++ b/address.py
@@ -25,7 +25,7 @@ class Address(ModelSQL, ModelView):
states=STATES)
city = fields.Char('City', states=STATES)
country = fields.Many2One('country.country', 'Country',
- states=STATES)
+ on_change=['country', 'subdivision'], states=STATES)
subdivision = fields.Many2One("country.subdivision",
'Subdivision', domain=[('country', '=', Eval('country'))],
states=STATES)
@@ -109,4 +109,14 @@ class Address(ModelSQL, ModelView):
self.raise_user_error('write_party')
return super(Address, self).write(ids, vals)
+ def on_change_country(self, vals):
+ subdivision_obj = self.pool.get('country.subdivision')
+ result = dict((k, vals.get(k, False))
+ for k in ('country', 'subdivision'))
+ if vals['subdivision']:
+ subdivision = subdivision_obj.browse(vals['subdivision'])
+ if subdivision.country.id != vals['country']:
+ result['subdivision'] = False
+ return result
+
Address()
diff --git a/address.xml b/address.xml
index f6d2e43..078f062 100644
--- a/address.xml
+++ b/address.xml
@@ -50,9 +50,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="city"/>
<newline/>
<label name="country"/>
- <field name="country" completion="1"/>
+ <field name="country" widget="selection"/>
<label name="subdivision"/>
- <field name="subdivision"/>
+ <field name="subdivision" widget="selection"/>
</form>
]]>
</field>
@@ -60,7 +60,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_address_form">
<field name="name">Addresses</field>
<field name="res_model">party.address</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_address_form_view1">
<field name="sequence" eval="10"/>
@@ -78,7 +77,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_address_form2">
<field name="name">Addresses</field>
<field name="res_model">party.address</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_address_form2_view1">
<field name="sequence" eval="10"/>
diff --git a/bg_BG.csv b/bg_BG.csv
new file mode 100644
index 0000000..74c989c
--- /dev/null
+++ b/bg_BG.csv
@@ -0,0 +1,130 @@
+type,name,res_id,src,value,fuzzy
+error,party.address,0,You can not modify the party of an address!,Ðе може да пÑоменÑÑе паÑÑнÑоÑа за адÑеÑ!,0
+error,party.category,0,The name of a party category must be unique by parent!,ÐмеÑо на каÑегоÑиÑÑа на паÑÑнÑоÑа ÑÑÑбва да бÑде Ñникална по ÑодиÑел!,0
+error,party.category,0,You can not create recursive categories!,Ðе може да ÑÑздаваÑе взаимно вложени каÑегоÑии!,0
+error,party.category,0,"You can not use "" / "" in name field!","РимеÑо на полеÑо не може да има "" / ""!",0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES ÑÑлÑгаÑа е недоÑÑÑпна, опиÑайÑе оÑново по-кÑÑно.",0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Ðе може да пÑоменÑÑе паÑÑнÑоÑа за наÑин на конÑакÑ!,0
+error,party.party,0,Invalid VAT number!,Ðевалиден ÐÐС номеÑ!,0
+error,party.party,0,The code of the party must be unique!,Ðода на паÑÑнÑоÑа ÑÑÑбва да е Ñникален!,0
+field,"party.address,active",0,Active,ÐкÑивен,0
+field,"party.address,city",0,City,ÐÑад,0
+field,"party.address,country",0,Country,ÐÑÑжава,0
+field,"party.address,full_address",0,Full Address,ÐÑлен адÑеÑ,0
+field,"party.address,name",0,Name,Ðме,0
+field,"party.address,party",0,Party,ÐаÑÑнÑоÑ,0
+field,"party.address,rec_name",0,Name,Ðме,0
+field,"party.address,sequence",0,Sequence,ÐоÑледоваÑелноÑÑ,0
+field,"party.address,street",0,Street,УлиÑа,0
+field,"party.address,streetbis",0,Street (bis),УлиÑа 2,0
+field,"party.address,subdivision",0,Subdivision,ÐодÑазделение,0
+field,"party.address,zip",0,Zip,ÐоÑ. код,0
+field,"party.category,active",0,Active,ÐкÑивен,0
+field,"party.category,childs",0,Children,ÐеÑа,0
+field,"party.category,name",0,Name,Ðме,0
+field,"party.category,parent",0,Parent,РодиÑел,0
+field,"party.category,rec_name",0,Name,Ðме,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,ÐаÑÑнÑоÑа не е валиден,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Ðалиден паÑÑнÑоÑ,0
+field,"party.configuration,party_lang",0,Party Language,Ðзик на паÑÑнÑоÑ,0
+field,"party.configuration,party_sequence",0,Party Sequence,ÐоÑледоваÑелноÑÑ Ð·Ð° паÑÑнÑоÑ,0
+field,"party.configuration,rec_name",0,Name,Ðме,0
+field,"party.contact_mechanism,active",0,Active,ÐкÑивен,0
+field,"party.contact_mechanism,comment",0,Comment,ÐоменÑаÑ,0
+field,"party.contact_mechanism,email",0,E-Mail,E-Mail,0
+field,"party.contact_mechanism,other_value",0,Value,СÑойноÑÑ,0
+field,"party.contact_mechanism,party",0,Party,ÐаÑÑнÑоÑ,0
+field,"party.contact_mechanism,rec_name",0,Name,Ðме,0
+field,"party.contact_mechanism,sequence",0,Sequence,ÐоÑледоваÑелноÑÑ,0
+field,"party.contact_mechanism,sip",0,SIP,SIP,0
+field,"party.contact_mechanism,skype",0,Skype,Skype,0
+field,"party.contact_mechanism,type",0,Type,Ðид,0
+field,"party.contact_mechanism,value",0,Value,СÑойноÑÑ,0
+field,"party.contact_mechanism,website",0,Website,Website,0
+field,"party.party,active",0,Active,ÐкÑивен,0
+field,"party.party,addresses",0,Addresses,ÐдÑеÑи,0
+field,"party.party,categories",0,Categories,ÐаÑегоÑии,0
+field,"party.party,code",0,Code,Ðод,0
+field,"party.party,code_length",0,Code Length,ÐÑлжина на кода,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,ÐаÑини на конÑакÑ,0
+field,"party.party,email",0,E-Mail,E-Mail,0
+field,"party.party,fax",0,Fax,ФакÑ,0
+field,"party.party,full_name",0,Full Name,ÐÑлно име,0
+field,"party.party,lang",0,Language,Ðзик,0
+field,"party.party,mobile",0,Mobile,Ðобилен,0
+field,"party.party,name",0,Name,Ðме,0
+field,"party.party,phone",0,Phone,ТелеÑон,0
+field,"party.party,rec_name",0,Name,Ðме,0
+field,"party.party,vat_code",0,VAT Code,ÐÐС код,0
+field,"party.party,vat_country",0,VAT Country,ÐÐС дÑÑжава,0
+field,"party.party,vat_number",0,VAT Number,ÐÐС номеÑ,0
+field,"party.party,website",0,Website,Website,0
+field,"party.party-party.category,category",0,Category,ÐаÑегоÑиÑ,0
+field,"party.party-party.category,party",0,Party,ÐаÑÑнÑоÑ,0
+field,"party.party-party.category,rec_name",0,Name,Ðме,0
+help,"party.configuration,party_lang",0,The value set on this field will preset the language on new parties,СÑойноÑÑÑа в Ñова поле Ñе Ñе използва за език пÑи нови паÑÑнÑоÑи.,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ðказвайки дÑÑжава за ÐÐС Ñе позволи да Ñе пÑовеÑи ÐÐС номеÑа.,0
+help,"party.party,vat_number",0,Value Added Tax number,ÐÐС номеÑ,0
+model,"ir.action,name",,Categories,ÐаÑегоÑии,0
+model,"ir.action,name",act_address_form,Addresses,ÐдÑеÑи,0
+model,"ir.action,name",act_address_form2,Addresses,ÐдÑеÑи,0
+model,"ir.action,name",act_category_form,Categories,ÐаÑегоÑии,0
+model,"ir.action,name",act_category_tree,Categories,ÐаÑегоÑии,0
+model,"ir.action,name",act_party_by_category,Parties by Category,ÐаÑнÑоÑи по каÑегоÑиÑ,0
+model,"ir.action,name",act_party_configuration_form,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
+model,"ir.action,name",act_party_form,Parties,ÐаÑÑнÑоÑи,0
+model,"ir.action,name",act_party_form2,Parties,ÐаÑÑнÑоÑи,0
+model,"ir.action,name",report_label,Labels,ÐÑикеÑи,0
+model,"ir.action,name",wizard_check_vies,Check VIES,ÐÑовека в VIES,0
+model,"ir.sequence,name",sequence_party,Party,ÐаÑÑнÑоÑ,0
+model,"ir.sequence.type,name",sequence_type_party,Party,ÐаÑÑнÑоÑ,0
+model,"ir.ui.menu,name",,New category,Ðова каÑегоÑиÑ,0
+model,"ir.ui.menu,name",menu_address_form,Addresses,ÐдÑеÑи,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,Ðов адÑеÑ,0
+model,"ir.ui.menu,name",menu_category_form,New Category,Ðова каÑегоÑиÑ,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,ÐаÑегоÑии,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,ÐонÑигÑÑаÑиÑ,0
+model,"ir.ui.menu,name",menu_party,Party Management,УпÑавление на паÑÑнÑоÑ,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
+model,"ir.ui.menu,name",menu_party_form,Parties,ÐаÑÑнÑоÑи,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Ðов паÑÑнÑоÑ,0
+model,"party.address,name",0,Address,ÐдÑеÑ,0
+model,"party.category,name",0,Category,ÐаÑегоÑиÑ,0
+model,"party.check_vies.check,name",0,Check VIES - Check,ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - пÑовеÑка,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,ÐÑовеÑка ÐÐС Ð½Ð¾Ð¼ÐµÑ (VIES) - без пÑовеÑка,0
+model,"party.configuration,name",0,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
+model,"party.contact_mechanism,name",0,Contact Mechanism,ÐаÑин на конÑакÑ,0
+model,"party.party,name",0,Party,ÐаÑÑнÑоÑ,0
+model,"party.party-party.category,name",0,Party - Category,ÐаÑÑнÑÐ¾Ñ - ÐаÑегоÑиÑ,0
+model,"res.group,name",group_party_admin,Party Administration,УпÑавление на паÑÑнÑоÑ,0
+selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
+selection,"party.contact_mechanism,type",0,Fax,ФакÑ,0
+selection,"party.contact_mechanism,type",0,IRC,IRC,0
+selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
+selection,"party.contact_mechanism,type",0,Mobile,Ðобилен,0
+selection,"party.contact_mechanism,type",0,Other,ÐÑÑг,0
+selection,"party.contact_mechanism,type",0,Phone,ТелеÑон,0
+selection,"party.contact_mechanism,type",0,SIP,SIP,0
+selection,"party.contact_mechanism,type",0,Skype,Skype,0
+selection,"party.contact_mechanism,type",0,Website,Website,0
+view,party.address,0,Addresses,ÐдÑеÑи,0
+view,party.category,0,Categories,ÐаÑегоÑии,0
+view,party.category,0,Category,ÐаÑегоÑиÑ,0
+view,party.check_vies.check,0,Parties Failed,ÐаÑÑнÑоÑа не е валиден,0
+view,party.check_vies.check,0,Parties Succeed,Ðалиден паÑÑнÑоÑ,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,РезÑлÑаÑи Ð¾Ñ Ð¡Ð¸ÑÑема за обмен на инÑиоÑмаÑÐ¸Ñ Ð·Ð° ÐÐС,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,СиÑÑема за обмен на ÐÐС инÑоÑмаÑиÑ,0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","ТÑÑбва да имаÑе инÑÑалиÑана поÑледнаÑа веÑÑÐ¸Ñ Ð½Ð° ""vatnumber""!",0
+view,party.configuration,0,Party Configuration,ÐонÑигÑÑиÑане на паÑÑнÑоÑ,0
+view,party.contact_mechanism,0,Contact Mechanism,ÐаÑин на конÑакÑ,0
+view,party.contact_mechanism,0,Contact Mechanisms,ÐаÑини на конÑакÑ,0
+view,party.party,0,Accounting,СÑеÑоводÑÑво,0
+view,party.party,0,Addresses,ÐдÑеÑи,0
+view,party.party,0,Categories,ÐаÑегоÑии,0
+view,party.party,0,Contact Mechanisms,ÐаÑини на конÑакÑ,0
+view,party.party,0,General,ÐÑновен,0
+view,party.party,0,Parties,ÐаÑÑнÑоÑи,0
+view,party.party,0,Party,ÐаÑÑнÑоÑ,0
+view,party.party,0,VAT,ÐÐС,0
+wizard_button,"party.check_vies,check,end",0,Ok,ÐобÑе,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,ÐобÑе,0
diff --git a/category.xml b/category.xml
index a90751e..12a691f 100644
--- a/category.xml
+++ b/category.xml
@@ -25,8 +25,22 @@ this repository contains the full copyright notices and license terms. -->
<field name="field_childs">childs</field>
<field name="arch" type="xml">
<![CDATA[
- <tree string="Categories" fill="1">
+ <tree string="Categories" fill="1" keyword_open="1">
<field name="name" select="1"/>
+ <field name="parent" tree_invisible="1"/>
+ <field name="childs" tree_invisible="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="category_view_list">
+ <field name="model">party.category</field>
+ <field name="type">tree</field>
+ <field name="priority" eval="10"/>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Categories" fill="1">
+ <field name="rec_name" select="1"/>
</tree>
]]>
</field>
@@ -34,7 +48,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_category_tree">
<field name="name">Categories</field>
<field name="res_model">party.category</field>
- <field name="view_type">tree</field>
<field name="domain">[('parent', '=', False)]</field>
</record>
<record model="ir.action.act_window.view" id="act_category_tree_view1">
@@ -42,43 +55,48 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="category_view_tree"/>
<field name="act_window" ref="act_category_tree"/>
</record>
+ <record model="ir.action.act_window.view" id="act_category_tree_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="category_view_form"/>
+ <field name="act_window" ref="act_category_tree"/>
+ </record>
+
<menuitem parent="menu_party"
action="act_category_tree" id="menu_category_tree"/>
- <record model="ir.action.act_window" id="act_category_form">
+ <record model="ir.action.act_window" id="act_category_list">
<field name="name">Categories</field>
<field name="res_model">party.category</field>
- <field name="view_type">form</field>
</record>
- <record model="ir.action.act_window.view" id="act_category_form_view1">
+ <record model="ir.action.act_window.view" id="act_category_list_view1">
<field name="sequence" eval="10"/>
- <field name="view" ref="category_view_tree"/>
- <field name="act_window" ref="act_category_form"/>
+ <field name="view" ref="category_view_list"/>
+ <field name="act_window" ref="act_category_list"/>
</record>
- <record model="ir.action.act_window.view" id="act_category_form_view2">
+ <record model="ir.action.act_window.view" id="act_category_list_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="category_view_form"/>
- <field name="act_window" ref="act_category_form"/>
+ <field name="act_window" ref="act_category_list"/>
</record>
- <menuitem parent="menu_configuration"
- action="act_category_form" id="menu_category_form" sequence="10"/>
- <record model="ir.action.act_window" id="act_category_form2">
+ <menuitem parent="menu_category_tree" action="act_category_list"
+ id="menu_category_list"/>
+
+ <record model="ir.action.act_window" id="act_category_form">
<field name="name">Categories</field>
<field name="res_model">party.category</field>
- <field name="view_type">form</field>
</record>
- <record model="ir.action.act_window.view" id="act_category_form2_view1">
+ <record model="ir.action.act_window.view" id="act_category_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="category_view_form"/>
- <field name="act_window" ref="act_category_form2"/>
+ <field name="act_window" ref="act_category_form"/>
</record>
- <record model="ir.action.act_window.view" id="act_category_form2_view2">
+ <record model="ir.action.act_window.view" id="act_category_form_view2">
<field name="sequence" eval="20"/>
- <field name="view" ref="category_view_tree"/>
- <field name="act_window" ref="act_category_form2"/>
+ <field name="view" ref="category_view_list"/>
+ <field name="act_window" ref="act_category_form"/>
</record>
- <menuitem name="New category" parent="menu_category_form"
- action="act_category_form2" id="menu_category_form2"/>
+ <menuitem name="New Category" parent="menu_category_tree"
+ action="act_category_form" id="menu_category_form"/>
<record model="ir.model.access" id="access_party_category">
<field name="model" search="[('model', '=', 'party.category')]"/>
diff --git a/configuration.py b/configuration.py
index 97e148d..120c090 100644
--- a/configuration.py
+++ b/configuration.py
@@ -14,5 +14,8 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
('company', 'in', [Eval('company'), False]),
('code', '=', 'party.party'),
], required=True))
+ party_lang = fields.Property(fields.Many2One("ir.lang", 'Party Language',
+ help=('The value set on this field will preset the language on new '
+ 'parties')))
Configuration()
diff --git a/configuration.xml b/configuration.xml
index 7fcb04d..06fb820 100644
--- a/configuration.xml
+++ b/configuration.xml
@@ -11,6 +11,8 @@ this repository contains the full copyright notices and license terms. -->
<form string="Party Configuration">
<label name="party_sequence"/>
<field name="party_sequence"/>
+ <label name="party_lang" />
+ <field name="party_lang" widget="selection" />
</form>
]]>
</field>
@@ -18,7 +20,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_party_configuration_form">
<field name="name">Party Configuration</field>
<field name="res_model">party.configuration</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view"
id="act_party_configuration_view1">
diff --git a/de_DE.csv b/de_DE.csv
index 9fdb16c..e694ed9 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -36,6 +36,7 @@ field,"party.category,write_date",0,Last modification date,Zuletzt geändert am,
field,"party.category,write_uid",0,Last modification by,Zuletzt geändert von,0
field,"party.check_vies.check,parties_failed",0,Parties Failed,Parteien mit fehlgeschlagener Ãberprüfung,0
field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Parteien mit erfolgreicher Ãberprüfung,0
+field,"party.configuration,party_lang",0,Party Language,Sprache Partei,0
field,"party.configuration,party_sequence",0,Party Sequence,Nummernkreis Partei,0
field,"party.configuration,rec_name",0,Name,Name,0
field,"party.contact_mechanism,active",0,Active,Aktiv,0
@@ -76,12 +77,13 @@ field,"party.party,write_uid",0,Last modification by,Zuletzt geändert von,0
field,"party.party-party.category,category",0,Category,Kategorie,0
field,"party.party-party.category,party",0,Party,Partei,0
field,"party.party-party.category,rec_name",0,Name,Name,0
+help,"party.configuration,party_lang",0,The value set on this field will preset the language on new parties,Ein Wert in diesem Feld dient als Voreinstellung für die Sprache von neu angelegten Parteien,0
help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ein Eintrag in USt-ID-Präfix aktiviert die Ãberprüfung der USt-ID-Nr.,0
help,"party.party,vat_number",0,Value Added Tax number,Umsatzsteueridentifikationsnummer,0
model,"ir.action,name",act_address_form,Addresses,Adressen,0
model,"ir.action,name",act_address_form2,Addresses,Adressen,0
model,"ir.action,name",act_category_form,Categories,Kategorien,0
-model,"ir.action,name",act_category_form2,Categories,Kategorien,0
+model,"ir.action,name",act_category_list,Categories,Kategorien,0
model,"ir.action,name",act_category_tree,Categories,Kategorien,0
model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach Kategorie,0
model,"ir.action,name",act_party_configuration_form,Party Configuration,Einstellungen Partei,0
@@ -93,8 +95,8 @@ model,"ir.sequence,name",sequence_party,Party,Partei,0
model,"ir.sequence.type,name",sequence_type_party,Party,Partei,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Neue Adresse,0
-model,"ir.ui.menu,name",menu_category_form,Categories,Parteikategorien,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Neue Parteikategorie,0
+model,"ir.ui.menu,name",menu_category_form,New Category,Neue Parteikategorie,0
+model,"ir.ui.menu,name",menu_category_list,Categories,Kategorien,0
model,"ir.ui.menu,name",menu_category_tree,Categories,Parteikategorien,0
model,"ir.ui.menu,name",menu_configuration,Configuration,Einstellungen,0
model,"ir.ui.menu,name",menu_party,Party Management,Parteien,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 4dcb5e6..ee5f9de 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -26,6 +26,7 @@ field,"party.category,parent",0,Parent,Parent,0
field,"party.category,rec_name",0,Name,Nom,0
field,"party.check_vies.check,parties_failed",0,Parties Failed,Tiers non validés,0
field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Tiers validés,0
+field,"party.configuration,party_lang",0,Party Language,Langue du tiers,1
field,"party.configuration,party_sequence",0,Party Sequence,Séquence des tiers,0
field,"party.configuration,rec_name",0,Name,Nom,0
field,"party.contact_mechanism,active",0,Active,Actif,0
@@ -61,12 +62,13 @@ field,"party.party,website",0,Website,Site web,0
field,"party.party-party.category,category",0,Category,Catégorie,0
field,"party.party-party.category,party",0,Party,Tiers,0
field,"party.party-party.category,rec_name",0,Name,Nom,0
+help,"party.configuration,party_lang",0,The value set on this field will preset the language on new parties,La valeur de ce champs sera la valeur par défaut pour la langue des nouveaux tiers,0
help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ajouter un code pays TVA activera la vérification du numéro de TVA.,0
help,"party.party,vat_number",0,Value Added Tax number,Numéro de taxe sur la valeur ajoutée,0
model,"ir.action,name",act_address_form,Addresses,Adresses,0
model,"ir.action,name",act_address_form2,Addresses,Adresses,0
model,"ir.action,name",act_category_form,Categories,Catégories,0
-model,"ir.action,name",act_category_form2,Categories,Catégories,0
+model,"ir.action,name",act_category_list,Categories,Catégories,1
model,"ir.action,name",act_category_tree,Categories,Catégories,0
model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
model,"ir.action,name",act_party_configuration_form,Party Configuration,Configuration des relations,0
@@ -78,8 +80,8 @@ model,"ir.sequence,name",sequence_party,Party,Tiers,0
model,"ir.sequence.type,name",sequence_type_party,Party,Tiers,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adresses,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Nouvelle adresse,0
-model,"ir.ui.menu,name",menu_category_form,Categories,Editer les catégories,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Nouvelle catégorie,0
+model,"ir.ui.menu,name",menu_category_form,New Category,Nouvelle catégorie,0
+model,"ir.ui.menu,name",menu_category_list,Categories,Catégories,1
model,"ir.ui.menu,name",menu_category_tree,Categories,Catégories,0
model,"ir.ui.menu,name",menu_configuration,Configuration,Configuration,0
model,"ir.ui.menu,name",menu_party,Party Management,Gestion des relations,0
diff --git a/icons/LICENSE b/icons/LICENSE
new file mode 100644
index 0000000..11782c0
--- /dev/null
+++ b/icons/LICENSE
@@ -0,0 +1,264 @@
+ [1]Creative Commons
+
+ Creative Commons Legal Code
+
+ Attribution-ShareAlike 2.0
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+ License
+
+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
+ CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
+ PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
+ WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
+ PROHIBITED.
+
+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
+ AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS
+ YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF
+ SUCH TERMS AND CONDITIONS.
+
+ 1. Definitions
+ a. "Collective Work" means a work, such as a periodical issue,
+ anthology or encyclopedia, in which the Work in its entirety in
+ unmodified form, along with a number of other contributions,
+ constituting separate and independent works in themselves, are
+ assembled into a collective whole. A work that constitutes a
+ Collective Work will not be considered a Derivative Work (as
+ defined below) for the purposes of this License.
+ b. "Derivative Work" means a work based upon the Work or upon the
+ Work and other pre-existing works, such as a translation, musical
+ arrangement, dramatization, fictionalization, motion picture
+ version, sound recording, art reproduction, abridgment,
+ condensation, or any other form in which the Work may be recast,
+ transformed, or adapted, except that a work that constitutes a
+ Collective Work will not be considered a Derivative Work for the
+ purpose of this License. For the avoidance of doubt, where the
+ Work is a musical composition or sound recording, the
+ synchronization of the Work in timed-relation with a moving image
+ ("synching") will be considered a Derivative Work for the purpose
+ of this License.
+ c. "Licensor" means the individual or entity that offers the Work
+ under the terms of this License.
+ d. "Original Author" means the individual or entity who created the
+ Work.
+ e. "Work" means the copyrightable work of authorship offered under
+ the terms of this License.
+ f. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License
+ with respect to the Work, or who has received express permission
+ from the Licensor to exercise rights under this License despite a
+ previous violation.
+ g. "License Elements" means the following high-level license
+ attributes as selected by Licensor and indicated in the title of
+ this License: Attribution, ShareAlike.
+
+ 2. Fair Use Rights. Nothing in this license is intended to reduce,
+ limit, or restrict any rights arising from fair use, first sale or
+ other limitations on the exclusive rights of the copyright owner under
+ copyright law or other applicable laws.
+
+ 3. License Grant. Subject to the terms and conditions of this License,
+ Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+ perpetual (for the duration of the applicable copyright) license to
+ exercise the rights in the Work as stated below:
+ a. to reproduce the Work, to incorporate the Work into one or more
+ Collective Works, and to reproduce the Work as incorporated in the
+ Collective Works;
+ b. to create and reproduce Derivative Works;
+ c. to distribute copies or phonorecords of, display publicly, perform
+ publicly, and perform publicly by means of a digital audio
+ transmission the Work including as incorporated in Collective
+ Works;
+ d. to distribute copies or phonorecords of, display publicly, perform
+ publicly, and perform publicly by means of a digital audio
+ transmission Derivative Works.
+ e. For the avoidance of doubt, where the work is a musical
+ composition:
+ i. Performance Royalties Under Blanket Licenses. Licensor waives
+ the exclusive right to collect, whether individually or via a
+ performance rights society (e.g. ASCAP, BMI, SESAC),
+ royalties for the public performance or public digital
+ performance (e.g. webcast) of the Work.
+ ii. Mechanical Rights and Statutory Royalties. Licensor waives
+ the exclusive right to collect, whether individually or via a
+ music rights society or designated agent (e.g. Harry Fox
+ Agency), royalties for any phonorecord You create from the
+ Work ("cover version") and distribute, subject to the
+ compulsory license created by 17 USC Section 115 of the US
+ Copyright Act (or the equivalent in other jurisdictions).
+ f. Webcasting Rights and Statutory Royalties. For the avoidance of
+ doubt, where the Work is a sound recording, Licensor waives the
+ exclusive right to collect, whether individually or via a
+ performance-rights society (e.g. SoundExchange), royalties for the
+ public digital performance (e.g. webcast) of the Work, subject to
+ the compulsory license created by 17 USC Section 114 of the US
+ Copyright Act (or the equivalent in other jurisdictions).
+
+ The above rights may be exercised in all media and formats whether now
+ known or hereafter devised. The above rights include the right to make
+ such modifications as are technically necessary to exercise the rights
+ in other media and formats. All rights not expressly granted by
+ Licensor are hereby reserved.
+
+ 4. Restrictions.The license granted in Section 3 above is expressly
+ made subject to and limited by the following restrictions:
+ a. You may distribute, publicly display, publicly perform, or
+ publicly digitally perform the Work only under the terms of this
+ License, and You must include a copy of, or the Uniform Resource
+ Identifier for, this License with every copy or phonorecord of the
+ Work You distribute, publicly display, publicly perform, or
+ publicly digitally perform. You may not offer or impose any terms
+ on the Work that alter or restrict the terms of this License or
+ the recipients' exercise of the rights granted hereunder. You may
+ not sublicense the Work. You must keep intact all notices that
+ refer to this License and to the disclaimer of warranties. You may
+ not distribute, publicly display, publicly perform, or publicly
+ digitally perform the Work with any technological measures that
+ control access or use of the Work in a manner inconsistent with
+ the terms of this License Agreement. The above applies to the Work
+ as incorporated in a Collective Work, but this does not require
+ the Collective Work apart from the Work itself to be made subject
+ to the terms of this License. If You create a Collective Work,
+ upon notice from any Licensor You must, to the extent practicable,
+ remove from the Collective Work any reference to such Licensor or
+ the Original Author, as requested. If You create a Derivative
+ Work, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Derivative Work any reference to such
+ Licensor or the Original Author, as requested.
+ b. You may distribute, publicly display, publicly perform, or
+ publicly digitally perform a Derivative Work only under the terms
+ of this License, a later version of this License with the same
+ License Elements as this License, or a Creative Commons iCommons
+ license that contains the same License Elements as this License
+ (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy
+ of, or the Uniform Resource Identifier for, this License or other
+ license specified in the previous sentence with every copy or
+ phonorecord of each Derivative Work You distribute, publicly
+ display, publicly perform, or publicly digitally perform. You may
+ not offer or impose any terms on the Derivative Works that alter
+ or restrict the terms of this License or the recipients' exercise
+ of the rights granted hereunder, and You must keep intact all
+ notices that refer to this License and to the disclaimer of
+ warranties. You may not distribute, publicly display, publicly
+ perform, or publicly digitally perform the Derivative Work with
+ any technological measures that control access or use of the Work
+ in a manner inconsistent with the terms of this License Agreement.
+ The above applies to the Derivative Work as incorporated in a
+ Collective Work, but this does not require the Collective Work
+ apart from the Derivative Work itself to be made subject to the
+ terms of this License.
+ c. If you distribute, publicly display, publicly perform, or publicly
+ digitally perform the Work or any Derivative Works or Collective
+ Works, You must keep intact all copyright notices for the Work and
+ give the Original Author credit reasonable to the medium or means
+ You are utilizing by conveying the name (or pseudonym if
+ applicable) of the Original Author if supplied; the title of the
+ Work if supplied; to the extent reasonably practicable, the
+ Uniform Resource Identifier, if any, that Licensor specifies to be
+ associated with the Work, unless such URI does not refer to the
+ copyright notice or licensing information for the Work; and in the
+ case of a Derivative Work, a credit identifying the use of the
+ Work in the Derivative Work (e.g., "French translation of the Work
+ by Original Author," or "Screenplay based on original Work by
+ Original Author"). Such credit may be implemented in any
+ reasonable manner; provided, however, that in the case of a
+ Derivative Work or Collective Work, at a minimum such credit will
+ appear where any other comparable authorship credit appears and in
+ a manner at least as prominent as such other comparable authorship
+ credit.
+
+ 5. Representations, Warranties and Disclaimer
+
+ UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+ THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+ CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+ LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
+ ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
+ THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
+ TO YOU.
+
+ 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
+ APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
+ LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR
+ EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK,
+ EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 7. Termination
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Derivative Works or
+ Collective Works from You under this License, however, will not
+ have their licenses terminated provided such individuals or
+ entities remain in full compliance with those licenses. Sections
+ 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted
+ here is perpetual (for the duration of the applicable copyright in
+ the Work). Notwithstanding the above, Licensor reserves the right
+ to release the Work under different license terms or to stop
+ distributing the Work at any time; provided, however that any such
+ election will not serve to withdraw this License (or any other
+ license that has been, or is required to be, granted under the
+ terms of this License), and this License will continue in full
+ force and effect unless terminated as stated above.
+
+ 8. Miscellaneous
+ a. Each time You distribute or publicly digitally perform the Work or
+ a Collective Work, the Licensor offers to the recipient a license
+ to the Work on the same terms and conditions as the license
+ granted to You under this License.
+ b. Each time You distribute or publicly digitally perform a
+ Derivative Work, Licensor offers to the recipient a license to the
+ original Work on the same terms and conditions as the license
+ granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability
+ of the remainder of the terms of this License, and without further
+ action by the parties to this agreement, such provision shall be
+ reformed to the minimum extent necessary to make such provision
+ valid and enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in
+ writing and signed by the party to be charged with such waiver or
+ consent.
+ e. This License constitutes the entire agreement between the parties
+ with respect to the Work licensed here. There are no
+ understandings, agreements or representations with respect to the
+ Work not specified here. Licensor shall not be bound by any
+ additional provisions that may appear in any communication from
+ You. This License may not be modified without the mutual written
+ agreement of the Licensor and You.
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, neither party will use the trademark
+ "Creative Commons" or any related trademark or logo of Creative
+ Commons without the prior written consent of Creative Commons. Any
+ permitted use will be in compliance with Creative Commons'
+ then-current trademark usage guidelines, as may be published on its
+ website or otherwise made available upon request from time to time.
+
+ Creative Commons may be contacted at [2]http://creativecommons.org/.
+
+ [3]« Back to Commons Deed
+
+References
+
+ 1. http://creativecommons.org/
+ 2. http://creativecommons.org/
+ 3. http://creativecommons.org/licenses/by-sa/2.0/
diff --git a/icons/__init__.py b/icons/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/icons/tryton-party.svg b/icons/tryton-party.svg
new file mode 100644
index 0000000..c686f2c
--- /dev/null
+++ b/icons/tryton-party.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg2108"
+ sodipodi:version="0.32"
+ inkscape:version="0.43+devel"
+ sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
+ sodipodi:docname="system-users.svg">
+ <defs
+ id="defs3">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4356">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4358" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4360" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4344">
+ <stop
+ style="stop-color:#727e0a;stop-opacity:1;"
+ offset="0"
+ id="stop4346" />
+ <stop
+ style="stop-color:#5b6508;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop4348" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4338">
+ <stop
+ id="stop4340"
+ offset="0.0000000"
+ style="stop-color:#e9b15e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop4342"
+ offset="1.0000000"
+ style="stop-color:#966416;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4163">
+ <stop
+ style="stop-color:#3b74bc;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop4165" />
+ <stop
+ style="stop-color:#2d5990;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop4167" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3824">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3826" />
+ <stop
+ style="stop-color:#c9c9c9;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3828" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3816">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop3818" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3820" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3800">
+ <stop
+ style="stop-color:#f4d9b1;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3802" />
+ <stop
+ style="stop-color:#df9725;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3804" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3800"
+ id="radialGradient3806"
+ cx="29.344931"
+ cy="17.064077"
+ fx="29.344931"
+ fy="17.064077"
+ r="9.1620579"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient3822"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient3830"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4163"
+ id="radialGradient4169"
+ cx="28.089741"
+ cy="27.203083"
+ fx="28.089741"
+ fy="27.203083"
+ r="13.565360"
+ gradientTransform="matrix(1.297564,2.881172e-16,-1.964720e-16,0.884831,-8.358505,4.940469)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3800"
+ id="radialGradient4171"
+ gradientUnits="userSpaceOnUse"
+ cx="29.344931"
+ cy="17.064077"
+ fx="29.344931"
+ fy="17.064077"
+ r="9.1620579"
+ gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient4175"
+ gradientUnits="userSpaceOnUse"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ gradientTransform="translate(0.707108,0.000000)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient4179"
+ gradientUnits="userSpaceOnUse"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient4326"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.41789,-7.000000)"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4338"
+ id="radialGradient4328"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)"
+ cx="29.344931"
+ cy="17.064077"
+ fx="29.344931"
+ fy="17.064077"
+ r="9.1620579" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient4330"
+ gradientUnits="userSpaceOnUse"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient4332"
+ gradientUnits="userSpaceOnUse"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ gradientTransform="translate(-13.12500,-7.000000)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3816"
+ id="radialGradient4336"
+ gradientUnits="userSpaceOnUse"
+ cx="31.112698"
+ cy="19.008621"
+ fx="31.112698"
+ fy="19.008621"
+ r="8.6620579" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4344"
+ id="radialGradient4350"
+ cx="16.214741"
+ cy="19.836468"
+ fx="16.214741"
+ fy="19.836468"
+ r="13.565360"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4362"
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4366"
+ gradientUnits="userSpaceOnUse"
+ x1="22.686766"
+ y1="36.390400"
+ x2="21.408455"
+ y2="35.739632"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.10960,-3.945209)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient4374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
+ x1="22.686766"
+ y1="36.390400"
+ x2="21.408455"
+ y2="35.739632" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient1366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
+ x1="22.686766"
+ y1="36.390400"
+ x2="21.408455"
+ y2="35.739632" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4356"
+ id="linearGradient1369"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3824"
+ id="linearGradient1372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.41789,-7.000000)"
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4344"
+ id="radialGradient1381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
+ cx="16.214741"
+ cy="19.836468"
+ fx="16.214741"
+ fy="19.836468"
+ r="13.565360" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:showpageshadow="false"
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="31.201438"
+ inkscape:cy="13.86274"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ fill="#9db029"
+ stroke="#727e0a"
+ inkscape:window-width="872"
+ inkscape:window-height="815"
+ inkscape:window-x="265"
+ inkscape:window-y="121" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>People</dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>http://jimmac.musichall.cz</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>users</rdf:li>
+ <rdf:li>people</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="cipek"
+ inkscape:groupmode="layer"
+ style="display:inline">
+ <path
+ transform="matrix(1.775510,0.000000,0.000000,0.959183,-37.37822,11.77153)"
+ sodipodi:type="arc"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4336);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path4177"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1381);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#404604;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 12.861174,34.636039 L 23.467776,34.636039 C 26.472980,34.636039 29.448260,33.534107 30.538843,30.393398 C 31.574482,27.410922 30.715620,21.731340 23.998106,17.135146 L 11.446960,17.135146 C 4.7294460,21.377786 3.8899690,27.179977 5.4365530,30.570174 C 7.0121480,34.023964 9.6791930,34.636039 12.861174,34.636039 z "
+ id="path2329"
+ sodipodi:nodetypes="cczcczc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3812"
+ d="M 17.932367,19.786797 C 17.932367,19.786797 15.781044,21.447132 15.966376,23.447330 C 13.925150,21.646536 13.866503,18.195806 13.866503,18.195806 L 17.932367,19.786797 z "
+ style="opacity:1.0000000;color:#000000;fill:#9db029;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cczcczc"
+ id="path3838"
+ d="M 12.966639,33.571836 L 23.283309,33.571836 C 25.923032,33.571836 28.536470,32.603917 29.494421,29.845169 C 30.404110,27.225409 29.399699,22.236555 23.499142,18.199332 L 11.974417,18.199332 C 6.0738600,21.925999 5.0864770,27.022551 6.4449710,30.000446 C 7.8289490,33.034200 10.171638,33.571836 12.966639,33.571836 z "
+ style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:#9db029;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 18.910795,19.786797 C 18.910795,19.786797 21.062118,21.447132 20.876786,23.447330 C 22.918012,21.646536 22.976659,18.195806 22.976659,18.195806 L 18.910795,19.786797 z "
+ id="path3810"
+ sodipodi:nodetypes="cccc" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path3814"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4330);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="translate(-13.25000,-3.500000)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4328);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#6f4709;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path2327"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ transform="translate(-13.12500,-7.000000)" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path3834"
+ style="opacity:0.12658228;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="matrix(0.877095,0.000000,0.000000,0.877095,-9.301073,-4.663733)" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#linearGradient1372);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 22.583894,27.034641 L 26.826534,27.034641 L 24.351661,24.736544 L 23.821331,25.443651 L 23.291000,24.913321 L 22.583894,27.034641 z "
+ id="path4173" />
+ <path
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient1369);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 8.5479535,33.601747 C 7.3003465,33.056778 6.7419595,31.743470 6.7419595,31.743470 C 7.5832405,27.674334 10.461885,24.697254 10.461885,24.697254 C 10.461885,24.697254 8.1825635,31.108768 8.5479535,33.601747 z "
+ id="path4368"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4370"
+ d="M 27.453661,32.743396 C 28.684912,32.162418 29.258041,30.741075 29.258041,30.741075 C 28.298921,26.698092 25.281892,23.898254 25.281892,23.898254 C 25.281892,23.898254 27.746485,30.240856 27.453661,32.743396 z "
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient1366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="dalsi cipek"
+ style="display:inline">
+ <path
+ transform="matrix(1.77551,0,0,0.583984,-24.25322,28.27856)"
+ sodipodi:type="arc"
+ style="opacity:1;color:black;fill:url(#radialGradient4179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4306"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4169);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#204a87;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 25.986174,41.636039 L 36.592776,41.636039 C 39.597980,41.636039 42.573260,40.534107 43.663843,37.393398 C 44.699482,34.410922 43.840620,28.731340 37.123106,24.135146 L 24.571960,24.135146 C 17.854446,28.377786 17.014969,34.179977 18.561553,37.570174 C 20.137148,41.023964 22.804193,41.636039 25.986174,41.636039 z "
+ id="path4308"
+ sodipodi:nodetypes="cczcczc" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:url(#linearGradient3830);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 26.693281,25.726136 C 29.875261,28.554563 31.289475,38.807612 31.289475,38.807612 C 31.289475,38.807612 32.703688,28.554564 35.178562,25.549360 L 26.693281,25.726136 z "
+ id="path4310"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4312"
+ d="M 28.972721,26.786797 C 28.972721,26.786797 26.821398,28.447132 27.006730,30.447330 C 24.965504,28.646536 24.906857,25.195806 24.906857,25.195806 L 28.972721,26.786797 z "
+ style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cczcczc"
+ id="path4314"
+ d="M 25.914862,40.593933 L 36.408309,40.571836 C 39.048032,40.571836 41.661470,39.603917 42.619421,36.845169 C 43.529110,34.225409 42.524699,29.236555 36.624142,25.199332 L 25.099417,24.956264 C 19.198860,28.682931 18.056797,33.779483 19.437388,37.000446 C 20.817980,40.221409 22.832599,40.571836 25.914862,40.593933 z "
+ style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 33.410795,26.786797 C 33.410795,26.786797 35.562118,28.447132 35.376786,30.447330 C 37.418012,28.646536 37.476659,25.195806 37.476659,25.195806 L 33.410795,26.786797 z "
+ id="path4316"
+ sodipodi:nodetypes="cccc" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path4318"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient3822);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="translate(-0.125000,3.500000)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4171);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#c17d11;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path4320"
+ sodipodi:cx="31.112698"
+ sodipodi:cy="19.008621"
+ sodipodi:rx="8.6620579"
+ sodipodi:ry="8.6620579"
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ <path
+ d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ sodipodi:ry="8.6620579"
+ sodipodi:rx="8.6620579"
+ sodipodi:cy="19.008621"
+ sodipodi:cx="31.112698"
+ id="path4322"
+ style="opacity:0.19620253;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ transform="matrix(0.877095,0.000000,0.000000,0.877095,3.823927,2.336267)" />
+ <path
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4362);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ d="M 21.851790,40.775197 C 20.604183,40.230228 20.045796,38.916920 20.045796,38.916920 C 20.887077,34.847784 23.765721,31.870704 23.765721,31.870704 C 23.765721,31.870704 21.486400,38.282218 21.851790,40.775197 z "
+ id="path4354"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path4364"
+ d="M 40.757497,39.916846 C 41.988748,39.335868 42.561877,37.914525 42.561877,37.914525 C 41.602757,33.871542 38.585728,31.071704 38.585728,31.071704 C 38.585728,31.071704 41.050321,37.414306 40.757497,39.916846 z "
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ </g>
+</svg>
diff --git a/nl_NL.csv b/nl_NL.csv
new file mode 100644
index 0000000..e6f6c3b
--- /dev/null
+++ b/nl_NL.csv
@@ -0,0 +1,128 @@
+type,name,res_id,src,value,fuzzy
+error,party.address,0,You can not modify the party of an address!,U kunt niet de relatie van een adres veranderen!,0
+error,party.category,0,The name of a party category must be unique by parent!,De naam van een relatie-categorie moet per niveau uniek zijn!,0
+error,party.category,0,You can not create recursive categories!,U kunt geen recursieve categorieën aanmaken!,0
+error,party.category,0,"You can not use "" / "" in name field!","Het ""/"" teken mag niet gebruikt worden in een naam veld!",0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.","De VIES is niet beschikbaar, probeer het later nog eens!",0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,U kunt niet de relatie van een contactmogelijkheid veranderen!,0
+error,party.party,0,Invalid VAT number!,Ongeldig BTW nummer!,0
+error,party.party,0,The code of the party must be unique!,De relatie-code moet uniek zijn!,0
+field,"party.address,active",0,Active,Actief,0
+field,"party.address,city",0,City,Stad,0
+field,"party.address,country",0,Country,Land,0
+field,"party.address,full_address",0,Full Address,Volledig adres,0
+field,"party.address,name",0,Name,Aanhef,0
+field,"party.address,party",0,Party,Relatie,0
+field,"party.address,rec_name",0,Name,Naam,0
+field,"party.address,sequence",0,Sequence,Reeks,0
+field,"party.address,street",0,Street,Straat,0
+field,"party.address,streetbis",0,Street (bis),Extra aanduiding,0
+field,"party.address,subdivision",0,Subdivision,Provincie,0
+field,"party.address,zip",0,Zip,Postcode,0
+field,"party.category,active",0,Active,Actief,0
+field,"party.category,childs",0,Children,Onderliggende niveaus,0
+field,"party.category,name",0,Name,Naam,0
+field,"party.category,parent",0,Parent,Bovenliggend niveau,0
+field,"party.category,rec_name",0,Name,Naam,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,Controle relatie mislukt,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Controle relatie gelukt,0
+field,"party.configuration,party_sequence",0,Party Sequence,Relatiecode,0
+field,"party.configuration,rec_name",0,Name,Naam,0
+field,"party.contact_mechanism,active",0,Active,Actief,0
+field,"party.contact_mechanism,comment",0,Comment,Opmerking,0
+field,"party.contact_mechanism,email",0,E-Mail,E-mail,0
+field,"party.contact_mechanism,other_value",0,Value,Waarde,0
+field,"party.contact_mechanism,party",0,Party,Relatie,0
+field,"party.contact_mechanism,rec_name",0,Name,Naam,0
+field,"party.contact_mechanism,sequence",0,Sequence,Reeks,0
+field,"party.contact_mechanism,sip",0,SIP,SIP,0
+field,"party.contact_mechanism,skype",0,Skype,Skype,0
+field,"party.contact_mechanism,type",0,Type,Type,0
+field,"party.contact_mechanism,value",0,Value,Waarde,0
+field,"party.contact_mechanism,website",0,Website,Website,0
+field,"party.party,active",0,Active,Actief,0
+field,"party.party,addresses",0,Addresses,Adressen,0
+field,"party.party,categories",0,Categories,Categorieën,0
+field,"party.party,code",0,Code,Code,0
+field,"party.party,code_length",0,Code Length,Lengte code,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,Contactmogelijkheden,0
+field,"party.party,email",0,E-Mail,E-mail,0
+field,"party.party,fax",0,Fax,Fax,0
+field,"party.party,full_name",0,Full Name,Naam voluit,0
+field,"party.party,lang",0,Language,Taal,0
+field,"party.party,mobile",0,Mobile,Mobiel,0
+field,"party.party,name",0,Name,Naam,0
+field,"party.party,phone",0,Phone,Telefoon,0
+field,"party.party,rec_name",0,Name,Naam,0
+field,"party.party,vat_code",0,VAT Code,BTW-nummer,0
+field,"party.party,vat_country",0,VAT Country,BTW-land,0
+field,"party.party,vat_number",0,VAT Number,BTW-nummer,0
+field,"party.party,website",0,Website,Website,0
+field,"party.party-party.category,category",0,Category,Categorie,0
+field,"party.party-party.category,party",0,Party,Relatie,0
+field,"party.party-party.category,rec_name",0,Name,Naam,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,De keuze van een BTW land maakt controle van het BTW nummer mogelijk.,0
+help,"party.party,vat_number",0,Value Added Tax number,Nummer omzetbelasting,0
+model,"ir.action,name",act_address_form,Addresses,Adressen,0
+model,"ir.action,name",act_address_form2,Addresses,Adressen,0
+model,"ir.action,name",act_category_form,Categories,Categorieën,0
+model,"ir.action,name",act_category_form2,Categories,Categorieën,0
+model,"ir.action,name",act_category_tree,Categories,Categorieën,0
+model,"ir.action,name",act_party_by_category,Parties by Category,Relaties per categorie,0
+model,"ir.action,name",act_party_configuration_form,Party Configuration,Relatie instellingen,0
+model,"ir.action,name",act_party_form,Parties,Relaties,0
+model,"ir.action,name",act_party_form2,Parties,Relaties,0
+model,"ir.action,name",report_label,Labels,Etiketten,0
+model,"ir.action,name",wizard_check_vies,Check VIES,Check VIES,0
+model,"ir.sequence,name",sequence_party,Party,Relatie,0
+model,"ir.sequence.type,name",sequence_type_party,Party,Relatie,0
+model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,Nieuw adres,0
+model,"ir.ui.menu,name",menu_category_form,Categories,Categorieën,0
+model,"ir.ui.menu,name",menu_category_form2,New category,Nieuwe categorie,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,Categorieën,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Instellingen,0
+model,"ir.ui.menu,name",menu_party,Party Management,Relatiebeheer,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Relatie instellingen,0
+model,"ir.ui.menu,name",menu_party_form,Parties,Relaties,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Nieuwe relatie,0
+model,"party.address,name",0,Address,Adres,0
+model,"party.category,name",0,Category,Categorie,0
+model,"party.check_vies.check,name",0,Check VIES - Check,Check VIES - Oké,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,Check VIES - Mislukt,0
+model,"party.configuration,name",0,Party Configuration,Relatie instellingen,0
+model,"party.contact_mechanism,name",0,Contact Mechanism,Contactmogelijkheid,0
+model,"party.party,name",0,Party,Relatie,0
+model,"party.party-party.category,name",0,Party - Category,Relatie categorie,0
+model,"res.group,name",group_party_admin,Party Administration,Relatiebeheer,0
+selection,"party.contact_mechanism,type",0,E-Mail,E-mail,0
+selection,"party.contact_mechanism,type",0,Fax,Fax,0
+selection,"party.contact_mechanism,type",0,IRC,IRC,0
+selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
+selection,"party.contact_mechanism,type",0,Mobile,Mobiel,0
+selection,"party.contact_mechanism,type",0,Other,Overig,0
+selection,"party.contact_mechanism,type",0,Phone,Telefoon,0
+selection,"party.contact_mechanism,type",0,SIP,SIP,0
+selection,"party.contact_mechanism,type",0,Skype,Skype,0
+selection,"party.contact_mechanism,type",0,Website,Website,0
+view,party.address,0,Addresses,Adressen,0
+view,party.category,0,Categories,Categorieën,0
+view,party.category,0,Category,Categorie,0
+view,party.check_vies.check,0,Parties Failed,Controle relatie mislukt,0
+view,party.check_vies.check,0,Parties Succeed,Controle relatie gelukt,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,BTW Informatie Dienst,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,BTW Informatie Dienst,0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","U moet een recente versie van ""python-vatnumber"" geïnstalleerd hebben!",0
+view,party.configuration,0,Party Configuration,Relatie instellingen,0
+view,party.contact_mechanism,0,Contact Mechanism,Contactmogelijkheid,0
+view,party.contact_mechanism,0,Contact Mechanisms,Contactmogelijkheden,0
+view,party.party,0,Accounting,Financieel,0
+view,party.party,0,Addresses,Adressen,0
+view,party.party,0,Categories,Categorieën,0
+view,party.party,0,Contact Mechanisms,Contactmogelijkheden,0
+view,party.party,0,General,Algemeen,0
+view,party.party,0,Parties,Relaties,0
+view,party.party,0,Party,Relatie,0
+view,party.party,0,VAT,Omzetbelasting,0
+wizard_button,"party.check_vies,check,end",0,Ok,Oké,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,Oké,0
diff --git a/party.py b/party.py
index 8e74a7c..2d27960 100644
--- a/party.py
+++ b/party.py
@@ -87,6 +87,11 @@ class Party(ModelSQL, ModelView):
'write_uid', 'write_date'])
return [address_obj.default_get(fields_names)]
+ def default_lang(self):
+ config_obj = self.pool.get('party.configuration')
+ config = config_obj.browse(1)
+ return config.party_lang.id
+
def on_change_with_vat_code(self, vals):
return (vals.get('vat_country') or '') + (vals.get('vat_number') or '')
@@ -176,7 +181,7 @@ class Party(ModelSQL, ModelView):
return new_ids
def search_rec_name(self, name, clause):
- ids = self.search([('code',) + clause[1:]], order=[])
+ ids = self.search([('code',) + clause[1:]], order=[])
if ids:
ids += self.search([('name',) + clause[1:]], order=[])
return [('id', 'in', ids)]
diff --git a/party.xml b/party.xml
index b050c72..c5602b6 100644
--- a/party.xml
+++ b/party.xml
@@ -13,8 +13,12 @@ this repository contains the full copyright notices and license terms. -->
<field name="groups" eval="[('add', ref('group_party_admin'))]"/>
</record>
+ <record model="ir.ui.icon" id="party_icon">
+ <field name="name">tryton-party</field>
+ <field name="path">icons/tryton-party.svg</field>
+ </record>
<menuitem name="Party Management" sequence="0" id="menu_party"
- icon="tryton-users"/>
+ icon="tryton-party"/>
<menuitem name="Configuration" parent="menu_party"
id="menu_configuration" groups="group_party_admin"
@@ -44,8 +48,11 @@ this repository contains the full copyright notices and license terms. -->
<field name="name" xexpand="1"/>
<label name="code"/>
<field name="code"/>
- <label name="active"/>
- <field name="active" xexpand="0" width="100"/>
+ <group col="20" colspan="2" id="checkboxes">
+ <label name="active"/>
+ <field name="active" xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ </group>
<notebook colspan="6">
<page string="General" id="general">
<field name="addresses" mode="form,tree" colspan="4">
@@ -96,7 +103,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_party_form">
<field name="name">Parties</field>
<field name="res_model">party.party</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_party_form_view1">
<field name="sequence" eval="10"/>
@@ -113,7 +119,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_party_form2">
<field name="name">Parties</field>
<field name="res_model">party.party</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_party_form2_view1">
<field name="sequence" eval="10"/>
@@ -130,7 +135,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_party_by_category">
<field name="name">Parties by Category</field>
<field name="res_model">party.party</field>
- <field name="view_type">form</field>
<field name="context">{'categories': [Eval('active_id')]}</field>
<field name="domain">[('categories', 'child_of', [Eval('active_id')], 'parent')]</field>
</record>
diff --git a/ru_RU.csv b/ru_RU.csv
new file mode 100644
index 0000000..e7fd108
--- /dev/null
+++ b/ru_RU.csv
@@ -0,0 +1,204 @@
+type,name,res_id,src,value,fuzzy
+error,party.address,0,You can not modify the party of an address!,,0
+error,party.category,0,You can not create recursive categories!,ÐÑ Ð½Ðµ можеÑе ÑоздаваÑÑ ÑекÑÑÑивнÑе каÑегоÑии!,0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.",,0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,,0
+error,party.party,0,Invalid VAT number!,ÐÑибка в номеÑе ÐÐÐ,0
+error,party.party,0,The INN of the party must be unique!,ÐÐРдолжно бÑÑÑ ÑникалÑнÑм,0
+error,party.party,0,The Name of the party must be unique!,,0
+error,party.party,0,The code of the party must be unique!,Ðод конÑÑагенÑа должен бÑÑÑ ÑникалÑнÑм,0
+field,"party.address,active",0,Active,ÐкÑивнÑй,0
+field,"party.address,area_residence",0,Area of residence,Район пÑоживаниÑ,0
+field,"party.address,city",0,City,ÐоÑод,0
+field,"party.address,country",0,Country,СÑÑана,0
+field,"party.address,date_end",0,Date End,ÐаÑа оконÑаниÑ,0
+field,"party.address,full_address",0,Full address,ÐолнÑй адÑеÑ,0
+field,"party.address,name",0,Name,Ðаименование,0
+field,"party.address,party",0,Party,ÐонÑÑагенÑ,0
+field,"party.address,rec_name",0,Name,Ðаименование,0
+field,"party.address,sequence",0,Sequence,ÐоÑледоваÑелÑноÑÑÑ,0
+field,"party.address,street",0,Street,ÑлиÑа,0
+field,"party.address,streetbis",0,Street (bis),ÑлиÑа (доп.),0
+field,"party.address,subdivision",0,Subdivision,ÐодÑаздел,0
+field,"party.address,zip",0,Zip,ÐндекÑ,0
+field,"party.category,active",0,Active,ÐкÑивнÑй,0
+field,"party.category,childs",0,Children,ÐодÑиненÑй,0
+field,"party.category,name",0,Name,Ðаименование,0
+field,"party.category,parent",0,Parent,ÐÑновной,0
+field,"party.category,rec_name",0,Name,Ðаименование,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,,0
+field,"party.configuration,party_sequence",0,Party Sequence,,0
+field,"party.configuration,rec_name",0,Name,Ðаименование,0
+field,"party.contact_mechanism,active",0,Active,ÐкÑивнÑй,0
+field,"party.contact_mechanism,comment",0,Comment,ÐомменÑаÑии,0
+field,"party.contact_mechanism,email",0,E-Mail,Ðл.поÑÑа,0
+field,"party.contact_mechanism,other_value",0,Value,ÐнаÑение,0
+field,"party.contact_mechanism,party",0,Party,ÐонÑÑагенÑ,0
+field,"party.contact_mechanism,rec_name",0,Name,Ðаименование,0
+field,"party.contact_mechanism,sequence",0,Sequence,ÐоÑледоваÑелÑноÑÑÑ,0
+field,"party.contact_mechanism,sip",0,Sip phone,,0
+field,"party.contact_mechanism,skype",0,Skype,,0
+field,"party.contact_mechanism,type",0,Type,Тип,0
+field,"party.contact_mechanism,value",0,Value,ÐнаÑение,0
+field,"party.contact_mechanism,website",0,Website,СайÑ,0
+field,"party.party,active",0,Active,ÐкÑивнÑй,0
+field,"party.party,addresses",0,Addresses,ÐдÑеÑа,0
+field,"party.party,banks",0,Accounts in Banks,СÑеÑа в ÐанкаÑ
,0
+field,"party.party,birthday",0,Birthday,ÐÐµÐ½Ñ ÑождениÑ,0
+field,"party.party,categories",0,Categories,ÐаÑегоÑиÑ,0
+field,"party.party,code",0,Code,Ðод,0
+field,"party.party,code_length",0,Code Length,Ðлина Ðода,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,ÐонÑакÑнÑй ÑпоÑобÑ,0
+field,"party.party,contacts",0,Contact,ÐонÑакÑое лиÑо,0
+field,"party.party,customer",0,Customer,ÐаказÑик,0
+field,"party.party,document",0,Legal Documents,Рег.докÑменÑ,0
+field,"party.party,email",0,E-Mail,Ðл.поÑÑа,0
+field,"party.party,fax",0,Fax,ФакÑ,0
+field,"party.party,full_name",0,Full Name,Ðолное наименование,0
+field,"party.party,id_1c",0,ID import from 1C,,0
+field,"party.party,individual",0,Individual,Физ.лиÑо,0
+field,"party.party,kpp_number",0,Reason code setting,ÐÐÐ,0
+field,"party.party,lang",0,Language,ЯзÑк,0
+field,"party.party,legal_form",0,Legal Form,,0
+field,"party.party,mobile",0,Mobile,ÑоÑ.ÑелеÑон,0
+field,"party.party,name",0,Full Name,Ðаименование,0
+field,"party.party,note",0,Notes,ÐомменÑаÑии,0
+field,"party.party,ogrn_number",0,OGRN registration number,ÐÐÐ Ð,0
+field,"party.party,okpo_number",0,OKPO registration number,ÐÐÐÐ,0
+field,"party.party,okved_number",0,OKVED registration number,ÐÐÐÐÐ,0
+field,"party.party,phone",0,Phone,ТелеÑон,0
+field,"party.party,photo",0,Person Photo or Logo,ФоÑогÑаÑÐ¸Ñ Ð¸Ð»Ð¸ ÐогоÑип,0
+field,"party.party,photo_file",0,Person Photo or Logo,ФоÑогÑаÑÐ¸Ñ Ð¸Ð»Ð¸ ÐогоÑип,0
+field,"party.party,rec_name",0,Name,Ðаименование,0
+field,"party.party,shortcut",0,ShortCut,ÐÑаÑко,0
+field,"party.party,shortname",0,Short Name,ÐÑаÑко,0
+field,"party.party,supplier",0,Supplier,ÐоÑÑавÑик,0
+field,"party.party,vat_code",0,VAT Code,Ðод ÐÐÐ,0
+field,"party.party,vat_country",0,VAT Country,СÑÑана ÐÐÐ ,0
+field,"party.party,vat_number",0,VAT Number,ÐÐÐ,0
+field,"party.party,website",0,Website,СайÑ,0
+field,"party.party-party.category,category",0,Category,ÐаÑегоÑии,0
+field,"party.party-party.category,party",0,Party,ÐонÑÑагенÑ,0
+field,"party.party-party.category,rec_name",0,Name,Ðаименование,0
+field,"party.person,birthday",0,Birthday,ÐÐµÐ½Ñ ÑождениÑ,0
+field,"party.person,party",0,Party,ÐонÑÑагенÑ,0
+field,"party.person,rec_name",0,Name,Ðаименование,0
+help,"party.party,customer",0,Check this box if the party is a Cusmomer.,"ÐÑмеÑÑÑе, еÑли ÑÑо заказÑик",0
+help,"party.party,individual",0,Check this box if the party is a Individual.,"ÐÑмеÑÑÑе, еÑли ÑÑо ÑизиÑеÑкие лиÑо",0
+help,"party.party,supplier",0,Check this box if the party is a Supplier.,"ÐÑмеÑÑÑе, еÑли ÑÑо поÑÑавÑик",0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,УÑÑановиÑе ÑÑÑÐ°Ð½Ñ ÑегиÑÑÑаÑии оÑганизаÑии Ð´Ð»Ñ Ð¿ÑовеÑки,0
+help,"party.party,vat_number",0,Value Added Tax number,ÐÐÐ,0
+model,"ir.action,name",act_address_form,Addresses,ÐдÑеÑа,0
+model,"ir.action,name",act_address_form2,Addresses,ÐдÑеÑа,0
+model,"ir.action,name",act_category_form,Categories,ÐаÑегоÑиÑ,0
+model,"ir.action,name",act_category_form2,Categories,ÐаÑегоÑиÑ,0
+model,"ir.action,name",act_category_tree,Categories,ÐаÑегоÑиÑ,0
+model,"ir.action,name",act_party_by_category,Parties by Category,ÐонÑÑагенÑÑ Ð¿Ð¾ каÑегоÑиÑм,0
+model,"ir.action,name",act_party_configuration_form,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
+model,"ir.action,name",act_party_contact_form,Contact,ÐонÑакÑое лиÑо,0
+model,"ir.action,name",act_party_form,Parties,ÐонÑÑагенÑÑ,0
+model,"ir.action,name",act_party_form2,Parties,ÐонÑÑагенÑÑ,0
+model,"ir.action,name",report_label,Labels,,0
+model,"ir.action,name",wizard_check_vies,Check VIES,ÐÑовеÑиÑÑ VIES,0
+model,"ir.lang,name",lang_ru,Russian,Ð ÑÑÑкий,0
+model,"ir.sequence,name",sequence_party,Party,ÐонÑÑагенÑ,0
+model,"ir.sequence.type,name",sequence_type_party,Party,ÐонÑÑагенÑ,0
+model,"ir.ui.menu,name",menu_address_form,Addresses,ÐдÑеÑа,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,ÐовÑй адÑеÑ,0
+model,"ir.ui.menu,name",menu_category_form,Categories,ÐаÑегоÑиÑ,0
+model,"ir.ui.menu,name",menu_category_form2,New category,ÐовÑе каÑегоÑии,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,ÐаÑегоÑиÑ,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,ÐонÑигÑÑаÑиÑ,0
+model,"ir.ui.menu,name",menu_party,Party Management,ÐÑганизаÑии,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
+model,"ir.ui.menu,name",menu_party_contact_form,Contact,ÐонÑакÑое лиÑо,0
+model,"ir.ui.menu,name",menu_party_form,Parties,ÐонÑÑагенÑÑ,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,ÐовÑй конÑÑагенÑ,0
+model,"ir.ui.menu,name",menu_person_form,Persons,ФизиÑеÑкие лиÑа,0
+model,"party.address,name",0,Address,ÐдÑеÑ,0
+model,"party.category,name",0,Category,ÐаÑегоÑии,0
+model,"party.check_vies.check,name",0,Check VIES - Check,ÐÑовеÑиÑÑ VIES - пÑовеÑиÑÑ,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,ÐÑовеÑиÑÑ VIES - не пÑовеÑÑÑÑ,0
+model,"party.configuration,name",0,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
+model,"party.party,name",0,Party,ÐонÑÑагенÑ,0
+model,"party.party-party.category,name",0,Party - Category,ÐонÑÑÐ°Ð³ÐµÐ½Ñ - ÐаÑегоÑии,0
+model,"res.group,name",group_party,Party (read),ÐÑганизаÑии (ÑÑение),0
+model,"res.group,name",group_party_admin,Party Administration,ÐдминиÑÑÑиÑование конÑÑагенÑов,0
+model,"res.group,name",group_party_write,Party (write),ÐÑганизаÑии (запиÑÑ) ,0
+selection,"party.contact_mechanism,type",0,E-Mail,Ðл.поÑÑа,0
+selection,"party.contact_mechanism,type",0,Fax,ФакÑ,0
+selection,"party.contact_mechanism,type",0,Home Phone,ÐомаÑний ÑелеÑон,0
+selection,"party.contact_mechanism,type",0,IRC,,0
+selection,"party.contact_mechanism,type",0,Jabber,,0
+selection,"party.contact_mechanism,type",0,Mobile,ÑоÑ.ÑелеÑон,0
+selection,"party.contact_mechanism,type",0,Other,ÐÑоÑий,0
+selection,"party.contact_mechanism,type",0,Phone,ТелеÑон,0
+selection,"party.contact_mechanism,type",0,SIP,,0
+selection,"party.contact_mechanism,type",0,Skype,,0
+selection,"party.contact_mechanism,type",0,Website,СайÑ,0
+selection,"party.contact_mechanism,type",0,Work Phone,РабоÑий ÑелеÑон,0
+selection,"party.party,vat_country",0,,РезеÑвнÑй ÑÑеÑ,0
+selection,"party.party,vat_country",0,AL,,0
+selection,"party.party,vat_country",0,AT,,0
+selection,"party.party,vat_country",0,BE,,0
+selection,"party.party,vat_country",0,BG,,0
+selection,"party.party,vat_country",0,CL,,0
+selection,"party.party,vat_country",0,CO,,0
+selection,"party.party,vat_country",0,CY,,0
+selection,"party.party,vat_country",0,CZ,,0
+selection,"party.party,vat_country",0,DE,,0
+selection,"party.party,vat_country",0,DK,,0
+selection,"party.party,vat_country",0,EE,,0
+selection,"party.party,vat_country",0,EL,,0
+selection,"party.party,vat_country",0,ES,,0
+selection,"party.party,vat_country",0,FI,,0
+selection,"party.party,vat_country",0,FR,,0
+selection,"party.party,vat_country",0,GB,,0
+selection,"party.party,vat_country",0,GR,,0
+selection,"party.party,vat_country",0,HU,,0
+selection,"party.party,vat_country",0,IE,,0
+selection,"party.party,vat_country",0,IT,,0
+selection,"party.party,vat_country",0,LT,,0
+selection,"party.party,vat_country",0,LU,,0
+selection,"party.party,vat_country",0,LV,,0
+selection,"party.party,vat_country",0,MT,,0
+selection,"party.party,vat_country",0,NL,,0
+selection,"party.party,vat_country",0,PL,,0
+selection,"party.party,vat_country",0,PT,,0
+selection,"party.party,vat_country",0,RO,,0
+selection,"party.party,vat_country",0,RU,,0
+selection,"party.party,vat_country",0,SE,,0
+selection,"party.party,vat_country",0,SI,,0
+selection,"party.party,vat_country",0,SK,,0
+selection,"party.party,vat_country",0,SM,,0
+selection,"party.party,vat_country",0,UA,,0
+selection,"party.party,vat_country",0,UK,,0
+view,party.address,0,Addresses,ÐдÑеÑа,0
+view,party.address,0,Job Function,ÐолжноÑÑÑ,0
+view,party.address,0,Notes,ÐомменÑаÑии,0
+view,party.category,0,Categories,ÐаÑегоÑиÑ,0
+view,party.category,0,Category,ÐаÑегоÑии,0
+view,party.check_vies.check,0,Parties Failed,,0
+view,party.check_vies.check,0,Parties Succeed,,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,ÐÐРСиÑÑема обмена инÑоÑмаÑией о ÑезÑлÑÑаÑаÑ
,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,ÐÐРСиÑÑема обмена инÑоÑмаÑией,0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!",,0
+view,party.configuration,0,Party Configuration,ÐаÑÑÑойка конÑÑагенÑов,0
+view,party.contact_mechanism,0,Contact Mechanism,ÐонÑакÑнÑй ÑпоÑоб,0
+view,party.contact_mechanism,0,Contact Mechanisms,ÐонÑакÑнÑй ÑпоÑобÑ,0
+view,party.party,0,Account in Bank,СÑÐµÑ Ð² банке,0
+view,party.party,0,Accounting,РегиÑÑÑаÑионнÑе даннÑе,0
+view,party.party,0,Accounts in Banks,СÑеÑа в банкаÑ
,0
+view,party.party,0,Addresses,ÐдÑеÑа,0
+view,party.party,0,Categories,ÐаÑегоÑиÑ,0
+view,party.party,0,Contact Mechanisms,ÐонÑакÑнÑй ÑпоÑобÑ,0
+view,party.party,0,Contacts,ÐонÑакÑнÑе лиÑа,0
+view,party.party,0,Document,ÐокÑменÑ,0
+view,party.party,0,General,ÐÑновной,0
+view,party.party,0,Legal Document,РегиÑÑÑаÑионнÑй докÑменÑ,0
+view,party.party,0,Parties,ÐонÑÑагенÑÑ,0
+view,party.party,0,Party,ÐонÑÑагенÑ,0
+view,party.party,0,VAT,ÐÐÐ,0
+wizard_button,"party.check_vies,check,end",0,Ok,Ðа,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,Ðа,0
diff --git a/setup.py b/setup.py
index 5f9e659..0c7d529 100644
--- a/setup.py
+++ b/setup.py
@@ -31,11 +31,13 @@ setup(name='trytond_party',
packages=[
'trytond.modules.party',
'trytond.modules.party.tests',
+ 'trytond.modules.party.icons',
],
package_data={
'trytond.modules.party': info.get('xml', []) \
+ info.get('translation', []) \
+ ['label.odt'],
+ 'trytond.modules.party.icons': ['tryton-party.svg'],
},
classifiers=[
'Development Status :: 5 - Production/Stable',
@@ -45,12 +47,17 @@ setup(name='trytond_party',
'Intended Audience :: Legal Industry',
'Intended Audience :: Manufacturing',
'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'Natural Language :: Bulgarian',
+ 'Natural Language :: Dutch',
'Natural Language :: English',
'Natural Language :: French',
'Natural Language :: German',
+ 'Natural Language :: Russian',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
- 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2.5',
+ 'Programming Language :: Python :: 2.6',
+ 'Programming Language :: Python :: 2.7',
'Topic :: Office/Business',
],
license='GPL-3',
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 1c9f583..a893ba4 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.8.0
+Version: 2.0.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
+Download-URL: http://downloads.tryton.org/2.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
@@ -16,10 +16,15 @@ Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
+Classifier: Natural Language :: Russian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index e6cde5c..144218e 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -5,6 +5,7 @@ LICENSE
MANIFEST.in
README
address.xml
+bg_BG.csv
category.xml
configuration.xml
contact_mechanism.xml
@@ -13,7 +14,9 @@ es_CO.csv
es_ES.csv
fr_FR.csv
label.odt
+nl_NL.csv
party.xml
+ru_RU.csv
setup.py
./__init__.py
./__tryton__.py
@@ -22,9 +25,13 @@ setup.py
./configuration.py
./contact_mechanism.py
./party.py
+./icons/__init__.py
./tests/__init__.py
./tests/test_party.py
doc/index.rst
+icons/LICENSE
+icons/__init__.py
+icons/tryton-party.svg
trytond_party.egg-info/PKG-INFO
trytond_party.egg-info/SOURCES.txt
trytond_party.egg-info/dependency_links.txt
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 95dfa23..f9c54d1 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 1.8, < 1.9
-trytond >= 1.8, < 1.9
+trytond_country >= 2.0, < 2.1
+trytond >= 2.0, < 2.1
[VAT]
vatnumber
\ No newline at end of file
commit a6f02feec6f401b013e8bbd0421e6fb9da61f701
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Nov 4 20:12:23 2010 +0100
Adding upstream version 1.8.0.
diff --git a/CHANGELOG b/CHANGELOG
index 5286b81..84b4452 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 1.8.0 - 2010-11-01
+* Bug fixes (see mercurial logs for details)
+* Add default address on party
+
Version 1.6.0 - 2010-05-10
* Bug fixes (see mercurial logs for details)
* Don't allow empty vat_number if vat_country is set
diff --git a/INSTALL b/INSTALL
index 7d489fd..86ff4bd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,7 @@ Installing trytond_party
Prerequisites
-------------
- * Python 2.4 or later (http://www.python.org/)
+ * Python 2.5 or later (http://www.python.org/)
* trytond (http://www.tryton.org/)
* trytond_country (http://www.tryton.org/)
* Optional: vatnumber (http://code.google.com/p/vatnumber/)
diff --git a/PKG-INFO b/PKG-INFO
index f508e2c..c165573 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.6.0
+Version: 1.8.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.6/
+Download-URL: http://downloads.tryton.org/1.8/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index 7692d80..f2fd76d 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,7 +7,7 @@
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
- 'version' : '1.6.0',
+ 'version' : '1.8.0',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/address.py b/address.py
index dbb178a..155791a 100644
--- a/address.py
+++ b/address.py
@@ -42,14 +42,14 @@ class Address(ModelSQL, ModelView):
'write_party': 'You can not modify the party of an address!',
})
- def default_active(self, cursor, user, context=None):
+ def default_active(self):
return True
- def get_full_address(self, cursor, user, ids, name, context=None):
+ def get_full_address(self, ids, name):
if not ids:
return {}
res = {}
- for address in self.browse(cursor, user, ids, context=context):
+ for address in self.browse(ids):
res[address.id] = ''
if address.name:
res[address.id] += address.name
@@ -81,34 +81,32 @@ class Address(ModelSQL, ModelView):
res[address.id] += address.country.name
return res
- def get_rec_name(self, cursor, user, ids, name, context=None):
+ def get_rec_name(self, ids, name):
if not ids:
return {}
res = {}
- for address in self.browse(cursor, user, ids, context=context):
+ for address in self.browse(ids):
res[address.id] = ", ".join(x for x in [address.name,
address.party.rec_name, address.zip, address.city] if x)
return res
- def search_rec_name(self, cursor, user, name, clause, context=None):
- ids = self.search(cursor, user, ['OR',
+ def search_rec_name(self, name, clause):
+ ids = self.search(['OR',
('zip',) + clause[1:],
('city',) + clause[1:],
('name',) + clause[1:],
- ], order=[], context=context)
+ ], order=[])
if ids:
return [('id', 'in', ids)]
return [('party',) + clause[1:]]
- def write(self, cursor, user, ids, vals, context=None):
+ def write(self, ids, vals):
if 'party' in vals:
if isinstance(ids, (int, long)):
ids = [ids]
- for address in self.browse(cursor, user, ids, context=context):
+ for address in self.browse(ids):
if address.party.id != vals['party']:
- self.raise_user_error(cursor, 'write_party',
- context=context)
- return super(Address, self).write(cursor, user, ids, vals,
- context=context)
+ self.raise_user_error('write_party')
+ return super(Address, self).write(ids, vals)
Address()
diff --git a/category.py b/category.py
index 6338ad2..471199d 100644
--- a/category.py
+++ b/category.py
@@ -37,16 +37,16 @@ class Category(ModelSQL, ModelView):
})
self._order.insert(1, ('name', 'ASC'))
- def default_active(self, cursor, user, context=None):
+ def default_active(self):
return 1
- def check_name(self, cursor, user, ids):
- for category in self.browse(cursor, user, ids):
+ def check_name(self, ids):
+ for category in self.browse(ids):
if SEPARATOR in category.name:
return False
return True
- def get_rec_name(self, cursor, user, ids, name, context=None):
+ def get_rec_name(self, ids, name):
if not ids:
return {}
res = {}
@@ -57,11 +57,11 @@ class Category(ModelSQL, ModelView):
return _name(category.parent) + SEPARATOR + category.name
else:
return category.name
- for category in self.browse(cursor, user, ids, context=context):
+ for category in self.browse(ids):
res[category.id] = _name(category)
return res
- def search_rec_name(self, cursor, user, name, clause, context=None):
+ def search_rec_name(self, name, clause):
if isinstance(clause[2], basestring):
values = clause[2].split(SEPARATOR)
values.reverse()
@@ -70,7 +70,7 @@ class Category(ModelSQL, ModelView):
for name in values:
domain.append((field, clause[1], name))
field = 'parent.' + field
- ids = self.search(cursor, user, domain, order=[], context=context)
+ ids = self.search(domain, order=[])
return [('id', 'in', ids)]
#TODO Handle list
return [('name',) + clause[1:]]
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 61cae05..19d1b29 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -75,27 +75,27 @@ class ContactMechanism(ModelSQL, ModelView):
'a contact mechanism!',
})
- def default_type(self, cursor, user, context=None):
+ def default_type(self):
return 'phone'
- def default_active(self, cursor, user, context=None):
+ def default_active(self):
return True
- def get_value(self, cursor, user, ids, names, context=None):
+ def get_value(self, ids, names):
res = {}
for name in names:
res[name] = {}
- for mechanism in self.browse(cursor, user, ids, context=context):
+ for mechanism in self.browse(ids):
for name in names:
res[name][mechanism.id] = mechanism.value
return res
- def set_value(self, cursor, user, ids, name, value, context=None):
- self.write(cursor, user, ids, {
+ def set_value(self, ids, name, value):
+ self.write(ids, {
'value': value,
- }, context=context)
+ })
- def _change_value(self, cursor, user, value, context=None):
+ def _change_value(self, value):
return {
'value': value,
'website': value,
@@ -105,39 +105,31 @@ class ContactMechanism(ModelSQL, ModelView):
'other_value': value,
}
- def on_change_value(self, cursor, user, vals, context=None):
- return self._change_value(cursor, user, vals.get('value'),
- context=context)
+ def on_change_value(self, vals):
+ return self._change_value(vals.get('value'))
- def on_change_website(self, cursor, user, vals, context=None):
- return self._change_value(cursor, user, vals.get('website'),
- context=context)
+ def on_change_website(self, vals):
+ return self._change_value(vals.get('website'))
- def on_change_email(self, cursor, user, vals, context=None):
- return self._change_value(cursor, user, vals.get('email'),
- context=context)
+ def on_change_email(self, vals):
+ return self._change_value(vals.get('email'))
- def on_change_skype(self, cursor, user, vals, context=None):
- return self._change_value(cursor, user, vals.get('skype'),
- context=context)
+ def on_change_skype(self, vals):
+ return self._change_value(vals.get('skype'))
- def on_change_sip(self, cursor, user, vals, context=None):
- return self._change_value(cursor, user, vals.get('sip'),
- context=context)
+ def on_change_sip(self, vals):
+ return self._change_value(vals.get('sip'))
- def on_change_other_value(self, cursor, user, vals, context=None):
- return self._change_value(cursor, user, vals.get('other_value'),
- context=context)
+ def on_change_other_value(self, vals):
+ return self._change_value(vals.get('other_value'))
- def write(self, cursor, user, ids, vals, context=None):
+ def write(self, ids, vals):
if 'party' in vals:
if isinstance(ids, (int, long)):
ids = [ids]
- for mechanism in self.browse(cursor, user, ids, context=context):
+ for mechanism in self.browse(ids):
if mechanism.party.id != vals['party']:
- self.raise_user_error(cursor, 'write_party',
- context=context)
- return super(ContactMechanism, self).write(cursor, user, ids, vals,
- context=context)
+ self.raise_user_error('write_party')
+ return super(ContactMechanism, self).write(ids, vals)
ContactMechanism()
diff --git a/de_DE.csv b/de_DE.csv
index e1076c2..9fdb16c 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -1,12 +1,12 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,Die Partei einer Adresse kann nicht geändert werden!,0
error,party.category,0,The name of a party category must be unique by parent!,Der Name einer Parteikategorie kann pro Ãbergeordneter Partei nur einmal vergeben werden!,0
-error,party.category,0,You can not create recursive categories!,Kategorien dürfen nicht rekursiv sein,0
+error,party.category,0,You can not create recursive categories!,Kategorien können nicht rekursiv angelegt werden!,0
error,party.category,0,"You can not use "" / "" in name field!","In dem Namensfeld kann "" / "" nicht verwendet werden!",0
error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!,0
error,party.party,0,Invalid VAT number!,Ungültige USt-ID-Nummer!,0
-error,party.party,0,The code of the party must be unique!,Der Code für eine Partei kann nur einmal vergeben werden!,0
+error,party.party,0,The code of the party must be unique!,Der Name einer Partei kann nur einmal vergeben werden!,0
field,"party.address,active",0,Active,Aktiv,0
field,"party.address,city",0,City,Stadt,0
field,"party.address,country",0,Country,Staat,0
@@ -65,9 +65,6 @@ field,"party.party,id",0,ID,ID,0
field,"party.party,lang",0,Language,Sprache,0
field,"party.party,mobile",0,Mobile,Mobiltelefon,0
field,"party.party,name",0,Name,Name,0
-field,"party.party-party.category,category",0,Category,Kategorie,0
-field,"party.party-party.category,party",0,Party,Partei,0
-field,"party.party-party.category,rec_name",0,Name,Name,0
field,"party.party,phone",0,Phone,Telefon,0
field,"party.party,rec_name",0,Name,Name,0
field,"party.party,vat_code",0,VAT Code,USt-ID-Nr.,0
@@ -76,31 +73,34 @@ field,"party.party,vat_number",0,VAT Number,USt-ID-Nr.,0
field,"party.party,website",0,Website,Website,0
field,"party.party,write_date",0,Last modification date,Zuletzt geändert am,0
field,"party.party,write_uid",0,Last modification by,Zuletzt geändert von,0
+field,"party.party-party.category,category",0,Category,Kategorie,0
+field,"party.party-party.category,party",0,Party,Partei,0
+field,"party.party-party.category,rec_name",0,Name,Name,0
help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ein Eintrag in USt-ID-Präfix aktiviert die Ãberprüfung der USt-ID-Nr.,0
help,"party.party,vat_number",0,Value Added Tax number,Umsatzsteueridentifikationsnummer,0
model,"ir.action,name",act_address_form,Addresses,Adressen,0
model,"ir.action,name",act_address_form2,Addresses,Adressen,0
-model,"ir.action,name",act_category_tree,Categories,Kategorien,0
model,"ir.action,name",act_category_form,Categories,Kategorien,0
model,"ir.action,name",act_category_form2,Categories,Kategorien,0
-model,"ir.action,name",wizard_check_vies,Check VIES,USt-ID-Nr. per VIES überprüfen,0
-model,"ir.action,name",report_label,Labels,Etiketten,0
-model,"ir.action,name",act_party_form,Parties,Parteien,0
-model,"ir.action,name",act_party_form2,Parties,Parteien,0
+model,"ir.action,name",act_category_tree,Categories,Kategorien,0
model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach Kategorie,0
model,"ir.action,name",act_party_configuration_form,Party Configuration,Einstellungen Partei,0
+model,"ir.action,name",act_party_form,Parties,Parteien,0
+model,"ir.action,name",act_party_form2,Parties,Parteien,0
+model,"ir.action,name",report_label,Labels,Etiketten,0
+model,"ir.action,name",wizard_check_vies,Check VIES,USt-ID-Nr. per VIES überprüfen,0
model,"ir.sequence,name",sequence_party,Party,Partei,0
model,"ir.sequence.type,name",sequence_type_party,Party,Partei,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,Parteikategorien,0
-model,"ir.ui.menu,name",menu_category_form,Categories,Parteikategorien,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Einstellungen,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Neue Adresse,0
+model,"ir.ui.menu,name",menu_category_form,Categories,Parteikategorien,0
model,"ir.ui.menu,name",menu_category_form2,New category,Neue Parteikategorie,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Neue Partei,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Parteien,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Einstellungen Partei,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,Parteikategorien,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Einstellungen,0
model,"ir.ui.menu,name",menu_party,Party Management,Parteien,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Einstellungen Partei,0
+model,"ir.ui.menu,name",menu_party_form,Parties,Parteien,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Neue Partei,0
model,"party.address,name",0,Address,Adresse,0
model,"party.category,name",0,Category,Kategorie,0
model,"party.check_vies.check,name",0,Check VIES - Check,Ãberprüfung VIES - Durchführen,0
@@ -166,15 +166,15 @@ view,party.contact_mechanism,0,Contact Mechanism,Kontaktmöglichkeit,0
view,party.contact_mechanism,0,Contact Mechanisms,Kontaktmöglichkeiten,0
view,party.party,0,Account,Konten,0
view,party.party,0,Accounting,Buchhaltung,0
-view,party.party,0,_Accounting,_Buchhaltung,0
view,party.party,0,Addresses,Adressen,0
view,party.party,0,Categories,Kategorien,0
view,party.party,0,Contact Mechanism,Kontaktmöglichkeit,0
view,party.party,0,Contact Mechanisms,Kontaktmöglichkeiten,0
view,party.party,0,General,Allgemein,0
-view,party.party,0,_General,_Allgemein,0
view,party.party,0,Parties,Parteien,0
view,party.party,0,Party,Partei,0
view,party.party,0,VAT,USt,0
+view,party.party,0,_Accounting,_Buchhaltung,0
+view,party.party,0,_General,_Allgemein,0
wizard_button,"party.check_vies,check,end",0,Ok,OK,0
wizard_button,"party.check_vies,no_check,end",0,Ok,OK,0
diff --git a/fr_FR.csv b/fr_FR.csv
index cd59ab6..4dcb5e6 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -52,45 +52,45 @@ field,"party.party,full_name",0,Full Name,Nom complet,0
field,"party.party,lang",0,Language,Langue,0
field,"party.party,mobile",0,Mobile,Mobile,0
field,"party.party,name",0,Name,Nom,0
-field,"party.party-party.category,category",0,Category,Catégorie,0
-field,"party.party-party.category,party",0,Party,Tiers,0
-field,"party.party-party.category,rec_name",0,Name,Nom,0
field,"party.party,phone",0,Phone,Téléphone,0
field,"party.party,rec_name",0,Name,Nom,0
field,"party.party,vat_code",0,VAT Code,Code TVA,0
field,"party.party,vat_country",0,VAT Country,Code Pays TVA,0
field,"party.party,vat_number",0,VAT Number,Numéro de TVA,0
field,"party.party,website",0,Website,Site web,0
+field,"party.party-party.category,category",0,Category,Catégorie,0
+field,"party.party-party.category,party",0,Party,Tiers,0
+field,"party.party-party.category,rec_name",0,Name,Nom,0
help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ajouter un code pays TVA activera la vérification du numéro de TVA.,0
help,"party.party,vat_number",0,Value Added Tax number,Numéro de taxe sur la valeur ajoutée,0
model,"ir.action,name",act_address_form,Addresses,Adresses,0
model,"ir.action,name",act_address_form2,Addresses,Adresses,0
-model,"ir.action,name",act_category_tree,Categories,Catégories,0
model,"ir.action,name",act_category_form,Categories,Catégories,0
model,"ir.action,name",act_category_form2,Categories,Catégories,0
-model,"ir.action,name",wizard_check_vies,Check VIES,Validation VIES,0
-model,"ir.action,name",report_label,Labels,Ãtiquettes,0
-model,"ir.action,name",act_party_form,Parties,Tiers,0
-model,"ir.action,name",act_party_form2,Parties,Tiers,0
+model,"ir.action,name",act_category_tree,Categories,Catégories,0
model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
model,"ir.action,name",act_party_configuration_form,Party Configuration,Configuration des relations,0
+model,"ir.action,name",act_party_form,Parties,Tiers,0
+model,"ir.action,name",act_party_form2,Parties,Tiers,0
+model,"ir.action,name",report_label,Labels,Ãtiquettes,0
+model,"ir.action,name",wizard_check_vies,Check VIES,Validation VIES,0
model,"ir.sequence,name",sequence_party,Party,Tiers,0
model,"ir.sequence.type,name",sequence_type_party,Party,Tiers,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adresses,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,Catégories,0
-model,"ir.ui.menu,name",menu_category_form,Categories,Editer les catégories,0
-model,"ir.ui.menu,name",menu_configuration,Configuration,Configuration,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Nouvelle adresse,0
+model,"ir.ui.menu,name",menu_category_form,Categories,Editer les catégories,0
model,"ir.ui.menu,name",menu_category_form2,New category,Nouvelle catégorie,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Nouveau tiers,0
-model,"ir.ui.menu,name",menu_party_form,Parties,Tiers,0
-model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Configuration des relations,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,Catégories,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Configuration,0
model,"ir.ui.menu,name",menu_party,Party Management,Gestion des relations,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Configuration des relations,0
+model,"ir.ui.menu,name",menu_party_form,Parties,Tiers,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Nouveau tiers,0
model,"party.address,name",0,Address,Adresse,0
model,"party.category,name",0,Category,Catégorie,0
model,"party.check_vies.check,name",0,Check VIES - Check,Validation VIES - Validé,0
model,"party.check_vies.no_check,name",0,Check VIES - No Check,Validation VIES - Non validé,0
-model,"party.configuration,name",0,party.configuration,,0
+model,"party.configuration,name",0,Party Configuration,Configuration des relations,0
model,"party.contact_mechanism,name",0,Contact Mechanism,Moyen de contact,0
model,"party.party,name",0,Party,Tiers,0
model,"party.party-party.category,name",0,Party - Category,Tiers - Catégorie,0
@@ -118,15 +118,15 @@ view,party.configuration,0,Party Configuration,Configuration des relations,0
view,party.contact_mechanism,0,Contact Mechanism,Moyen de contact,0
view,party.contact_mechanism,0,Contact Mechanisms,Moyens de contact,0
view,party.party,0,Accounting,Comptabilité,0
-view,party.party,0,_Accounting,Compt_abilité,0
view,party.party,0,Addresses,Adresses,0
view,party.party,0,Categories,Catégories,0
view,party.party,0,Contact Mechanisms,Moyens de contact,0
view,party.party,0,General,Général,0
-view,party.party,0,_General,_Général,0
view,party.party,0,Parties,Tiers,0
view,party.party,0,Party,Tiers,0
view,party.party,0,Properties,Propriétés,0
view,party.party,0,VAT,TVA,0
+view,party.party,0,_Accounting,Compt_abilité,0
+view,party.party,0,_General,_Général,0
wizard_button,"party.check_vies,check,end",0,Ok,Ok,0
wizard_button,"party.check_vies,no_check,end",0,Ok,Ok,0
diff --git a/party.py b/party.py
index 58ac835..8e74a7c 100644
--- a/party.py
+++ b/party.py
@@ -1,9 +1,10 @@
#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 logging
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
from trytond.pyson import Not, Bool, Eval
-import logging
+from trytond.transaction import Transaction
HAS_VATNUMBER = False
VAT_COUNTRIES = [('', '')]
@@ -72,26 +73,32 @@ class Party(ModelSQL, ModelView):
})
self._order.insert(0, ('name', 'ASC'))
- def default_active(self, cursor, user, context=None):
+ def default_active(self):
return True
- def default_categories(self, cursor, user, context=None):
- if context is None:
- context = {}
- return context.get('categories', [])
+ def default_categories(self):
+ return Transaction().context.get('categories', [])
- def on_change_with_vat_code(self, cursor, user, vals, context=None):
+ def default_addresses(self):
+ address_obj = self.pool.get('party.address')
+ fields_names = list(x for x in set(address_obj._columns.keys()
+ + address_obj._inherit_fields.keys())
+ if x not in ['id', 'create_uid', 'create_date',
+ 'write_uid', 'write_date'])
+ return [address_obj.default_get(fields_names)]
+
+ def on_change_with_vat_code(self, vals):
return (vals.get('vat_country') or '') + (vals.get('vat_number') or '')
- def get_vat_code(self, cursor, user, ids, name, context=None):
+ def get_vat_code(self, ids, name):
if not ids:
return []
res = {}
- for party in self.browse(cursor, user, ids, context=context):
+ for party in self.browse(ids):
res[party.id] = (party.vat_country or '') + (party.vat_number or '')
return res
- def search_vat_code(self, cursor, user, name, clause, context=None):
+ def search_vat_code(self, name, clause):
res = []
value = clause[2]
for country, _ in VAT_COUNTRIES:
@@ -104,19 +111,19 @@ class Party(ModelSQL, ModelView):
res.append(('vat_number', clause[1], value))
return res
- def get_full_name(self, cursor, user, ids, name, context=None):
+ def get_full_name(self, ids, name):
if not ids:
return []
res = {}
- for party in self.browse(cursor, user, ids, context=context):
+ for party in self.browse(ids):
res[party.id] = party.name
return res
- def get_mechanism(self, cursor, user, ids, name, context=None):
+ def get_mechanism(self, ids, name):
if not ids:
return []
res = {}
- for party in self.browse(cursor, user, ids, context=context):
+ for party in self.browse(ids):
res[party.id] = ''
for mechanism in party.contact_mechanisms:
if mechanism.type == name:
@@ -124,26 +131,25 @@ class Party(ModelSQL, ModelView):
break
return res
- def create(self, cursor, user, values, context=None):
+ def create(self, values):
sequence_obj = self.pool.get('ir.sequence')
config_obj = self.pool.get('party.configuration')
values = values.copy()
if not values.get('code'):
- config = config_obj.browse(cursor, user, 1, context=context)
- values['code'] = sequence_obj.get_id(cursor, user,
- config.party_sequence.id, context=context)
+ config = config_obj.browse(1)
+ values['code'] = sequence_obj.get_id(config.party_sequence.id)
values['code_length'] = len(values['code'])
- return super(Party, self).create(cursor, user, values, context=context)
+ return super(Party, self).create(values)
- def write(self, cursor, user, ids, vals, context=None):
+ def write(self, ids, vals):
if vals.get('code'):
vals = vals.copy()
vals['code_length'] = len(vals['code'])
- return super(Party, self).write(cursor, user, ids, vals, context=context)
+ return super(Party, self).write(ids, vals)
- def copy(self, cursor, user, ids, default=None, context=None):
+ def copy(self, ids, default=None):
address_obj = self.pool.get('party.address')
int_id = False
@@ -157,56 +163,52 @@ class Party(ModelSQL, ModelView):
default['code'] = False
default['addresses'] = False
new_ids = []
- for party in self.browse(cursor, user, ids, context=context):
- new_id = super(Party, self).copy(cursor, user, party.id,
- default=default, context=context)
- address_obj.copy(cursor, user, [x.id for x in party.addresses],
+ for party in self.browse(ids):
+ new_id = super(Party, self).copy(party.id, default=default)
+ address_obj.copy([x.id for x in party.addresses],
default={
'party': new_id,
- }, context=context)
+ })
new_ids.append(new_id)
if int_id:
return new_ids[0]
return new_ids
- def search_rec_name(self, cursor, user, name, clause, context=None):
- ids = self.search(cursor, user, [('code',) + clause[1:]],
- order=[], context=context)
+ def search_rec_name(self, name, clause):
+ ids = self.search([('code',) + clause[1:]], order=[])
if ids:
- ids += self.search(cursor, user, [('name',) + clause[1:]],
- order=[], context=context)
+ ids += self.search([('name',) + clause[1:]], order=[])
return [('id', 'in', ids)]
return [('name',) + clause[1:]]
- def address_get(self, cursor, user, party_id, type=None, context=None):
+ def address_get(self, party_id, type=None):
"""
Try to find an address for the given type, if no type match
the first address is return.
"""
address_obj = self.pool.get("party.address")
address_ids = address_obj.search(
- cursor, user, [("party", "=", party_id), ("active", "=", True)],
- order=[('sequence', 'ASC'), ('id', 'ASC')], context=context)
+ [("party", "=", party_id), ("active", "=", True)],
+ order=[('sequence', 'ASC'), ('id', 'ASC')])
if not address_ids:
return False
default_address = address_ids[0]
if not type:
return default_address
- for address in address_obj.browse(cursor, user, address_ids,
- context=context):
+ for address in address_obj.browse(address_ids):
if address[type]:
return address.id
return default_address
- def check_vat(self, cursor, user, ids):
+ def check_vat(self, ids):
'''
Check the VAT number depending of the country.
http://sima-pc.com/nif.php
'''
if not HAS_VATNUMBER:
return True
- for party in self.browse(cursor, user, ids):
+ for party in self.browse(ids):
vat_number = party.vat_number
if not party.vat_country:
@@ -218,7 +220,7 @@ class Party(ModelSQL, ModelView):
#Check if user doesn't have put country code in number
if vat_number.startswith(party.vat_country):
vat_number = vat_number[len(party.vat_country):]
- self.write(cursor, user, party.id, {
+ self.write(party.id, {
'vat_number': vat_number,
})
else:
@@ -303,18 +305,18 @@ class CheckVIES(Wizard):
'try again later.',
})
- def _choice(self, cursor, user, data, context=None):
+ def _choice(self, data):
if not HAS_VATNUMBER or not hasattr(vatnumber, 'check_vies'):
return 'no_check'
return 'check'
- def _check(self, cursor, user, data, context=None):
+ def _check(self, data):
party_obj = self.pool.get('party.party')
res = {
'parties_succeed': [],
'parties_failed': [],
}
- parties = party_obj.browse(cursor, user, data['ids'], context=context)
+ parties = party_obj.browse(data['ids'])
for party in parties:
if not party.vat_code:
continue
@@ -333,9 +335,8 @@ class CheckVIES(Wizard):
or e.faultstring.find('MS_UNAVAILABLE') \
or e.faultstring.find('TIMEOUT') \
or e.faultstring.find('SERVER_BUSY'):
- self.raise_user_error(cursor, 'vies_unavailable',
- context=context)
- raise e
+ self.raise_user_error('vies_unavailable')
+ raise
return res
CheckVIES()
diff --git a/party.xml b/party.xml
index cb1405a..b050c72 100644
--- a/party.xml
+++ b/party.xml
@@ -9,6 +9,9 @@ this repository contains the full copyright notices and license terms. -->
<record model="res.user" id="res.user_admin">
<field name="groups" eval="[('add', ref('group_party_admin'))]"/>
</record>
+ <record model="res.user" id="res.user_trigger">
+ <field name="groups" eval="[('add', ref('group_party_admin'))]"/>
+ </record>
<menuitem name="Party Management" sequence="0" id="menu_party"
icon="tryton-users"/>
diff --git a/tests/__init__.pyc b/tests/__init__.pyc
deleted file mode 100644
index 89751e2..0000000
Binary files a/tests/__init__.pyc and /dev/null differ
diff --git a/tests/test_party.py b/tests/test_party.py
index 4d145e9..35edb1d 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
#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 __future__ import with_statement
import sys, os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', '..', '..', '..', 'trytond')))
@@ -10,7 +10,8 @@ if os.path.isdir(DIR):
import unittest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import POOL, DB, USER, CONTEXT, test_view
+from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view
+from trytond.transaction import Transaction
class PartyTestCase(unittest.TestCase):
@@ -23,87 +24,86 @@ class PartyTestCase(unittest.TestCase):
self.category = POOL.get('party.category')
self.party = POOL.get('party.party')
self.address = POOL.get('party.address')
- self.cursor = DB.cursor()
-
- def tearDown(self):
- self.cursor.commit()
- self.cursor.close()
def test0005views(self):
'''
Test views.
'''
- self.assertRaises(Exception, test_view('party'))
+ test_view('party')
def test0010category(self):
'''
Create category.
'''
- category1_id = self.category.create(self.cursor, USER, {
- 'name': 'Category 1',
- }, CONTEXT)
- self.assert_(category1_id)
+ with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ category1_id = self.category.create({
+ 'name': 'Category 1',
+ })
+ self.assert_(category1_id)
+ transaction.cursor.commit()
def test0020category_recursion(self):
'''
Test category recursion.
'''
- category1_id = self.category.search(self.cursor, USER, [
- ('name', '=', 'Category 1'),
- ], 0, 1, None, CONTEXT)[0]
-
- category2_id = self.category.create(self.cursor, USER, {
- 'name': 'Category 2',
- 'parent': category1_id,
- }, CONTEXT)
- self.assert_(category2_id)
-
- self.failUnlessRaises(Exception, self.category.write, self.cursor,
- USER, category1_id, {
- 'parent': category2_id,
- }, CONTEXT)
+ with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ category1_id = self.category.search([
+ ('name', '=', 'Category 1'),
+ ], limit=1)[0]
+
+ category2_id = self.category.create({
+ 'name': 'Category 2',
+ 'parent': category1_id,
+ })
+ self.assert_(category2_id)
+
+ self.failUnlessRaises(Exception, self.category.write,
+ category1_id, {
+ 'parent': category2_id,
+ })
def test0030party(self):
'''
Create party.
'''
- party1_id = self.party.create(self.cursor, USER, {
- 'name': 'Party 1',
- }, CONTEXT)
- self.assert_(party1_id)
+ with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ party1_id = self.party.create({
+ 'name': 'Party 1',
+ })
+ self.assert_(party1_id)
+ transaction.cursor.commit()
def test0040party_code(self):
'''
Test party code constraint.
'''
- party1_id = self.party.search(self.cursor, USER, [], 0, 1, None,
- CONTEXT)[0]
+ with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ party1_id = self.party.search([], limit=1)[0]
- code = self.party.read(self.cursor, USER, party1_id, ['code'],
- CONTEXT)['code']
+ code = self.party.read(party1_id, ['code'])['code']
- party2_id = self.party.create(self.cursor, USER, {
- 'name': 'Party 2',
- }, CONTEXT)
+ party2_id = self.party.create({
+ 'name': 'Party 2',
+ })
- self.failUnlessRaises(Exception, self.party.write, self.cursor, USER,
- party2_id, {
- 'code': code,
- }, CONTEXT)
+ self.failUnlessRaises(Exception, self.party.write,
+ party2_id, {
+ 'code': code,
+ })
def test0050address(self):
'''
Create address.
'''
- party1_id = self.party.search(self.cursor, USER, [], 0, 1, None,
- CONTEXT)[0]
-
- address1_id = self.address.create(self.cursor, USER, {
- 'party': party1_id,
- 'street': 'St sample, 15',
- 'city': 'City',
- }, CONTEXT)
- self.assert_(party1_id)
+ with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+ party1_id = self.party.search([], limit=1)[0]
+
+ address1_id = self.address.create({
+ 'party': party1_id,
+ 'street': 'St sample, 15',
+ 'city': 'City',
+ })
+ self.assert_(party1_id)
def suite():
suite = trytond.tests.test_tryton.suite()
diff --git a/tests/test_party.pyc b/tests/test_party.pyc
deleted file mode 100644
index f18347f..0000000
Binary files a/tests/test_party.pyc and /dev/null differ
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 2405e42..1c9f583 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.6.0
+Version: 1.8.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.6/
+Download-URL: http://downloads.tryton.org/1.8/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 50bb666..e6cde5c 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -25,10 +25,6 @@ setup.py
./tests/__init__.py
./tests/test_party.py
doc/index.rst
-tests/__init__.py
-tests/__init__.pyc
-tests/test_party.py
-tests/test_party.pyc
trytond_party.egg-info/PKG-INFO
trytond_party.egg-info/SOURCES.txt
trytond_party.egg-info/dependency_links.txt
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 16aff0b..95dfa23 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,5 +1,5 @@
-trytond_country >= 1.6, < 1.7
-trytond >= 1.6, < 1.7
+trytond_country >= 1.8, < 1.9
+trytond >= 1.8, < 1.9
[VAT]
vatnumber
\ No newline at end of file
commit cbec27a707b19f49ee99080cd3d8cef3ce02f495
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date: Thu May 13 11:29:12 2010 +0200
Adding upstream version 1.6.0.
diff --git a/CHANGELOG b/CHANGELOG
index 9b227af..5286b81 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
-Version 1.4.1 - 2009-11-24
+Version 1.6.0 - 2010-05-10
* Bug fixes (see mercurial logs for details)
+* Don't allow empty vat_number if vat_country is set
+* Use model singleton to define which party sequence to use
+* Improve search_rec_name of category to take care of separator
Version 1.4.0 - 2009-10-19
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index f65c1d2..cc0e0c8 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,10 +1,10 @@
Copyright (C) 2004-2008 Tiny SPRL.
-Copyright (C) 2008-2009 Cédric Krier.
-Copyright (C) 2008-2009 Bertrand Chenal.
-Copyright (C) 2008-2009 B2CK SPRL.
-Copyright (C) 2008 Udo Spallek.
-Copyright (C) 2008 Korbinian Preisler.
-Copyright (C) 2008 virtual things.
+Copyright (C) 2008-2010 Cédric Krier.
+Copyright (C) 2008-2010 Bertrand Chenal.
+Copyright (C) 2008-2010 B2CK SPRL.
+Copyright (C) 2008-2010 Udo Spallek.
+Copyright (C) 2008-2010 Korbinian Preisler.
+Copyright (C) 2008-2010 virtual things.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/MANIFEST.in b/MANIFEST.in
index b2a140e..dcb2afa 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -7,5 +7,4 @@ include LICENSE
include *.xml
include *.odt
include *.csv
-include tests/*
include doc/*
diff --git a/PKG-INFO b/PKG-INFO
index b5350c7..f508e2c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.4.1
+Version: 1.6.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.4/
+Download-URL: http://downloads.tryton.org/1.6/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__init__.py b/__init__.py
index e4fd59e..d36f1c0 100644
--- a/__init__.py
+++ b/__init__.py
@@ -5,3 +5,4 @@ from category import *
from party import *
from address import *
from contact_mechanism import *
+from configuration import *
diff --git a/__tryton__.py b/__tryton__.py
index e284a9b..7692d80 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,7 +7,7 @@
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
- 'version' : '1.4.1',
+ 'version' : '1.6.0',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -26,6 +26,7 @@
'category.xml',
'address.xml',
'contact_mechanism.xml',
+ 'configuration.xml',
],
'translation': [
'de_DE.csv',
diff --git a/address.py b/address.py
index 65f995e..dbb178a 100644
--- a/address.py
+++ b/address.py
@@ -2,9 +2,10 @@
#this repository contains the full copyright notices and license terms.
'Address'
from trytond.model import ModelView, ModelSQL, fields
+from trytond.pyson import Not, Bool, Eval, If, Greater
STATES = {
- 'readonly': "active == False",
+ 'readonly': Not(Bool(Eval('active'))),
}
@@ -14,7 +15,8 @@ class Address(ModelSQL, ModelView):
_description = __doc__
party = fields.Many2One('party.party', 'Party', required=True,
ondelete='CASCADE', select=1, states={
- 'readonly': "(active == False) or (active_id > 0)",
+ 'readonly': If(Not(Bool(Eval('active'))),
+ True, Greater(Eval('active_id', 0), 0)),
})
name = fields.Char('Name', states=STATES)
street = fields.Char('Street', states=STATES)
@@ -25,10 +27,12 @@ class Address(ModelSQL, ModelView):
country = fields.Many2One('country.country', 'Country',
states=STATES)
subdivision = fields.Many2One("country.subdivision",
- 'Subdivision', domain=["('country', '=', country)"], states=STATES)
+ 'Subdivision', domain=[('country', '=', Eval('country'))],
+ states=STATES)
active = fields.Boolean('Active')
sequence = fields.Integer("Sequence")
- full_address = fields.Function('get_full_address', type='text')
+ full_address = fields.Function(fields.Text('Full Address'),
+ 'get_full_address')
def __init__(self):
super(Address, self).__init__()
@@ -41,7 +45,7 @@ class Address(ModelSQL, ModelView):
def default_active(self, cursor, user, context=None):
return True
- def get_full_address(self, cursor, user, ids, name, arg, context=None):
+ def get_full_address(self, cursor, user, ids, name, context=None):
if not ids:
return {}
res = {}
@@ -77,7 +81,7 @@ class Address(ModelSQL, ModelView):
res[address.id] += address.country.name
return res
- def get_rec_name(self, cursor, user, ids, name, arg, context=None):
+ def get_rec_name(self, cursor, user, ids, name, context=None):
if not ids:
return {}
res = {}
@@ -86,21 +90,15 @@ class Address(ModelSQL, ModelView):
address.party.rec_name, address.zip, address.city] if x)
return res
- def search_rec_name(self, cursor, user, name, args, context=None):
- args2 = []
- i = 0
- while i < len(args):
- ids = self.search(cursor, user, ['OR',
- ('zip', args[i][1], args[i][2]),
- ('city', args[i][1], args[i][2]),
- ('name', args[i][1], args[i][2]),
- ], context=context)
- if ids:
- args2.append(('id', 'in', ids))
- else:
- args2.append(('party', args[i][1], args[i][2]))
- i += 1
- return args2
+ def search_rec_name(self, cursor, user, name, clause, context=None):
+ ids = self.search(cursor, user, ['OR',
+ ('zip',) + clause[1:],
+ ('city',) + clause[1:],
+ ('name',) + clause[1:],
+ ], order=[], context=context)
+ if ids:
+ return [('id', 'in', ids)]
+ return [('party',) + clause[1:]]
def write(self, cursor, user, ids, vals, context=None):
if 'party' in vals:
diff --git a/category.py b/category.py
index 6006bc5..6338ad2 100644
--- a/category.py
+++ b/category.py
@@ -1,11 +1,14 @@
#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 trytond.model import ModelView, ModelSQL, fields
+from trytond.pyson import Not, Bool, Eval
STATES = {
- 'readonly': "active == False",
+ 'readonly': Not(Bool(Eval('active'))),
}
+SEPARATOR = ' / '
+
class Category(ModelSQL, ModelView):
"Category"
@@ -20,18 +23,30 @@ class Category(ModelSQL, ModelView):
def __init__(self):
super(Category, self).__init__()
+ self._sql_constraints = [
+ ('name_parent_uniq', 'UNIQUE(name, parent)',
+ 'The name of a party category must be unique by parent!'),
+ ]
self._constraints += [
('check_recursion', 'recursive_categories'),
+ ('check_name', 'wrong_name'),
]
self._error_messages.update({
'recursive_categories': 'You can not create recursive categories!',
+ 'wrong_name': 'You can not use "%s" in name field!' % SEPARATOR,
})
self._order.insert(1, ('name', 'ASC'))
def default_active(self, cursor, user, context=None):
return 1
- def get_rec_name(self, cursor, user, ids, name, arg, context=None):
+ def check_name(self, cursor, user, ids):
+ for category in self.browse(cursor, user, ids):
+ if SEPARATOR in category.name:
+ return False
+ return True
+
+ def get_rec_name(self, cursor, user, ids, name, context=None):
if not ids:
return {}
res = {}
@@ -39,11 +54,25 @@ class Category(ModelSQL, ModelView):
if category.id in res:
return res[category.id]
elif category.parent:
- return _name(category.parent) + ' / ' + category.name
+ return _name(category.parent) + SEPARATOR + category.name
else:
return category.name
for category in self.browse(cursor, user, ids, context=context):
res[category.id] = _name(category)
return res
+ def search_rec_name(self, cursor, user, name, clause, context=None):
+ if isinstance(clause[2], basestring):
+ values = clause[2].split(SEPARATOR)
+ values.reverse()
+ domain = []
+ field = 'name'
+ for name in values:
+ domain.append((field, clause[1], name))
+ field = 'parent.' + field
+ ids = self.search(cursor, user, domain, order=[], context=context)
+ return [('id', 'in', ids)]
+ #TODO Handle list
+ return [('name',) + clause[1:]]
+
Category()
diff --git a/category.xml b/category.xml
index 79a9553..a90751e 100644
--- a/category.xml
+++ b/category.xml
@@ -61,7 +61,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_window" ref="act_category_form"/>
</record>
<menuitem parent="menu_configuration"
- action="act_category_form" id="menu_category_form"/>
+ action="act_category_form" id="menu_category_form" sequence="10"/>
<record model="ir.action.act_window" id="act_category_form2">
<field name="name">Categories</field>
<field name="res_model">party.category</field>
diff --git a/configuration.py b/configuration.py
new file mode 100644
index 0000000..97e148d
--- /dev/null
+++ b/configuration.py
@@ -0,0 +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.
+from trytond.model import ModelView, ModelSQL, ModelSingleton, fields
+from trytond.pyson import Eval
+
+
+class Configuration(ModelSingleton, ModelSQL, ModelView):
+ 'Party Configuration'
+ _name = 'party.configuration'
+ _description = __doc__
+
+ party_sequence = fields.Property(fields.Many2One('ir.sequence',
+ 'Party Sequence', domain=[
+ ('company', 'in', [Eval('company'), False]),
+ ('code', '=', 'party.party'),
+ ], required=True))
+
+Configuration()
diff --git a/configuration.xml b/configuration.xml
new file mode 100644
index 0000000..7fcb04d
--- /dev/null
+++ b/configuration.xml
@@ -0,0 +1,41 @@
+<?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. -->
+<tryton>
+ <data>
+ <record model="ir.ui.view" id="party_configuration_view_form">
+ <field name="model">party.configuration</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Party Configuration">
+ <label name="party_sequence"/>
+ <field name="party_sequence"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.action.act_window" id="act_party_configuration_form">
+ <field name="name">Party Configuration</field>
+ <field name="res_model">party.configuration</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view"
+ id="act_party_configuration_view1">
+ <field name="sequence" eval="1"/>
+ <field name="view" ref="party_configuration_view_form"/>
+ <field name="act_window" ref="act_party_configuration_form"/>
+ </record>
+ <menuitem parent="menu_configuration"
+ action="act_party_configuration_form"
+ id="menu_party_configuration"
+ sequence="0" icon="tryton-list"/>
+
+ <record model="ir.property" id="property_party_sequence">
+ <field name="name">party_sequence</field>
+ <field name="field"
+ search="[('model.model', '=', 'party.configuration'), ('name', '=', 'party_sequence')]"/>
+ <field name="value" eval="'ir.sequence,' + str(ref('sequence_party'))"/>
+ </record>
+ </data>
+</tryton>
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 264533f..61cae05 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -1,9 +1,10 @@
#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 trytond.model import ModelView, ModelSQL, fields
+from trytond.pyson import Not, Bool, Eval, Equal, In
STATES = {
- 'readonly': "active == False",
+ 'readonly': Not(Bool(Eval('active'))),
}
_TYPES = [
@@ -34,36 +35,36 @@ class ContactMechanism(ModelSQL, ModelView):
ondelete='CASCADE', states=STATES, select=1)
active = fields.Boolean('Active', select=1)
sequence = fields.Integer('Sequence')
- email = fields.Function('get_value', fnct_inv='set_value', type='char',
- string="E-Mail", states={
- 'invisible': "type != 'email'",
- 'required': "type == 'email'",
- 'readonly': "active == False",
- }, on_change=['email'], depends=['value', 'type', 'active'])
- website = fields.Function('get_value', fnct_inv='set_value', type='char',
- string="Website", states={
- 'invisible': "type != 'website'",
- 'required': "type == 'website'",
- 'readonly': "active == False",
- }, on_change=['website'], depends=['value', 'type', 'active'])
- skype = fields.Function('get_value', fnct_inv='set_value', type='char',
- string="Skype", states={
- 'invisible': "type != 'skype'",
- 'required': "type == 'skype'",
- 'readonly': "active == False",
- }, on_change=['skype'], depends=['value', 'type', 'active'])
- sip = fields.Function('get_value', fnct_inv='set_value', type='char',
- string="SIP", states={
- 'invisible': "type != 'sip'",
- 'required': "type == 'sip'",
- 'readonly': "active == False",
- }, on_change=['sip'], depends=['value', 'type', 'active'])
- other_value = fields.Function('get_value', fnct_inv='set_value',
- type='char', string='Value', states={
- 'invisible': "type in ('email', 'website', 'skype', 'sip')",
- 'required': "type not in ('email', 'website')",
- 'readonly': "active == False",
- }, on_change=['other_value'], depends=['value', 'type', 'active'])
+ email = fields.Function(fields.Char('E-Mail', states={
+ 'invisible': Not(Equal(Eval('type'), 'email')),
+ 'required': Equal(Eval('type'), 'email'),
+ 'readonly': Not(Bool(Eval('active'))),
+ }, on_change=['email'], depends=['value', 'type', 'active']),
+ 'get_value', setter='set_value')
+ website = fields.Function(fields.Char('Website', states={
+ 'invisible': Not(Equal(Eval('type'), 'website')),
+ 'required': Equal(Eval('type'), 'website'),
+ 'readonly': Not(Bool(Eval('active'))),
+ }, on_change=['website'], depends=['value', 'type', 'active']),
+ 'get_value', setter='set_value')
+ skype = fields.Function(fields.Char('Skype',states={
+ 'invisible': Not(Equal(Eval('type'), 'skype')),
+ 'required': Equal(Eval('type'), 'skype'),
+ 'readonly': Not(Bool(Eval('active'))),
+ }, on_change=['skype'], depends=['value', 'type', 'active']),
+ 'get_value', setter='set_value')
+ sip = fields.Function(fields.Char('SIP', states={
+ 'invisible': Not(Equal(Eval('type'), 'sip')),
+ 'required': Equal(Eval('type'), 'sip'),
+ 'readonly': Not(Bool(Eval('active'))),
+ }, on_change=['sip'], depends=['value', 'type', 'active']),
+ 'get_value', setter='set_value')
+ other_value = fields.Function(fields.Char('Value', states={
+ 'invisible': In(Eval('type'), ['email', 'website', 'skype', 'sip']),
+ 'required': Not(In(Eval('type'), ['email', 'website'])),
+ 'readonly': Not(Bool(Eval('active'))),
+ }, on_change=['other_value'], depends=['value', 'type', 'active']),
+ 'get_value', setter='set_value')
def __init__(self):
super(ContactMechanism, self).__init__()
@@ -80,7 +81,7 @@ class ContactMechanism(ModelSQL, ModelView):
def default_active(self, cursor, user, context=None):
return True
- def get_value(self, cursor, user, ids, names, arg, context=None):
+ def get_value(self, cursor, user, ids, names, context=None):
res = {}
for name in names:
res[name] = {}
@@ -89,8 +90,8 @@ class ContactMechanism(ModelSQL, ModelView):
res[name][mechanism.id] = mechanism.value
return res
- def set_value(self, cursor, user, obj_id, name, value, arg, context=None):
- self.write(cursor, user, obj_id, {
+ def set_value(self, cursor, user, ids, name, value, context=None):
+ self.write(cursor, user, ids, {
'value': value,
}, context=context)
@@ -104,27 +105,27 @@ class ContactMechanism(ModelSQL, ModelView):
'other_value': value,
}
- def on_change_value(self, cursor, user, ids, vals, context=None):
+ def on_change_value(self, cursor, user, vals, context=None):
return self._change_value(cursor, user, vals.get('value'),
context=context)
- def on_change_website(self, cursor, user, ids, vals, context=None):
+ def on_change_website(self, cursor, user, vals, context=None):
return self._change_value(cursor, user, vals.get('website'),
context=context)
- def on_change_email(self, cursor, user, ids, vals, context=None):
+ def on_change_email(self, cursor, user, vals, context=None):
return self._change_value(cursor, user, vals.get('email'),
context=context)
- def on_change_skype(self, cursor, user, ids, vals, context=None):
+ def on_change_skype(self, cursor, user, vals, context=None):
return self._change_value(cursor, user, vals.get('skype'),
context=context)
- def on_change_sip(self, cursor, user, ids, vals, context=None):
+ def on_change_sip(self, cursor, user, vals, context=None):
return self._change_value(cursor, user, vals.get('sip'),
context=context)
- def on_change_other_value(self, cursor, user, ids, vals, context=None):
+ def on_change_other_value(self, cursor, user, vals, context=None):
return self._change_value(cursor, user, vals.get('other_value'),
context=context)
diff --git a/contact_mechanism.xml b/contact_mechanism.xml
index 12af36e..cbf2f6c 100644
--- a/contact_mechanism.xml
+++ b/contact_mechanism.xml
@@ -23,11 +23,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
- <form string="Contact Mechanism">
+ <form string="Contact Mechanism" col="6">
<label name="party"/>
- <field name="party"/>
- <label name="active"/>
- <field name="active"/>
+ <field name="party" colspan="5"/>
<label name="type"/>
<field name="type"/>
<group col="2" colspan="2" id="value">
@@ -42,8 +40,14 @@ this repository contains the full copyright notices and license terms. -->
<label name="sip"/>
<field name="sip" widget="sip"/>
</group>
- <separator name="comment" colspan="4"/>
- <field name="comment" colspan="4"/>
+ <group col="20" colspan="2" id="checkboxes">
+ <label name="active"/>
+ <field name="active"
+ xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ </group>
+ <separator name="comment" colspan="6"/>
+ <field name="comment" colspan="6"/>
</form>
]]>
</field>
diff --git a/de_DE.csv b/de_DE.csv
index 9ae39ef..e1076c2 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -1,20 +1,23 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,Die Partei einer Adresse kann nicht geändert werden!,0
+error,party.category,0,The name of a party category must be unique by parent!,Der Name einer Parteikategorie kann pro Ãbergeordneter Partei nur einmal vergeben werden!,0
error,party.category,0,You can not create recursive categories!,Kategorien dürfen nicht rekursiv sein,0
+error,party.category,0,"You can not use "" / "" in name field!","In dem Namensfeld kann "" / "" nicht verwendet werden!",0
error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!,0
error,party.party,0,Invalid VAT number!,Ungültige USt-ID-Nummer!,0
+error,party.party,0,The code of the party must be unique!,Der Code für eine Partei kann nur einmal vergeben werden!,0
field,"party.address,active",0,Active,Aktiv,0
field,"party.address,city",0,City,Stadt,0
field,"party.address,country",0,Country,Staat,0
field,"party.address,create_date",0,Creation date,Erstellungsdatum,0
field,"party.address,create_uid",0,Creation user,Ersteller,0
-field,"party.address,full_address",0,,,0
+field,"party.address,full_address",0,Full Address,Vollständige Adresse,0
field,"party.address,id",0,ID,ID,0
field,"party.address,name",0,Name,Name,0
field,"party.address,party",0,Party,Partei,0
field,"party.address,rec_name",0,Name,Name,0
-field,"party.address,sequence",0,Sequence,Sequenz,0
+field,"party.address,sequence",0,Sequence,Reihenfolge,0
field,"party.address,street",0,Street,Anschrift 1,0
field,"party.address,streetbis",0,Street (bis),Anschrift 2,0
field,"party.address,subdivision",0,Subdivision,Subnationale Einheit,0
@@ -33,13 +36,15 @@ field,"party.category,write_date",0,Last modification date,Zuletzt geändert am,
field,"party.category,write_uid",0,Last modification by,Zuletzt geändert von,0
field,"party.check_vies.check,parties_failed",0,Parties Failed,Parteien mit fehlgeschlagener Ãberprüfung,0
field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Parteien mit erfolgreicher Ãberprüfung,0
+field,"party.configuration,party_sequence",0,Party Sequence,Nummernkreis Partei,0
+field,"party.configuration,rec_name",0,Name,Name,0
field,"party.contact_mechanism,active",0,Active,Aktiv,0
field,"party.contact_mechanism,comment",0,Comment,Kommentar,0
field,"party.contact_mechanism,email",0,E-Mail,E-Mail,0
field,"party.contact_mechanism,other_value",0,Value,Wert,0
field,"party.contact_mechanism,party",0,Party,Partei,0
field,"party.contact_mechanism,rec_name",0,Name,Name,0
-field,"party.contact_mechanism,sequence",0,Sequence,Sequenz,0
+field,"party.contact_mechanism,sequence",0,Sequence,Reihenfolge,0
field,"party.contact_mechanism,sip",0,SIP,SIP,0
field,"party.contact_mechanism,skype",0,Skype,Skype,0
field,"party.contact_mechanism,type",0,Type,Typ,0
@@ -55,7 +60,7 @@ field,"party.party,create_date",0,Creation date,Erstellungsdatum,0
field,"party.party,create_uid",0,Creation user,Ersteller,0
field,"party.party,email",0,E-Mail,E-Mail,0
field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,,,0
+field,"party.party,full_name",0,Full Name,Vollständiger Name,0
field,"party.party,id",0,ID,ID,0
field,"party.party,lang",0,Language,Sprache,0
field,"party.party,mobile",0,Mobile,Mobiltelefon,0
@@ -83,6 +88,7 @@ model,"ir.action,name",report_label,Labels,Etiketten,0
model,"ir.action,name",act_party_form,Parties,Parteien,0
model,"ir.action,name",act_party_form2,Parties,Parteien,0
model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach Kategorie,0
+model,"ir.action,name",act_party_configuration_form,Party Configuration,Einstellungen Partei,0
model,"ir.sequence,name",sequence_party,Party,Partei,0
model,"ir.sequence.type,name",sequence_type_party,Party,Partei,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
@@ -93,11 +99,13 @@ model,"ir.ui.menu,name",menu_address_form2,New Address,Neue Adresse,0
model,"ir.ui.menu,name",menu_category_form2,New category,Neue Parteikategorie,0
model,"ir.ui.menu,name",menu_party_form2,New Party,Neue Partei,0
model,"ir.ui.menu,name",menu_party_form,Parties,Parteien,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Einstellungen Partei,0
model,"ir.ui.menu,name",menu_party,Party Management,Parteien,0
model,"party.address,name",0,Address,Adresse,0
model,"party.category,name",0,Category,Kategorie,0
model,"party.check_vies.check,name",0,Check VIES - Check,Ãberprüfung VIES - Durchführen,0
model,"party.check_vies.no_check,name",0,Check VIES - No Check,Ãberprüfung VIES - Nicht durchführen,0
+model,"party.configuration,name",0,Party Configuration,Einstellungen Partei,0
model,"party.contact_mechanism,name",0,Contact Mechanism,Kontaktmöglichkeit,0
model,"party.party,name",0,Party,Partei,0
model,"party.party-party.category,name",0,Party - Category,Partei - Parteikategorie,0
@@ -153,6 +161,7 @@ view,party.check_vies.check,0,Parties Succeed,Parteien mit erfolgreicher Ãberpr
view,party.check_vies.check,0,VAT Information Exchange System Results,Ergebnisse des Ãberprüfungssystems für USt-ID-Nummern (VIES),0
view,party.check_vies.no_check,0,VAT Information Exchange System,Ãberprüfungssystem für USt-ID-Nummern (VIES),0
view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Es muss eine aktuelle Version des Python-Moduls ""vatnumber"" installiert sein!",0
+view,party.configuration,0,Party Configuration,Einstellungen Partei,0
view,party.contact_mechanism,0,Contact Mechanism,Kontaktmöglichkeit,0
view,party.contact_mechanism,0,Contact Mechanisms,Kontaktmöglichkeiten,0
view,party.party,0,Account,Konten,0
@@ -160,6 +169,7 @@ view,party.party,0,Accounting,Buchhaltung,0
view,party.party,0,_Accounting,_Buchhaltung,0
view,party.party,0,Addresses,Adressen,0
view,party.party,0,Categories,Kategorien,0
+view,party.party,0,Contact Mechanism,Kontaktmöglichkeit,0
view,party.party,0,Contact Mechanisms,Kontaktmöglichkeiten,0
view,party.party,0,General,Allgemein,0
view,party.party,0,_General,_Allgemein,0
diff --git a/es_CO.csv b/es_CO.csv
index 97363b0..5986e01 100644
--- a/es_CO.csv
+++ b/es_CO.csv
@@ -1,9 +1,11 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección!,0
+error,party.category,0,The name of a party category must be unique by parent!,,0
error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas!,0
+error,party.category,0,"You can not use "" / "" in name field!",,0
error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, intente más tarde.",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,¡No puede modificar un tercero de un mecanismo de contacto!,0
-error,party.party,0,Invalid VAT number!,¡Número de IVA inválido!,0
+error,party.party,0,Invalid VAT number!,¡Número inválido!,0
field,"party.address,active",0,Active,Activo,0
field,"party.address,city",0,City,Ciudad,0
field,"party.address,country",0,Country,PaÃs,0
@@ -23,6 +25,8 @@ field,"party.category,parent",0,Parent,Padre,0
field,"party.category,rec_name",0,Name,Nombre,0
field,"party.check_vies.check,parties_failed",0,Parties Failed,Los terceros fallaron,0
field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Terceros válidos,0
+field,"party.configuration,party_sequence",0,Party Reference Sequence,,0
+field,"party.configuration,rec_name",0,Name,Nombre de Contacto,1
field,"party.contact_mechanism,active",0,Active,Activo,0
field,"party.contact_mechanism,comment",0,Comment,Comentario,0
field,"party.contact_mechanism,email",0,E-Mail,Correo electrónico,0
@@ -53,10 +57,10 @@ field,"party.party-party.category,rec_name",0,Name,Nombre,0
field,"party.party,phone",0,Phone,Teléfono,0
field,"party.party,rec_name",0,Name,Nombre,0
field,"party.party,vat_code",0,VAT Code,Código de IVA,0
-field,"party.party,vat_country",0,VAT Country,IVA de paÃs,0
-field,"party.party,vat_number",0,VAT Number,Nombre de IVA,0
+field,"party.party,vat_country",0,VAT Country,PaÃs,0
+field,"party.party,vat_number",0,VAT Number,Número,0
field,"party.party,website",0,Website,Sitio Web,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el IVA de paÃs se habilitará la verificación del número de IVA.,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el paÃs se habilitará la verificación del NIT.,0
help,"party.party,vat_number",0,Value Added Tax number,Número de Impuesto de Valor Agregado,0
model,"ir.action,name",act_address_form,Addresses,Direcciones,0
model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
@@ -68,6 +72,7 @@ model,"ir.action,name",report_label,Labels,Etiquetas,0
model,"ir.action,name",act_party_form,Parties,Terceros,0
model,"ir.action,name",act_party_form2,Parties,Terceros,0
model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por CategorÃa,0
+model,"ir.action,name",act_party_configuration_form,Party Configuration,,0
model,"ir.sequence,name",sequence_party,Party,Tercero,0
model,"ir.sequence.type,name",sequence_type_party,Party,Tercero,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Direcciones,0
@@ -78,11 +83,13 @@ model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva Dirección,0
model,"ir.ui.menu,name",menu_category_form2,New category,Nueva CategorÃa,0
model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo Tercero,0
model,"ir.ui.menu,name",menu_party_form,Parties,Terceros,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,,0
model,"ir.ui.menu,name",menu_party,Party Management,Gestión de Terceros,0
model,"party.address,name",0,Address,Dirección,0
model,"party.category,name",0,Category,CategorÃa,0
model,"party.check_vies.check,name",0,Check VIES - Check,Revisar VIES - Revisar,0
model,"party.check_vies.no_check,name",0,Check VIES - No Check,Revisar VIES - NO revisar,0
+model,"party.configuration,name",0,party.configuration,,0
model,"party.contact_mechanism,name",0,Contact Mechanism,Mecanismo de contacto,0
model,"party.party,name",0,Party,Tercero,0
model,"party.party-party.category,name",0,Party - Category,Tercero - CategorÃa,0
@@ -106,12 +113,14 @@ view,party.check_vies.check,0,Parties Succeed,Los terceros fueron válidos,0
view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado de Sistema de Información de intercambio IVA,0
view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de Información de Intercambio IVA,0
view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Debe tener una versión reciente de ""vatnumber"" instalada!",0
+view,party.configuration,0,Party Configuration,,0
view,party.contact_mechanism,0,Contact Mechanism,Mecanismo de contacto,0
view,party.contact_mechanism,0,Contact Mechanisms,Mecanismos de contacto,0
view,party.party,0,Account,Cuenta,0
view,party.party,0,Accounting,Contabilidad,0
view,party.party,0,Addresses,Direcciones,0
view,party.party,0,Categories,CategorÃas,0
+view,party.party,0,Contact Mechanism,Mecanismo de contacto,0
view,party.party,0,Contact Mechanisms,Mecanismos de contacto,0
view,party.party,0,General,General,0
view,party.party,0,_General,_General,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 71900ce..cd59ab6 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -1,14 +1,16 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,Vous ne pouvez pas modifier le tiers d'une addresse !,0
+error,party.category,0,The name of a party category must be unique by parent!,Le nom d'une catégorie de tiers doit être unique pour un même parent !,0
error,party.category,0,You can not create recursive categories!,Vous ne pouvez pas créer des catégories récursives !,0
+error,party.category,0,"You can not use "" / "" in name field!","Vous ne pouvez pas utiliser "" / "" dans le champ Nom !",0
error,party.check_vies,0,"The VIES service is unavailable, try again later.","Le service VIES n'est pas disponible, veuillez essayer plus tard.",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Vous ne pouvez pas modifiez le tiers d'un moyen de contact.,0
error,party.party,0,Invalid VAT number!,Numéro TVA non valide !,0
-error,party.party,0,The code of the party must be unique!,Le code tu tiers doit être unique,0
+error,party.party,0,The code of the party must be unique!,Le code du tiers doit être unique !,0
field,"party.address,active",0,Active,Actif,0
field,"party.address,city",0,City,Ville,0
field,"party.address,country",0,Country,Pays,0
-field,"party.address,full_address",0,,,0
+field,"party.address,full_address",0,Full Address,Adresse complète,0
field,"party.address,name",0,Name,Nom,0
field,"party.address,party",0,Party,Tiers,0
field,"party.address,rec_name",0,Name,Nom,0
@@ -24,6 +26,8 @@ field,"party.category,parent",0,Parent,Parent,0
field,"party.category,rec_name",0,Name,Nom,0
field,"party.check_vies.check,parties_failed",0,Parties Failed,Tiers non validés,0
field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Tiers validés,0
+field,"party.configuration,party_sequence",0,Party Sequence,Séquence des tiers,0
+field,"party.configuration,rec_name",0,Name,Nom,0
field,"party.contact_mechanism,active",0,Active,Actif,0
field,"party.contact_mechanism,comment",0,Comment,Commentaire,0
field,"party.contact_mechanism,email",0,E-Mail,E-mail,0
@@ -44,7 +48,7 @@ field,"party.party,code_length",0,Code Length,Longueur du code,0
field,"party.party,contact_mechanisms",0,Contact Mechanisms,Moyens de contact,0
field,"party.party,email",0,E-Mail,E-Mail,0
field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,,,0
+field,"party.party,full_name",0,Full Name,Nom complet,0
field,"party.party,lang",0,Language,Langue,0
field,"party.party,mobile",0,Mobile,Mobile,0
field,"party.party,name",0,Name,Nom,0
@@ -69,6 +73,7 @@ model,"ir.action,name",report_label,Labels,Ãtiquettes,0
model,"ir.action,name",act_party_form,Parties,Tiers,0
model,"ir.action,name",act_party_form2,Parties,Tiers,0
model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
+model,"ir.action,name",act_party_configuration_form,Party Configuration,Configuration des relations,0
model,"ir.sequence,name",sequence_party,Party,Tiers,0
model,"ir.sequence.type,name",sequence_type_party,Party,Tiers,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adresses,0
@@ -79,14 +84,16 @@ model,"ir.ui.menu,name",menu_address_form2,New Address,Nouvelle adresse,0
model,"ir.ui.menu,name",menu_category_form2,New category,Nouvelle catégorie,0
model,"ir.ui.menu,name",menu_party_form2,New Party,Nouveau tiers,0
model,"ir.ui.menu,name",menu_party_form,Parties,Tiers,0
+model,"ir.ui.menu,name",menu_party_configuration,Party Configuration,Configuration des relations,0
model,"ir.ui.menu,name",menu_party,Party Management,Gestion des relations,0
model,"party.address,name",0,Address,Adresse,0
model,"party.category,name",0,Category,Catégorie,0
model,"party.check_vies.check,name",0,Check VIES - Check,Validation VIES - Validé,0
model,"party.check_vies.no_check,name",0,Check VIES - No Check,Validation VIES - Non validé,0
+model,"party.configuration,name",0,party.configuration,,0
model,"party.contact_mechanism,name",0,Contact Mechanism,Moyen de contact,0
model,"party.party,name",0,Party,Tiers,0
-model,"party.party-party.category,name",0,Party - Category,Tier - Catégorie,0
+model,"party.party-party.category,name",0,Party - Category,Tiers - Catégorie,0
model,"res.group,name",group_party_admin,Party Administration,Administration des tiers,0
selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
selection,"party.contact_mechanism,type",0,Fax,Fax,0
@@ -107,6 +114,7 @@ view,party.check_vies.check,0,Parties Succeed,Tiers validés,0
view,party.check_vies.check,0,VAT Information Exchange System Results,Système d'échange d'information TVA - Résultats,0
view,party.check_vies.no_check,0,VAT Information Exchange System,Système d'échange d'information TVA,0
view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Vous devez avoir une version récente de ""vatnumber"" installée !",0
+view,party.configuration,0,Party Configuration,Configuration des relations,0
view,party.contact_mechanism,0,Contact Mechanism,Moyen de contact,0
view,party.contact_mechanism,0,Contact Mechanisms,Moyens de contact,0
view,party.party,0,Accounting,Comptabilité,0
diff --git a/party.py b/party.py
index 634fae0..58ac835 100644
--- a/party.py
+++ b/party.py
@@ -2,6 +2,7 @@
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
+from trytond.pyson import Not, Bool, Eval
import logging
HAS_VATNUMBER = False
@@ -16,7 +17,7 @@ except ImportError:
'Unable to import vatnumber. VAT number validation disabled.')
STATES = {
- 'readonly': "active == False",
+ 'readonly': Not(Bool(Eval('active'))),
}
@@ -33,12 +34,16 @@ class Party(ModelSQL, ModelView):
code_length = fields.Integer('Code Length', select=1, readonly=True)
lang = fields.Many2One("ir.lang", 'Language', states=STATES)
vat_number = fields.Char('VAT Number', help="Value Added Tax number",
- states=STATES)
+ states={
+ 'readonly': Not(Bool(Eval('active'))),
+ 'required': Bool(Eval('vat_country')),
+ })
vat_country = fields.Selection(VAT_COUNTRIES, 'VAT Country', states=STATES,
help="Setting VAT country will enable validation of the VAT number.",
translate=False)
- vat_code = fields.Function('get_vat_code', type='char', string="VAT Code",
- fnct_search='search_vat_code')
+ vat_code = fields.Function(fields.Char('VAT Code',
+ on_change_with=['vat_number', 'vat_country']), 'get_vat_code',
+ searcher='search_vat_code')
addresses = fields.One2Many('party.address', 'party',
'Addresses', states=STATES)
contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
@@ -46,17 +51,12 @@ class Party(ModelSQL, ModelView):
categories = fields.Many2Many('party.party-party.category',
'party', 'category', 'Categories', states=STATES)
active = fields.Boolean('Active', select=1)
- full_name = fields.Function('get_full_name', type='char')
- phone = fields.Function('get_mechanism', arg='phone', type='char',
- string='Phone')
- mobile = fields.Function('get_mechanism', arg='mobile', type='char',
- string='Mobile')
- fax = fields.Function('get_mechanism', arg='fax', type='char',
- string='Fax')
- email = fields.Function('get_mechanism', arg='email', type='char',
- string='E-Mail')
- website = fields.Function('get_mechanism', arg='website', type='char',
- string='Website')
+ 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')
+ fax = fields.Function(fields.Char('Fax'), 'get_mechanism')
+ email = fields.Function(fields.Char('E-Mail'), 'get_mechanism')
+ website = fields.Function(fields.Char('Website'), 'get_mechanism')
def __init__(self):
super(Party, self).__init__()
@@ -80,7 +80,10 @@ class Party(ModelSQL, ModelView):
context = {}
return context.get('categories', [])
- def get_vat_code(self, cursor, user, ids, name, arg, context=None):
+ def on_change_with_vat_code(self, cursor, user, vals, context=None):
+ return (vals.get('vat_country') or '') + (vals.get('vat_number') or '')
+
+ def get_vat_code(self, cursor, user, ids, name, context=None):
if not ids:
return []
res = {}
@@ -88,23 +91,20 @@ class Party(ModelSQL, ModelView):
res[party.id] = (party.vat_country or '') + (party.vat_number or '')
return res
- def search_vat_code(self, cursor, user, name, args, context=None):
- args2 = []
- i = 0
- while i < len(args):
- value = args[i][2]
- for country, _ in VAT_COUNTRIES:
- if isinstance(value, basestring) \
- and country \
- and value.upper().startswith(country):
- args2.append(('vat_country', '=', country))
- value = value[len(country):]
- break
- args2.append(('vat_number', args[i][1], value))
- i += 1
- return args2
+ def search_vat_code(self, cursor, user, name, clause, context=None):
+ res = []
+ value = clause[2]
+ for country, _ in VAT_COUNTRIES:
+ if isinstance(value, basestring) \
+ and country \
+ and value.upper().startswith(country):
+ res.append(('vat_country', '=', country))
+ value = value[len(country):]
+ break
+ res.append(('vat_number', clause[1], value))
+ return res
- def get_full_name(self, cursor, user, ids, name, arg, context=None):
+ def get_full_name(self, cursor, user, ids, name, context=None):
if not ids:
return []
res = {}
@@ -112,23 +112,28 @@ class Party(ModelSQL, ModelView):
res[party.id] = party.name
return res
- def get_mechanism(self, cursor, user, ids, name, arg, context=None):
+ def get_mechanism(self, cursor, user, ids, name, context=None):
if not ids:
return []
res = {}
for party in self.browse(cursor, user, ids, context=context):
res[party.id] = ''
for mechanism in party.contact_mechanisms:
- if mechanism.type == arg:
+ if mechanism.type == name:
res[party.id] = mechanism.value
break
return res
def create(self, cursor, user, values, context=None):
+ sequence_obj = self.pool.get('ir.sequence')
+ config_obj = self.pool.get('party.configuration')
+
values = values.copy()
if not values.get('code'):
- values['code'] = self.pool.get('ir.sequence').get(
- cursor, user, 'party.party', context=context)
+ config = config_obj.browse(cursor, user, 1, context=context)
+ values['code'] = sequence_obj.get_id(cursor, user,
+ config.party_sequence.id, context=context)
+
values['code_length'] = len(values['code'])
return super(Party, self).create(cursor, user, values, context=context)
@@ -165,18 +170,14 @@ class Party(ModelSQL, ModelView):
return new_ids[0]
return new_ids
- def search_rec_name(self, cursor, user, name, args, context=None):
- args2 = []
- i = 0
- while i < len(args):
- ids = self.search(cursor, user, [('code', args[i][1], args[i][2])],
- context=context)
- if ids:
- args2.append(('id', 'in', ids))
- else:
- args2.append(('name', args[i][1], args[i][2]))
- i += 1
- return args2
+ def search_rec_name(self, cursor, user, name, clause, context=None):
+ ids = self.search(cursor, user, [('code',) + clause[1:]],
+ order=[], context=context)
+ if ids:
+ ids += self.search(cursor, user, [('name',) + clause[1:]],
+ order=[], context=context)
+ return [('id', 'in', ids)]
+ return [('name',) + clause[1:]]
def address_get(self, cursor, user, party_id, type=None, context=None):
"""
@@ -208,7 +209,7 @@ class Party(ModelSQL, ModelView):
for party in self.browse(cursor, user, ids):
vat_number = party.vat_number
- if not (vat_number and party.vat_country):
+ if not party.vat_country:
continue
if not getattr(vatnumber, 'check_vat_' + \
@@ -254,11 +255,11 @@ class CheckVIESCheck(ModelView):
_description = __doc__
parties_succeed = fields.Many2Many('party.party', None, None,
'Parties Succeed', readonly=True, states={
- 'invisible': "not bool(parties_succeed)",
+ 'invisible': Not(Bool(Eval('parties_succeed'))),
})
parties_failed = fields.Many2Many('party.party', None, None,
'Parties Failed', readonly=True, states={
- 'invisible': "not bool(parties_failed)",
+ 'invisible': Not(Bool(Eval('parties_failed'))),
})
CheckVIESCheck()
diff --git a/party.xml b/party.xml
index 5b3d2e2..cb1405a 100644
--- a/party.xml
+++ b/party.xml
@@ -128,8 +128,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">Parties by Category</field>
<field name="res_model">party.party</field>
<field name="view_type">form</field>
- <field name="context">{'categories': [active_id]}</field>
- <field name="domain">[('categories', 'child_of', [active_id], 'parent')]</field>
+ <field name="context">{'categories': [Eval('active_id')]}</field>
+ <field name="domain">[('categories', 'child_of', [Eval('active_id')], 'parent')]</field>
</record>
<record model="ir.action.keyword" id="act_party_by_category_keyword1">
<field name="keyword">tree_open</field>
@@ -151,6 +151,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.sequence.type" id="sequence_type_party">
<field name="name">Party</field>
<field name="code">party.party</field>
+ <field name="groups"
+ eval="[('add', ref('res.group_admin')), ('add', ref('group_party_admin'))]"/>
</record>
<record model="ir.sequence" id="sequence_party">
<field name="name">Party</field>
diff --git a/setup.py b/setup.py
index 8794138..5f9e659 100644
--- a/setup.py
+++ b/setup.py
@@ -2,19 +2,22 @@
#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 setuptools import setup, find_packages
+from setuptools import setup
import re
-info = eval(file('__tryton__.py').read())
+info = eval(open('__tryton__.py').read())
+major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
+major_version = int(major_version)
+minor_version = int(minor_version)
requires = []
for dep in info.get('depends', []):
if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
- requires.append('trytond_' + dep)
-
-major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
-requires.append('trytond >= %s.%s' % (major_version, minor_version))
-requires.append('trytond < %s.%s' % (major_version, int(minor_version) + 1))
+ requires.append('trytond_%s >= %s.%s, < %s.%s' %
+ (dep, major_version, minor_version, major_version,
+ minor_version + 1))
+requires.append('trytond >= %s.%s, < %s.%s' %
+ (major_version, minor_version, major_version, minor_version + 1))
setup(name='trytond_party',
version=info.get('version', '0.0.1'),
@@ -27,6 +30,7 @@ setup(name='trytond_party',
package_dir={'trytond.modules.party': '.'},
packages=[
'trytond.modules.party',
+ 'trytond.modules.party.tests',
],
package_data={
'trytond.modules.party': info.get('xml', []) \
@@ -59,4 +63,6 @@ setup(name='trytond_party',
[trytond.modules]
party = trytond.modules.party
""",
+ test_suite='tests',
+ test_loader='trytond.test_loader:Loader',
)
diff --git a/tests/__init__.py b/tests/__init__.py
index bc87a4f..1c2ce41 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
#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 test_party import *
+from test_party import suite
diff --git a/tests/__init__.pyc b/tests/__init__.pyc
new file mode 100644
index 0000000..89751e2
Binary files /dev/null and b/tests/__init__.pyc differ
diff --git a/tests/test_party.py b/tests/test_party.py
index f0db791..4d145e9 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -10,7 +10,7 @@ if os.path.isdir(DIR):
import unittest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view
+from trytond.tests.test_tryton import POOL, DB, USER, CONTEXT, test_view
class PartyTestCase(unittest.TestCase):
@@ -20,10 +20,14 @@ class PartyTestCase(unittest.TestCase):
def setUp(self):
trytond.tests.test_tryton.install_module('party')
- self.category = RPCProxy('party.category')
- self.party = RPCProxy('party.party')
- self.address = RPCProxy('party.address')
- self.country = RPCProxy('country.country')
+ self.category = POOL.get('party.category')
+ self.party = POOL.get('party.party')
+ self.address = POOL.get('party.address')
+ self.cursor = DB.cursor()
+
+ def tearDown(self):
+ self.cursor.commit()
+ self.cursor.close()
def test0005views(self):
'''
@@ -35,7 +39,7 @@ class PartyTestCase(unittest.TestCase):
'''
Create category.
'''
- category1_id = self.category.create({
+ category1_id = self.category.create(self.cursor, USER, {
'name': 'Category 1',
}, CONTEXT)
self.assert_(category1_id)
@@ -44,18 +48,18 @@ class PartyTestCase(unittest.TestCase):
'''
Test category recursion.
'''
- category1_id = self.category.search([
+ category1_id = self.category.search(self.cursor, USER, [
('name', '=', 'Category 1'),
], 0, 1, None, CONTEXT)[0]
- category2_id = self.category.create({
+ category2_id = self.category.create(self.cursor, USER, {
'name': 'Category 2',
'parent': category1_id,
}, CONTEXT)
self.assert_(category2_id)
- self.failUnlessRaises(Exception, self.category.write,
- category1_id, {
+ self.failUnlessRaises(Exception, self.category.write, self.cursor,
+ USER, category1_id, {
'parent': category2_id,
}, CONTEXT)
@@ -63,7 +67,7 @@ class PartyTestCase(unittest.TestCase):
'''
Create party.
'''
- party1_id = self.party.create({
+ party1_id = self.party.create(self.cursor, USER, {
'name': 'Party 1',
}, CONTEXT)
self.assert_(party1_id)
@@ -72,41 +76,39 @@ class PartyTestCase(unittest.TestCase):
'''
Test party code constraint.
'''
- party1_id = self.party.search([], 0, 1, None, CONTEXT)[0]
+ party1_id = self.party.search(self.cursor, USER, [], 0, 1, None,
+ CONTEXT)[0]
- code = self.party.read(party1_id, ['code'], CONTEXT)['code']
+ code = self.party.read(self.cursor, USER, party1_id, ['code'],
+ CONTEXT)['code']
- party2_id = self.party.create({
+ party2_id = self.party.create(self.cursor, USER, {
'name': 'Party 2',
}, CONTEXT)
- self.failUnlessRaises(Exception, self.party.write, party2_id, {
- 'code': code,
- }, CONTEXT)
+ self.failUnlessRaises(Exception, self.party.write, self.cursor, USER,
+ party2_id, {
+ 'code': code,
+ }, CONTEXT)
def test0050address(self):
'''
Create address.
'''
- party1_id = self.party.search([], 0, 1, None, CONTEXT)[0]
- belgium_id = self.country.search([
- ('code', '=', 'BE'),
- ], 0, 1, None, CONTEXT)[0]
+ party1_id = self.party.search(self.cursor, USER, [], 0, 1, None,
+ CONTEXT)[0]
- address1_id = self.address.create({
+ address1_id = self.address.create(self.cursor, USER, {
'party': party1_id,
'street': 'St sample, 15',
'city': 'City',
- 'country': belgium_id,
}, CONTEXT)
self.assert_(party1_id)
def suite():
- return unittest.TestLoader().loadTestsFromTestCase(PartyTestCase)
+ suite = trytond.tests.test_tryton.suite()
+ suite.addTests(unittest.TestLoader().loadTestsFromTestCase(PartyTestCase))
+ return suite
if __name__ == '__main__':
- suiteTrytond = trytond.tests.test_tryton.suite()
- suiteParty = suite()
- alltests = unittest.TestSuite([suiteTrytond, suiteParty])
- unittest.TextTestRunner(verbosity=2).run(alltests)
- SOCK.disconnect()
+ unittest.TextTestRunner(verbosity=2).run(suite())
diff --git a/tests/test_party.pyc b/tests/test_party.pyc
new file mode 100644
index 0000000..f18347f
Binary files /dev/null and b/tests/test_party.pyc differ
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 288d824..2405e42 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.4.1
+Version: 1.6.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.4/
+Download-URL: http://downloads.tryton.org/1.6/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 2a22242..50bb666 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -6,6 +6,7 @@ MANIFEST.in
README
address.xml
category.xml
+configuration.xml
contact_mechanism.xml
de_DE.csv
es_CO.csv
@@ -18,11 +19,16 @@ setup.py
./__tryton__.py
./address.py
./category.py
+./configuration.py
./contact_mechanism.py
./party.py
+./tests/__init__.py
+./tests/test_party.py
doc/index.rst
tests/__init__.py
+tests/__init__.pyc
tests/test_party.py
+tests/test_party.pyc
trytond_party.egg-info/PKG-INFO
trytond_party.egg-info/SOURCES.txt
trytond_party.egg-info/dependency_links.txt
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index fba03d5..16aff0b 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,6 +1,5 @@
-trytond_country
-trytond >= 1.4
-trytond < 1.5
+trytond_country >= 1.6, < 1.7
+trytond >= 1.6, < 1.7
[VAT]
vatnumber
\ No newline at end of file
commit 2873dec0672cc048bb5530330fc103f536546724
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Nov 25 13:07:48 2009 +0100
Adding upstream version 1.4.1.
diff --git a/CHANGELOG b/CHANGELOG
index aa17064..9b227af 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.4.1 - 2009-11-24
+* Bug fixes (see mercurial logs for details)
+
Version 1.4.0 - 2009-10-19
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 75f521c..b5350c7 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.4.0
+Version: 1.4.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/__tryton__.py b/__tryton__.py
index 7580a90..e284a9b 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,7 +7,7 @@
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
- 'version' : '1.4.0',
+ 'version' : '1.4.1',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/party.py b/party.py
index 217f7ae..634fae0 100644
--- a/party.py
+++ b/party.py
@@ -169,7 +169,7 @@ class Party(ModelSQL, ModelView):
args2 = []
i = 0
while i < len(args):
- ids = self.search(cursor, user, [('code', '=', args[i][2])],
+ ids = self.search(cursor, user, [('code', args[i][1], args[i][2])],
context=context)
if ids:
args2.append(('id', 'in', ids))
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 36f08b1..288d824 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.4.0
+Version: 1.4.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
commit d6495920a1e709348343a96f63430b308f9e5af6
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Oct 19 22:12:23 2009 +0200
Adding upstream version 1.4.0.
diff --git a/CHANGELOG b/CHANGELOG
index f3c2944..aa17064 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,5 @@
-Version 1.2.1 - 2009-08-31
-* Some bug fixes (see mercurial logs for details)
+Version 1.4.0 - 2009-10-19
+* Bug fixes (see mercurial logs for details)
Version 1.2.0 - 2009-04-20
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index ab1196e..75f521c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.2.1
+Version: 1.4.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.2/
+Download-URL: http://downloads.tryton.org/1.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index 798c16b..7580a90 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,14 +7,14 @@
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
- 'version' : '1.2.1',
+ 'version' : '1.4.0',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
'description': 'Define parties, addresses and co.',
'description_de_DE': 'Ermöglicht die Erstellung von Parteien, Adressen, etc.',
'description_es_CO': 'Definición de terceros, direcciones, etc.',
- 'description_es_ES': 'Definición de terceros, direcciones, etc.',
+ 'description_es_ES': 'Define terceros, direcciones, etc...',
'description_fr_FR': 'Définit des tiers, des adresses, etc.',
'depends' : [
'ir',
diff --git a/address.py b/address.py
index 7a0eb80..65f995e 100644
--- a/address.py
+++ b/address.py
@@ -25,7 +25,7 @@ class Address(ModelSQL, ModelView):
country = fields.Many2One('country.country', 'Country',
states=STATES)
subdivision = fields.Many2One("country.subdivision",
- 'Subdivision', domain="[('country', '=', country)]", states=STATES)
+ 'Subdivision', domain=["('country', '=', country)"], states=STATES)
active = fields.Boolean('Active')
sequence = fields.Integer("Sequence")
full_address = fields.Function('get_full_address', type='text')
@@ -91,8 +91,8 @@ class Address(ModelSQL, ModelView):
i = 0
while i < len(args):
ids = self.search(cursor, user, ['OR',
- ('zip', '=', args[i][2]),
- ('city', '=', args[i][2]),
+ ('zip', args[i][1], args[i][2]),
+ ('city', args[i][1], args[i][2]),
('name', args[i][1], args[i][2]),
], context=context)
if ids:
diff --git a/de_DE.csv b/de_DE.csv
index 414cff4..9ae39ef 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -4,7 +4,6 @@ error,party.category,0,You can not create recursive categories!,Kategorien dürf
error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!,0
error,party.party,0,Invalid VAT number!,Ungültige USt-ID-Nummer!,0
-error,party.party,0,The code of the party must be unique!,Der Name einer Partei kann nicht mehrfach vergeben werden!,0
field,"party.address,active",0,Active,Aktiv,0
field,"party.address,city",0,City,Stadt,0
field,"party.address,country",0,Country,Staat,0
@@ -80,7 +79,7 @@ model,"ir.action,name",act_category_tree,Categories,Kategorien,0
model,"ir.action,name",act_category_form,Categories,Kategorien,0
model,"ir.action,name",act_category_form2,Categories,Kategorien,0
model,"ir.action,name",wizard_check_vies,Check VIES,USt-ID-Nr. per VIES überprüfen,0
-model,"ir.action,name",report_label,La_bels,_Etiketten,0
+model,"ir.action,name",report_label,Labels,Etiketten,0
model,"ir.action,name",act_party_form,Parties,Parteien,0
model,"ir.action,name",act_party_form2,Parties,Parteien,0
model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach Kategorie,0
@@ -102,7 +101,7 @@ model,"party.check_vies.no_check,name",0,Check VIES - No Check,Ãberprüfung VIE
model,"party.contact_mechanism,name",0,Contact Mechanism,Kontaktmöglichkeit,0
model,"party.party,name",0,Party,Partei,0
model,"party.party-party.category,name",0,Party - Category,Partei - Parteikategorie,0
-model,"res.group,name",group_party_admin,Party Administration,Administration Kontakte,0
+model,"res.group,name",group_party_admin,Party Administration,Parteien Administration,0
selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
selection,"party.contact_mechanism,type",0,Fax,Fax,0
selection,"party.contact_mechanism,type",0,IRC,IRC,0
diff --git a/es_CO.csv b/es_CO.csv
index dfc6a85..97363b0 100644
--- a/es_CO.csv
+++ b/es_CO.csv
@@ -3,8 +3,7 @@ error,party.address,0,You can not modify the party of an address!,No puede modif
error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas!,0
error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, intente más tarde.",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,¡No puede modificar un tercero de un mecanismo de contacto!,0
-error,party.party,0,Invalid VAT number!,¡Número de VAT inválido!,0
-error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único!,0
+error,party.party,0,Invalid VAT number!,¡Número de IVA inválido!,0
field,"party.address,active",0,Active,Activo,0
field,"party.address,city",0,City,Ciudad,0
field,"party.address,country",0,Country,PaÃs,0
@@ -53,11 +52,11 @@ field,"party.party-party.category,party",0,Party,Tercero,0
field,"party.party-party.category,rec_name",0,Name,Nombre,0
field,"party.party,phone",0,Phone,Teléfono,0
field,"party.party,rec_name",0,Name,Nombre,0
-field,"party.party,vat_code",0,VAT Code,Código de VAT,0
-field,"party.party,vat_country",0,VAT Country,VAT de paÃs,0
-field,"party.party,vat_number",0,VAT Number,Nombre de VAT,0
+field,"party.party,vat_code",0,VAT Code,Código de IVA,0
+field,"party.party,vat_country",0,VAT Country,IVA de paÃs,0
+field,"party.party,vat_number",0,VAT Number,Nombre de IVA,0
field,"party.party,website",0,Website,Sitio Web,0
-help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el VAT de paÃs se habilitará la verificación del número de VAT.,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el IVA de paÃs se habilitará la verificación del número de IVA.,0
help,"party.party,vat_number",0,Value Added Tax number,Número de Impuesto de Valor Agregado,0
model,"ir.action,name",act_address_form,Addresses,Direcciones,0
model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
@@ -65,7 +64,7 @@ model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
model,"ir.action,name",act_category_form,Categories,CategorÃas,0
model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
model,"ir.action,name",wizard_check_vies,Check VIES,Revisar VIES,0
-model,"ir.action,name",report_label,La_bels,Etiqueta_s,0
+model,"ir.action,name",report_label,Labels,Etiquetas,0
model,"ir.action,name",act_party_form,Parties,Terceros,0
model,"ir.action,name",act_party_form2,Parties,Terceros,0
model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por CategorÃa,0
@@ -99,45 +98,13 @@ selection,"party.contact_mechanism,type",0,SIP,SIP,0
selection,"party.contact_mechanism,type",0,Skype,Skype,0
selection,"party.contact_mechanism,type",0,Website,Sitio Web,0
selection,"party.party,vat_country",0,,,0
-selection,"party.party,vat_country",0,AL,AL,0
-selection,"party.party,vat_country",0,AT,At,0
-selection,"party.party,vat_country",0,BE,BE,0
-selection,"party.party,vat_country",0,BG,BG,0
-selection,"party.party,vat_country",0,CY,CY,0
-selection,"party.party,vat_country",0,CZ,CZ,0
-selection,"party.party,vat_country",0,DE,DE,0
-selection,"party.party,vat_country",0,DK,DK,0
-selection,"party.party,vat_country",0,EE,EE,0
-selection,"party.party,vat_country",0,EL,EL,0
-selection,"party.party,vat_country",0,ES,ES,0
-selection,"party.party,vat_country",0,FI,FI,0
-selection,"party.party,vat_country",0,FR,FR,0
-selection,"party.party,vat_country",0,GB,GB,0
-selection,"party.party,vat_country",0,GR,GR,0
-selection,"party.party,vat_country",0,HU,HU,0
-selection,"party.party,vat_country",0,IE,IE,0
-selection,"party.party,vat_country",0,IT,IT,0
-selection,"party.party,vat_country",0,LT,LT,0
-selection,"party.party,vat_country",0,LU,LU,0
-selection,"party.party,vat_country",0,LV,LV,0
-selection,"party.party,vat_country",0,MT,MT,0
-selection,"party.party,vat_country",0,NL,NL,0
-selection,"party.party,vat_country",0,PL,PL,0
-selection,"party.party,vat_country",0,PT,PT,0
-selection,"party.party,vat_country",0,RO,RO,0
-selection,"party.party,vat_country",0,SE,SE,0
-selection,"party.party,vat_country",0,SI,SI,0
-selection,"party.party,vat_country",0,SK,SK,0
-selection,"party.party,vat_country",0,SM,SM,0
-selection,"party.party,vat_country",0,UA,UA,0
-selection,"party.party,vat_country",0,UK,UK,0
view,party.address,0,Addresses,Direcciones,0
view,party.category,0,Categories,CategorÃas,0
view,party.category,0,Category,CategorÃa,0
view,party.check_vies.check,0,Parties Failed,Los terceros fallaron,0
view,party.check_vies.check,0,Parties Succeed,Los terceros fueron válidos,0
-view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado de Sistema de Información de intercambio VAT,0
-view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de Información de Intercambio VAT,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado de Sistema de Información de intercambio IVA,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de Información de Intercambio IVA,0
view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Debe tener una versión reciente de ""vatnumber"" instalada!",0
view,party.contact_mechanism,0,Contact Mechanism,Mecanismo de contacto,0
view,party.contact_mechanism,0,Contact Mechanisms,Mecanismos de contacto,0
@@ -150,6 +117,6 @@ view,party.party,0,General,General,0
view,party.party,0,_General,_General,0
view,party.party,0,Parties,Terceros,0
view,party.party,0,Party,Tercero,0
-view,party.party,0,VAT,VAT,0
+view,party.party,0,VAT,IVA,0
wizard_button,"party.check_vies,check,end",0,Ok,Aceptar,0
wizard_button,"party.check_vies,no_check,end",0,Ok,Aceptar,0
diff --git a/es_ES.csv b/es_ES.csv
index 134f2c3..1148d1d 100644
--- a/es_ES.csv
+++ b/es_ES.csv
@@ -3,7 +3,7 @@ error,party.address,0,You can not modify the party of an address!,No puede modif
error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas,0
error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, inténtelo de nuevo más tarde",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,No puede modificar el tercero de un médio de contacto,0
-error,party.party,0,Invalid VAT number!,,0
+error,party.party,0,Invalid VAT number!,El NIF no es válido,0
error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único,0
field,"party.address,active",0,Active,Activo,0
field,"party.address,city",0,City,Ciudad,0
@@ -11,11 +11,11 @@ field,"party.address,country",0,Country,PaÃs,0
field,"party.address,full_address",0,,,0
field,"party.address,name",0,Name,Contacto,0
field,"party.address,party",0,Party,Tercero,0
-field,"party.address,rec_name",0,Name,Nombre,0
+field,"party.address,rec_name",0,Name,Contacto,0
field,"party.address,sequence",0,Sequence,Secuencia,0
field,"party.address,street",0,Street,Calle,0
field,"party.address,streetbis",0,Street (bis),Calle (bis),0
-field,"party.address,subdivision",0,Subdivision,Provincia,0
+field,"party.address,subdivision",0,Subdivision,Subdivisión,0
field,"party.address,zip",0,Zip,Código postal,0
field,"party.category,active",0,Active,Activo,0
field,"party.category,childs",0,Children,Hijos,0
@@ -65,7 +65,7 @@ model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
model,"ir.action,name",act_category_form,Categories,CategorÃas,0
model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
model,"ir.action,name",wizard_check_vies,Check VIES,Comprobar VIES,0
-model,"ir.action,name",report_label,La_bels,Etiqueta_s,0
+model,"ir.action,name",report_label,Labels,Etiquetas,0
model,"ir.action,name",act_party_form,Parties,Terceros,0
model,"ir.action,name",act_party_form2,Parties,Terceros,0
model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por categorÃa,0
@@ -85,7 +85,7 @@ model,"party.category,name",0,Category,CategorÃa,0
model,"party.check_vies.check,name",0,Check VIES - Check,Comprobación VIES - Comprobar,0
model,"party.check_vies.no_check,name",0,Check VIES - No Check,Comprobación VIES - No comprobar,0
model,"party.contact_mechanism,name",0,Contact Mechanism,Médio de contacto,0
-model,"party.party,name",0,Party,Terceros,1
+model,"party.party,name",0,Party,Tercero,0
model,"party.party-party.category,name",0,Party - Category,Tercero - CategorÃa,0
model,"res.group,name",group_party_admin,Party Administration,Administración de terceros,0
selection,"party.contact_mechanism,type",0,E-Mail,Correo electrónico,0
@@ -99,7 +99,7 @@ selection,"party.contact_mechanism,type",0,SIP,SIP,0
selection,"party.contact_mechanism,type",0,Skype,Skype,0
selection,"party.contact_mechanism,type",0,Website,Sitio Web,0
selection,"party.party,vat_country",0,AL,AL,0
-selection,"party.party,vat_country",0,AT,At,0
+selection,"party.party,vat_country",0,AT,AT,0
selection,"party.party,vat_country",0,BE,BE,0
selection,"party.party,vat_country",0,BG,BG,0
selection,"party.party,vat_country",0,CY,CY,0
@@ -139,7 +139,7 @@ view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado
view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de intercambio de información de IVA,0
view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!",Necesita instalar una versión más actualizada de «vatnumber»,0
view,party.contact_mechanism,0,Contact Mechanism,Médio de contacto,0
-view,party.contact_mechanism,0,Contact Mechanisms,Médio de contacto,0
+view,party.contact_mechanism,0,Contact Mechanisms,Médios de contacto,0
view,party.party,0,Account,Cuenta,0
view,party.party,0,Accounting,Contabilidad,0
view,party.party,0,Addresses,Direcciones,0
@@ -149,6 +149,6 @@ view,party.party,0,General,General,0
view,party.party,0,_General,_General,0
view,party.party,0,Parties,Terceros,0
view,party.party,0,Party,Tercero,0
-view,party.party,0,VAT,IVA,0
+view,party.party,0,VAT,NIF,0
wizard_button,"party.check_vies,check,end",0,Ok,Aceptar,0
wizard_button,"party.check_vies,no_check,end",0,Ok,Aceptar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 66b5876..71900ce 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -65,7 +65,7 @@ model,"ir.action,name",act_category_tree,Categories,Catégories,0
model,"ir.action,name",act_category_form,Categories,Catégories,0
model,"ir.action,name",act_category_form2,Categories,Catégories,0
model,"ir.action,name",wizard_check_vies,Check VIES,Validation VIES,0
-model,"ir.action,name",report_label,La_bels,Ã_tiquettes,0
+model,"ir.action,name",report_label,Labels,Ãtiquettes,0
model,"ir.action,name",act_party_form,Parties,Tiers,0
model,"ir.action,name",act_party_form2,Parties,Tiers,0
model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
diff --git a/party.xml b/party.xml
index 43dca30..5b3d2e2 100644
--- a/party.xml
+++ b/party.xml
@@ -71,7 +71,11 @@ this repository contains the full copyright notices and license terms. -->
</field>
<group col="1" colspan="2" id="categories">
<separator string="Categories" id="categories"/>
- <field name="categories"/>
+ <field name="categories">
+ <tree string="Categories" fill="1">
+ <field name="rec_name" select="1"/>
+ </tree>
+ </field>
</group>
</page>
<page string="Accounting" id="accounting">
@@ -133,7 +137,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="act_party_by_category"/>
</record>
<record model="ir.action.report" id="report_label">
- <field name="name">La_bels</field>
+ <field name="name">Labels</field>
<field name="model">party.party</field>
<field name="report_name">party.label</field>
<field name="report">party/label.odt</field>
diff --git a/setup.py b/setup.py
index 55e4065..8794138 100644
--- a/setup.py
+++ b/setup.py
@@ -9,17 +9,12 @@ info = eval(file('__tryton__.py').read())
requires = []
for dep in info.get('depends', []):
- match = re.compile(
- '(ir|res|workflow|webdav)((\s|$|<|>|<=|>=|==|!=).*?$)').match(dep)
- if match:
- continue
- else:
- dep = 'trytond_' + dep
- requires.append(dep)
+ if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
+ requires.append('trytond_' + dep)
major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
requires.append('trytond >= %s.%s' % (major_version, minor_version))
-requires.append('trytond < %s.%s' % (major_version, str(int(minor_version) + 1)))
+requires.append('trytond < %s.%s' % (major_version, int(minor_version) + 1))
setup(name='trytond_party',
version=info.get('version', '0.0.1'),
diff --git a/tests/test_party.py b/tests/test_party.py
index 0b68c8d..f0db791 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -10,7 +10,7 @@ if os.path.isdir(DIR):
import unittest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK
+from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view
class PartyTestCase(unittest.TestCase):
@@ -25,6 +25,12 @@ class PartyTestCase(unittest.TestCase):
self.address = RPCProxy('party.address')
self.country = RPCProxy('country.country')
+ def test0005views(self):
+ '''
+ Test views.
+ '''
+ self.assertRaises(Exception, test_view('party'))
+
def test0010category(self):
'''
Create category.
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 0f62e2c..36f08b1 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.2.1
+Version: 1.4.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.2/
+Download-URL: http://downloads.tryton.org/1.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index 94fd517..fba03d5 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,6 +1,6 @@
trytond_country
-trytond >= 1.2
-trytond < 1.3
+trytond >= 1.4
+trytond < 1.5
[VAT]
vatnumber
\ No newline at end of file
commit 01c2a1b9de51efbc2b38d95e059f90fef81f1e5e
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Sep 3 08:06:08 2009 +0200
Adding upstream version 1.2.1.
diff --git a/CHANGELOG b/CHANGELOG
index dc130b0..f3c2944 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.2.1 - 2009-08-31
+* Some bug fixes (see mercurial logs for details)
+
Version 1.2.0 - 2009-04-20
* Bug fixes (see mercurial logs for details)
* Add CheckVIES wizard (VAT Information Exchange System)
diff --git a/INSTALL b/INSTALL
index c4c4b61..7d489fd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,7 +5,7 @@ Prerequisites
-------------
* Python 2.4 or later (http://www.python.org/)
- * trytond 1.1.x (http://www.tryton.org/)
+ * trytond (http://www.tryton.org/)
* trytond_country (http://www.tryton.org/)
* Optional: vatnumber (http://code.google.com/p/vatnumber/)
diff --git a/MANIFEST.in b/MANIFEST.in
index c61b52d..b2a140e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,3 +8,4 @@ include *.xml
include *.odt
include *.csv
include tests/*
+include doc/*
diff --git a/PKG-INFO b/PKG-INFO
index b96a411..ab1196e 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.2.0
+Version: 1.2.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/__tryton__.py b/__tryton__.py
index f8572a9..798c16b 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,7 +7,7 @@
'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
'name_fr_FR': 'Tiers',
- 'version' : '1.2.0',
+ 'version' : '1.2.1',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/category.py b/category.py
index 725ee77..6006bc5 100644
--- a/category.py
+++ b/category.py
@@ -35,13 +35,15 @@ class Category(ModelSQL, ModelView):
if not ids:
return {}
res = {}
- categories = self.browse(cursor, user, ids, context=context)
- for category in categories:
- if category.parent:
- name = category.parent.name+' / '+ category.name
+ def _name(category):
+ if category.id in res:
+ return res[category.id]
+ elif category.parent:
+ return _name(category.parent) + ' / ' + category.name
else:
- name = category.name
- res[category.id] = name
+ return category.name
+ for category in self.browse(cursor, user, ids, context=context):
+ res[category.id] = _name(category)
return res
Category()
diff --git a/doc/index.rst b/doc/index.rst
new file mode 100644
index 0000000..a428419
--- /dev/null
+++ b/doc/index.rst
@@ -0,0 +1,49 @@
+Party Module
+############
+
+The party module defines the concepts of party, category and contact
+mechanism. It also comes with reports to print labels and letters and
+a *Check VIES* wizard.
+
+
+Party
+*****
+
+A party can be a person, a company or any organisation that one want
+to consider as the same entity. A party is defined by a name, a code,
+a language, a VAT code, categories, contact mechanisms and a list of
+addresses.
+
+Two reports are available:
+
+- The *Labels* report creates a document with the names and addresses
+ of all selected parties which are preformatted to be printed on
+ labels that can be stuck on an envelope.
+- The *Letter* report create a document pre-filled with the company
+ header, the address of the recipient, a date, a greeting, an ending
+ and the signature of the current reader.
+
+The *Check VIES* wizard allow to check the VAT number of parties with
+the VIES web service.
+
+
+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.
+
+
+Contact Mechanism
+*****************
+
+A contact mechanism is made of a type, value and comment. Type can be
+*Phone*, *Mobile*, *Fax*, *E-Mail*, *Website*, *Skype*, *SIP*, *IRC*,
+*Jabber* or *Other*.
+
+
+Category
+********
+
+A Category is just composed of a name, thus constituting tags that can
+be associated to parties. Categories are organised in a tree structure.
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 4d7d7ba..0f62e2c 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.2.0
+Version: 1.2.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 00372d1..2a22242 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -20,6 +20,7 @@ setup.py
./category.py
./contact_mechanism.py
./party.py
+doc/index.rst
tests/__init__.py
tests/test_party.py
trytond_party.egg-info/PKG-INFO
commit dc01163387aa36dca17cf3a8d9cec71b3689e564
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Apr 21 11:03:29 2009 +0200
Adding upstream version 1.2.0.
diff --git a/CHANGELOG b/CHANGELOG
index 4b867f8..dc130b0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,6 @@
-Version 1.0.2 - 2009-01-06
-* Some bug fixes (see mercurial logs for details)
-
-Version 1.0.1 - 2008-12-01
+Version 1.2.0 - 2009-04-20
+* Bug fixes (see mercurial logs for details)
+* Add CheckVIES wizard (VAT Information Exchange System)
* Add default categories on party with context
* Allow egg installation
diff --git a/COPYRIGHT b/COPYRIGHT
index d622f06..f65c1d2 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
Copyright (C) 2004-2008 Tiny SPRL.
-Copyright (C) 2008 Cédric Krier.
-Copyright (C) 2008 Bertrand Chenal.
-Copyright (C) 2008 B2CK SPRL.
+Copyright (C) 2008-2009 Cédric Krier.
+Copyright (C) 2008-2009 Bertrand Chenal.
+Copyright (C) 2008-2009 B2CK SPRL.
Copyright (C) 2008 Udo Spallek.
Copyright (C) 2008 Korbinian Preisler.
Copyright (C) 2008 virtual things.
diff --git a/INSTALL b/INSTALL
index e35ca37..c4c4b61 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,14 +5,14 @@ Prerequisites
-------------
* Python 2.4 or later (http://www.python.org/)
- * trytond 0.0.x (http://www.tryton.org/)
+ * trytond 1.1.x (http://www.tryton.org/)
* trytond_country (http://www.tryton.org/)
* Optional: vatnumber (http://code.google.com/p/vatnumber/)
Installation
------------
-Once you've downloaded and unpacked a trytond_party source release, enter the
+Once you've downloaded and unpacked the trytond_party source release, enter the
directory where the archive was unpacked, and run:
python setup.py install
diff --git a/PKG-INFO b/PKG-INFO
index 280d889..b96a411 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.0.2
+Version: 1.2.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.0/
+Download-URL: http://downloads.tryton.org/1.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index f8ff817..f8572a9 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -3,17 +3,19 @@
#this repository contains the full copyright notices and license terms.
{
'name' : 'Party',
- 'name_fr_FR': 'Tiers',
- 'name_de_DE': 'Kontakte',
+ 'name_de_DE': 'Parteien',
+ 'name_es_CO': 'Terceros',
'name_es_ES': 'Terceros',
- 'version' : '1.0.2',
+ 'name_fr_FR': 'Tiers',
+ 'version' : '1.2.0',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
'description': 'Define parties, addresses and co.',
- 'description_fr_FR': 'Définit des tiers, des adresses, etc.',
- 'description_de_DE': 'Ermöglicht die Erstellung von Kontakten, Adressen, etc.',
+ 'description_de_DE': 'Ermöglicht die Erstellung von Parteien, Adressen, etc.',
+ 'description_es_CO': 'Definición de terceros, direcciones, etc.',
'description_es_ES': 'Definición de terceros, direcciones, etc.',
+ 'description_fr_FR': 'Définit des tiers, des adresses, etc.',
'depends' : [
'ir',
'res',
@@ -26,8 +28,9 @@
'contact_mechanism.xml',
],
'translation': [
- 'fr_FR.csv',
'de_DE.csv',
+ 'es_CO.csv',
'es_ES.csv',
+ 'fr_FR.csv',
],
}
diff --git a/address.py b/address.py
index 8e42a93..7a0eb80 100644
--- a/address.py
+++ b/address.py
@@ -1,27 +1,29 @@
#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 trytond.osv import fields, OSV
+from trytond.model import ModelView, ModelSQL, fields
STATES = {
'readonly': "active == False",
}
-class Address(OSV):
+class Address(ModelSQL, ModelView):
"Address"
_name = 'party.address'
_description = __doc__
party = fields.Many2One('party.party', 'Party', required=True,
- ondelete='cascade', select=1, states=STATES)
+ ondelete='CASCADE', select=1, states={
+ 'readonly': "(active == False) or (active_id > 0)",
+ })
name = fields.Char('Name', states=STATES)
street = fields.Char('Street', states=STATES)
streetbis = fields.Char('Street (bis)', states=STATES)
zip = fields.Char('Zip', change_default=True,
- states=STATES)
+ states=STATES)
city = fields.Char('City', states=STATES)
country = fields.Many2One('country.country', 'Country',
- states=STATES)
+ states=STATES)
subdivision = fields.Many2One("country.subdivision",
'Subdivision', domain="[('country', '=', country)]", states=STATES)
active = fields.Boolean('Active')
@@ -41,7 +43,7 @@ class Address(OSV):
def get_full_address(self, cursor, user, ids, name, arg, context=None):
if not ids:
- return []
+ return {}
res = {}
for address in self.browse(cursor, user, ids, context=context):
res[address.id] = ''
@@ -75,33 +77,30 @@ class Address(OSV):
res[address.id] += address.country.name
return res
- def name_get(self, cursor, user, ids, context=None):
+ def get_rec_name(self, cursor, user, ids, name, arg, context=None):
if not ids:
- return []
- if isinstance(ids, (int, long)):
- ids = [ids]
- res = []
+ return {}
+ res = {}
for address in self.browse(cursor, user, ids, context=context):
- res.append((address.id, ", ".join(x for x in [address.name,
- address.party.name, address.zip, address.city] if x)))
+ res[address.id] = ", ".join(x for x in [address.name,
+ address.party.rec_name, address.zip, address.city] if x)
return res
- def name_search(self, cursor, user, name, args=None, operator='ilike',
- context=None, limit=None):
- if not args:
- args=[]
-
- ids = self.search(cursor, user, [('zip', '=', name)] + args,
- limit=limit, context=context)
- if not ids:
- ids = self.search(cursor, user, [('city', operator, name)] + args,
- limit=limit, context=context)
- if name:
- ids += self.search(cursor, user, [('name', operator, name)] + args,
- limit=limit, context=context)
- ids += self.search(cursor, user, [('party', operator, name)] + args,
- limit=limit, context=context)
- return self.name_get(cursor, user, ids, context=context)
+ def search_rec_name(self, cursor, user, name, args, context=None):
+ args2 = []
+ i = 0
+ while i < len(args):
+ ids = self.search(cursor, user, ['OR',
+ ('zip', '=', args[i][2]),
+ ('city', '=', args[i][2]),
+ ('name', args[i][1], args[i][2]),
+ ], context=context)
+ if ids:
+ args2.append(('id', 'in', ids))
+ else:
+ args2.append(('party', args[i][1], args[i][2]))
+ i += 1
+ return args2
def write(self, cursor, user, ids, vals, context=None):
if 'party' in vals:
diff --git a/address.xml b/address.xml
index 4d66c01..f6d2e43 100644
--- a/address.xml
+++ b/address.xml
@@ -17,7 +17,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="city" select="2"/>
<field name="country" select="1"/>
<field name="subdivision" select="2"/>
- <field name="active" select="2" tree_invisible="1"/>
+ <field name="active" select="2"/>
</tree>
]]>
</field>
@@ -32,7 +32,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="party" colspan="5"/>
<label name="name"/>
<field name="name"/>
- <group colspan="2" col="20">
+ <group colspan="2" col="20" id="checkboxes">
<label name="active"/>
<field name="active"
xexpand="0" width="25"/>
diff --git a/category.py b/category.py
index 81e7fdd..725ee77 100644
--- a/category.py
+++ b/category.py
@@ -1,23 +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.
-from trytond.osv import fields, OSV
+from trytond.model import ModelView, ModelSQL, fields
STATES = {
'readonly': "active == False",
}
-class Category(OSV):
+class Category(ModelSQL, ModelView):
"Category"
_name = "party.category"
_description = __doc__
name = fields.Char('Name', required=True, states=STATES)
parent = fields.Many2One('party.category', 'Parent',
select=1, states=STATES)
- complete_name = fields.Function('get_complete_name',
- type="char", string='Name', states=STATES)
childs = fields.One2Many('party.category', 'parent',
- 'Childs', states=STATES)
+ 'Children', states=STATES)
active = fields.Boolean('Active')
def __init__(self):
@@ -33,22 +31,17 @@ class Category(OSV):
def default_active(self, cursor, user, context=None):
return 1
- def get_complete_name(self, cursor, user, ids, name, arg,
- context=None):
- res = self.name_get(cursor, user, ids, context)
- return dict(res)
-
- def name_get(self, cursor, user, ids, context=None):
+ def get_rec_name(self, cursor, user, ids, name, arg, context=None):
if not ids:
- return []
+ return {}
+ res = {}
categories = self.browse(cursor, user, ids, context=context)
- res = []
for category in categories:
if category.parent:
name = category.parent.name+' / '+ category.name
else:
name = category.name
- res.append((category.id, name))
+ res[category.id] = name
return res
Category()
diff --git a/category.xml b/category.xml
index 77e5c40..79a9553 100644
--- a/category.xml
+++ b/category.xml
@@ -27,7 +27,6 @@ this repository contains the full copyright notices and license terms. -->
<![CDATA[
<tree string="Categories" fill="1">
<field name="name" select="1"/>
- <field name="active" select="2" tree_invisible="1"/>
</tree>
]]>
</field>
@@ -43,8 +42,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="category_view_tree"/>
<field name="act_window" ref="act_category_tree"/>
</record>
- <menuitem parent="menu_party" sequence="3"
+ <menuitem parent="menu_party"
action="act_category_tree" id="menu_category_tree"/>
+
<record model="ir.action.act_window" id="act_category_form">
<field name="name">Categories</field>
<field name="res_model">party.category</field>
@@ -60,7 +60,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="category_view_form"/>
<field name="act_window" ref="act_category_form"/>
</record>
- <menuitem name="Edit Categories" parent="menu_category_tree"
+ <menuitem parent="menu_configuration"
action="act_category_form" id="menu_category_form"/>
<record model="ir.action.act_window" id="act_category_form2">
<field name="name">Categories</field>
@@ -77,7 +77,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="category_view_tree"/>
<field name="act_window" ref="act_category_form2"/>
</record>
- <menuitem name="New category" parent="menu_category_tree"
+ <menuitem name="New category" parent="menu_category_form"
action="act_category_form2" id="menu_category_form2"/>
<record model="ir.model.access" id="access_party_category">
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 3a1105c..264533f 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -1,7 +1,6 @@
#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 trytond.osv import OSV, fields
+from trytond.model import ModelView, ModelSQL, fields
STATES = {
'readonly': "active == False",
@@ -21,7 +20,7 @@ _TYPES = [
]
-class ContactMechanism(OSV):
+class ContactMechanism(ModelSQL, ModelView):
"Contact Mechanism"
_name = "party.contact_mechanism"
_description = __doc__
@@ -29,12 +28,7 @@ class ContactMechanism(OSV):
type = fields.Selection(_TYPES, 'Type', required=True, states=STATES,
sort=False)
- value = fields.Char('Value', select=1,
- states={
- 'invisible': "type in ('email', 'website', 'skype', 'sip')",
- 'required': "type not in ('email', 'website')",
- 'readonly': "active == False",
- }, on_change=['value'])
+ value = fields.Char('Value', select=1, states=STATES, on_change=['value'])
comment = fields.Text('Comment', states=STATES)
party = fields.Many2One('party.party', 'Party', required=True,
ondelete='CASCADE', states=STATES, select=1)
@@ -45,25 +39,31 @@ class ContactMechanism(OSV):
'invisible': "type != 'email'",
'required': "type == 'email'",
'readonly': "active == False",
- }, on_change=['email'])
+ }, on_change=['email'], depends=['value', 'type', 'active'])
website = fields.Function('get_value', fnct_inv='set_value', type='char',
string="Website", states={
'invisible': "type != 'website'",
'required': "type == 'website'",
'readonly': "active == False",
- }, on_change=['website'])
+ }, on_change=['website'], depends=['value', 'type', 'active'])
skype = fields.Function('get_value', fnct_inv='set_value', type='char',
string="Skype", states={
'invisible': "type != 'skype'",
'required': "type == 'skype'",
'readonly': "active == False",
- }, on_change=['skype'])
+ }, on_change=['skype'], depends=['value', 'type', 'active'])
sip = fields.Function('get_value', fnct_inv='set_value', type='char',
string="SIP", states={
'invisible': "type != 'sip'",
'required': "type == 'sip'",
'readonly': "active == False",
- }, on_change=['sip'])
+ }, on_change=['sip'], depends=['value', 'type', 'active'])
+ other_value = fields.Function('get_value', fnct_inv='set_value',
+ type='char', string='Value', states={
+ 'invisible': "type in ('email', 'website', 'skype', 'sip')",
+ 'required': "type not in ('email', 'website')",
+ 'readonly': "active == False",
+ }, on_change=['other_value'], depends=['value', 'type', 'active'])
def __init__(self):
super(ContactMechanism, self).__init__()
@@ -101,6 +101,7 @@ class ContactMechanism(OSV):
'email': value,
'skype': value,
'sip': value,
+ 'other_value': value,
}
def on_change_value(self, cursor, user, ids, vals, context=None):
@@ -123,6 +124,10 @@ class ContactMechanism(OSV):
return self._change_value(cursor, user, vals.get('sip'),
context=context)
+ def on_change_other_value(self, cursor, user, ids, vals, context=None):
+ return self._change_value(cursor, user, vals.get('other_value'),
+ context=context)
+
def write(self, cursor, user, ids, vals, context=None):
if 'party' in vals:
if isinstance(ids, (int, long)):
diff --git a/contact_mechanism.xml b/contact_mechanism.xml
index 05e50bc..12af36e 100644
--- a/contact_mechanism.xml
+++ b/contact_mechanism.xml
@@ -13,7 +13,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="party" select="1"/>
<field name="type" select="1"/>
<field name="value" select="1"/>
- <field name="active" select="2" tree_invisible="1"/>
</tree>
]]>
</field>
@@ -31,9 +30,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="active"/>
<label name="type"/>
<field name="type"/>
- <group col="2" colspan="2">
- <label name="value"/>
- <field name="value"/>
+ <group col="2" colspan="2" id="value">
+ <label name="other_value"/>
+ <field name="other_value"/>
<label name="website"/>
<field name="website" widget="url"/>
<label name="email"/>
diff --git a/de_DE.csv b/de_DE.csv
index 7118f83..414cff4 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -1,18 +1,20 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,Die Partei einer Adresse kann nicht geändert werden!,0
error,party.category,0,You can not create recursive categories!,Kategorien dürfen nicht rekursiv sein,0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.","VIES Dienst nicht erreichbar, bitte versuchen Sie es später noch einmal!",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!,0
+error,party.party,0,Invalid VAT number!,Ungültige USt-ID-Nummer!,0
error,party.party,0,The code of the party must be unique!,Der Name einer Partei kann nicht mehrfach vergeben werden!,0
-error,party.party,0,Wrong VAT number!,USt-ID Nr. ungültig!,0
field,"party.address,active",0,Active,Aktiv,0
field,"party.address,city",0,City,Stadt,0
field,"party.address,country",0,Country,Staat,0
field,"party.address,create_date",0,Creation date,Erstellungsdatum,0
field,"party.address,create_uid",0,Creation user,Ersteller,0
-field,"party.address,full_address",0,unknown,Unbekannt,0
+field,"party.address,full_address",0,,,0
field,"party.address,id",0,ID,ID,0
field,"party.address,name",0,Name,Name,0
field,"party.address,party",0,Party,Partei,0
+field,"party.address,rec_name",0,Name,Name,0
field,"party.address,sequence",0,Sequence,Sequenz,0
field,"party.address,street",0,Street,Anschrift 1,0
field,"party.address,streetbis",0,Street (bis),Anschrift 2,0
@@ -21,19 +23,23 @@ field,"party.address,write_date",0,Last modification date,Zuletzt geändert am,0
field,"party.address,write_uid",0,Last modification by,Zuletzt geändert von,0
field,"party.address,zip",0,Zip,Postleitzahl,0
field,"party.category,active",0,Active,Aktiv,0
-field,"party.category,childs",0,Childs,Untergeordnet (Kategorien),0
-field,"party.category,complete_name",0,Name,Name,0
+field,"party.category,childs",0,Children,Untergeordnet (Kategorien),0
field,"party.category,create_date",0,Creation date,Erstellungsdatum,0
field,"party.category,create_uid",0,Creation user,Ersteller,0
field,"party.category,id",0,ID,ID,0
field,"party.category,name",0,Name,Kategorie Name,0
field,"party.category,parent",0,Parent,Ãbergeordnet (Kategorie),0
+field,"party.category,rec_name",0,Name,Name,0
field,"party.category,write_date",0,Last modification date,Zuletzt geändert am,0
field,"party.category,write_uid",0,Last modification by,Zuletzt geändert von,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,Parteien mit fehlgeschlagener Ãberprüfung,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Parteien mit erfolgreicher Ãberprüfung,0
field,"party.contact_mechanism,active",0,Active,Aktiv,0
field,"party.contact_mechanism,comment",0,Comment,Kommentar,0
field,"party.contact_mechanism,email",0,E-Mail,E-Mail,0
+field,"party.contact_mechanism,other_value",0,Value,Wert,0
field,"party.contact_mechanism,party",0,Party,Partei,0
+field,"party.contact_mechanism,rec_name",0,Name,Name,0
field,"party.contact_mechanism,sequence",0,Sequence,Sequenz,0
field,"party.contact_mechanism,sip",0,SIP,SIP,0
field,"party.contact_mechanism,skype",0,Skype,Skype,0
@@ -50,25 +56,30 @@ field,"party.party,create_date",0,Creation date,Erstellungsdatum,0
field,"party.party,create_uid",0,Creation user,Ersteller,0
field,"party.party,email",0,E-Mail,E-Mail,0
field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,unknown,Unbekannt,0
+field,"party.party,full_name",0,,,0
field,"party.party,id",0,ID,ID,0
field,"party.party,lang",0,Language,Sprache,0
field,"party.party,mobile",0,Mobile,Mobiltelefon,0
field,"party.party,name",0,Name,Name,0
+field,"party.party-party.category,category",0,Category,Kategorie,0
+field,"party.party-party.category,party",0,Party,Partei,0
+field,"party.party-party.category,rec_name",0,Name,Name,0
field,"party.party,phone",0,Phone,Telefon,0
-field,"party.party,vat_code",0,VAT Code,USt-ID Nr.,0
+field,"party.party,rec_name",0,Name,Name,0
+field,"party.party,vat_code",0,VAT Code,USt-ID-Nr.,0
field,"party.party,vat_country",0,VAT Country,USt-ID Präfix,0
-field,"party.party,vat_number",0,VAT Number,USt-ID Nr.,0
+field,"party.party,vat_number",0,VAT Number,USt-ID-Nr.,0
field,"party.party,website",0,Website,Website,0
field,"party.party,write_date",0,Last modification date,Zuletzt geändert am,0
field,"party.party,write_uid",0,Last modification by,Zuletzt geändert von,0
-help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Ein Eintrag in USt-ID Präfix aktiviert die Ãberprüfung der USt-ID Nr.,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ein Eintrag in USt-ID-Präfix aktiviert die Ãberprüfung der USt-ID-Nr.,0
help,"party.party,vat_number",0,Value Added Tax number,Umsatzsteueridentifikationsnummer,0
model,"ir.action,name",act_address_form,Addresses,Adressen,0
model,"ir.action,name",act_address_form2,Addresses,Adressen,0
model,"ir.action,name",act_category_tree,Categories,Kategorien,0
model,"ir.action,name",act_category_form,Categories,Kategorien,0
model,"ir.action,name",act_category_form2,Categories,Kategorien,0
+model,"ir.action,name",wizard_check_vies,Check VIES,USt-ID-Nr. per VIES überprüfen,0
model,"ir.action,name",report_label,La_bels,_Etiketten,0
model,"ir.action,name",act_party_form,Parties,Parteien,0
model,"ir.action,name",act_party_form2,Parties,Parteien,0
@@ -76,25 +87,34 @@ model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach K
model,"ir.sequence,name",sequence_party,Party,Partei,0
model,"ir.sequence.type,name",sequence_type_party,Party,Partei,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
-model,"ir.ui.menu,name",menu_category_tree,Categories,Kategorien,0
-model,"ir.ui.menu,name",menu_category_form,Edit Categories,Kategorien bearbeiten,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,Parteikategorien,0
+model,"ir.ui.menu,name",menu_category_form,Categories,Parteikategorien,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Einstellungen,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Neue Adresse,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Neue Kategorie,0
+model,"ir.ui.menu,name",menu_category_form2,New category,Neue Parteikategorie,0
model,"ir.ui.menu,name",menu_party_form2,New Party,Neue Partei,0
model,"ir.ui.menu,name",menu_party_form,Parties,Parteien,0
-model,"ir.ui.menu,name",menu_party,Party Management,Kontakte,0
+model,"ir.ui.menu,name",menu_party,Party Management,Parteien,0
+model,"party.address,name",0,Address,Adresse,0
+model,"party.category,name",0,Category,Kategorie,0
+model,"party.check_vies.check,name",0,Check VIES - Check,Ãberprüfung VIES - Durchführen,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,Ãberprüfung VIES - Nicht durchführen,0
+model,"party.contact_mechanism,name",0,Contact Mechanism,Kontaktmöglichkeit,0
+model,"party.party,name",0,Party,Partei,0
+model,"party.party-party.category,name",0,Party - Category,Partei - Parteikategorie,0
model,"res.group,name",group_party_admin,Party Administration,Administration Kontakte,0
selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
selection,"party.contact_mechanism,type",0,Fax,Fax,0
selection,"party.contact_mechanism,type",0,IRC,IRC,0
selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
selection,"party.contact_mechanism,type",0,Mobile,Mobiltelefon,0
-selection,"party.contact_mechanism,type",0,Other,Anderer,0
+selection,"party.contact_mechanism,type",0,Other,Anderer Kontakt,0
selection,"party.contact_mechanism,type",0,Phone,Telefon,0
selection,"party.contact_mechanism,type",0,SIP,SIP,0
selection,"party.contact_mechanism,type",0,Skype,Skype,0
selection,"party.contact_mechanism,type",0,Website,Homepage,0
selection,"party.party,vat_country",0,,,0
+selection,"party.party,vat_country",0,AL,AL,0
selection,"party.party,vat_country",0,AT,AT,0
selection,"party.party,vat_country",0,BE,BE,0
selection,"party.party,vat_country",0,BG,BG,0
@@ -123,17 +143,29 @@ selection,"party.party,vat_country",0,RO,RO,0
selection,"party.party,vat_country",0,SE,SE,0
selection,"party.party,vat_country",0,SI,SI,0
selection,"party.party,vat_country",0,SK,SK,0
+selection,"party.party,vat_country",0,SM,SM,0
+selection,"party.party,vat_country",0,UA,UA,0
+selection,"party.party,vat_country",0,UK,UK,0
view,party.address,0,Addresses,Adressen,0
view,party.category,0,Categories,Kategorien,0
view,party.category,0,Category,Kategorie,0
+view,party.check_vies.check,0,Parties Failed,Parteien mit fehlgeschlagener Ãberprüfung,0
+view,party.check_vies.check,0,Parties Succeed,Parteien mit erfolgreicher Ãberprüfung,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,Ergebnisse des Ãberprüfungssystems für USt-ID-Nummern (VIES),0
+view,party.check_vies.no_check,0,VAT Information Exchange System,Ãberprüfungssystem für USt-ID-Nummern (VIES),0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Es muss eine aktuelle Version des Python-Moduls ""vatnumber"" installiert sein!",0
view,party.contact_mechanism,0,Contact Mechanism,Kontaktmöglichkeit,0
view,party.contact_mechanism,0,Contact Mechanisms,Kontaktmöglichkeiten,0
view,party.party,0,Account,Konten,0
-view,party.party,0,_Accounting,,0
+view,party.party,0,Accounting,Buchhaltung,0
+view,party.party,0,_Accounting,_Buchhaltung,0
view,party.party,0,Addresses,Adressen,0
view,party.party,0,Categories,Kategorien,0
view,party.party,0,Contact Mechanisms,Kontaktmöglichkeiten,0
+view,party.party,0,General,Allgemein,0
view,party.party,0,_General,_Allgemein,0
view,party.party,0,Parties,Parteien,0
view,party.party,0,Party,Partei,0
view,party.party,0,VAT,USt,0
+wizard_button,"party.check_vies,check,end",0,Ok,OK,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,OK,0
diff --git a/es_ES.csv b/es_CO.csv
similarity index 69%
copy from es_ES.csv
copy to es_CO.csv
index e312437..dfc6a85 100644
--- a/es_ES.csv
+++ b/es_CO.csv
@@ -1,29 +1,35 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección!,0
error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas!,0
-error,party.contact_mechanism,0,You can not modify the party of an contact mechanism!,No puede modificar el tercero de un mecanismo de contacto!,0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, intente más tarde.",0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,¡No puede modificar un tercero de un mecanismo de contacto!,0
+error,party.party,0,Invalid VAT number!,¡Número de VAT inválido!,0
error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único!,0
-error,party.party,0,Wrong VAT number!,Número de VAT erróneo!,0
field,"party.address,active",0,Active,Activo,0
field,"party.address,city",0,City,Ciudad,0
field,"party.address,country",0,Country,PaÃs,0
-field,"party.address,full_address",0,unknown,desconocid@,0
+field,"party.address,full_address",0,,,0
field,"party.address,name",0,Name,Nombre de Contacto,0
field,"party.address,party",0,Party,Tercero,0
+field,"party.address,rec_name",0,Name,Nombre,0
field,"party.address,sequence",0,Sequence,Secuencia,0
field,"party.address,street",0,Street,Calle,0
field,"party.address,streetbis",0,Street (bis),Calle (bis),0
field,"party.address,subdivision",0,Subdivision,Subdivisión,0
field,"party.address,zip",0,Zip,Código postal,0
field,"party.category,active",0,Active,Activo,0
-field,"party.category,childs",0,Childs,Hij at s,0
-field,"party.category,complete_name",0,Name,Nombre,0
+field,"party.category,childs",0,Children,Hij at s,0
field,"party.category,name",0,Name,Nombre,0
field,"party.category,parent",0,Parent,Padre,0
+field,"party.category,rec_name",0,Name,Nombre,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,Los terceros fallaron,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Terceros válidos,0
field,"party.contact_mechanism,active",0,Active,Activo,0
field,"party.contact_mechanism,comment",0,Comment,Comentario,0
field,"party.contact_mechanism,email",0,E-Mail,Correo electrónico,0
+field,"party.contact_mechanism,other_value",0,Value,Valor,0
field,"party.contact_mechanism,party",0,Party,Tercero,0
+field,"party.contact_mechanism,rec_name",0,Name,Nombre,0
field,"party.contact_mechanism,sequence",0,Sequence,Secuencia,0
field,"party.contact_mechanism,sip",0,SIP,SIP,0
field,"party.contact_mechanism,skype",0,Skype,Skype,0
@@ -38,34 +44,50 @@ field,"party.party,code_length",0,Code Length,Longitud del Código,0
field,"party.party,contact_mechanisms",0,Contact Mechanisms,Mecanismos de contacto,0
field,"party.party,email",0,E-Mail,Correo electrónico,0
field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,unknown,desconocid@,0
+field,"party.party,full_name",0,,,0
field,"party.party,lang",0,Language,Idioma,0
field,"party.party,mobile",0,Mobile,Celular,0
field,"party.party,name",0,Name,Nombre,0
+field,"party.party-party.category,category",0,Category,CategorÃa,0
+field,"party.party-party.category,party",0,Party,Tercero,0
+field,"party.party-party.category,rec_name",0,Name,Nombre,0
field,"party.party,phone",0,Phone,Teléfono,0
+field,"party.party,rec_name",0,Name,Nombre,0
field,"party.party,vat_code",0,VAT Code,Código de VAT,0
field,"party.party,vat_country",0,VAT Country,VAT de paÃs,0
field,"party.party,vat_number",0,VAT Number,Nombre de VAT,0
field,"party.party,website",0,Website,Sitio Web,0
-help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Al especificar el VAT de paÃs se habilitará la verificación del número de VAT.,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el VAT de paÃs se habilitará la verificación del número de VAT.,0
help,"party.party,vat_number",0,Value Added Tax number,Número de Impuesto de Valor Agregado,0
model,"ir.action,name",act_address_form,Addresses,Direcciones,0
model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
model,"ir.action,name",act_category_form,Categories,CategorÃas,0
model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
+model,"ir.action,name",wizard_check_vies,Check VIES,Revisar VIES,0
model,"ir.action,name",report_label,La_bels,Etiqueta_s,0
model,"ir.action,name",act_party_form,Parties,Terceros,0
model,"ir.action,name",act_party_form2,Parties,Terceros,0
model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por CategorÃa,0
+model,"ir.sequence,name",sequence_party,Party,Tercero,0
+model,"ir.sequence.type,name",sequence_type_party,Party,Tercero,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Direcciones,0
model,"ir.ui.menu,name",menu_category_tree,Categories,CategorÃas,0
-model,"ir.ui.menu,name",menu_category_form,Edit Categories,Editar CategorÃas,0
+model,"ir.ui.menu,name",menu_category_form,Categories,CategorÃas,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Configuración,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva Dirección,0
model,"ir.ui.menu,name",menu_category_form2,New category,Nueva CategorÃa,0
model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo Tercero,0
model,"ir.ui.menu,name",menu_party_form,Parties,Terceros,0
-model,"ir.ui.menu,name",menu_party,Party Management,Manejo de Relaciones,0
+model,"ir.ui.menu,name",menu_party,Party Management,Gestión de Terceros,0
+model,"party.address,name",0,Address,Dirección,0
+model,"party.category,name",0,Category,CategorÃa,0
+model,"party.check_vies.check,name",0,Check VIES - Check,Revisar VIES - Revisar,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,Revisar VIES - NO revisar,0
+model,"party.contact_mechanism,name",0,Contact Mechanism,Mecanismo de contacto,0
+model,"party.party,name",0,Party,Tercero,0
+model,"party.party-party.category,name",0,Party - Category,Tercero - CategorÃa,0
+model,"res.group,name",group_party_admin,Party Administration,Terceros,0
selection,"party.contact_mechanism,type",0,E-Mail,Correo electrónico,0
selection,"party.contact_mechanism,type",0,Fax,Fax,0
selection,"party.contact_mechanism,type",0,IRC,Chat,0
@@ -112,15 +134,22 @@ selection,"party.party,vat_country",0,UK,UK,0
view,party.address,0,Addresses,Direcciones,0
view,party.category,0,Categories,CategorÃas,0
view,party.category,0,Category,CategorÃa,0
+view,party.check_vies.check,0,Parties Failed,Los terceros fallaron,0
+view,party.check_vies.check,0,Parties Succeed,Los terceros fueron válidos,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado de Sistema de Información de intercambio VAT,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de Información de Intercambio VAT,0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Debe tener una versión reciente de ""vatnumber"" instalada!",0
view,party.contact_mechanism,0,Contact Mechanism,Mecanismo de contacto,0
view,party.contact_mechanism,0,Contact Mechanisms,Mecanismos de contacto,0
view,party.party,0,Account,Cuenta,0
+view,party.party,0,Accounting,Contabilidad,0
view,party.party,0,Addresses,Direcciones,0
view,party.party,0,Categories,CategorÃas,0
view,party.party,0,Contact Mechanisms,Mecanismos de contacto,0
+view,party.party,0,General,General,0
view,party.party,0,_General,_General,0
view,party.party,0,Parties,Terceros,0
view,party.party,0,Party,Tercero,0
view,party.party,0,VAT,VAT,0
-view,party.party.type,0,Party Type,Tipo de Tercero,0
-view,party.party.type,0,Party Types,Tipos de Terceros,0
+wizard_button,"party.check_vies,check,end",0,Ok,Aceptar,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,Aceptar,0
diff --git a/es_ES.csv b/es_ES.csv
index e312437..134f2c3 100644
--- a/es_ES.csv
+++ b/es_ES.csv
@@ -1,29 +1,35 @@
type,name,res_id,src,value,fuzzy
-error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección!,0
-error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas!,0
-error,party.contact_mechanism,0,You can not modify the party of an contact mechanism!,No puede modificar el tercero de un mecanismo de contacto!,0
-error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único!,0
-error,party.party,0,Wrong VAT number!,Número de VAT erróneo!,0
+error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección,0
+error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas,0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.","El servicio VIES no está disponible, inténtelo de nuevo más tarde",0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,No puede modificar el tercero de un médio de contacto,0
+error,party.party,0,Invalid VAT number!,,0
+error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único,0
field,"party.address,active",0,Active,Activo,0
field,"party.address,city",0,City,Ciudad,0
field,"party.address,country",0,Country,PaÃs,0
-field,"party.address,full_address",0,unknown,desconocid@,0
-field,"party.address,name",0,Name,Nombre de Contacto,0
+field,"party.address,full_address",0,,,0
+field,"party.address,name",0,Name,Contacto,0
field,"party.address,party",0,Party,Tercero,0
+field,"party.address,rec_name",0,Name,Nombre,0
field,"party.address,sequence",0,Sequence,Secuencia,0
field,"party.address,street",0,Street,Calle,0
field,"party.address,streetbis",0,Street (bis),Calle (bis),0
-field,"party.address,subdivision",0,Subdivision,Subdivisión,0
+field,"party.address,subdivision",0,Subdivision,Provincia,0
field,"party.address,zip",0,Zip,Código postal,0
field,"party.category,active",0,Active,Activo,0
-field,"party.category,childs",0,Childs,Hij at s,0
-field,"party.category,complete_name",0,Name,Nombre,0
+field,"party.category,childs",0,Children,Hijos,0
field,"party.category,name",0,Name,Nombre,0
field,"party.category,parent",0,Parent,Padre,0
+field,"party.category,rec_name",0,Name,Nombre,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,Terceros rechazados,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Terceros aceptados,0
field,"party.contact_mechanism,active",0,Active,Activo,0
field,"party.contact_mechanism,comment",0,Comment,Comentario,0
field,"party.contact_mechanism,email",0,E-Mail,Correo electrónico,0
+field,"party.contact_mechanism,other_value",0,Value,Valor,0
field,"party.contact_mechanism,party",0,Party,Tercero,0
+field,"party.contact_mechanism,rec_name",0,Name,Nombre,0
field,"party.contact_mechanism,sequence",0,Sequence,Secuencia,0
field,"party.contact_mechanism,sip",0,SIP,SIP,0
field,"party.contact_mechanism,skype",0,Skype,Skype,0
@@ -34,49 +40,64 @@ field,"party.party,active",0,Active,Activo,0
field,"party.party,addresses",0,Addresses,Direcciones,0
field,"party.party,categories",0,Categories,CategorÃas,0
field,"party.party,code",0,Code,Código,0
-field,"party.party,code_length",0,Code Length,Longitud del Código,0
-field,"party.party,contact_mechanisms",0,Contact Mechanisms,Mecanismos de contacto,0
+field,"party.party,code_length",0,Code Length,DÃgitos del código,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,Médios de contacto,0
field,"party.party,email",0,E-Mail,Correo electrónico,0
field,"party.party,fax",0,Fax,Fax,0
-field,"party.party,full_name",0,unknown,desconocid@,0
+field,"party.party,full_name",0,,,0
field,"party.party,lang",0,Language,Idioma,0
-field,"party.party,mobile",0,Mobile,Celular,0
+field,"party.party,mobile",0,Mobile,Móvil,0
field,"party.party,name",0,Name,Nombre,0
+field,"party.party-party.category,category",0,Category,CategorÃa,0
+field,"party.party-party.category,party",0,Party,Tercero,0
+field,"party.party-party.category,rec_name",0,Name,Nombre,0
field,"party.party,phone",0,Phone,Teléfono,0
-field,"party.party,vat_code",0,VAT Code,Código de VAT,0
-field,"party.party,vat_country",0,VAT Country,VAT de paÃs,0
-field,"party.party,vat_number",0,VAT Number,Nombre de VAT,0
+field,"party.party,rec_name",0,Name,Nombre,0
+field,"party.party,vat_code",0,VAT Code,NIF,0
+field,"party.party,vat_country",0,VAT Country,PaÃs del NIF,0
+field,"party.party,vat_number",0,VAT Number,NIF,0
field,"party.party,website",0,Website,Sitio Web,0
-help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Al especificar el VAT de paÃs se habilitará la verificación del número de VAT.,0
-help,"party.party,vat_number",0,Value Added Tax number,Número de Impuesto de Valor Agregado,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Al especificar el paÃs del NIF se habilitará la verificación de dicho número.,0
+help,"party.party,vat_number",0,Value Added Tax number,Número de identificación fiscal,0
model,"ir.action,name",act_address_form,Addresses,Direcciones,0
model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
model,"ir.action,name",act_category_form,Categories,CategorÃas,0
model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
+model,"ir.action,name",wizard_check_vies,Check VIES,Comprobar VIES,0
model,"ir.action,name",report_label,La_bels,Etiqueta_s,0
model,"ir.action,name",act_party_form,Parties,Terceros,0
model,"ir.action,name",act_party_form2,Parties,Terceros,0
-model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por CategorÃa,0
+model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por categorÃa,0
+model,"ir.sequence,name",sequence_party,Party,Tercero,0
+model,"ir.sequence.type,name",sequence_type_party,Party,Tercero,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Direcciones,0
model,"ir.ui.menu,name",menu_category_tree,Categories,CategorÃas,0
-model,"ir.ui.menu,name",menu_category_form,Edit Categories,Editar CategorÃas,0
-model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva Dirección,0
-model,"ir.ui.menu,name",menu_category_form2,New category,Nueva CategorÃa,0
-model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo Tercero,0
+model,"ir.ui.menu,name",menu_category_form,Categories,CategorÃas,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Configuración,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva dirección,0
+model,"ir.ui.menu,name",menu_category_form2,New category,Nueva categorÃa,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo tercero,0
model,"ir.ui.menu,name",menu_party_form,Parties,Terceros,0
-model,"ir.ui.menu,name",menu_party,Party Management,Manejo de Relaciones,0
+model,"ir.ui.menu,name",menu_party,Party Management,Gestión de terceros,0
+model,"party.address,name",0,Address,Dirección,0
+model,"party.category,name",0,Category,CategorÃa,0
+model,"party.check_vies.check,name",0,Check VIES - Check,Comprobación VIES - Comprobar,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,Comprobación VIES - No comprobar,0
+model,"party.contact_mechanism,name",0,Contact Mechanism,Médio de contacto,0
+model,"party.party,name",0,Party,Terceros,1
+model,"party.party-party.category,name",0,Party - Category,Tercero - CategorÃa,0
+model,"res.group,name",group_party_admin,Party Administration,Administración de terceros,0
selection,"party.contact_mechanism,type",0,E-Mail,Correo electrónico,0
selection,"party.contact_mechanism,type",0,Fax,Fax,0
-selection,"party.contact_mechanism,type",0,IRC,Chat,0
+selection,"party.contact_mechanism,type",0,IRC,IRC,0
selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
-selection,"party.contact_mechanism,type",0,Mobile,Celular,0
+selection,"party.contact_mechanism,type",0,Mobile,Móvil,0
selection,"party.contact_mechanism,type",0,Other,Otro,0
selection,"party.contact_mechanism,type",0,Phone,Teléfono,0
selection,"party.contact_mechanism,type",0,SIP,SIP,0
selection,"party.contact_mechanism,type",0,Skype,Skype,0
selection,"party.contact_mechanism,type",0,Website,Sitio Web,0
-selection,"party.party,vat_country",0,,,0
selection,"party.party,vat_country",0,AL,AL,0
selection,"party.party,vat_country",0,AT,At,0
selection,"party.party,vat_country",0,BE,BE,0
@@ -112,15 +133,22 @@ selection,"party.party,vat_country",0,UK,UK,0
view,party.address,0,Addresses,Direcciones,0
view,party.category,0,Categories,CategorÃas,0
view,party.category,0,Category,CategorÃa,0
-view,party.contact_mechanism,0,Contact Mechanism,Mecanismo de contacto,0
-view,party.contact_mechanism,0,Contact Mechanisms,Mecanismos de contacto,0
+view,party.check_vies.check,0,Parties Failed,Terceros rechazados,0
+view,party.check_vies.check,0,Parties Succeed,Terceros aceptados,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,Resultado del sistema de intercambio de información de IVA,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,Sistema de intercambio de información de IVA,0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!",Necesita instalar una versión más actualizada de «vatnumber»,0
+view,party.contact_mechanism,0,Contact Mechanism,Médio de contacto,0
+view,party.contact_mechanism,0,Contact Mechanisms,Médio de contacto,0
view,party.party,0,Account,Cuenta,0
+view,party.party,0,Accounting,Contabilidad,0
view,party.party,0,Addresses,Direcciones,0
view,party.party,0,Categories,CategorÃas,0
-view,party.party,0,Contact Mechanisms,Mecanismos de contacto,0
+view,party.party,0,Contact Mechanisms,Médios de contacto,0
+view,party.party,0,General,General,0
view,party.party,0,_General,_General,0
view,party.party,0,Parties,Terceros,0
view,party.party,0,Party,Tercero,0
-view,party.party,0,VAT,VAT,0
-view,party.party.type,0,Party Type,Tipo de Tercero,0
-view,party.party.type,0,Party Types,Tipos de Terceros,0
+view,party.party,0,VAT,IVA,0
+wizard_button,"party.check_vies,check,end",0,Ok,Aceptar,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,Aceptar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index fab4ef5..66b5876 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -1,30 +1,35 @@
type,name,res_id,src,value,fuzzy
error,party.address,0,You can not modify the party of an address!,Vous ne pouvez pas modifier le tiers d'une addresse !,0
error,party.category,0,You can not create recursive categories!,Vous ne pouvez pas créer des catégories récursives !,0
+error,party.check_vies,0,"The VIES service is unavailable, try again later.","Le service VIES n'est pas disponible, veuillez essayer plus tard.",0
error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Vous ne pouvez pas modifiez le tiers d'un moyen de contact.,0
+error,party.party,0,Invalid VAT number!,Numéro TVA non valide !,0
error,party.party,0,The code of the party must be unique!,Le code tu tiers doit être unique,0
-error,party.party,0,Wrong VAT number!,Mauvais numéro de TVA !,0
field,"party.address,active",0,Active,Actif,0
field,"party.address,city",0,City,Ville,0
field,"party.address,country",0,Country,Pays,0
-field,"party.address,full_address",0,unknown,,0
+field,"party.address,full_address",0,,,0
field,"party.address,name",0,Name,Nom,0
field,"party.address,party",0,Party,Tiers,0
+field,"party.address,rec_name",0,Name,Nom,0
field,"party.address,sequence",0,Sequence,Séquence,0
-field,"party.address,state",0,State,Ãtat,0
field,"party.address,street",0,Street,Rue,0
field,"party.address,streetbis",0,Street (bis),Rue (bis),0
field,"party.address,subdivision",0,Subdivision,Subdivision,0
field,"party.address,zip",0,Zip,Code Postal,0
field,"party.category,active",0,Active,Actif,0
-field,"party.category,childs",0,Childs,Enfants,0
-field,"party.category,complete_name",0,Name,Nom,0
+field,"party.category,childs",0,Children,Enfants,0
field,"party.category,name",0,Name,Nom,0
field,"party.category,parent",0,Parent,Parent,0
+field,"party.category,rec_name",0,Name,Nom,0
+field,"party.check_vies.check,parties_failed",0,Parties Failed,Tiers non validés,0
+field,"party.check_vies.check,parties_succeed",0,Parties Succeed,Tiers validés,0
field,"party.contact_mechanism,active",0,Active,Actif,0
field,"party.contact_mechanism,comment",0,Comment,Commentaire,0
field,"party.contact_mechanism,email",0,E-Mail,E-mail,0
-field,"party.contact_mechanism,party",0,Party,Tier,0
+field,"party.contact_mechanism,other_value",0,Value,Valeur,0
+field,"party.contact_mechanism,party",0,Party,Tiers,0
+field,"party.contact_mechanism,rec_name",0,Name,Nom,0
field,"party.contact_mechanism,sequence",0,Sequence,Séquence,0
field,"party.contact_mechanism,sip",0,SIP,SIP,0
field,"party.contact_mechanism,skype",0,Skype,Skype,0
@@ -37,34 +42,52 @@ field,"party.party,categories",0,Categories,Catégories,0
field,"party.party,code",0,Code,Code,0
field,"party.party,code_length",0,Code Length,Longueur du code,0
field,"party.party,contact_mechanisms",0,Contact Mechanisms,Moyens de contact,0
-field,"party.party,full_name",0,unknown,,0
+field,"party.party,email",0,E-Mail,E-Mail,0
+field,"party.party,fax",0,Fax,Fax,0
+field,"party.party,full_name",0,,,0
field,"party.party,lang",0,Language,Langue,0
+field,"party.party,mobile",0,Mobile,Mobile,0
field,"party.party,name",0,Name,Nom,0
-field,"party.party,type",0,Type,Type,0
-field,"party.party.type,name",0,Name,Nom,0
+field,"party.party-party.category,category",0,Category,Catégorie,0
+field,"party.party-party.category,party",0,Party,Tiers,0
+field,"party.party-party.category,rec_name",0,Name,Nom,0
+field,"party.party,phone",0,Phone,Téléphone,0
+field,"party.party,rec_name",0,Name,Nom,0
field,"party.party,vat_code",0,VAT Code,Code TVA,0
field,"party.party,vat_country",0,VAT Country,Code Pays TVA,0
field,"party.party,vat_number",0,VAT Number,Numéro de TVA,0
field,"party.party,website",0,Website,Site web,0
-help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Mettre un code pays TVA activera la vérification du numéro de TVA.,0
+help,"party.party,vat_country",0,Setting VAT country will enable validation of the VAT number.,Ajouter un code pays TVA activera la vérification du numéro de TVA.,0
help,"party.party,vat_number",0,Value Added Tax number,Numéro de taxe sur la valeur ajoutée,0
model,"ir.action,name",act_address_form,Addresses,Adresses,0
model,"ir.action,name",act_address_form2,Addresses,Adresses,0
model,"ir.action,name",act_category_tree,Categories,Catégories,0
model,"ir.action,name",act_category_form,Categories,Catégories,0
model,"ir.action,name",act_category_form2,Categories,Catégories,0
+model,"ir.action,name",wizard_check_vies,Check VIES,Validation VIES,0
model,"ir.action,name",report_label,La_bels,Ã_tiquettes,0
model,"ir.action,name",act_party_form,Parties,Tiers,0
model,"ir.action,name",act_party_form2,Parties,Tiers,0
model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
+model,"ir.sequence,name",sequence_party,Party,Tiers,0
+model,"ir.sequence.type,name",sequence_type_party,Party,Tiers,0
model,"ir.ui.menu,name",menu_address_form,Addresses,Adresses,0
model,"ir.ui.menu,name",menu_category_tree,Categories,Catégories,0
-model,"ir.ui.menu,name",menu_category_form,Edit Categories,Editer les Catégories,0
+model,"ir.ui.menu,name",menu_category_form,Categories,Editer les catégories,0
+model,"ir.ui.menu,name",menu_configuration,Configuration,Configuration,0
model,"ir.ui.menu,name",menu_address_form2,New Address,Nouvelle adresse,0
model,"ir.ui.menu,name",menu_category_form2,New category,Nouvelle catégorie,0
model,"ir.ui.menu,name",menu_party_form2,New Party,Nouveau tiers,0
model,"ir.ui.menu,name",menu_party_form,Parties,Tiers,0
model,"ir.ui.menu,name",menu_party,Party Management,Gestion des relations,0
+model,"party.address,name",0,Address,Adresse,0
+model,"party.category,name",0,Category,Catégorie,0
+model,"party.check_vies.check,name",0,Check VIES - Check,Validation VIES - Validé,0
+model,"party.check_vies.no_check,name",0,Check VIES - No Check,Validation VIES - Non validé,0
+model,"party.contact_mechanism,name",0,Contact Mechanism,Moyen de contact,0
+model,"party.party,name",0,Party,Tiers,0
+model,"party.party-party.category,name",0,Party - Category,Tier - Catégorie,0
+model,"res.group,name",group_party_admin,Party Administration,Administration des tiers,0
selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
selection,"party.contact_mechanism,type",0,Fax,Fax,0
selection,"party.contact_mechanism,type",0,IRC,IRC,0
@@ -79,6 +102,11 @@ selection,"party.party,vat_country",0,,,0
view,party.address,0,Addresses,Adresses,0
view,party.category,0,Categories,Catégories,0
view,party.category,0,Category,Catégorie,0
+view,party.check_vies.check,0,Parties Failed,Tiers non validés,0
+view,party.check_vies.check,0,Parties Succeed,Tiers validés,0
+view,party.check_vies.check,0,VAT Information Exchange System Results,Système d'échange d'information TVA - Résultats,0
+view,party.check_vies.no_check,0,VAT Information Exchange System,Système d'échange d'information TVA,0
+view,party.check_vies.no_check,0,"You must have a recent version of ""vatnumber"" installed!","Vous devez avoir une version récente de ""vatnumber"" installée !",0
view,party.contact_mechanism,0,Contact Mechanism,Moyen de contact,0
view,party.contact_mechanism,0,Contact Mechanisms,Moyens de contact,0
view,party.party,0,Accounting,Comptabilité,0
@@ -91,6 +119,6 @@ view,party.party,0,_General,_Général,0
view,party.party,0,Parties,Tiers,0
view,party.party,0,Party,Tiers,0
view,party.party,0,Properties,Propriétés,0
-view,party.party,0,VAT,,0
-view,party.party.type,0,Party Type,Type de Tiers,0
-view,party.party.type,0,Party Types,Types de Tiers,0
+view,party.party,0,VAT,TVA,0
+wizard_button,"party.check_vies,check,end",0,Ok,Ok,0
+wizard_button,"party.check_vies,no_check,end",0,Ok,Ok,0
diff --git a/label.odt b/label.odt
index 1b43909..154c9e6 100644
Binary files a/label.odt and b/label.odt differ
diff --git a/party.py b/party.py
index 5fc7f98..217f7ae 100644
--- a/party.py
+++ b/party.py
@@ -1,6 +1,7 @@
#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 trytond.osv import fields, OSV
+from trytond.model import ModelView, ModelSQL, fields
+from trytond.wizard import Wizard
import logging
HAS_VATNUMBER = False
@@ -12,14 +13,14 @@ try:
VAT_COUNTRIES.append((country, country))
except ImportError:
logging.getLogger('party').warning(
- 'Unable to import vatnumber. VAT number validation disable.')
+ 'Unable to import vatnumber. VAT number validation disabled.')
STATES = {
'readonly': "active == False",
}
-class Party(OSV):
+class Party(ModelSQL, ModelView):
"Party"
_description = __doc__
_name = "party.party"
@@ -34,17 +35,16 @@ class Party(OSV):
vat_number = fields.Char('VAT Number', help="Value Added Tax number",
states=STATES)
vat_country = fields.Selection(VAT_COUNTRIES, 'VAT Country', states=STATES,
- help="Setting VAT country will enable verification of the VAT number.")
+ help="Setting VAT country will enable validation of the VAT number.",
+ translate=False)
vat_code = fields.Function('get_vat_code', type='char', string="VAT Code",
fnct_search='search_vat_code')
addresses = fields.One2Many('party.address', 'party',
'Addresses', states=STATES)
contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
'Contact Mechanisms', states=STATES)
- categories = fields.Many2Many(
- 'party.category', 'party_category_rel',
- 'party', 'category', 'Categories',
- states=STATES)
+ categories = fields.Many2Many('party.party-party.category',
+ 'party', 'category', 'Categories', states=STATES)
active = fields.Boolean('Active', select=1)
full_name = fields.Function('get_full_name', type='char')
phone = fields.Function('get_mechanism', arg='phone', type='char',
@@ -65,12 +65,12 @@ class Party(OSV):
'The code of the party must be unique!')
]
self._constraints += [
- ('check_vat', 'wrong_vat'),
+ ('check_vat', 'invalid_vat'),
]
self._error_messages.update({
- 'wrong_vat': 'Wrong VAT number!',
+ 'invalid_vat': 'Invalid VAT number!',
})
- self._order.insert(0, ('name', 'DESC'))
+ self._order.insert(0, ('name', 'ASC'))
def default_active(self, cursor, user, context=None):
return True
@@ -94,7 +94,9 @@ class Party(OSV):
while i < len(args):
value = args[i][2]
for country, _ in VAT_COUNTRIES:
- if value.startswith(country) and country:
+ if isinstance(value, basestring) \
+ and country \
+ and value.upper().startswith(country):
args2.append(('vat_country', '=', country))
value = value[len(country):]
break
@@ -119,13 +121,14 @@ class Party(OSV):
for mechanism in party.contact_mechanisms:
if mechanism.type == arg:
res[party.id] = mechanism.value
+ break
return res
def create(self, cursor, user, values, context=None):
values = values.copy()
if not values.get('code'):
values['code'] = self.pool.get('ir.sequence').get(
- cursor, user, 'party.party')
+ cursor, user, 'party.party', context=context)
values['code_length'] = len(values['code'])
return super(Party, self).create(cursor, user, values, context=context)
@@ -135,24 +138,45 @@ class Party(OSV):
vals['code_length'] = len(vals['code'])
return super(Party, self).write(cursor, user, ids, vals, context=context)
- def copy(self, cursor, user, object_id, default=None, context=None):
+ def copy(self, cursor, user, ids, default=None, context=None):
+ address_obj = self.pool.get('party.address')
+
+ int_id = False
+ if isinstance(ids, (int, long)):
+ int_id = True
+ ids = [ids]
+
if default is None:
default = {}
default = default.copy()
default['code'] = False
- return super(Party, self).copy(cursor, user, object_id, default=default,
- context=context)
-
- def name_search(self, cursor, user, name, args=None, operator='ilike',
- context=None, limit=None):
- if not args:
- args = []
- ids = self.search(cursor, user, [('code', '=', name)] + args,
- limit=limit, context=context)
- if ids:
- return self.name_get(cursor, user, ids, context=context)
- return super(Party, self).name_search(cursor, user, name,
- args=args, operator=operator, context=context, limit=limit)
+ default['addresses'] = False
+ new_ids = []
+ for party in self.browse(cursor, user, ids, context=context):
+ new_id = super(Party, self).copy(cursor, user, party.id,
+ default=default, context=context)
+ address_obj.copy(cursor, user, [x.id for x in party.addresses],
+ default={
+ 'party': new_id,
+ }, context=context)
+ new_ids.append(new_id)
+
+ if int_id:
+ return new_ids[0]
+ return new_ids
+
+ def search_rec_name(self, cursor, user, name, args, context=None):
+ args2 = []
+ i = 0
+ while i < len(args):
+ ids = self.search(cursor, user, [('code', '=', args[i][2])],
+ context=context)
+ if ids:
+ args2.append(('id', 'in', ids))
+ else:
+ args2.append(('name', args[i][1], args[i][2]))
+ i += 1
+ return args2
def address_get(self, cursor, user, party_id, type=None, context=None):
"""
@@ -201,3 +225,116 @@ class Party(OSV):
return True
Party()
+
+
+class PartyCategory(ModelSQL):
+ 'Party - Category'
+ _name = 'party.party-party.category'
+ _table = 'party_category_rel'
+ _description = __doc__
+ party = fields.Many2One('party.party', 'Party', ondelete='CASCADE',
+ required=True, select=1)
+ category = fields.Many2One('party.category', 'Category', ondelete='CASCADE',
+ required=True, select=1)
+
+PartyCategory()
+
+
+class CheckVIESNoCheck(ModelView):
+ 'Check VIES - No Check'
+ _name = 'party.check_vies.no_check'
+ _description = __doc__
+
+CheckVIESNoCheck()
+
+
+class CheckVIESCheck(ModelView):
+ 'Check VIES - Check'
+ _name = 'party.check_vies.check'
+ _description = __doc__
+ parties_succeed = fields.Many2Many('party.party', None, None,
+ 'Parties Succeed', readonly=True, states={
+ 'invisible': "not bool(parties_succeed)",
+ })
+ parties_failed = fields.Many2Many('party.party', None, None,
+ 'Parties Failed', readonly=True, states={
+ 'invisible': "not bool(parties_failed)",
+ })
+
+CheckVIESCheck()
+
+
+class CheckVIES(Wizard):
+ 'Check VIES'
+ _name = 'party.check_vies'
+ states = {
+ 'init': {
+ 'result': {
+ 'type': 'choice',
+ 'next_state': '_choice',
+ },
+ },
+ 'no_check': {
+ 'result': {
+ 'type': 'form',
+ 'object': 'party.check_vies.no_check',
+ 'state': [
+ ('end', 'Ok', 'tryton-ok', True),
+ ],
+ },
+ },
+ 'check': {
+ 'actions': ['_check'],
+ 'result': {
+ 'type': 'form',
+ 'object': 'party.check_vies.check',
+ 'state': [
+ ('end', 'Ok', 'tryton-ok', True),
+ ],
+ },
+ },
+ }
+
+ def __init__(self):
+ super(CheckVIES, self).__init__()
+ self._error_messages.update({
+ 'vies_unavailable': 'The VIES service is unavailable, ' \
+ 'try again later.',
+ })
+
+ def _choice(self, cursor, user, data, context=None):
+ if not HAS_VATNUMBER or not hasattr(vatnumber, 'check_vies'):
+ return 'no_check'
+ return 'check'
+
+ def _check(self, cursor, user, data, context=None):
+ party_obj = self.pool.get('party.party')
+ res = {
+ 'parties_succeed': [],
+ 'parties_failed': [],
+ }
+ parties = party_obj.browse(cursor, user, data['ids'], context=context)
+ for party in parties:
+ if not party.vat_code:
+ continue
+ try:
+ if not vatnumber.check_vies(party.vat_code):
+ res['parties_failed'].append(party.id)
+ else:
+ res['parties_succeed'].append(party.id)
+ except Exception, e:
+ if hasattr(e, 'faultstring') \
+ and hasattr(e.faultstring, 'find'):
+ if e.faultstring.find('INVALID_INPUT'):
+ res['parties_failed'].append(party.id)
+ continue
+ if e.faultstring.find('SERVICE_UNAVAILABLE') \
+ or e.faultstring.find('MS_UNAVAILABLE') \
+ or e.faultstring.find('TIMEOUT') \
+ or e.faultstring.find('SERVER_BUSY'):
+ self.raise_user_error(cursor, 'vies_unavailable',
+ context=context)
+ raise e
+ return res
+
+CheckVIES()
diff --git a/party.xml b/party.xml
index d858ccb..43dca30 100644
--- a/party.xml
+++ b/party.xml
@@ -13,6 +13,10 @@ this repository contains the full copyright notices and license terms. -->
<menuitem name="Party Management" sequence="0" id="menu_party"
icon="tryton-users"/>
+ <menuitem name="Configuration" parent="menu_party"
+ id="menu_configuration" groups="group_party_admin"
+ sequence="0" icon="tryton-preferences"/>
+
<record model="ir.ui.view" id="party_view_tree">
<field name="model">party.party</field>
<field name="type">tree</field>
@@ -23,9 +27,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="name" select="1"/>
<field name="lang" select="2"/>
<field name="vat_code" select="1"/>
- <field name="active" select="2" tree_invisible="1"/>
- <field name="vat_country" select="2" tree_invisible="1"/>
- <field name="vat_number" select="2" tree_invisible="1"/>
</tree>
]]>
</field>
@@ -43,11 +44,10 @@ this repository contains the full copyright notices and license terms. -->
<label name="active"/>
<field name="active" xexpand="0" width="100"/>
<notebook colspan="6">
- <page string="_General">
+ <page string="General" id="general">
<field name="addresses" mode="form,tree" colspan="4">
<tree string="Addresses" sequence="sequence"
fill="1">
- <field name="sequence" tree_invisible="1"/>
<field name="name"/>
<field name="street"/>
<field name="streetbis"/>
@@ -57,26 +57,25 @@ this repository contains the full copyright notices and license terms. -->
<field name="subdivision"/>
</tree>
</field>
- <group col="2" colspan="4">
+ <group col="2" colspan="4" id="lang">
<label name="lang"/>
<field name="lang" widget="selection"/>
</group>
<field name="contact_mechanisms" colspan="2">
<tree string="Contact Mechanisms" sequence="sequence"
fill="1">
- <field name="sequence" tree_invisible="1"/>
<field name="type"/>
<field name="value"/>
<field name="comment"/>
</tree>
</field>
- <group col="1" colspan="2">
- <separator string="Categories"/>
+ <group col="1" colspan="2" id="categories">
+ <separator string="Categories" id="categories"/>
<field name="categories"/>
</group>
</page>
- <page string="_Accounting">
- <separator string="VAT" colspan="4"/>
+ <page string="Accounting" id="accounting">
+ <separator string="VAT" colspan="4" id="vat"/>
<label name="vat_country"/>
<field name="vat_country"/>
<label name="vat_number"/>
@@ -153,5 +152,56 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">Party</field>
<field name="code">party.party</field>
</record>
+
+ <record model="ir.action.wizard" id="wizard_check_vies">
+ <field name="name">Check VIES</field>
+ <field name="wiz_name">party.check_vies</field>
+ <field name="model">party.party</field>
+ </record>
+ <record model="ir.action.keyword" id="check_vies_keyword">
+ <field name="keyword">form_action</field>
+ <field name="model">party.party,0</field>
+ <field name="action" ref="wizard_check_vies"/>
+ </record>
+
+ <record model="ir.ui.view" id="check_vies_no_check">
+ <field name="model">party.check_vies.no_check</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="VAT Information Exchange System">
+ <label string="You must have a recent version of "vatnumber" installed!" id="vatnumber"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="check_vies_check">
+ <field name="model">party.check_vies.check</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="VAT Information Exchange System Results" col="1">
+ <separator name="parties_succeed"/>
+ <field name="parties_succeed">
+ <tree string="Parties Succeed" fill="1">
+ <field name="code"/>
+ <field name="name"/>
+ <field name="vat_code"/>
+ </tree>
+ </field>
+ <separator name="parties_failed"/>
+ <field name="parties_failed">
+ <tree string="Parties Failed" fill="1">
+ <field name="code"/>
+ <field name="name"/>
+ <field name="vat_code"/>
+ </tree>
+ </field>
+ </form>
+ ]]>
+ </field>
+ </record>
+
</data>
</tryton>
diff --git a/tests/test_party.py b/tests/test_party.py
index 6912d07..0b68c8d 100644
--- a/tests/test_party.py
+++ b/tests/test_party.py
@@ -9,8 +9,8 @@ if os.path.isdir(DIR):
sys.path.insert(0, os.path.dirname(DIR))
import unittest
-import trytond.tests
-from trytond.tests import RPCProxy, CONTEXT, SOCK
+import trytond.tests.test_tryton
+from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK
class PartyTestCase(unittest.TestCase):
@@ -19,7 +19,7 @@ class PartyTestCase(unittest.TestCase):
'''
def setUp(self):
- trytond.tests.install_module('party')
+ trytond.tests.test_tryton.install_module('party')
self.category = RPCProxy('party.category')
self.party = RPCProxy('party.party')
self.address = RPCProxy('party.address')
@@ -99,7 +99,7 @@ def suite():
return unittest.TestLoader().loadTestsFromTestCase(PartyTestCase)
if __name__ == '__main__':
- suiteTrytond = trytond.tests.suite()
+ suiteTrytond = trytond.tests.test_tryton.suite()
suiteParty = suite()
alltests = unittest.TestSuite([suiteTrytond, suiteParty])
unittest.TextTestRunner(verbosity=2).run(alltests)
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index 8034c03..4d7d7ba 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.0.2
+Version: 1.2.0
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.0/
+Download-URL: http://downloads.tryton.org/1.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 6b56dac..00372d1 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -8,6 +8,7 @@ address.xml
category.xml
contact_mechanism.xml
de_DE.csv
+es_CO.csv
es_ES.csv
fr_FR.csv
label.odt
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
index b9524f8..94fd517 100644
--- a/trytond_party.egg-info/requires.txt
+++ b/trytond_party.egg-info/requires.txt
@@ -1,6 +1,6 @@
trytond_country
-trytond >= 1.0
-trytond < 1.1
+trytond >= 1.2
+trytond < 1.3
[VAT]
vatnumber
\ No newline at end of file
commit a0ed6b31d88b5ebfb2c0f888ac9ba5204a114c9d
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Mar 23 07:07:55 2009 +0100
Adding upstream version 1.0.2.
diff --git a/CHANGELOG b/CHANGELOG
index 0e6e3da..4b867f8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.0.2 - 2009-01-06
+* Some bug fixes (see mercurial logs for details)
+
Version 1.0.1 - 2008-12-01
* Add default categories on party with context
* Allow egg installation
diff --git a/PKG-INFO b/PKG-INFO
index 49c7632..280d889 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.0.1
+Version: 1.0.2
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/__tryton__.py b/__tryton__.py
index 78152fd..f8ff817 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
'name_fr_FR': 'Tiers',
'name_de_DE': 'Kontakte',
'name_es_ES': 'Terceros',
- 'version' : '1.0.1',
+ 'version' : '1.0.2',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/party.py b/party.py
index 9b8f516..5fc7f98 100644
--- a/party.py
+++ b/party.py
@@ -35,7 +35,8 @@ class Party(OSV):
states=STATES)
vat_country = fields.Selection(VAT_COUNTRIES, 'VAT Country', states=STATES,
help="Setting VAT country will enable verification of the VAT number.")
- vat_code = fields.Function('get_vat_code', type='char', string="VAT Code")
+ vat_code = fields.Function('get_vat_code', type='char', string="VAT Code",
+ fnct_search='search_vat_code')
addresses = fields.One2Many('party.address', 'party',
'Addresses', states=STATES)
contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
@@ -87,6 +88,20 @@ class Party(OSV):
res[party.id] = (party.vat_country or '') + (party.vat_number or '')
return res
+ def search_vat_code(self, cursor, user, name, args, context=None):
+ args2 = []
+ i = 0
+ while i < len(args):
+ value = args[i][2]
+ for country, _ in VAT_COUNTRIES:
+ if value.startswith(country) and country:
+ args2.append(('vat_country', '=', country))
+ value = value[len(country):]
+ break
+ args2.append(('vat_number', args[i][1], value))
+ i += 1
+ return args2
+
def get_full_name(self, cursor, user, ids, name, arg, context=None):
if not ids:
return []
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index bd4feda..8034c03 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.0.1
+Version: 1.0.2
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
commit 3a0b23290a31ecf1e8fef180a0d59c665a1c8073
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Jan 28 14:13:19 2009 +0100
Adding upstream version 1.0.1.
diff --git a/CHANGELOG b/CHANGELOG
index eacaaef..0e6e3da 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,2 +1,6 @@
+Version 1.0.1 - 2008-12-01
+* Add default categories on party with context
+* Allow egg installation
+
Version 1.0.0 - 2008-11-17
* Initial release
diff --git a/PKG-INFO b/PKG-INFO
index 377fe88..49c7632 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,11 +1,12 @@
Metadata-Version: 1.0
Name: trytond_party
-Version: 1.0.0
+Version: 1.0.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
+Download-URL: http://downloads.tryton.org/1.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index 53a588e..78152fd 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
'name_fr_FR': 'Tiers',
'name_de_DE': 'Kontakte',
'name_es_ES': 'Terceros',
- 'version' : '1.0.0',
+ 'version' : '1.0.1',
'author' : 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/contact_mechanism.py b/contact_mechanism.py
index 05e0464..3a1105c 100644
--- a/contact_mechanism.py
+++ b/contact_mechanism.py
@@ -31,7 +31,7 @@ class ContactMechanism(OSV):
sort=False)
value = fields.Char('Value', select=1,
states={
- 'invisible': "type in ('email', 'website')",
+ 'invisible': "type in ('email', 'website', 'skype', 'sip')",
'required': "type not in ('email', 'website')",
'readonly': "active == False",
}, on_change=['value'])
diff --git a/party.py b/party.py
index da7a4e6..9b8f516 100644
--- a/party.py
+++ b/party.py
@@ -74,6 +74,11 @@ class Party(OSV):
def default_active(self, cursor, user, context=None):
return True
+ def default_categories(self, cursor, user, context=None):
+ if context is None:
+ context = {}
+ return context.get('categories', [])
+
def get_vat_code(self, cursor, user, ids, name, arg, context=None):
if not ids:
return []
diff --git a/party.xml b/party.xml
index 8d4777a..d858ccb 100644
--- a/party.xml
+++ b/party.xml
@@ -125,6 +125,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">Parties by Category</field>
<field name="res_model">party.party</field>
<field name="view_type">form</field>
+ <field name="context">{'categories': [active_id]}</field>
<field name="domain">[('categories', 'child_of', [active_id], 'parent')]</field>
</record>
<record model="ir.action.keyword" id="act_party_by_category_keyword1">
diff --git a/setup.py b/setup.py
index 59c5d4a..55e4065 100644
--- a/setup.py
+++ b/setup.py
@@ -27,6 +27,8 @@ setup(name='trytond_party',
author=info.get('author', ''),
author_email=info.get('email', ''),
url=info.get('website', ''),
+ download_url="http://downloads.tryton.org/" + \
+ info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
package_dir={'trytond.modules.party': '.'},
packages=[
'trytond.modules.party',
@@ -57,4 +59,9 @@ setup(name='trytond_party',
extras_require={
'VAT': ['vatnumber'],
},
+ zip_safe=False,
+ entry_points="""
+ [trytond.modules]
+ party = trytond.modules.party
+ """,
)
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
index c2800db..bd4feda 100644
--- a/trytond_party.egg-info/PKG-INFO
+++ b/trytond_party.egg-info/PKG-INFO
@@ -1,11 +1,12 @@
Metadata-Version: 1.0
Name: trytond-party
-Version: 1.0.0
+Version: 1.0.1
Summary: Define parties, addresses and co.
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
+Download-URL: http://downloads.tryton.org/1.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
index 9802c27..6b56dac 100644
--- a/trytond_party.egg-info/SOURCES.txt
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -24,5 +24,7 @@ tests/test_party.py
trytond_party.egg-info/PKG-INFO
trytond_party.egg-info/SOURCES.txt
trytond_party.egg-info/dependency_links.txt
+trytond_party.egg-info/entry_points.txt
+trytond_party.egg-info/not-zip-safe
trytond_party.egg-info/requires.txt
trytond_party.egg-info/top_level.txt
\ No newline at end of file
diff --git a/trytond_party.egg-info/entry_points.txt b/trytond_party.egg-info/entry_points.txt
new file mode 100644
index 0000000..3c1012d
--- /dev/null
+++ b/trytond_party.egg-info/entry_points.txt
@@ -0,0 +1,4 @@
+
+ [trytond.modules]
+ party = trytond.modules.party
+
\ No newline at end of file
diff --git a/trytond_party.egg-info/not-zip-safe b/trytond_party.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trytond_party.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
commit ac3805f70be546010f7f3176efdf8a022abaa86c
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Nov 18 13:05:55 2008 +0100
Adding upstream version 1.0.0.
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..eacaaef
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,2 @@
+Version 1.0.0 - 2008-11-17
+* Initial release
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000..d622f06
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,20 @@
+Copyright (C) 2004-2008 Tiny SPRL.
+Copyright (C) 2008 Cédric Krier.
+Copyright (C) 2008 Bertrand Chenal.
+Copyright (C) 2008 B2CK SPRL.
+Copyright (C) 2008 Udo Spallek.
+Copyright (C) 2008 Korbinian Preisler.
+Copyright (C) 2008 virtual things.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..e35ca37
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,31 @@
+Installing trytond_party
+========================
+
+Prerequisites
+-------------
+
+ * Python 2.4 or later (http://www.python.org/)
+ * trytond 0.0.x (http://www.tryton.org/)
+ * trytond_country (http://www.tryton.org/)
+ * Optional: vatnumber (http://code.google.com/p/vatnumber/)
+
+Installation
+------------
+
+Once you've downloaded and unpacked a trytond_party source release, enter the
+directory where the archive was unpacked, and run:
+
+ python setup.py install
+
+Note that you may need administrator/root privileges for this step, as
+this command will by default attempt to install module to the Python
+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://docs.python.org/inst/inst.html
+
+To use without installation, extract the archive into ``trytond/modules`` with
+the directory name party.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..c61b52d
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,10 @@
+include INSTALL
+include README
+include TODO
+include COPYRIGHT
+include CHANGELOG
+include LICENSE
+include *.xml
+include *.odt
+include *.csv
+include tests/*
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..377fe88
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,24 @@
+Metadata-Version: 1.0
+Name: trytond_party
+Version: 1.0.0
+Summary: Define parties, addresses and co.
+Home-page: http://www.tryton.org/
+Author: B2CK
+Author-email: info at b2ck.com
+License: GPL-3
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Plugins
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Financial and Insurance Industry
+Classifier: Intended Audience :: Legal Industry
+Classifier: Intended Audience :: Manufacturing
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: English
+Classifier: Natural Language :: French
+Classifier: Natural Language :: German
+Classifier: Natural Language :: Spanish
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Office/Business
diff --git a/README b/README
new file mode 100644
index 0000000..2e6a715
--- /dev/null
+++ b/README
@@ -0,0 +1,36 @@
+trytond_party
+=============
+
+The party module of the Tryton application platform.
+See __tryton__.py
+
+Installing
+----------
+
+See INSTALL
+
+Support
+-------
+
+If you encounter any problems with Tryton, please don't hesitate to ask
+questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+ http://bugs.tryton.org/
+ http://groups.tryton.org/
+ http://wiki.tryton.org/
+ irc://irc.freenode.net/tryton
+
+License
+-------
+
+See LICENSE
+
+Copyright
+---------
+
+See COPYRIGHT
+
+
+For more information please visit the Tryton web site:
+
+ http://www.tryton.org/
diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..e4fd59e
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1,7 @@
+#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 category import *
+from party import *
+from address import *
+from contact_mechanism import *
diff --git a/__tryton__.py b/__tryton__.py
new file mode 100644
index 0000000..53a588e
--- /dev/null
+++ b/__tryton__.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+#This file is part of Tryton. The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+{
+ 'name' : 'Party',
+ 'name_fr_FR': 'Tiers',
+ 'name_de_DE': 'Kontakte',
+ 'name_es_ES': 'Terceros',
+ 'version' : '1.0.0',
+ 'author' : 'B2CK',
+ 'email': 'info at b2ck.com',
+ 'website': 'http://www.tryton.org/',
+ 'description': 'Define parties, addresses and co.',
+ 'description_fr_FR': 'Définit des tiers, des adresses, etc.',
+ 'description_de_DE': 'Ermöglicht die Erstellung von Kontakten, Adressen, etc.',
+ 'description_es_ES': 'Definición de terceros, direcciones, etc.',
+ 'depends' : [
+ 'ir',
+ 'res',
+ 'country',
+ ],
+ 'xml' : [
+ 'party.xml',
+ 'category.xml',
+ 'address.xml',
+ 'contact_mechanism.xml',
+ ],
+ 'translation': [
+ 'fr_FR.csv',
+ 'de_DE.csv',
+ 'es_ES.csv',
+ ],
+}
diff --git a/address.py b/address.py
new file mode 100644
index 0000000..8e42a93
--- /dev/null
+++ b/address.py
@@ -0,0 +1,117 @@
+#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 trytond.osv import fields, OSV
+
+STATES = {
+ 'readonly': "active == False",
+}
+
+
+class Address(OSV):
+ "Address"
+ _name = 'party.address'
+ _description = __doc__
+ party = fields.Many2One('party.party', 'Party', required=True,
+ ondelete='cascade', select=1, states=STATES)
+ name = fields.Char('Name', states=STATES)
+ street = fields.Char('Street', states=STATES)
+ streetbis = fields.Char('Street (bis)', states=STATES)
+ zip = fields.Char('Zip', change_default=True,
+ states=STATES)
+ city = fields.Char('City', states=STATES)
+ country = fields.Many2One('country.country', 'Country',
+ states=STATES)
+ subdivision = fields.Many2One("country.subdivision",
+ 'Subdivision', domain="[('country', '=', country)]", states=STATES)
+ active = fields.Boolean('Active')
+ sequence = fields.Integer("Sequence")
+ full_address = fields.Function('get_full_address', type='text')
+
+ def __init__(self):
+ super(Address, self).__init__()
+ self._order.insert(0, ('party', 'ASC'))
+ self._order.insert(1, ('sequence', 'ASC'))
+ self._error_messages.update({
+ 'write_party': 'You can not modify the party of an address!',
+ })
+
+ def default_active(self, cursor, user, context=None):
+ return True
+
+ def get_full_address(self, cursor, user, ids, name, arg, context=None):
+ if not ids:
+ return []
+ res = {}
+ for address in self.browse(cursor, user, ids, context=context):
+ res[address.id] = ''
+ if address.name:
+ res[address.id] += address.name
+ if address.street:
+ if res[address.id]:
+ res[address.id] += '\n'
+ res[address.id] += address.street
+ if address.streetbis:
+ if res[address.id]:
+ res[address.id] += '\n'
+ res[address.id] += address.streetbis
+ if address.zip or address.city:
+ if res[address.id]:
+ res[address.id] += '\n'
+ if address.zip:
+ res[address.id] += address.zip
+ if address.city:
+ if res[address.id][-1:] != '\n':
+ res[address.id] += ' '
+ res[address.id] += address.city
+ if address.country or address.subdivision:
+ if res[address.id]:
+ res[address.id] += '\n'
+ if address.subdivision:
+ res[address.id] += address.subdivision.name
+ if address.country:
+ if res[address.id][-1:] != '\n':
+ res[address.id] += ' '
+ res[address.id] += address.country.name
+ return res
+
+ def name_get(self, cursor, user, ids, context=None):
+ if not ids:
+ return []
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ res = []
+ for address in self.browse(cursor, user, ids, context=context):
+ res.append((address.id, ", ".join(x for x in [address.name,
+ address.party.name, address.zip, address.city] if x)))
+ return res
+
+ def name_search(self, cursor, user, name, args=None, operator='ilike',
+ context=None, limit=None):
+ if not args:
+ args=[]
+
+ ids = self.search(cursor, user, [('zip', '=', name)] + args,
+ limit=limit, context=context)
+ if not ids:
+ ids = self.search(cursor, user, [('city', operator, name)] + args,
+ limit=limit, context=context)
+ if name:
+ ids += self.search(cursor, user, [('name', operator, name)] + args,
+ limit=limit, context=context)
+ ids += self.search(cursor, user, [('party', operator, name)] + args,
+ limit=limit, context=context)
+ return self.name_get(cursor, user, ids, context=context)
+
+ def write(self, cursor, user, ids, vals, context=None):
+ if 'party' in vals:
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ for address in self.browse(cursor, user, ids, context=context):
+ if address.party.id != vals['party']:
+ self.raise_user_error(cursor, 'write_party',
+ context=context)
+ return super(Address, self).write(cursor, user, ids, vals,
+ context=context)
+
+Address()
diff --git a/address.xml b/address.xml
new file mode 100644
index 0000000..4d66c01
--- /dev/null
+++ b/address.xml
@@ -0,0 +1,97 @@
+<?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. -->
+<tryton>
+ <data>
+ <record model="ir.ui.view" id="address_view_tree">
+ <field name="model">party.address</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Addresses">
+ <field name="party" select="1"/>
+ <field name="name" select="1"/>
+ <field name="street" select="2"/>
+ <field name="streetbis" select="2"/>
+ <field name="zip" select="2"/>
+ <field name="city" select="2"/>
+ <field name="country" select="1"/>
+ <field name="subdivision" select="2"/>
+ <field name="active" select="2" tree_invisible="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="address_view_form">
+ <field name="model">party.address</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Addresses" col="6">
+ <label name="party"/>
+ <field name="party" colspan="5"/>
+ <label name="name"/>
+ <field name="name"/>
+ <group colspan="2" col="20">
+ <label name="active"/>
+ <field name="active"
+ xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ </group>
+ <newline/>
+ <label name="street"/>
+ <field name="street"/>
+ <label name="streetbis"/>
+ <field name="streetbis"/>
+ <newline/>
+ <label name="zip"/>
+ <field name="zip"/>
+ <label name="city"/>
+ <field name="city"/>
+ <newline/>
+ <label name="country"/>
+ <field name="country" completion="1"/>
+ <label name="subdivision"/>
+ <field name="subdivision"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.action.act_window" id="act_address_form">
+ <field name="name">Addresses</field>
+ <field name="res_model">party.address</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_address_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="address_view_tree"/>
+ <field name="act_window" ref="act_address_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_address_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="address_view_form"/>
+ <field name="act_window" ref="act_address_form"/>
+ </record>
+ <menuitem name="Addresses" parent="menu_party"
+ sequence="2" action="act_address_form"
+ id="menu_address_form"/>
+ <record model="ir.action.act_window" id="act_address_form2">
+ <field name="name">Addresses</field>
+ <field name="res_model">party.address</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_address_form2_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="address_view_form"/>
+ <field name="act_window" ref="act_address_form2"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_address_form2_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="address_view_tree"/>
+ <field name="act_window" ref="act_address_form2"/>
+ </record>
+ <menuitem name="New Address" parent="menu_address_form"
+ action="act_address_form2"
+ id="menu_address_form2"/>
+ </data>
+</tryton>
diff --git a/category.py b/category.py
new file mode 100644
index 0000000..81e7fdd
--- /dev/null
+++ b/category.py
@@ -0,0 +1,54 @@
+#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 trytond.osv import fields, OSV
+
+STATES = {
+ 'readonly': "active == False",
+}
+
+
+class Category(OSV):
+ "Category"
+ _name = "party.category"
+ _description = __doc__
+ name = fields.Char('Name', required=True, states=STATES)
+ parent = fields.Many2One('party.category', 'Parent',
+ select=1, states=STATES)
+ complete_name = fields.Function('get_complete_name',
+ type="char", string='Name', states=STATES)
+ childs = fields.One2Many('party.category', 'parent',
+ 'Childs', states=STATES)
+ active = fields.Boolean('Active')
+
+ def __init__(self):
+ super(Category, self).__init__()
+ self._constraints += [
+ ('check_recursion', 'recursive_categories'),
+ ]
+ self._error_messages.update({
+ 'recursive_categories': 'You can not create recursive categories!',
+ })
+ self._order.insert(1, ('name', 'ASC'))
+
+ def default_active(self, cursor, user, context=None):
+ return 1
+
+ def get_complete_name(self, cursor, user, ids, name, arg,
+ context=None):
+ res = self.name_get(cursor, user, ids, context)
+ return dict(res)
+
+ def name_get(self, cursor, user, ids, context=None):
+ if not ids:
+ return []
+ categories = self.browse(cursor, user, ids, context=context)
+ res = []
+ for category in categories:
+ if category.parent:
+ name = category.parent.name+' / '+ category.name
+ else:
+ name = category.name
+ res.append((category.id, name))
+ return res
+
+Category()
diff --git a/category.xml b/category.xml
new file mode 100644
index 0000000..77e5c40
--- /dev/null
+++ b/category.xml
@@ -0,0 +1,100 @@
+<?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. -->
+<tryton>
+ <data>
+ <record model="ir.ui.view" id="category_view_form">
+ <field name="model">party.category</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Category">
+ <label name="name"/>
+ <field name="name"/>
+ <label name="active"/>
+ <field name="active"/>
+ <label name="parent"/>
+ <field name="parent"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="category_view_tree">
+ <field name="model">party.category</field>
+ <field name="type">tree</field>
+ <field name="field_childs">childs</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Categories" fill="1">
+ <field name="name" select="1"/>
+ <field name="active" select="2" tree_invisible="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.action.act_window" id="act_category_tree">
+ <field name="name">Categories</field>
+ <field name="res_model">party.category</field>
+ <field name="view_type">tree</field>
+ <field name="domain">[('parent', '=', False)]</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_category_tree_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="category_view_tree"/>
+ <field name="act_window" ref="act_category_tree"/>
+ </record>
+ <menuitem parent="menu_party" sequence="3"
+ action="act_category_tree" id="menu_category_tree"/>
+ <record model="ir.action.act_window" id="act_category_form">
+ <field name="name">Categories</field>
+ <field name="res_model">party.category</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_category_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="category_view_tree"/>
+ <field name="act_window" ref="act_category_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_category_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="category_view_form"/>
+ <field name="act_window" ref="act_category_form"/>
+ </record>
+ <menuitem name="Edit Categories" parent="menu_category_tree"
+ action="act_category_form" id="menu_category_form"/>
+ <record model="ir.action.act_window" id="act_category_form2">
+ <field name="name">Categories</field>
+ <field name="res_model">party.category</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_category_form2_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="category_view_form"/>
+ <field name="act_window" ref="act_category_form2"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_category_form2_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="category_view_tree"/>
+ <field name="act_window" ref="act_category_form2"/>
+ </record>
+ <menuitem name="New category" parent="menu_category_tree"
+ action="act_category_form2" id="menu_category_form2"/>
+
+ <record model="ir.model.access" id="access_party_category">
+ <field name="model" search="[('model', '=', 'party.category')]"/>
+ <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_party_category_admin">
+ <field name="model" search="[('model', '=', 'party.category')]"/>
+ <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>
+</tryton>
diff --git a/contact_mechanism.py b/contact_mechanism.py
new file mode 100644
index 0000000..05e0464
--- /dev/null
+++ b/contact_mechanism.py
@@ -0,0 +1,137 @@
+#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 trytond.osv import OSV, fields
+
+STATES = {
+ 'readonly': "active == False",
+}
+
+_TYPES = [
+ ('phone', 'Phone'),
+ ('mobile', 'Mobile'),
+ ('fax', 'Fax'),
+ ('email', 'E-Mail'),
+ ('website', 'Website'),
+ ('skype', 'Skype'),
+ ('sip', 'SIP'),
+ ('irc', 'IRC'),
+ ('jabber', 'Jabber'),
+ ('other', 'Other'),
+]
+
+
+class ContactMechanism(OSV):
+ "Contact Mechanism"
+ _name = "party.contact_mechanism"
+ _description = __doc__
+ _rec_name = 'value'
+
+ type = fields.Selection(_TYPES, 'Type', required=True, states=STATES,
+ sort=False)
+ value = fields.Char('Value', select=1,
+ states={
+ 'invisible': "type in ('email', 'website')",
+ 'required': "type not in ('email', 'website')",
+ 'readonly': "active == False",
+ }, on_change=['value'])
+ comment = fields.Text('Comment', states=STATES)
+ party = fields.Many2One('party.party', 'Party', required=True,
+ ondelete='CASCADE', states=STATES, select=1)
+ active = fields.Boolean('Active', select=1)
+ sequence = fields.Integer('Sequence')
+ email = fields.Function('get_value', fnct_inv='set_value', type='char',
+ string="E-Mail", states={
+ 'invisible': "type != 'email'",
+ 'required': "type == 'email'",
+ 'readonly': "active == False",
+ }, on_change=['email'])
+ website = fields.Function('get_value', fnct_inv='set_value', type='char',
+ string="Website", states={
+ 'invisible': "type != 'website'",
+ 'required': "type == 'website'",
+ 'readonly': "active == False",
+ }, on_change=['website'])
+ skype = fields.Function('get_value', fnct_inv='set_value', type='char',
+ string="Skype", states={
+ 'invisible': "type != 'skype'",
+ 'required': "type == 'skype'",
+ 'readonly': "active == False",
+ }, on_change=['skype'])
+ sip = fields.Function('get_value', fnct_inv='set_value', type='char',
+ string="SIP", states={
+ 'invisible': "type != 'sip'",
+ 'required': "type == 'sip'",
+ 'readonly': "active == False",
+ }, on_change=['sip'])
+
+ def __init__(self):
+ super(ContactMechanism, self).__init__()
+ self._order.insert(0, ('party', 'ASC'))
+ self._order.insert(1, ('sequence', 'ASC'))
+ self._error_messages.update({
+ 'write_party': 'You can not modify the party of ' \
+ 'a contact mechanism!',
+ })
+
+ def default_type(self, cursor, user, context=None):
+ return 'phone'
+
+ def default_active(self, cursor, user, context=None):
+ return True
+
+ def get_value(self, cursor, user, ids, names, arg, context=None):
+ res = {}
+ for name in names:
+ res[name] = {}
+ for mechanism in self.browse(cursor, user, ids, context=context):
+ for name in names:
+ res[name][mechanism.id] = mechanism.value
+ return res
+
+ def set_value(self, cursor, user, obj_id, name, value, arg, context=None):
+ self.write(cursor, user, obj_id, {
+ 'value': value,
+ }, context=context)
+
+ def _change_value(self, cursor, user, value, context=None):
+ return {
+ 'value': value,
+ 'website': value,
+ 'email': value,
+ 'skype': value,
+ 'sip': value,
+ }
+
+ def on_change_value(self, cursor, user, ids, vals, context=None):
+ return self._change_value(cursor, user, vals.get('value'),
+ context=context)
+
+ def on_change_website(self, cursor, user, ids, vals, context=None):
+ return self._change_value(cursor, user, vals.get('website'),
+ context=context)
+
+ def on_change_email(self, cursor, user, ids, vals, context=None):
+ return self._change_value(cursor, user, vals.get('email'),
+ context=context)
+
+ def on_change_skype(self, cursor, user, ids, vals, context=None):
+ return self._change_value(cursor, user, vals.get('skype'),
+ context=context)
+
+ def on_change_sip(self, cursor, user, ids, vals, context=None):
+ return self._change_value(cursor, user, vals.get('sip'),
+ context=context)
+
+ def write(self, cursor, user, ids, vals, context=None):
+ if 'party' in vals:
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ for mechanism in self.browse(cursor, user, ids, context=context):
+ if mechanism.party.id != vals['party']:
+ self.raise_user_error(cursor, 'write_party',
+ context=context)
+ return super(ContactMechanism, self).write(cursor, user, ids, vals,
+ context=context)
+
+ContactMechanism()
diff --git a/contact_mechanism.xml b/contact_mechanism.xml
new file mode 100644
index 0000000..05e50bc
--- /dev/null
+++ b/contact_mechanism.xml
@@ -0,0 +1,54 @@
+<?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. -->
+<tryton>
+ <data>
+
+ <record model="ir.ui.view" id="contact_mechanism_view_tree">
+ <field name="model">party.contact_mechanism</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Contact Mechanisms">
+ <field name="party" select="1"/>
+ <field name="type" select="1"/>
+ <field name="value" select="1"/>
+ <field name="active" select="2" tree_invisible="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="contact_mechanism_view_form">
+ <field name="model">party.contact_mechanism</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Contact Mechanism">
+ <label name="party"/>
+ <field name="party"/>
+ <label name="active"/>
+ <field name="active"/>
+ <label name="type"/>
+ <field name="type"/>
+ <group col="2" colspan="2">
+ <label name="value"/>
+ <field name="value"/>
+ <label name="website"/>
+ <field name="website" widget="url"/>
+ <label name="email"/>
+ <field name="email" widget="email"/>
+ <label name="skype"/>
+ <field name="skype" widget="callto"/>
+ <label name="sip"/>
+ <field name="sip" widget="sip"/>
+ </group>
+ <separator name="comment" colspan="4"/>
+ <field name="comment" colspan="4"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+
+ </data>
+</tryton>
diff --git a/de_DE.csv b/de_DE.csv
new file mode 100644
index 0000000..7118f83
--- /dev/null
+++ b/de_DE.csv
@@ -0,0 +1,139 @@
+type,name,res_id,src,value,fuzzy
+error,party.address,0,You can not modify the party of an address!,Die Partei einer Adresse kann nicht geändert werden!,0
+error,party.category,0,You can not create recursive categories!,Kategorien dürfen nicht rekursiv sein,0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Die Partei einer Kontaktmöglichkeit kann nicht geändert werden!,0
+error,party.party,0,The code of the party must be unique!,Der Name einer Partei kann nicht mehrfach vergeben werden!,0
+error,party.party,0,Wrong VAT number!,USt-ID Nr. ungültig!,0
+field,"party.address,active",0,Active,Aktiv,0
+field,"party.address,city",0,City,Stadt,0
+field,"party.address,country",0,Country,Staat,0
+field,"party.address,create_date",0,Creation date,Erstellungsdatum,0
+field,"party.address,create_uid",0,Creation user,Ersteller,0
+field,"party.address,full_address",0,unknown,Unbekannt,0
+field,"party.address,id",0,ID,ID,0
+field,"party.address,name",0,Name,Name,0
+field,"party.address,party",0,Party,Partei,0
+field,"party.address,sequence",0,Sequence,Sequenz,0
+field,"party.address,street",0,Street,Anschrift 1,0
+field,"party.address,streetbis",0,Street (bis),Anschrift 2,0
+field,"party.address,subdivision",0,Subdivision,Subnationale Einheit,0
+field,"party.address,write_date",0,Last modification date,Zuletzt geändert am,0
+field,"party.address,write_uid",0,Last modification by,Zuletzt geändert von,0
+field,"party.address,zip",0,Zip,Postleitzahl,0
+field,"party.category,active",0,Active,Aktiv,0
+field,"party.category,childs",0,Childs,Untergeordnet (Kategorien),0
+field,"party.category,complete_name",0,Name,Name,0
+field,"party.category,create_date",0,Creation date,Erstellungsdatum,0
+field,"party.category,create_uid",0,Creation user,Ersteller,0
+field,"party.category,id",0,ID,ID,0
+field,"party.category,name",0,Name,Kategorie Name,0
+field,"party.category,parent",0,Parent,Ãbergeordnet (Kategorie),0
+field,"party.category,write_date",0,Last modification date,Zuletzt geändert am,0
+field,"party.category,write_uid",0,Last modification by,Zuletzt geändert von,0
+field,"party.contact_mechanism,active",0,Active,Aktiv,0
+field,"party.contact_mechanism,comment",0,Comment,Kommentar,0
+field,"party.contact_mechanism,email",0,E-Mail,E-Mail,0
+field,"party.contact_mechanism,party",0,Party,Partei,0
+field,"party.contact_mechanism,sequence",0,Sequence,Sequenz,0
+field,"party.contact_mechanism,sip",0,SIP,SIP,0
+field,"party.contact_mechanism,skype",0,Skype,Skype,0
+field,"party.contact_mechanism,type",0,Type,Typ,0
+field,"party.contact_mechanism,value",0,Value,Wert,0
+field,"party.contact_mechanism,website",0,Website,Homepage,0
+field,"party.party,active",0,Active,Aktiv,0
+field,"party.party,addresses",0,Addresses,Adressen,0
+field,"party.party,categories",0,Categories,Kategorien,0
+field,"party.party,code",0,Code,Code Partei,0
+field,"party.party,code_length",0,Code Length,Code Länge,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,Kontaktmöglichkeiten,0
+field,"party.party,create_date",0,Creation date,Erstellungsdatum,0
+field,"party.party,create_uid",0,Creation user,Ersteller,0
+field,"party.party,email",0,E-Mail,E-Mail,0
+field,"party.party,fax",0,Fax,Fax,0
+field,"party.party,full_name",0,unknown,Unbekannt,0
+field,"party.party,id",0,ID,ID,0
+field,"party.party,lang",0,Language,Sprache,0
+field,"party.party,mobile",0,Mobile,Mobiltelefon,0
+field,"party.party,name",0,Name,Name,0
+field,"party.party,phone",0,Phone,Telefon,0
+field,"party.party,vat_code",0,VAT Code,USt-ID Nr.,0
+field,"party.party,vat_country",0,VAT Country,USt-ID Präfix,0
+field,"party.party,vat_number",0,VAT Number,USt-ID Nr.,0
+field,"party.party,website",0,Website,Website,0
+field,"party.party,write_date",0,Last modification date,Zuletzt geändert am,0
+field,"party.party,write_uid",0,Last modification by,Zuletzt geändert von,0
+help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Ein Eintrag in USt-ID Präfix aktiviert die Ãberprüfung der USt-ID Nr.,0
+help,"party.party,vat_number",0,Value Added Tax number,Umsatzsteueridentifikationsnummer,0
+model,"ir.action,name",act_address_form,Addresses,Adressen,0
+model,"ir.action,name",act_address_form2,Addresses,Adressen,0
+model,"ir.action,name",act_category_tree,Categories,Kategorien,0
+model,"ir.action,name",act_category_form,Categories,Kategorien,0
+model,"ir.action,name",act_category_form2,Categories,Kategorien,0
+model,"ir.action,name",report_label,La_bels,_Etiketten,0
+model,"ir.action,name",act_party_form,Parties,Parteien,0
+model,"ir.action,name",act_party_form2,Parties,Parteien,0
+model,"ir.action,name",act_party_by_category,Parties by Category,Parteien nach Kategorie,0
+model,"ir.sequence,name",sequence_party,Party,Partei,0
+model,"ir.sequence.type,name",sequence_type_party,Party,Partei,0
+model,"ir.ui.menu,name",menu_address_form,Addresses,Adressen,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,Kategorien,0
+model,"ir.ui.menu,name",menu_category_form,Edit Categories,Kategorien bearbeiten,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,Neue Adresse,0
+model,"ir.ui.menu,name",menu_category_form2,New category,Neue Kategorie,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Neue Partei,0
+model,"ir.ui.menu,name",menu_party_form,Parties,Parteien,0
+model,"ir.ui.menu,name",menu_party,Party Management,Kontakte,0
+model,"res.group,name",group_party_admin,Party Administration,Administration Kontakte,0
+selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
+selection,"party.contact_mechanism,type",0,Fax,Fax,0
+selection,"party.contact_mechanism,type",0,IRC,IRC,0
+selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
+selection,"party.contact_mechanism,type",0,Mobile,Mobiltelefon,0
+selection,"party.contact_mechanism,type",0,Other,Anderer,0
+selection,"party.contact_mechanism,type",0,Phone,Telefon,0
+selection,"party.contact_mechanism,type",0,SIP,SIP,0
+selection,"party.contact_mechanism,type",0,Skype,Skype,0
+selection,"party.contact_mechanism,type",0,Website,Homepage,0
+selection,"party.party,vat_country",0,,,0
+selection,"party.party,vat_country",0,AT,AT,0
+selection,"party.party,vat_country",0,BE,BE,0
+selection,"party.party,vat_country",0,BG,BG,0
+selection,"party.party,vat_country",0,CY,CY,0
+selection,"party.party,vat_country",0,CZ,CZ,0
+selection,"party.party,vat_country",0,DE,DE,0
+selection,"party.party,vat_country",0,DK,DK,0
+selection,"party.party,vat_country",0,EE,EE,0
+selection,"party.party,vat_country",0,EL,EL,0
+selection,"party.party,vat_country",0,ES,ES,0
+selection,"party.party,vat_country",0,FI,FI,0
+selection,"party.party,vat_country",0,FR,FR,0
+selection,"party.party,vat_country",0,GB,GB,0
+selection,"party.party,vat_country",0,GR,GR,0
+selection,"party.party,vat_country",0,HU,HU,0
+selection,"party.party,vat_country",0,IE,IE,0
+selection,"party.party,vat_country",0,IT,IT,0
+selection,"party.party,vat_country",0,LT,LT,0
+selection,"party.party,vat_country",0,LU,LU,0
+selection,"party.party,vat_country",0,LV,LV,0
+selection,"party.party,vat_country",0,MT,MT,0
+selection,"party.party,vat_country",0,NL,NL,0
+selection,"party.party,vat_country",0,PL,PL,0
+selection,"party.party,vat_country",0,PT,PT,0
+selection,"party.party,vat_country",0,RO,RO,0
+selection,"party.party,vat_country",0,SE,SE,0
+selection,"party.party,vat_country",0,SI,SI,0
+selection,"party.party,vat_country",0,SK,SK,0
+view,party.address,0,Addresses,Adressen,0
+view,party.category,0,Categories,Kategorien,0
+view,party.category,0,Category,Kategorie,0
+view,party.contact_mechanism,0,Contact Mechanism,Kontaktmöglichkeit,0
+view,party.contact_mechanism,0,Contact Mechanisms,Kontaktmöglichkeiten,0
+view,party.party,0,Account,Konten,0
+view,party.party,0,_Accounting,,0
+view,party.party,0,Addresses,Adressen,0
+view,party.party,0,Categories,Kategorien,0
+view,party.party,0,Contact Mechanisms,Kontaktmöglichkeiten,0
+view,party.party,0,_General,_Allgemein,0
+view,party.party,0,Parties,Parteien,0
+view,party.party,0,Party,Partei,0
+view,party.party,0,VAT,USt,0
diff --git a/es_ES.csv b/es_ES.csv
new file mode 100644
index 0000000..e312437
--- /dev/null
+++ b/es_ES.csv
@@ -0,0 +1,126 @@
+type,name,res_id,src,value,fuzzy
+error,party.address,0,You can not modify the party of an address!,No puede modificar el tercero de una dirección!,0
+error,party.category,0,You can not create recursive categories!,No puede crear categorÃas recursivas!,0
+error,party.contact_mechanism,0,You can not modify the party of an contact mechanism!,No puede modificar el tercero de un mecanismo de contacto!,0
+error,party.party,0,The code of the party must be unique!,El código del tercero debe ser único!,0
+error,party.party,0,Wrong VAT number!,Número de VAT erróneo!,0
+field,"party.address,active",0,Active,Activo,0
+field,"party.address,city",0,City,Ciudad,0
+field,"party.address,country",0,Country,PaÃs,0
+field,"party.address,full_address",0,unknown,desconocid@,0
+field,"party.address,name",0,Name,Nombre de Contacto,0
+field,"party.address,party",0,Party,Tercero,0
+field,"party.address,sequence",0,Sequence,Secuencia,0
+field,"party.address,street",0,Street,Calle,0
+field,"party.address,streetbis",0,Street (bis),Calle (bis),0
+field,"party.address,subdivision",0,Subdivision,Subdivisión,0
+field,"party.address,zip",0,Zip,Código postal,0
+field,"party.category,active",0,Active,Activo,0
+field,"party.category,childs",0,Childs,Hij at s,0
+field,"party.category,complete_name",0,Name,Nombre,0
+field,"party.category,name",0,Name,Nombre,0
+field,"party.category,parent",0,Parent,Padre,0
+field,"party.contact_mechanism,active",0,Active,Activo,0
+field,"party.contact_mechanism,comment",0,Comment,Comentario,0
+field,"party.contact_mechanism,email",0,E-Mail,Correo electrónico,0
+field,"party.contact_mechanism,party",0,Party,Tercero,0
+field,"party.contact_mechanism,sequence",0,Sequence,Secuencia,0
+field,"party.contact_mechanism,sip",0,SIP,SIP,0
+field,"party.contact_mechanism,skype",0,Skype,Skype,0
+field,"party.contact_mechanism,type",0,Type,Tipo,0
+field,"party.contact_mechanism,value",0,Value,Valor,0
+field,"party.contact_mechanism,website",0,Website,Sitio Web,0
+field,"party.party,active",0,Active,Activo,0
+field,"party.party,addresses",0,Addresses,Direcciones,0
+field,"party.party,categories",0,Categories,CategorÃas,0
+field,"party.party,code",0,Code,Código,0
+field,"party.party,code_length",0,Code Length,Longitud del Código,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,Mecanismos de contacto,0
+field,"party.party,email",0,E-Mail,Correo electrónico,0
+field,"party.party,fax",0,Fax,Fax,0
+field,"party.party,full_name",0,unknown,desconocid@,0
+field,"party.party,lang",0,Language,Idioma,0
+field,"party.party,mobile",0,Mobile,Celular,0
+field,"party.party,name",0,Name,Nombre,0
+field,"party.party,phone",0,Phone,Teléfono,0
+field,"party.party,vat_code",0,VAT Code,Código de VAT,0
+field,"party.party,vat_country",0,VAT Country,VAT de paÃs,0
+field,"party.party,vat_number",0,VAT Number,Nombre de VAT,0
+field,"party.party,website",0,Website,Sitio Web,0
+help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Al especificar el VAT de paÃs se habilitará la verificación del número de VAT.,0
+help,"party.party,vat_number",0,Value Added Tax number,Número de Impuesto de Valor Agregado,0
+model,"ir.action,name",act_address_form,Addresses,Direcciones,0
+model,"ir.action,name",act_address_form2,Addresses,Direcciones,0
+model,"ir.action,name",act_category_tree,Categories,CategorÃas,0
+model,"ir.action,name",act_category_form,Categories,CategorÃas,0
+model,"ir.action,name",act_category_form2,Categories,CategorÃas,0
+model,"ir.action,name",report_label,La_bels,Etiqueta_s,0
+model,"ir.action,name",act_party_form,Parties,Terceros,0
+model,"ir.action,name",act_party_form2,Parties,Terceros,0
+model,"ir.action,name",act_party_by_category,Parties by Category,Terceros por CategorÃa,0
+model,"ir.ui.menu,name",menu_address_form,Addresses,Direcciones,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,CategorÃas,0
+model,"ir.ui.menu,name",menu_category_form,Edit Categories,Editar CategorÃas,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,Nueva Dirección,0
+model,"ir.ui.menu,name",menu_category_form2,New category,Nueva CategorÃa,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Nuevo Tercero,0
+model,"ir.ui.menu,name",menu_party_form,Parties,Terceros,0
+model,"ir.ui.menu,name",menu_party,Party Management,Manejo de Relaciones,0
+selection,"party.contact_mechanism,type",0,E-Mail,Correo electrónico,0
+selection,"party.contact_mechanism,type",0,Fax,Fax,0
+selection,"party.contact_mechanism,type",0,IRC,Chat,0
+selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
+selection,"party.contact_mechanism,type",0,Mobile,Celular,0
+selection,"party.contact_mechanism,type",0,Other,Otro,0
+selection,"party.contact_mechanism,type",0,Phone,Teléfono,0
+selection,"party.contact_mechanism,type",0,SIP,SIP,0
+selection,"party.contact_mechanism,type",0,Skype,Skype,0
+selection,"party.contact_mechanism,type",0,Website,Sitio Web,0
+selection,"party.party,vat_country",0,,,0
+selection,"party.party,vat_country",0,AL,AL,0
+selection,"party.party,vat_country",0,AT,At,0
+selection,"party.party,vat_country",0,BE,BE,0
+selection,"party.party,vat_country",0,BG,BG,0
+selection,"party.party,vat_country",0,CY,CY,0
+selection,"party.party,vat_country",0,CZ,CZ,0
+selection,"party.party,vat_country",0,DE,DE,0
+selection,"party.party,vat_country",0,DK,DK,0
+selection,"party.party,vat_country",0,EE,EE,0
+selection,"party.party,vat_country",0,EL,EL,0
+selection,"party.party,vat_country",0,ES,ES,0
+selection,"party.party,vat_country",0,FI,FI,0
+selection,"party.party,vat_country",0,FR,FR,0
+selection,"party.party,vat_country",0,GB,GB,0
+selection,"party.party,vat_country",0,GR,GR,0
+selection,"party.party,vat_country",0,HU,HU,0
+selection,"party.party,vat_country",0,IE,IE,0
+selection,"party.party,vat_country",0,IT,IT,0
+selection,"party.party,vat_country",0,LT,LT,0
+selection,"party.party,vat_country",0,LU,LU,0
+selection,"party.party,vat_country",0,LV,LV,0
+selection,"party.party,vat_country",0,MT,MT,0
+selection,"party.party,vat_country",0,NL,NL,0
+selection,"party.party,vat_country",0,PL,PL,0
+selection,"party.party,vat_country",0,PT,PT,0
+selection,"party.party,vat_country",0,RO,RO,0
+selection,"party.party,vat_country",0,SE,SE,0
+selection,"party.party,vat_country",0,SI,SI,0
+selection,"party.party,vat_country",0,SK,SK,0
+selection,"party.party,vat_country",0,SM,SM,0
+selection,"party.party,vat_country",0,UA,UA,0
+selection,"party.party,vat_country",0,UK,UK,0
+view,party.address,0,Addresses,Direcciones,0
+view,party.category,0,Categories,CategorÃas,0
+view,party.category,0,Category,CategorÃa,0
+view,party.contact_mechanism,0,Contact Mechanism,Mecanismo de contacto,0
+view,party.contact_mechanism,0,Contact Mechanisms,Mecanismos de contacto,0
+view,party.party,0,Account,Cuenta,0
+view,party.party,0,Addresses,Direcciones,0
+view,party.party,0,Categories,CategorÃas,0
+view,party.party,0,Contact Mechanisms,Mecanismos de contacto,0
+view,party.party,0,_General,_General,0
+view,party.party,0,Parties,Terceros,0
+view,party.party,0,Party,Tercero,0
+view,party.party,0,VAT,VAT,0
+view,party.party.type,0,Party Type,Tipo de Tercero,0
+view,party.party.type,0,Party Types,Tipos de Terceros,0
diff --git a/fr_FR.csv b/fr_FR.csv
new file mode 100644
index 0000000..fab4ef5
--- /dev/null
+++ b/fr_FR.csv
@@ -0,0 +1,96 @@
+type,name,res_id,src,value,fuzzy
+error,party.address,0,You can not modify the party of an address!,Vous ne pouvez pas modifier le tiers d'une addresse !,0
+error,party.category,0,You can not create recursive categories!,Vous ne pouvez pas créer des catégories récursives !,0
+error,party.contact_mechanism,0,You can not modify the party of a contact mechanism!,Vous ne pouvez pas modifiez le tiers d'un moyen de contact.,0
+error,party.party,0,The code of the party must be unique!,Le code tu tiers doit être unique,0
+error,party.party,0,Wrong VAT number!,Mauvais numéro de TVA !,0
+field,"party.address,active",0,Active,Actif,0
+field,"party.address,city",0,City,Ville,0
+field,"party.address,country",0,Country,Pays,0
+field,"party.address,full_address",0,unknown,,0
+field,"party.address,name",0,Name,Nom,0
+field,"party.address,party",0,Party,Tiers,0
+field,"party.address,sequence",0,Sequence,Séquence,0
+field,"party.address,state",0,State,Ãtat,0
+field,"party.address,street",0,Street,Rue,0
+field,"party.address,streetbis",0,Street (bis),Rue (bis),0
+field,"party.address,subdivision",0,Subdivision,Subdivision,0
+field,"party.address,zip",0,Zip,Code Postal,0
+field,"party.category,active",0,Active,Actif,0
+field,"party.category,childs",0,Childs,Enfants,0
+field,"party.category,complete_name",0,Name,Nom,0
+field,"party.category,name",0,Name,Nom,0
+field,"party.category,parent",0,Parent,Parent,0
+field,"party.contact_mechanism,active",0,Active,Actif,0
+field,"party.contact_mechanism,comment",0,Comment,Commentaire,0
+field,"party.contact_mechanism,email",0,E-Mail,E-mail,0
+field,"party.contact_mechanism,party",0,Party,Tier,0
+field,"party.contact_mechanism,sequence",0,Sequence,Séquence,0
+field,"party.contact_mechanism,sip",0,SIP,SIP,0
+field,"party.contact_mechanism,skype",0,Skype,Skype,0
+field,"party.contact_mechanism,type",0,Type,Type,0
+field,"party.contact_mechanism,value",0,Value,Valeur,0
+field,"party.contact_mechanism,website",0,Website,Site web,0
+field,"party.party,active",0,Active,Actif,0
+field,"party.party,addresses",0,Addresses,Adresses,0
+field,"party.party,categories",0,Categories,Catégories,0
+field,"party.party,code",0,Code,Code,0
+field,"party.party,code_length",0,Code Length,Longueur du code,0
+field,"party.party,contact_mechanisms",0,Contact Mechanisms,Moyens de contact,0
+field,"party.party,full_name",0,unknown,,0
+field,"party.party,lang",0,Language,Langue,0
+field,"party.party,name",0,Name,Nom,0
+field,"party.party,type",0,Type,Type,0
+field,"party.party.type,name",0,Name,Nom,0
+field,"party.party,vat_code",0,VAT Code,Code TVA,0
+field,"party.party,vat_country",0,VAT Country,Code Pays TVA,0
+field,"party.party,vat_number",0,VAT Number,Numéro de TVA,0
+field,"party.party,website",0,Website,Site web,0
+help,"party.party,vat_country",0,Setting VAT country will enable verification of the VAT number.,Mettre un code pays TVA activera la vérification du numéro de TVA.,0
+help,"party.party,vat_number",0,Value Added Tax number,Numéro de taxe sur la valeur ajoutée,0
+model,"ir.action,name",act_address_form,Addresses,Adresses,0
+model,"ir.action,name",act_address_form2,Addresses,Adresses,0
+model,"ir.action,name",act_category_tree,Categories,Catégories,0
+model,"ir.action,name",act_category_form,Categories,Catégories,0
+model,"ir.action,name",act_category_form2,Categories,Catégories,0
+model,"ir.action,name",report_label,La_bels,Ã_tiquettes,0
+model,"ir.action,name",act_party_form,Parties,Tiers,0
+model,"ir.action,name",act_party_form2,Parties,Tiers,0
+model,"ir.action,name",act_party_by_category,Parties by Category,Tiers par catégorie,0
+model,"ir.ui.menu,name",menu_address_form,Addresses,Adresses,0
+model,"ir.ui.menu,name",menu_category_tree,Categories,Catégories,0
+model,"ir.ui.menu,name",menu_category_form,Edit Categories,Editer les Catégories,0
+model,"ir.ui.menu,name",menu_address_form2,New Address,Nouvelle adresse,0
+model,"ir.ui.menu,name",menu_category_form2,New category,Nouvelle catégorie,0
+model,"ir.ui.menu,name",menu_party_form2,New Party,Nouveau tiers,0
+model,"ir.ui.menu,name",menu_party_form,Parties,Tiers,0
+model,"ir.ui.menu,name",menu_party,Party Management,Gestion des relations,0
+selection,"party.contact_mechanism,type",0,E-Mail,E-Mail,0
+selection,"party.contact_mechanism,type",0,Fax,Fax,0
+selection,"party.contact_mechanism,type",0,IRC,IRC,0
+selection,"party.contact_mechanism,type",0,Jabber,Jabber,0
+selection,"party.contact_mechanism,type",0,Mobile,Mobile,0
+selection,"party.contact_mechanism,type",0,Other,Autre,0
+selection,"party.contact_mechanism,type",0,Phone,Téléphone,0
+selection,"party.contact_mechanism,type",0,SIP,SIP,0
+selection,"party.contact_mechanism,type",0,Skype,Skype,0
+selection,"party.contact_mechanism,type",0,Website,Site web,0
+selection,"party.party,vat_country",0,,,0
+view,party.address,0,Addresses,Adresses,0
+view,party.category,0,Categories,Catégories,0
+view,party.category,0,Category,Catégorie,0
+view,party.contact_mechanism,0,Contact Mechanism,Moyen de contact,0
+view,party.contact_mechanism,0,Contact Mechanisms,Moyens de contact,0
+view,party.party,0,Accounting,Comptabilité,0
+view,party.party,0,_Accounting,Compt_abilité,0
+view,party.party,0,Addresses,Adresses,0
+view,party.party,0,Categories,Catégories,0
+view,party.party,0,Contact Mechanisms,Moyens de contact,0
+view,party.party,0,General,Général,0
+view,party.party,0,_General,_Général,0
+view,party.party,0,Parties,Tiers,0
+view,party.party,0,Party,Tiers,0
+view,party.party,0,Properties,Propriétés,0
+view,party.party,0,VAT,,0
+view,party.party.type,0,Party Type,Type de Tiers,0
+view,party.party.type,0,Party Types,Types de Tiers,0
diff --git a/label.odt b/label.odt
new file mode 100644
index 0000000..1b43909
Binary files /dev/null and b/label.odt differ
diff --git a/party.py b/party.py
new file mode 100644
index 0000000..da7a4e6
--- /dev/null
+++ b/party.py
@@ -0,0 +1,183 @@
+#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 trytond.osv import fields, OSV
+import logging
+
+HAS_VATNUMBER = False
+VAT_COUNTRIES = [('', '')]
+try:
+ import vatnumber
+ HAS_VATNUMBER = True
+ for country in vatnumber.countries():
+ VAT_COUNTRIES.append((country, country))
+except ImportError:
+ logging.getLogger('party').warning(
+ 'Unable to import vatnumber. VAT number validation disable.')
+
+STATES = {
+ 'readonly': "active == False",
+}
+
+
+class Party(OSV):
+ "Party"
+ _description = __doc__
+ _name = "party.party"
+
+ name = fields.Char('Name', required=True, select=1,
+ states=STATES)
+ code = fields.Char('Code', required=True, select=1,
+ readonly=True, order_field="%(table)s.code_length %(order)s, " \
+ "%(table)s.code %(order)s")
+ code_length = fields.Integer('Code Length', select=1, readonly=True)
+ lang = fields.Many2One("ir.lang", 'Language', states=STATES)
+ vat_number = fields.Char('VAT Number', help="Value Added Tax number",
+ states=STATES)
+ vat_country = fields.Selection(VAT_COUNTRIES, 'VAT Country', states=STATES,
+ help="Setting VAT country will enable verification of the VAT number.")
+ vat_code = fields.Function('get_vat_code', type='char', string="VAT Code")
+ addresses = fields.One2Many('party.address', 'party',
+ 'Addresses', states=STATES)
+ contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
+ 'Contact Mechanisms', states=STATES)
+ categories = fields.Many2Many(
+ 'party.category', 'party_category_rel',
+ 'party', 'category', 'Categories',
+ states=STATES)
+ active = fields.Boolean('Active', select=1)
+ full_name = fields.Function('get_full_name', type='char')
+ phone = fields.Function('get_mechanism', arg='phone', type='char',
+ string='Phone')
+ mobile = fields.Function('get_mechanism', arg='mobile', type='char',
+ string='Mobile')
+ fax = fields.Function('get_mechanism', arg='fax', type='char',
+ string='Fax')
+ email = fields.Function('get_mechanism', arg='email', type='char',
+ string='E-Mail')
+ website = fields.Function('get_mechanism', arg='website', type='char',
+ string='Website')
+
+ def __init__(self):
+ super(Party, self).__init__()
+ self._sql_constraints = [
+ ('code_uniq', 'UNIQUE(code)',
+ 'The code of the party must be unique!')
+ ]
+ self._constraints += [
+ ('check_vat', 'wrong_vat'),
+ ]
+ self._error_messages.update({
+ 'wrong_vat': 'Wrong VAT number!',
+ })
+ self._order.insert(0, ('name', 'DESC'))
+
+ def default_active(self, cursor, user, context=None):
+ return True
+
+ def get_vat_code(self, cursor, user, ids, name, arg, context=None):
+ if not ids:
+ return []
+ res = {}
+ for party in self.browse(cursor, user, ids, context=context):
+ res[party.id] = (party.vat_country or '') + (party.vat_number or '')
+ return res
+
+ def get_full_name(self, cursor, user, ids, name, arg, context=None):
+ if not ids:
+ return []
+ res = {}
+ for party in self.browse(cursor, user, ids, context=context):
+ res[party.id] = party.name
+ return res
+
+ def get_mechanism(self, cursor, user, ids, name, arg, context=None):
+ if not ids:
+ return []
+ res = {}
+ for party in self.browse(cursor, user, ids, context=context):
+ res[party.id] = ''
+ for mechanism in party.contact_mechanisms:
+ if mechanism.type == arg:
+ res[party.id] = mechanism.value
+ return res
+
+ def create(self, cursor, user, values, context=None):
+ values = values.copy()
+ if not values.get('code'):
+ values['code'] = self.pool.get('ir.sequence').get(
+ cursor, user, 'party.party')
+ values['code_length'] = len(values['code'])
+ return super(Party, self).create(cursor, user, values, context=context)
+
+ def write(self, cursor, user, ids, vals, context=None):
+ if vals.get('code'):
+ vals = vals.copy()
+ vals['code_length'] = len(vals['code'])
+ return super(Party, self).write(cursor, user, ids, vals, context=context)
+
+ def copy(self, cursor, user, object_id, default=None, context=None):
+ if default is None:
+ default = {}
+ default = default.copy()
+ default['code'] = False
+ return super(Party, self).copy(cursor, user, object_id, default=default,
+ context=context)
+
+ def name_search(self, cursor, user, name, args=None, operator='ilike',
+ context=None, limit=None):
+ if not args:
+ args = []
+ ids = self.search(cursor, user, [('code', '=', name)] + args,
+ limit=limit, context=context)
+ if ids:
+ return self.name_get(cursor, user, ids, context=context)
+ return super(Party, self).name_search(cursor, user, name,
+ args=args, operator=operator, context=context, limit=limit)
+
+ def address_get(self, cursor, user, party_id, type=None, context=None):
+ """
+ Try to find an address for the given type, if no type match
+ the first address is return.
+ """
+ address_obj = self.pool.get("party.address")
+ address_ids = address_obj.search(
+ cursor, user, [("party", "=", party_id), ("active", "=", True)],
+ order=[('sequence', 'ASC'), ('id', 'ASC')], context=context)
+ if not address_ids:
+ return False
+ default_address = address_ids[0]
+ if not type:
+ return default_address
+ for address in address_obj.browse(cursor, user, address_ids,
+ context=context):
+ if address[type]:
+ return address.id
+ return default_address
+
+ def check_vat(self, cursor, user, ids):
+ '''
+ Check the VAT number depending of the country.
+ http://sima-pc.com/nif.php
+ '''
+ if not HAS_VATNUMBER:
+ return True
+ for party in self.browse(cursor, user, ids):
+ vat_number = party.vat_number
+
+ if not (vat_number and party.vat_country):
+ continue
+
+ if not getattr(vatnumber, 'check_vat_' + \
+ party.vat_country.lower())(vat_number):
+
+ #Check if user doesn't have put country code in number
+ if vat_number.startswith(party.vat_country):
+ vat_number = vat_number[len(party.vat_country):]
+ self.write(cursor, user, party.id, {
+ 'vat_number': vat_number,
+ })
+ else:
+ return False
+ return True
+
+Party()
diff --git a/party.xml b/party.xml
new file mode 100644
index 0000000..8d4777a
--- /dev/null
+++ b/party.xml
@@ -0,0 +1,156 @@
+<?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. -->
+<tryton>
+ <data>
+ <record model="res.group" id="group_party_admin">
+ <field name="name">Party Administration</field>
+ </record>
+ <record model="res.user" id="res.user_admin">
+ <field name="groups" eval="[('add', ref('group_party_admin'))]"/>
+ </record>
+
+ <menuitem name="Party Management" sequence="0" id="menu_party"
+ icon="tryton-users"/>
+
+ <record model="ir.ui.view" id="party_view_tree">
+ <field name="model">party.party</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Parties">
+ <field name="code" select="1"/>
+ <field name="name" select="1"/>
+ <field name="lang" select="2"/>
+ <field name="vat_code" select="1"/>
+ <field name="active" select="2" tree_invisible="1"/>
+ <field name="vat_country" select="2" tree_invisible="1"/>
+ <field name="vat_number" select="2" tree_invisible="1"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="party_view_form">
+ <field name="model">party.party</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Party" col="6">
+ <label name="name"/>
+ <field name="name" xexpand="1"/>
+ <label name="code"/>
+ <field name="code"/>
+ <label name="active"/>
+ <field name="active" xexpand="0" width="100"/>
+ <notebook colspan="6">
+ <page string="_General">
+ <field name="addresses" mode="form,tree" colspan="4">
+ <tree string="Addresses" sequence="sequence"
+ fill="1">
+ <field name="sequence" tree_invisible="1"/>
+ <field name="name"/>
+ <field name="street"/>
+ <field name="streetbis"/>
+ <field name="zip"/>
+ <field name="city"/>
+ <field name="country"/>
+ <field name="subdivision"/>
+ </tree>
+ </field>
+ <group col="2" colspan="4">
+ <label name="lang"/>
+ <field name="lang" widget="selection"/>
+ </group>
+ <field name="contact_mechanisms" colspan="2">
+ <tree string="Contact Mechanisms" sequence="sequence"
+ fill="1">
+ <field name="sequence" tree_invisible="1"/>
+ <field name="type"/>
+ <field name="value"/>
+ <field name="comment"/>
+ </tree>
+ </field>
+ <group col="1" colspan="2">
+ <separator string="Categories"/>
+ <field name="categories"/>
+ </group>
+ </page>
+ <page string="_Accounting">
+ <separator string="VAT" colspan="4"/>
+ <label name="vat_country"/>
+ <field name="vat_country"/>
+ <label name="vat_number"/>
+ <field name="vat_number"/>
+ </page>
+ </notebook>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.action.act_window" id="act_party_form">
+ <field name="name">Parties</field>
+ <field name="res_model">party.party</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_party_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="party_view_tree"/>
+ <field name="act_window" ref="act_party_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_party_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="party_view_form"/>
+ <field name="act_window" ref="act_party_form"/>
+ </record>
+ <menuitem parent="menu_party" sequence="1"
+ action="act_party_form" id="menu_party_form"/>
+ <record model="ir.action.act_window" id="act_party_form2">
+ <field name="name">Parties</field>
+ <field name="res_model">party.party</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_party_form2_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="party_view_form"/>
+ <field name="act_window" ref="act_party_form2"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_party_form2_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="party_view_tree"/>
+ <field name="act_window" ref="act_party_form2"/>
+ </record>
+ <menuitem name="New Party" parent="menu_party_form" sequence="1"
+ action="act_party_form2" id="menu_party_form2"/>
+ <record model="ir.action.act_window" id="act_party_by_category">
+ <field name="name">Parties by Category</field>
+ <field name="res_model">party.party</field>
+ <field name="view_type">form</field>
+ <field name="domain">[('categories', 'child_of', [active_id], 'parent')]</field>
+ </record>
+ <record model="ir.action.keyword" id="act_party_by_category_keyword1">
+ <field name="keyword">tree_open</field>
+ <field name="model">party.category,0</field>
+ <field name="action" ref="act_party_by_category"/>
+ </record>
+ <record model="ir.action.report" id="report_label">
+ <field name="name">La_bels</field>
+ <field name="model">party.party</field>
+ <field name="report_name">party.label</field>
+ <field name="report">party/label.odt</field>
+ </record>
+ <record model="ir.action.keyword" id="report_label_party">
+ <field name="keyword">form_print</field>
+ <field name="model">party.party,0</field>
+ <field name="action" ref="report_label"/>
+ </record>
+
+ <record model="ir.sequence.type" id="sequence_type_party">
+ <field name="name">Party</field>
+ <field name="code">party.party</field>
+ </record>
+ <record model="ir.sequence" id="sequence_party">
+ <field name="name">Party</field>
+ <field name="code">party.party</field>
+ </record>
+ </data>
+</tryton>
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..861a9f5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build =
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..59c5d4a
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+#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 setuptools import setup, find_packages
+import re
+
+info = eval(file('__tryton__.py').read())
+
+requires = []
+for dep in info.get('depends', []):
+ match = re.compile(
+ '(ir|res|workflow|webdav)((\s|$|<|>|<=|>=|==|!=).*?$)').match(dep)
+ if match:
+ continue
+ else:
+ dep = 'trytond_' + dep
+ requires.append(dep)
+
+major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
+requires.append('trytond >= %s.%s' % (major_version, minor_version))
+requires.append('trytond < %s.%s' % (major_version, str(int(minor_version) + 1)))
+
+setup(name='trytond_party',
+ version=info.get('version', '0.0.1'),
+ description=info.get('description', ''),
+ author=info.get('author', ''),
+ author_email=info.get('email', ''),
+ url=info.get('website', ''),
+ package_dir={'trytond.modules.party': '.'},
+ packages=[
+ 'trytond.modules.party',
+ ],
+ package_data={
+ 'trytond.modules.party': info.get('xml', []) \
+ + info.get('translation', []) \
+ + ['label.odt'],
+ },
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Environment :: Plugins',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: Financial and Insurance Industry',
+ 'Intended Audience :: Legal Industry',
+ 'Intended Audience :: Manufacturing',
+ 'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'Natural Language :: English',
+ 'Natural Language :: French',
+ 'Natural Language :: German',
+ 'Natural Language :: Spanish',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python',
+ 'Topic :: Office/Business',
+ ],
+ license='GPL-3',
+ install_requires=requires,
+ extras_require={
+ 'VAT': ['vatnumber'],
+ },
+)
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..bc87a4f
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,4 @@
+#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 test_party import *
diff --git a/tests/test_party.py b/tests/test_party.py
new file mode 100644
index 0000000..6912d07
--- /dev/null
+++ b/tests/test_party.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+#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 sys, os
+DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
+ '..', '..', '..', '..', '..', 'trytond')))
+if os.path.isdir(DIR):
+ sys.path.insert(0, os.path.dirname(DIR))
+
+import unittest
+import trytond.tests
+from trytond.tests import RPCProxy, CONTEXT, SOCK
+
+
+class PartyTestCase(unittest.TestCase):
+ '''
+ Test Party module.
+ '''
+
+ def setUp(self):
+ trytond.tests.install_module('party')
+ self.category = RPCProxy('party.category')
+ self.party = RPCProxy('party.party')
+ self.address = RPCProxy('party.address')
+ self.country = RPCProxy('country.country')
+
+ def test0010category(self):
+ '''
+ Create category.
+ '''
+ category1_id = self.category.create({
+ 'name': 'Category 1',
+ }, CONTEXT)
+ self.assert_(category1_id)
+
+ def test0020category_recursion(self):
+ '''
+ Test category recursion.
+ '''
+ category1_id = self.category.search([
+ ('name', '=', 'Category 1'),
+ ], 0, 1, None, CONTEXT)[0]
+
+ category2_id = self.category.create({
+ 'name': 'Category 2',
+ 'parent': category1_id,
+ }, CONTEXT)
+ self.assert_(category2_id)
+
+ self.failUnlessRaises(Exception, self.category.write,
+ category1_id, {
+ 'parent': category2_id,
+ }, CONTEXT)
+
+ def test0030party(self):
+ '''
+ Create party.
+ '''
+ party1_id = self.party.create({
+ 'name': 'Party 1',
+ }, CONTEXT)
+ self.assert_(party1_id)
+
+ def test0040party_code(self):
+ '''
+ Test party code constraint.
+ '''
+ party1_id = self.party.search([], 0, 1, None, CONTEXT)[0]
+
+ code = self.party.read(party1_id, ['code'], CONTEXT)['code']
+
+ party2_id = self.party.create({
+ 'name': 'Party 2',
+ }, CONTEXT)
+
+ self.failUnlessRaises(Exception, self.party.write, party2_id, {
+ 'code': code,
+ }, CONTEXT)
+
+ def test0050address(self):
+ '''
+ Create address.
+ '''
+ party1_id = self.party.search([], 0, 1, None, CONTEXT)[0]
+ belgium_id = self.country.search([
+ ('code', '=', 'BE'),
+ ], 0, 1, None, CONTEXT)[0]
+
+ address1_id = self.address.create({
+ 'party': party1_id,
+ 'street': 'St sample, 15',
+ 'city': 'City',
+ 'country': belgium_id,
+ }, CONTEXT)
+ self.assert_(party1_id)
+
+def suite():
+ return unittest.TestLoader().loadTestsFromTestCase(PartyTestCase)
+
+if __name__ == '__main__':
+ suiteTrytond = trytond.tests.suite()
+ suiteParty = suite()
+ alltests = unittest.TestSuite([suiteTrytond, suiteParty])
+ unittest.TextTestRunner(verbosity=2).run(alltests)
+ SOCK.disconnect()
diff --git a/trytond_party.egg-info/PKG-INFO b/trytond_party.egg-info/PKG-INFO
new file mode 100644
index 0000000..c2800db
--- /dev/null
+++ b/trytond_party.egg-info/PKG-INFO
@@ -0,0 +1,24 @@
+Metadata-Version: 1.0
+Name: trytond-party
+Version: 1.0.0
+Summary: Define parties, addresses and co.
+Home-page: http://www.tryton.org/
+Author: B2CK
+Author-email: info at b2ck.com
+License: GPL-3
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Plugins
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Financial and Insurance Industry
+Classifier: Intended Audience :: Legal Industry
+Classifier: Intended Audience :: Manufacturing
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: English
+Classifier: Natural Language :: French
+Classifier: Natural Language :: German
+Classifier: Natural Language :: Spanish
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Office/Business
diff --git a/trytond_party.egg-info/SOURCES.txt b/trytond_party.egg-info/SOURCES.txt
new file mode 100644
index 0000000..9802c27
--- /dev/null
+++ b/trytond_party.egg-info/SOURCES.txt
@@ -0,0 +1,28 @@
+CHANGELOG
+COPYRIGHT
+INSTALL
+LICENSE
+MANIFEST.in
+README
+address.xml
+category.xml
+contact_mechanism.xml
+de_DE.csv
+es_ES.csv
+fr_FR.csv
+label.odt
+party.xml
+setup.py
+./__init__.py
+./__tryton__.py
+./address.py
+./category.py
+./contact_mechanism.py
+./party.py
+tests/__init__.py
+tests/test_party.py
+trytond_party.egg-info/PKG-INFO
+trytond_party.egg-info/SOURCES.txt
+trytond_party.egg-info/dependency_links.txt
+trytond_party.egg-info/requires.txt
+trytond_party.egg-info/top_level.txt
\ No newline at end of file
diff --git a/trytond_party.egg-info/dependency_links.txt b/trytond_party.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trytond_party.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/trytond_party.egg-info/requires.txt b/trytond_party.egg-info/requires.txt
new file mode 100644
index 0000000..b9524f8
--- /dev/null
+++ b/trytond_party.egg-info/requires.txt
@@ -0,0 +1,6 @@
+trytond_country
+trytond >= 1.0
+trytond < 1.1
+
+[VAT]
+vatnumber
\ No newline at end of file
diff --git a/trytond_party.egg-info/top_level.txt b/trytond_party.egg-info/top_level.txt
new file mode 100644
index 0000000..93df119
--- /dev/null
+++ b/trytond_party.egg-info/top_level.txt
@@ -0,0 +1 @@
+trytond
--
tryton-modules-party
More information about the tryton-debian-vcs
mailing list