Browse Source

9.0 partner relations v8api (#304)

[MIG] partner_relations 
* New API.
* Rename module partner_relations to partner_multi_relation.
* More test
* View adaptations
pull/322/head
Ronald Portier 8 years ago
committed by Pedro M. Baeza
parent
commit
043693c078
  1. 0
      partner_multi_relation/README.rst
  2. 5
      partner_multi_relation/__init__.py
  3. 26
      partner_multi_relation/__openerp__.py
  4. 118
      partner_multi_relation/data/demo.xml
  5. 431
      partner_multi_relation/i18n/da.po
  6. 431
      partner_multi_relation/i18n/de.po
  7. 277
      partner_multi_relation/i18n/es.po
  8. 430
      partner_multi_relation/i18n/fi.po
  9. 263
      partner_multi_relation/i18n/fr.po
  10. 432
      partner_multi_relation/i18n/it.po
  11. 549
      partner_multi_relation/i18n/nl.po
  12. 521
      partner_multi_relation/i18n/partner_multi_relation.pot
  13. 261
      partner_multi_relation/i18n/pt_BR.po
  14. 263
      partner_multi_relation/i18n/sl.po
  15. 8
      partner_multi_relation/models/__init__.py
  16. 172
      partner_multi_relation/models/res_partner.py
  17. 156
      partner_multi_relation/models/res_partner_relation.py
  18. 345
      partner_multi_relation/models/res_partner_relation_all.py
  19. 175
      partner_multi_relation/models/res_partner_relation_type.py
  20. 127
      partner_multi_relation/models/res_partner_relation_type_selection.py
  21. 0
      partner_multi_relation/security/ir.model.access.csv
  22. 0
      partner_multi_relation/static/description/icon.png
  23. 7
      partner_multi_relation/tests/__init__.py
  24. 280
      partner_multi_relation/tests/test_partner_relation.py
  25. 241
      partner_multi_relation/tests/test_partner_relation_all.py
  26. 113
      partner_multi_relation/tests/test_partner_relation_common.py
  27. 76
      partner_multi_relation/tests/test_partner_search.py
  28. 2
      partner_multi_relation/views/menu.xml
  29. 42
      partner_multi_relation/views/res_partner.xml
  30. 96
      partner_multi_relation/views/res_partner_relation_all.xml
  31. 23
      partner_multi_relation/views/res_partner_relation_type.xml
  32. 22
      partner_relations/__init__.py
  33. 56
      partner_relations/__openerp__.py
  34. 38
      partner_relations/data/demo.xml
  35. 408
      partner_relations/i18n/da.po
  36. 407
      partner_relations/i18n/nl.po
  37. 376
      partner_relations/i18n/partner_relations.pot
  38. 39
      partner_relations/model/__init__.py
  39. 320
      partner_relations/model/res_partner.py
  40. 376
      partner_relations/model/res_partner_relation.py
  41. 237
      partner_relations/model/res_partner_relation_all.py
  42. 70
      partner_relations/model/res_partner_relation_type.py
  43. 175
      partner_relations/model/res_partner_relation_type_selection.py
  44. 22
      partner_relations/test/test_allow.yml
  45. 1
      partner_relations/tests/__init__.py
  46. 80
      partner_relations/tests/test_partner_relations.py
  47. 97
      partner_relations/view/res_partner_relation.xml
  48. 92
      partner_relations/view/res_partner_relation_all.xml

0
partner_relations/README.rst → partner_multi_relation/README.rst

5
partner_multi_relation/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2013-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
from . import tests

26
partner_multi_relation/__openerp__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# © 2013-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Partner relations",
"version": "9.0.1.1.1",
"author": "Therp BV,Camptocamp,Odoo Community Association (OCA)",
"complexity": "normal",
"category": "Customer Relationship Management",
"license": "AGPL-3",
"depends": [
'base',
],
"demo": [
"data/demo.xml",
],
"data": [
"views/res_partner_relation_all.xml",
'views/res_partner.xml',
'views/res_partner_relation_type.xml',
'views/menu.xml',
'security/ir.model.access.csv',
],
"auto_install": False,
"installable": True,
}

118
partner_multi_relation/data/demo.xml

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<!-- Added partner categories and partners to this file, because it
turned out to be a bad idea to rely on demo data in base module,
that can change from release to release. Only dependency on
countries remain. They are less likely to change/disappear.
-->
<!-- Partner relation types -->
<record id="rel_type_assistant" model="res.partner.relation.type">
<field name="name">Is assistant of</field>
<field name="name_inverse">Has assistant</field>
<field name="contact_type_left">p</field>
<field name="contact_type_right">p</field>
</record>
<record id="rel_type_competitor" model="res.partner.relation.type">
<field name="name">Is competitor of</field>
<field name="name_inverse">Is competitor of</field>
<field name="contact_type_left">c</field>
<field name="contact_type_right">c</field>
<field name="is_symmetric" eval="True" />
</record>
<record id="rel_type_has_worked_for" model="res.partner.relation.type">
<field name="name">Has worked for</field>
<field name="name_inverse">Has former employee</field>
<field name="contact_type_left">p</field>
<field name="contact_type_right">c</field>
</record>
<!-- Categories -->
<record id="res_partner_category_pmr_0" model="res.partner.category">
<field name="name">Washing Companies</field>
</record>
<record id="res_partner_category_pmr_4" model="res.partner.category">
<field name="name">Washing Gold</field>
<field name="parent_id" ref="res_partner_category_pmr_0"/>
</record>
<record id="res_partner_category_pmr_5" model="res.partner.category">
<field name="name">Washing Silver</field>
<field name="parent_id" ref="res_partner_category_pmr_0"/>
</record>
<record id="res_partner_category_pmr_11" model="res.partner.category">
<field name="name">Washing Services</field>
<field name="parent_id" ref="res_partner_category_pmr_0"/>
</record>
<!-- Partners -->
<record id="res_partner_pmr_great" model="res.partner">
<field name="name">Great Washing Powder Company</field>
<field
name="category_id"
eval="[(6, 0, [ref('res_partner_category_pmr_11'), ref('res_partner_category_pmr_4')])]"
/>
<field name="supplier">1</field>
<field name="customer">1</field>
<field name="is_company">1</field>
<field name="city">Le Bourget du Lac</field>
<field name="zip">73377</field>
<field name="phone">+33 4 49 23 44 54</field>
<field name="country_id" ref="base.fr"/>
<field name="street">93, Press Avenue</field>
<field name="email">great@yourcompany.example.com</field>
<field name="website">http://www.great.com</field>
</record>
<record id="res_partner_pmr_best" model="res.partner">
<field name="name">Best Washing Powder Company</field>
<field
name="category_id"
eval="[(6, 0, [ref('res_partner_category_pmr_4'), ref('res_partner_category_pmr_11')])]"
/>
<field name="supplier">1</field>
<field name="is_company">1</field>
<field name="city">Champs sur Marne</field>
<field name="zip">77420</field>
<field name="country_id" ref="base.fr"/>
<field name="email">best@yourcompany.example.com</field>
<field name="phone">+33 1 64 61 04 01</field>
<field name="street">12 rue Albert Einstein</field>
<field name="website">http://www.best.com/</field>
</record>
<record id="res_partner_pmr_super" model="res.partner">
<field name="name">Super Washing Powder Company</field>
<field
name="category_id"
eval="[(6,0,[ref('res_partner_category_pmr_5')])]"
/>
<field name="supplier">1</field>
<field eval="1" name="customer"/>
<field name="is_company">1</field>
<field name="street">3rd Floor, Room 3-C,</field>
<field name="street2">Carretera Panamericana, Km 1, Urb. Delgado Chalbaud</field>
<field name="city">Caracas</field>
<field name="zip">1090</field>
<field name="email">super@yourcompany.example.com</field>
<field name="phone">+58 212 681 0538</field>
<field name="country_id" ref="base.ve"/>
<field name="website">super.com</field>
</record>
<!-- Relations -->
<record id="rel_1" model="res.partner.relation">
<field name="left_partner_id" ref="res_partner_pmr_great" />
<field name="right_partner_id" ref="res_partner_pmr_super" />
<field name="type_id" ref="rel_type_competitor" />
</record>
<record id="rel_2" model="res.partner.relation">
<field name="left_partner_id" ref="res_partner_pmr_best" />
<field name="right_partner_id" ref="res_partner_pmr_super" />
<field name="type_id" ref="rel_type_competitor" />
</record>
<record id="rel_3" model="res.partner.relation">
<field name="left_partner_id" ref="res_partner_pmr_great" />
<field name="right_partner_id" ref="res_partner_pmr_best" />
<field name="type_id" ref="rel_type_competitor" />
</record>
</data>
</openerp>

431
partner_multi_relation/i18n/da.po

@ -0,0 +1,431 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_multi_relation
#
# Translators:
# Hans Henrik Gabelgaard <hhg@gabelgaard.org>, 2015
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-06 15:15+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Danish (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Aktiv"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Virksomhed"
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Aktuel partner"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Navn"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partner"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr ""

431
partner_multi_relation/i18n/de.po

@ -0,0 +1,431 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_multi_relation
#
# Translators:
# Rudolf Schnapka <rs@techno-flex.de>, 2015-2016
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-06 15:15+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr "<p class=\"oe_view_nocontent_create\">\n Aufzeichnen und Beobachten der Beziehungen des Partners. Beziehungen mit anderen Partnern können entweder direkt oder rückwirkend hergestellt werden.\n </p>\n "
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Aktiv"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr "Alle (direkten und rückwirkenden) Beziehungen zwischen Partnern"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr "Alle Beziehungsarten"
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr "Alle Beziehungen mit diesem Partner"
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr "Erlaube beide Seiten gleich zu sein"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Unternehmen"
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "erstellt von"
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "erstellt am"
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Aktueller Partner"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr "Kategorie des aktuellen Datensatzes"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr "Partnerart des aktuellen Datensatzes"
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr "Zielpartner"
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr "Enddatum"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Gruppieren"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr "Hat Assistent"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr "Hat ehemaligen Mitarbeiter"
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr "Hat Beziehungsart"
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr "Hat Beziehung mit"
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr "Hat Beziehung mit Partner der Kategorie"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr "Hat gearbeitet für"
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr "Umgekehrte Bezeichnung"
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr "Art der Umkehrung"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr "Ist Assistent von"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr "Ist Mitbewerber von"
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "zuletzt aktualisiert von"
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "zuletzt aktualisiert am"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr "Linker Partner"
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr "Art des linken Partners"
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr "Kategorie des linken Partners"
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr "Art des linken Partners"
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr "Linker Zweig der Beziehung"
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Name"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr "Anderer Partner"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr "Kategorie des anderen Satzes"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr "Partnerart des anderen Satzes"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partner"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr "Partnerbeziehung"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr "Art der Partnerbeziehung"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr "Partnerbeziehungen"
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr "Arten von Partnerbeziehungen"
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr "Partnerart"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr "Partnerbeziehung"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr "Partner dürfen nicht mit sich selbst in Beziehung stehen."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr "Person"
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr "Satzart"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr "Satzart"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr "Partner mit Beziehung"
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr "Beziehung"
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr "Art der Beziehung"
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr "Beziehung zulässig"
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr "Beziehungen"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr "Art der Beziehung"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr "Rechter Partner"
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr "Art des rechten Partners"
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr "Kategorie des rechten Partners"
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr "Art des rechten Partners"
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr "Rechter Zweig der Beziehung"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr "Suche in Beziehungen"
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr "Zeige Beziehungen des Partners"
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr "Zeige Partner"
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr "Partnerentstehung"
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr "Anfangsdatum"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr "Der %s Partner ist für diese Beziehungsart nicht geeignet."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr "Das Anfangsdatum darf nicht nach dem Enddatum liegen."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr "Es gibt bereits eine ähnliche Beziehung mit überlappenden Daten"
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr "Art"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr "Nicht unterstützter Such-Operand \"%s\""

277
partner_relations/i18n/es.po → partner_multi_relation/i18n/es.po

@ -1,15 +1,17 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
# * partner_multi_relation
#
# Translators:
# Iván Todorovich <ivan.todorovich@gmail.com>, 2015
# Oihane Crucelaegui <oihanecruce@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-23 21:40+0000\n"
"PO-Revision-Date: 2015-09-18 15:11+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"POT-Creation-Date: 2016-07-25 11:58+0000\n"
"PO-Revision-Date: 2016-07-14 09:06+0000\n"
"Last-Translator: Oihane Crucelaegui <oihanecruce@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -17,9 +19,9 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
@ -27,371 +29,394 @@ msgid ""
" "
msgstr "<p class=\"oe_view_nocontent_create\">\n Registro y seguimiento de las relaciones de sus empresas. Las relaciones pueden estar vinculadas a otras empresas con un tipo de relación directa o inversamente.\n </p>\n "
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Activo"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr "Todas (no-inversas + inversas) las relaciones entre empresas"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr "Todos los tipos de relaciones"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr "Todas las relaciones con la empresa actual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
msgstr "Permitir que ambos lados sean iguales"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:68
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Empresa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Empresa actual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr "Etiqueta del registro actual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr "Tipo de empresa del registro actual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr "Empresa destino"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr "Fecha fin"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Agrupar por"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr ""
msgstr "Tiene asistente"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
msgstr "Tiene ex-empleado"
#. module: partner_relations
#: field:res.partner,search_relation_id:0
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr "Tiene una relación de tipo"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr "Tiene una relación con"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr "Tiene una relación con las empresas con la etiqueta"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
msgstr "Ha trabajado para"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr "Nombre inverso"
#. module: partner_relations
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr "Tipo inverso"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr ""
msgstr "Es asistente de"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_competitor
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr ""
msgstr "Es competidor de"
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr "Empresa izquierda"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr "Tipo de empresa izquierda"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr "Etiqueta empresa izquierda"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr "Tipo de empresa izquierda"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr "Lado izquierdo de la relación"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Nombre"
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr "Otra empresa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr "Etiqueta del otro registro"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr "Tipo de empresa del otro registro"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Empresa"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr "Relación entre empresas"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr "Tipo de relación entre empresas"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr "Relaciones entre empresas"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr "Tipos de relaciones entre empresas"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr "Tipo de empresa"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr "Relación de empresa"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:301
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr "Partners cannot have a relation with themselves."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:69
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr "Contacto"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr "Tipo de registro"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr "Tipo de registro"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:370
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr "Empresas relacionadas"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr "Relación"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr "Tipo de relación"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr "Relación válida"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr "Relaciones"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr "Tipo de relación"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr "Empresa derecha"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr "Tipo de empresa derecha"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr "Etiqueta empresa derecha"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr "Tipo empresa derecha"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr "Lado derecho de la relación"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr "Buscar relaciones"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr "Mostrar la relaiones de la empresa"
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr "Mostrar empresas"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr "Empresa origen"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr "Fecha inicio"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:287
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr "La empresa %s no aplica para este tipo de relación"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:254
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr "La fecha de inicio no puede ser posterior a la fecha de fin."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:329
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr "Hay una relación similar que se solapa en fechas"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
@ -400,8 +425,8 @@ msgstr "Hay una relación similar que se solapa en fechas"
msgid "Type"
msgstr "Tipo"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr "Operando de búsqueda no soportado: \"%s\""

430
partner_multi_relation/i18n/fi.po

@ -0,0 +1,430 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_multi_relation
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-06 15:15+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Finnish (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Luonut"
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Luotu"
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Viimeksi päivitetty"
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Viimeksi päivittänyt"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Nimi"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Kumppani"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr ""

263
partner_relations/i18n/fr.po → partner_multi_relation/i18n/fr.po

@ -1,15 +1,17 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
# * partner_multi_relation
#
# Translators:
# Bruno JOLIVEAU, 2015
# Bruno JOLIVEAU, 2015
# Etienne Ferriere <etienne.ferriere@xcg-consulting.fr>, 2016
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-23 21:40+0000\n"
"PO-Revision-Date: 2015-09-18 15:11+0000\n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-06 15:15+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
@ -18,9 +20,9 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
@ -28,371 +30,394 @@ msgid ""
" "
msgstr "<p class=\"oe_view_nocontent_create\">\n Enregistrer et suivre les relations de vos partenaires. Les relations peuvent être liés avec d'autre partenaires avec un type, soit directement ou inversement.\n </p>\n "
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Actif"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr "Tous les relations (non-inverse et inverse) entre partenaires"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr "Tous types de relations"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr "Tous les relations avec le partenaire courant"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:68
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Société"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Partenaire courant"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr "Catégorie de l'enregistrement courante"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr "Type de partenaire de l'enregistrement courrant"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr "Partenaire destinataire"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr "Date de fin"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Regrouper par"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_id:0
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr "A une relation de type"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr "A une relation avec"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr "A une relation avec un partenaire dans la catégorie"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "Id"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr "Nom inverse"
#. module: partner_relations
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr "Type inverse"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_competitor
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Dernière modification par"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr "Partenaire de gauche"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr "Type de partenaire de gauche"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr "Catégorie du partenaire de gauche"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr "Type de partenaire de gauche"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr "Côté gauche de la relation"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Nom"
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr "L'autre partenaire"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr "La catégorie de l'enregistrement de gauche"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr "Le type de l'enregistrement de gauche"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partenaire"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr "Relation du partenaire"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr "Type de relation de partenaire"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr "Relations du partenaire"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr "Types de relation de partenaire"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr "Type de partenaire"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr "Relation du partenaire"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:301
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr "Un partenaire ne peut pas avoir une relation avec soi-même."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:69
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr "Personne"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr "Type d'enregistrement"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr "Type d'enregistrement"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:370
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr "Partenaires liés"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr "Relation"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr "Type de relation"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr "Relation valide"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr "Relations"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr "Type de relation"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr "Partenaire de droite"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr "Type du partenaire de droite"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr "Catégorie du partenaire de droite"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr "Type du partenaire de droite"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr "Côté droite de la relation"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr "Rechercher les relations"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr "Montrer les relations du partenaire"
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr "Montrer les partenaires"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr "Partenaire source"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr "Date de début"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:287
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr "Le partenaire %s n'es pas applicable pour cette type de relation."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:254
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr "La date de début ne peut pas être après la date de fin."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:329
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr "Il existe des dates en conflit des relations similaires."
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
@ -401,8 +426,8 @@ msgstr "Il existe des dates en conflit des relations similaires."
msgid "Type"
msgstr "Type"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr "Opérateur de recherche non-supporté « %s »"

432
partner_multi_relation/i18n/it.po

@ -0,0 +1,432 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_multi_relation
#
# Translators:
# Paolo Valier, 2016
# Paolo Valier, 2016
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-06 15:15+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Italian (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Attivo"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Creato da"
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "reato il"
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Raggruppa per"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Nome"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partner"
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr ""

549
partner_multi_relation/i18n/nl.po

@ -0,0 +1,549 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_multi_relation
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-02 12:39+0000\n"
"PO-Revision-Date: 2016-09-02 15:03+0200\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Dutch (http://www.transifex.com/oca/OCA-partner-contact-8-0/"
"language/nl/)\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 2.91.6\n"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:178
#, python-format
msgid "%s partner incompatible with relation type."
msgstr "%s relatie is onverenigbaar met gekozen connectietype."
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations "
"may\n"
" be linked to other partners with a type either directly\n"
" or inversely.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Onderhoud de connecties tussen uw relaties. Relaties mogen gekoppeld\n"
"worden zowel via een normale connectie, als met een omgekeerde\n"
"connectie.</p>"
#. module: partner_multi_relation
#: field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Actief"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr "Alle connecties tussen relaties (gewoon en omgekeerd)."
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr "Alle connectietypes"
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr "Alle connecties vanuit de huidige relatie"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:13
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "Allow existing relations that do not fit changed conditions"
msgstr ""
"Sta bestaande connecties toe die niet voldoen aan de gewijzigde criteria"
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Aangemaakt door"
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Aangemaakt op"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
msgid "Current record's category"
msgstr "Categorie van het huidige record"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr "Type van de huidige relatie"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:17
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "Delete relations that do not fit changed conditions"
msgstr "Verwijder connecties die niet voldoen aan de gewijzigde condities"
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr "Doel relatie"
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr "Te tonen naam"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:11
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "Do not allow change that will result in invalid relations"
msgstr "Sta geen wijziging toe die zal resulteren in ongeldige connecties"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:15
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "End relations per today, if they do not fit changed conditions"
msgstr ""
"Beëindig wijzigingen per vandaag indien ze niet voldoen aan de gewijzigde "
"condities"
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr "Einddatum"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:184
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:259
#, python-format
msgid "Error!"
msgstr "Fout!"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Groepeer op"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr "Heeft assistent"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr "Heeft voormalig werknemer"
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr "heeft connectie van type"
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr "Heeft connectie met"
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr "Heeft connectie met een relatie in de categorie"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr "Heeft gewerkt voor"
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Include past records"
msgstr "Inclusief beëindigde connecties"
#. module: partner_multi_relation
#: field:res.partner.relation.type,handle_invalid_onchange:0
msgid "Invalid relation handling"
msgstr "Afhandeling van ongeldige connecties"
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr "Omgekeerde naam"
#. module: partner_multi_relation
#: help:res.partner.relation.type.selection,is_inverse:0
msgid "Inverse relations are from right to left partner."
msgstr "Omgekeerde connecties zijn vanaf de rechter relatie naar de linker."
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr "Is assistent van"
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr "Is concurrent van"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,is_inverse:0
msgid "Is reverse type?"
msgstr "Is omgekeerd type?"
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr "Laatst bijgewerkt op"
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Laatst bijgewerkt door"
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Laatst bijgewerkt op"
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr "Categorie linkerrelatie"
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
msgid "Left partner to right partner"
msgstr "Van linker naar rechterrelatie"
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr "Type linkerrelatie"
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr "Linkerkant van relatie"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Left to right"
msgstr "Links naar rechts"
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Naam"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:181
#, python-format
msgid "No %s partner available for relation type."
msgstr "Geen %s relatie beschikbaar voor dit connectietype."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:256
#, python-format
msgid "No relation type available for selected partners."
msgstr "Geen connectietype beschikbaar voor verbinden van deze relaties."
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,this_partner_id:0
msgid "One Partner"
msgstr "De ene relatie"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:82
#, python-format
msgid "Organisation"
msgstr "Organisatie"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr "De andere relatie"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr "Categorie andere relatie"
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr "Type andere relatie"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation.all,any_partner_id:0
msgid "Partner"
msgstr "Relatie"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr "Type connectie"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr "Connecties"
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr "Connectietypes"
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
msgid "Partner relation"
msgstr "Connectie"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:115
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr "Relaties kunnen geen connectie met zichzelf hebben"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:83
#, python-format
msgid "Person"
msgstr "Persoon"
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Properties"
msgstr "Eigenschappen"
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr "Recordtype"
#. module: partner_multi_relation
#: help:res.partner.relation.all,active:0
msgid "Records with date_end in the past are inactive"
msgstr "Connecties met een datum in het verleden zijn inactief"
#. module: partner_multi_relation
#: field:res.partner.relation.type,allow_self:0
#: field:res.partner.relation.type.selection,allow_self:0
msgid "Reflexive"
msgstr "Wederkerig"
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr "Connectie"
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr "Aantal connecties"
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr "Type connectie"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:252
#, python-format
msgid "Relation type incompatible with selected partner(s)."
msgstr "Type connectie komt niet overeen met geselecteerde relatie(s)."
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr "Geldige connectie"
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
msgid "Relations"
msgstr "Connecties"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr "Type connectie"
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr "Categorie rechterrelatie"
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
msgid "Right partner to left partner"
msgstr "Rechter naar linkerrelatie"
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr "Type rechterrelatie"
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr "Rechterkant van de connectie"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Right to left"
msgstr "Rechts naar links"
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr "Zoek connecties"
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr "Toon connecties van relatie"
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr "Bron relatie"
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr "Datum ingang"
#. module: partner_multi_relation
#: field:res.partner.relation.type,is_symmetric:0
#: field:res.partner.relation.type.selection,is_symmetric:0
msgid "Symmetric"
msgstr "Symmetrisch"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:101
#, fuzzy, python-format
msgid "The %s partner does not have category %s."
msgstr "De %s relatie is niet geldig voor dit type connectie."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:95
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr "De %s relatie is niet geldig voor dit type connectie."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:61
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr "De ingangsdatum kan niet na de einddatum liggen."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:168
#, python-format
msgid ""
"There are already relations not satisfying the conditions for partner type "
"or category."
msgstr ""
"Er zijn al connecties die niet voldoen aan de criteria voor type relatie of "
"categorie."
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:154
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr "Er is al een gelijkaardige connectie met overlappende geldigheid"
#. module: partner_multi_relation
#: help:res.partner.relation.type,allow_self:0
msgid "This relation can be set up with the same partner left and right"
msgstr "Deze connectie kan een relatie met zichzelf verbinden"
#. module: partner_multi_relation
#: help:res.partner.relation.type,is_symmetric:0
msgid "This relation is the same from right to left as from left to right"
msgstr ""
"Deze connectie is van rechts naar links hetzelfde als van links naar rechts"
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr "Type"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:80
#: code:addons/partner_multi_relation/models/res_partner.py:121
#, python-format
msgid "Unsupported search operator \"%s\""
msgstr "Zoek operator \"%s\" wordt niet ondersteund "
#. module: partner_multi_relation
#: help:res.partner.relation.type,handle_invalid_onchange:0
msgid ""
"When adding relations criteria like partner type and category are checked.\n"
"However when you change the criteria, there might be relations that do not "
"fit the new criteria.\n"
"Specify how this situation should be handled."
msgstr ""
"Bij het aanmaken van connecties vinden controles plaats op type en categorie "
"van de relatie.\n"
"Echter, wanneer u de criteria verandert, dan kunnen er al connecties bestaan "
"die daar niet aan voldoen.\n"
"Geef aan hoe zo'n situatie moet worden afgehandeld. "
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:221
#, python-format
msgid "other"
msgstr "andere"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:215
#, python-format
msgid "this"
msgstr "deze"
#~ msgid "Company"
#~ msgstr "Bedrijf"

521
partner_multi_relation/i18n/partner_multi_relation.pot

@ -0,0 +1,521 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_multi_relation
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-02 12:39+0000\n"
"PO-Revision-Date: 2016-09-02 12:39+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:178
#, python-format
msgid "%s partner incompatible with relation type."
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may\n"
" be linked to other partners with a type either directly\n"
" or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,active:0
msgid "Active"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:13
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "Allow existing relations that do not fit changed conditions"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:17
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "Delete relations that do not fit changed conditions"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:11
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "Do not allow change that will result in invalid relations"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:15
#: selection:res.partner.relation.type,handle_invalid_onchange:0
#, python-format
msgid "End relations per today, if they do not fit changed conditions"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:184
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:259
#, python-format
msgid "Error!"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,id:0
#: field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Include past records"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,handle_invalid_onchange:0
msgid "Invalid relation handling"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_multi_relation
#: help:res.partner.relation.type.selection,is_inverse:0
msgid "Inverse relations are from right to left partner."
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,is_inverse:0
msgid "Is reverse type?"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
msgid "Left partner to right partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Left to right"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:181
#, python-format
msgid "No %s partner available for relation type."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:256
#, python-format
msgid "No relation type available for selected partners."
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,this_partner_id:0
msgid "One Partner"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:82
#, python-format
msgid "Organisation"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation.all,any_partner_id:0
msgid "Partner"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
msgid "Partner relation"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:115
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:83
#, python-format
msgid "Person"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Properties"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_multi_relation
#: help:res.partner.relation.all,active:0
msgid "Records with date_end in the past are inactive"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,allow_self:0
#: field:res.partner.relation.type.selection,allow_self:0
msgid "Reflexive"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:252
#, python-format
msgid "Relation type incompatible with selected partner(s)."
msgstr ""
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
msgid "Relations"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
msgid "Right partner to left partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Right to left"
msgstr ""
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.type,is_symmetric:0
#: field:res.partner.relation.type.selection,is_symmetric:0
msgid "Symmetric"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:101
#, python-format
msgid "The %s partner does not have category %s."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:95
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:61
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:168
#, python-format
msgid "There are already relations not satisfying the conditions for partner type or category."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:154
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_multi_relation
#: help:res.partner.relation.type,allow_self:0
msgid "This relation can be set up with the same partner left and right"
msgstr ""
#. module: partner_multi_relation
#: help:res.partner.relation.type,is_symmetric:0
msgid "This relation is the same from right to left as from left to right"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:80
#: code:addons/partner_multi_relation/models/res_partner.py:121
#, python-format
msgid "Unsupported search operator \"%s\""
msgstr ""
#. module: partner_multi_relation
#: help:res.partner.relation.type,handle_invalid_onchange:0
msgid "When adding relations criteria like partner type and category are checked.\n"
"However when you change the criteria, there might be relations that do not fit the new criteria.\n"
"Specify how this situation should be handled."
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:221
#, python-format
msgid "other"
msgstr ""
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_all.py:215
#, python-format
msgid "this"
msgstr ""

261
partner_relations/i18n/pt_BR.po → partner_multi_relation/i18n/pt_BR.po

@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
# * partner_multi_relation
#
# Translators:
# danimaribeiro <danimaribeiro@gmail.com>, 2015
@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-23 21:40+0000\n"
"PO-Revision-Date: 2015-09-18 15:11+0000\n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-06 15:15+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@ -19,9 +19,9 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
@ -29,371 +29,394 @@ msgid ""
" "
msgstr "<p class=\"oe_view_nocontent_create\">\nRegistre e mantenha registro das relações entre seus parceiros. Relações podem ser\nligações para outros parceiros com um tipo específico, tanto diretamente ou o inverso.\n</p>"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Ativo"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr "Todas (inversas e não-inversas) relações entre parceiros"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr "Todos os tipos de relação"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr "Todos os relacionamentos com o parceiro atual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:68
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Empresa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Criado por"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Criado em"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Parceiro atual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr "Categoria do registro atual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr "Tipo do parceiro registro atual"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr "Parceiro de destino"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr "Data fina"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Agrupar por"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr "Tem assistente"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr "Tem ex-empregado"
#. module: partner_relations
#: field:res.partner,search_relation_id:0
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr "Tem relação do tipo"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr "Tem relação com"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr "Tem relação com um parceiro na categoria"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr "Trabalhou para"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr "Nome inverso"
#. module: partner_relations
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr "Tipo inverso"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr "É assistente de "
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_competitor
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr "É competidor de"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Útima atualização por"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Útima atualização em"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr "Parceiro da esquerda"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr "Tipo parceiro da esquerda"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr "Categoria do parceiro da esquerda"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr "Tipo parceiro da esquerda"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr "Lado esquerdo da relação"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Nome"
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr "Outro parceiro"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr "Outra categoria de registro"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr "Outro tipo de registro de parceiro"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Parceiro"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr "Relacãos entre parceiros"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr "Tipo de relação entre parceiros"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr "Relacão entre parceiros"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr "Tipo de relação entre parceiros"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr "Tipo de parceiro"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr "Relação parceiro"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:301
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr "Parceiros não podem ter relacionamentos com ele mesmo."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:69
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr "Pessoa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr "Tipo de Registro"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr "Tipo de registro"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:370
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr "Parceiros relacionados"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr "Relação"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr ""
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr "Tipo de relação"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr "Relação válida"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr "Relações"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr "Tipo de relacionamento"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr "Parceiro da direita"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr "Tipo de parceiro da direita"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr "Categoria do parceiro da direita"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr "Tipo de parceiro da direita"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr "Lado direito da relação"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr "Buscar relações"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr "Mostrar relações do parceiro"
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr "Mostrar parceiros"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr "Parceiro de origem"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr "Data de inicio"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:287
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr "O parceiro %s não é aplicavel a este tipo de relação."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:254
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr "A data de inicio não pode ser após a data de fim."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:329
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr "Já existe uma relação similar com datas incompativeis."
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
@ -402,8 +425,8 @@ msgstr "Já existe uma relação similar com datas incompativeis."
msgid "Type"
msgstr "Tipo"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr "Operador de busca não suportado \"%s\""

263
partner_relations/i18n/sl.po → partner_multi_relation/i18n/sl.po

@ -1,15 +1,15 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
# * partner_multi_relation
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015-2016
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-23 21:40+0000\n"
"PO-Revision-Date: 2015-09-19 18:10+0000\n"
"POT-Creation-Date: 2016-05-07 07:18+0000\n"
"PO-Revision-Date: 2016-05-07 07:16+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
@ -18,9 +18,9 @@ msgstr ""
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_multi_relation.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
@ -28,371 +28,394 @@ msgid ""
" "
msgstr "<p class=\"oe_view_nocontent_create\">\n Beležite in sledite odnosom med partnerji. Odnosi se lahko povezani s partnerji direktno ali inverzno.\n </p>\n "
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Aktivno"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr "Vsi (ne inverzni in inverzni) odnosi med partnerji"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr "Vsi tipi odnosov"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr "Vsi odnosi s trenutnim partnerjem"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,allow_self:0
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr "Dovoli, da sta obe strani enaki"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:68
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Družba"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Ustvaril"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Ustvarjeno"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Trenutni partner"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr "Kategorija trenutnega zapisa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr "Tip partnerja na trenutnem zapisu"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr "Ciljni partner"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,display_name:0
#: field:res.partner.relation.all,display_name:0
#: field:res.partner.relation.type,display_name:0
#: field:res.partner.relation.type.selection,display_name:0
msgid "Display Name"
msgstr "Prikazni naziv"
#. module: partner_multi_relation
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr "Končni datum"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Group By"
msgstr "Združi po"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_assistant
msgid "Has assistant"
msgstr "Ima asistenta"
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_has_worked_for
msgid "Has former employee"
msgstr "Ima bivšega zaposlenega"
#. module: partner_relations
#: field:res.partner,search_relation_id:0
#. module: partner_multi_relation
#: field:res.partner,search_relation_type_id:0
msgid "Has relation of type"
msgstr "Ima odnos tipa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr "Je v odnosu z"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr "Je v odnosu s partnerjem kategorije"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_has_worked_for
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_has_worked_for
msgid "Has worked for"
msgstr "Je delal za"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr "Inverzni naziv"
#. module: partner_relations
#. module: partner_multi_relation
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr "Inverzni tip"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_assistant
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_assistant
msgid "Is assistant of"
msgstr "Je asistent"
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_competitor
#. module: partner_multi_relation
#: model:res.partner.relation.type,name:partner_multi_relation.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_multi_relation.rel_type_competitor
msgid "Is competitor of"
msgstr "Je konkurent"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,__last_update:0
#: field:res.partner.relation.all,__last_update:0
#: field:res.partner.relation.type,__last_update:0
#: field:res.partner.relation.type.selection,__last_update:0
msgid "Last Modified on"
msgstr "Zadnjič spremenjeno"
#. module: partner_multi_relation
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Left Partner"
msgstr "Levi partner"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr "Tip levega partnerja"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr "Kategorija levega partnerja"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr "Tip levega partnerja"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Left side of relation"
msgstr "Leva stran odnosa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Naziv"
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr "Drugi partner"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr "Kategorija drugega zapisa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr "Tip partnerja drugega zapisa"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner
#: field:res.partner.relation,any_partner_id:0
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partner"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.form_res_partner_relation
msgid "Partner Relation"
msgstr "Partnerski odnos"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr "Tip partnerskega odnosa"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.tree_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr "Partnerski odnosi"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr "Tipi partnerskih odnosov"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr "Tip partnerja"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
#. module: partner_multi_relation
#: model:ir.model,name:partner_multi_relation.model_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_multi_relation.tree_res_partner_relation_type
msgid "Partner relation"
msgstr "Partnerski odnos"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:301
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr "Partnerji ne morejo biti v odnosu sami s seboj."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:69
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr "Oseba"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr "Tip zapisa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr "Tip zapisa"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:370
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr "Povezani partnerji"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr "Odnos"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,relation_count:0
msgid "Relation Count"
msgstr "Števec relacij"
#. module: partner_multi_relation
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr "Tip odnosa"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr "Odnos veljaven"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_multi_relation.menu_res_partner_relation_sales
#: view:res.partner:partner_multi_relation.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr "Odnosi"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Relationship Type"
msgstr "Tip odnosa"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
msgid "Right Partner"
msgstr "Desni partner"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr "Tip desnega partnerja"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr "Kategorija desnega partnerja"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr "Tip desnega partnerja"
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#. module: partner_multi_relation
#: view:res.partner.relation.type:partner_multi_relation.form_res_partner_relation_type
msgid "Right side of relation"
msgstr "Desna stran odnosa"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#. module: partner_multi_relation
#: view:res.partner.relation:partner_multi_relation.search_res_partner_relation
#: view:res.partner.relation.all:partner_multi_relation.search_res_partner_relation_all
msgid "Search Relations"
msgstr "Iskanje odnosov"
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
#. module: partner_multi_relation
#: model:ir.actions.act_window,name:partner_multi_relation.action_show_partner_multi_relation
msgid "Show partner's relations"
msgstr "Prikaz odnosov partnerja"
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
#. module: partner_multi_relation
#: model:ir.actions.server,name:partner_multi_relation.action_show_right_relation_partners
msgid "Show partners"
msgstr "Prikaz partnerjev"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr "Izvorni partner"
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr "Začetni datum"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:287
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr "Partner %s ni ustrezen za ta tip odnosa."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:254
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr "Začetni datum ne more biti za končnim datumom."
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:329
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr "Podoben odnos s prekrivajočimi se datumi že obstaja."
#. module: partner_relations
#. module: partner_multi_relation
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
@ -401,8 +424,8 @@ msgstr "Podoben odnos s prekrivajočimi se datumi že obstaja."
msgid "Type"
msgstr "Tip"
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#. module: partner_multi_relation
#: code:addons/partner_multi_relation/models/res_partner.py:122
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr "Nepodprt iskalni operand \"%s\""

8
partner_multi_relation/models/__init__.py

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# © 2013-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import res_partner
from . import res_partner_relation
from . import res_partner_relation_type
from . import res_partner_relation_all
from . import res_partner_relation_type_selection

172
partner_multi_relation/models/res_partner.py

@ -0,0 +1,172 @@
# -*- coding: utf-8 -*-
# © 2013-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
"""Support connections between partners."""
import numbers
from openerp import _, api, exceptions, fields, models
from openerp.osv.expression import is_leaf, OR, FALSE_LEAF
class ResPartner(models.Model):
"""Extend partner with relations and allow to search for relations
in various ways.
"""
# pylint: disable=invalid-name
# pylint: disable=no-member
_inherit = 'res.partner'
relation_count = fields.Integer(
string='Relation Count',
compute="_compute_relation_count"
)
relation_all_ids = fields.One2many(
comodel_name='res.partner.relation.all',
inverse_name='this_partner_id',
string='All relations with current partner',
auto_join=True,
selectable=False,
copy=False,
)
search_relation_type_id = fields.Many2one(
comodel_name='res.partner.relation.type.selection',
compute=lambda self: None,
search='_search_relation_type_id',
string='Has relation of type',
)
search_relation_partner_id = fields.Many2one(
comodel_name='res.partner',
compute=lambda self: None,
search='_search_related_partner_id',
string='Has relation with',
)
search_relation_date = fields.Date(
compute=lambda self: None,
search='_search_relation_date',
string='Relation valid',
)
search_relation_partner_category_id = fields.Many2one(
comodel_name='res.partner.category',
compute=lambda self: None,
search='_search_related_partner_category_id',
string='Has relation with a partner in category',
)
@api.depends("relation_all_ids")
def _compute_relation_count(self):
"""Count the number of relations this partner has for Smart Button
Don't count inactive relations.
"""
for rec in self:
rec.relation_count = len(rec.relation_all_ids.filtered('active'))
@api.model
def _search_relation_type_id(self, operator, value):
"""Search partners based on their type of relations."""
result = []
SUPPORTED_OPERATORS = (
'=',
'!=',
'like',
'not like',
'ilike',
'not ilike',
'in',
'not in',
)
if operator not in SUPPORTED_OPERATORS:
raise exceptions.ValidationError(
_('Unsupported search operator "%s"') % operator)
type_selection_model = self.env['res.partner.relation.type.selection']
relation_type_selection = []
if operator == '=' and isinstance(value, numbers.Integral):
relation_type_selection += type_selection_model.browse(value)
elif operator == '!=' and isinstance(value, numbers.Integral):
relation_type_selection = type_selection_model.search([
('id', operator, value),
])
else:
relation_type_selection = type_selection_model.search([
'|',
('type_id.name', operator, value),
('type_id.name_inverse', operator, value),
])
if not relation_type_selection:
result = [FALSE_LEAF]
for relation_type in relation_type_selection:
result = OR([
result,
[
('relation_all_ids.type_selection_id.id', '=',
relation_type.id),
],
])
return result
@api.model
def _search_related_partner_id(self, operator, value):
"""Find partner based on relation with other partner."""
# pylint: disable=no-self-use
return [
('relation_all_ids.other_partner_id', operator, value),
]
@api.model
def _search_relation_date(self, operator, value):
"""Look only for relations valid at date of search."""
# pylint: disable=no-self-use
return [
'&',
'|',
('relation_all_ids.date_start', '=', False),
('relation_all_ids.date_start', '<=', value),
'|',
('relation_all_ids.date_end', '=', False),
('relation_all_ids.date_end', '>=', value),
]
@api.model
def _search_related_partner_category_id(self, operator, value):
"""Search for partner related to a partner with search category."""
# pylint: disable=no-self-use
return [
('relation_all_ids.other_partner_id.category_id', operator, value),
]
@api.model
def search(self, args, offset=0, limit=None, order=None, count=False):
"""Inject searching for current relation date if we search for
relation properties and no explicit date was given.
"""
# pylint: disable=arguments-differ
# pylint: disable=no-value-for-parameter
date_args = []
for arg in args:
if is_leaf(arg) and arg[0].startswith('search_relation'):
if arg[0] == 'search_relation_date':
date_args = []
break
if not date_args:
date_args = [
('search_relation_date', '=', fields.Date.today()),
]
# because of auto_join, we have to do the active test by hand
active_args = []
if self.env.context.get('active_test', True):
for arg in args:
if is_leaf(arg) and arg[0].startswith('search_relation'):
active_args = [('relation_all_ids.active', '=', True)]
break
return super(ResPartner, self).search(
args + date_args + active_args, offset=offset, limit=limit,
order=order, count=count)
@api.multi
def get_partner_type(self):
"""Get partner type for relation.
:return: 'c' for company or 'p' for person
:rtype: str
"""
self.ensure_one()
return 'c' if self.is_company else 'p'

156
partner_multi_relation/models/res_partner_relation.py

@ -0,0 +1,156 @@
# -*- coding: utf-8 -*-
# © 2013-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
"""Store relations (connections) between partners."""
from openerp import _, api, fields, models
from openerp.exceptions import ValidationError
class ResPartnerRelation(models.Model):
"""Model res.partner.relation is used to describe all links or relations
between partners in the database.
This model is actually only used to store the data. The model
res.partner.relation.all, based on a view that contains each record
two times, once for the normal relation, once for the inverse relation,
will be used to maintain the data.
"""
_name = 'res.partner.relation'
_description = 'Partner relation'
left_partner_id = fields.Many2one(
comodel_name='res.partner',
string='Source Partner',
required=True,
auto_join=True,
ondelete='cascade',
)
right_partner_id = fields.Many2one(
comodel_name='res.partner',
string='Destination Partner',
required=True,
auto_join=True,
ondelete='cascade',
)
type_id = fields.Many2one(
comodel_name='res.partner.relation.type',
string='Type',
required=True,
auto_join=True,
)
date_start = fields.Date('Starting date')
date_end = fields.Date('Ending date')
@api.model
def create(self, vals):
"""Override create to correct values, before being stored."""
context = self.env.context
if 'left_partner_id' not in vals and context.get('active_id'):
vals['left_partner_id'] = context.get('active_id')
return super(ResPartnerRelation, self).create(vals)
@api.one
@api.constrains('date_start', 'date_end')
def _check_dates(self):
"""End date should not be before start date, if not filled
:raises ValidationError: When constraint is violated
"""
if (self.date_start and self.date_end and
self.date_start > self.date_end):
raise ValidationError(
_('The starting date cannot be after the ending date.')
)
@api.one
@api.constrains('left_partner_id', 'type_id')
def _check_partner_left(self):
"""Check left partner for required company or person
:raises ValidationError: When constraint is violated
"""
self._check_partner("left")
@api.one
@api.constrains('right_partner_id', 'type_id')
def _check_partner_right(self):
"""Check right partner for required company or person
:raises ValidationError: When constraint is violated
"""
self._check_partner("right")
@api.one
def _check_partner(self, side):
"""Check partner for required company or person, and for category
:param str side: left or right
:raises ValidationError: When constraint is violated
"""
assert side in ['left', 'right']
ptype = getattr(self.type_id, "contact_type_%s" % side)
partner = getattr(self, '%s_partner_id' % side)
if ((ptype == 'c' and not partner.is_company) or
(ptype == 'p' and partner.is_company)):
raise ValidationError(
_('The %s partner is not applicable for this relation type.') %
side
)
category = getattr(self.type_id, "partner_category_%s" % side)
if category and category.id not in partner.category_id.ids:
raise ValidationError(
_('The %s partner does not have category %s.') %
(side, category.name)
)
@api.one
@api.constrains('left_partner_id', 'right_partner_id')
def _check_not_with_self(self):
"""Not allowed to link partner to same partner
:raises ValidationError: When constraint is violated
"""
if self.left_partner_id == self.right_partner_id:
if not (self.type_id and self.type_id.allow_self):
raise ValidationError(
_('Partners cannot have a relation with themselves.')
)
@api.one
@api.constrains(
'left_partner_id',
'type_id',
'right_partner_id',
'date_start',
'date_end',
)
def _check_relation_uniqueness(self):
"""Forbid multiple active relations of the same type between the same
partners
:raises ValidationError: When constraint is violated
"""
# pylint: disable=no-member
# pylint: disable=no-value-for-parameter
domain = [
('type_id', '=', self.type_id.id),
('id', '!=', self.id),
('left_partner_id', '=', self.left_partner_id.id),
('right_partner_id', '=', self.right_partner_id.id),
]
if self.date_start:
domain += [
'|',
('date_end', '=', False),
('date_end', '>=', self.date_start),
]
if self.date_end:
domain += [
'|',
('date_start', '=', False),
('date_start', '<=', self.date_end),
]
if self.search(domain):
raise ValidationError(
_('There is already a similar relation with overlapping dates')
)

345
partner_multi_relation/models/res_partner_relation_all.py

@ -0,0 +1,345 @@
# -*- coding: utf-8 -*-
# © 2014-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
"""Abstract model to show each relation from two sides."""
from psycopg2.extensions import AsIs
from openerp import _, api, fields, models
from openerp.tools import drop_view_if_exists
PADDING = 10
_RECORD_TYPES = [
('a', 'Left partner to right partner'),
('b', 'Right partner to left partner'),
]
class ResPartnerRelationAll(models.AbstractModel):
"""Abstract model to show each relation from two sides."""
_auto = False
_log_access = False
_name = 'res.partner.relation.all'
_description = 'All (non-inverse + inverse) relations between partners'
_order = (
'this_partner_id, type_selection_id,'
'date_end desc, date_start desc'
)
_additional_view_fields = []
"""append to this list if you added fields to res_partner_relation that
you need in this model and related fields are not adequate (ie for sorting)
You must use the same name as in res_partner_relation.
Don't overwrite this list in your declaration but append in _auto_init:
def _auto_init(self, cr, context=None):
self._additional_view_fields.append('my_field')
return super(ResPartnerRelationAll, self)._auto_init(
cr, context=context)
my_field = fields...
"""
this_partner_id = fields.Many2one(
comodel_name='res.partner',
string='One Partner',
required=True,
)
other_partner_id = fields.Many2one(
comodel_name='res.partner',
string='Other Partner',
required=True,
)
type_selection_id = fields.Many2one(
comodel_name='res.partner.relation.type.selection',
string='Relation Type',
required=True,
)
relation_id = fields.Many2one(
comodel_name='res.partner.relation',
string='Relation',
readonly=True,
)
record_type = fields.Selection(
selection=_RECORD_TYPES,
string='Record Type',
readonly=True,
)
date_start = fields.Date('Starting date')
date_end = fields.Date('Ending date')
active = fields.Boolean(
string='Active',
help="Records with date_end in the past are inactive",
)
any_partner_id = fields.Many2many(
comodel_name='res.partner',
string='Partner',
compute=lambda self: None,
search='_search_any_partner_id'
)
def _auto_init(self, cr, context=None):
drop_view_if_exists(cr, self._table)
additional_view_fields = ','.join(self._additional_view_fields)
additional_view_fields = (',' + additional_view_fields)\
if additional_view_fields else ''
cr.execute(
"""\
CREATE OR REPLACE VIEW %(table)s AS
SELECT
rel.id * %(padding)s AS id,
rel.id AS relation_id,
cast('a' AS CHAR(1)) AS record_type,
rel.left_partner_id AS this_partner_id,
rel.right_partner_id AS other_partner_id,
rel.date_start,
rel.date_end,
(rel.date_end IS NULL OR rel.date_end >= current_date) AS active,
rel.type_id * %(padding)s AS type_selection_id
%(additional_view_fields)s
FROM res_partner_relation rel
UNION SELECT
rel.id * %(padding)s + 1,
rel.id,
CAST('b' AS CHAR(1)),
rel.right_partner_id,
rel.left_partner_id,
rel.date_start,
rel.date_end,
rel.date_end IS NULL OR rel.date_end >= current_date,
CASE
WHEN typ.is_symmetric THEN rel.type_id * %(padding)s
ELSE rel.type_id * %(padding)s + 1
END
%(additional_view_fields)s
FROM res_partner_relation rel
JOIN res_partner_relation_type typ ON (rel.type_id = typ.id)
""",
{
'table': AsIs(self._table),
'padding': PADDING,
'additional_view_fields': AsIs(additional_view_fields),
}
)
return super(ResPartnerRelationAll, self)._auto_init(
cr, context=context
)
@api.model
def _search_any_partner_id(self, operator, value):
"""Search relation with partner, no matter on which side."""
# pylint: disable=no-self-use
return [
'|',
('this_partner_id', operator, value),
('other_partner_id', operator, value),
]
@api.multi
def name_get(self):
return {
this.id: '%s %s %s' % (
this.this_partner_id.name,
this.type_selection_id.display_name,
this.other_partner_id.name,
)
for this in self
}
@api.onchange('type_selection_id')
def onchange_type_selection_id(self):
"""Add domain on partners according to category and contact_type."""
def check_partner_domain(partner, partner_domain, side):
"""Check wether partner_domain results in empty selection
for partner, or wrong selection of partner already selected.
"""
warning = {}
if partner:
test_domain = [('id', '=', partner.id)] + partner_domain
else:
test_domain = partner_domain
partner_model = self.env['res.partner']
partners_found = partner_model.search(test_domain, limit=1)
if not partners_found:
warning['title'] = _('Error!')
if partner:
warning['message'] = (
_('%s partner incompatible with relation type.') %
side.title()
)
else:
warning['message'] = (
_('No %s partner available for relation type.') %
side
)
return warning
this_partner_domain = []
other_partner_domain = []
if self.type_selection_id.contact_type_this:
this_partner_domain.append((
'is_company', '=',
self.type_selection_id.contact_type_this == 'c'
))
if self.type_selection_id.partner_category_this:
this_partner_domain.append((
'category_id', 'in',
self.type_selection_id.partner_category_this.ids
))
if self.type_selection_id.contact_type_other:
other_partner_domain.append((
'is_company', '=',
self.type_selection_id.contact_type_other == 'c'
))
if self.type_selection_id.partner_category_other:
other_partner_domain.append((
'category_id', 'in',
self.type_selection_id.partner_category_other.ids
))
result = {'domain': {
'this_partner_id': this_partner_domain,
'other_partner_id': other_partner_domain,
}}
# Check wether domain results in no choice or wrong choice of partners:
warning = {}
if this_partner_domain:
warning = check_partner_domain(
self.this_partner_id, this_partner_domain, _('this')
)
if not warning and other_partner_domain:
warning = check_partner_domain(
self.other_partner_id, other_partner_domain, _('other')
)
if warning:
result['warning'] = warning
return result
@api.onchange(
'this_partner_id',
'other_partner_id',
)
def onchange_partner_id(self):
"""Set domain on type_selection_id based on partner(s) selected."""
def check_type_selection_domain(type_selection_domain):
"""If type_selection_id already selected, check wether it
is compatible with the computed type_selection_domain. An empty
selection can practically only occur in a practically empty
database, and will not lead to problems. Therefore not tested.
"""
warning = {}
if not (type_selection_domain and self.type_selection_id):
return warning
test_domain = (
[('id', '=', self.type_selection_id.id)] +
type_selection_domain
)
type_model = self.env['res.partner.relation.type.selection']
types_found = type_model.search(test_domain, limit=1)
if not types_found:
warning['title'] = _('Error!')
warning['message'] = _(
'Relation type incompatible with selected partner(s).'
)
return warning
type_selection_domain = []
if self.this_partner_id:
type_selection_domain += [
'|',
('contact_type_this', '=', False),
('contact_type_this', '=',
self.this_partner_id.get_partner_type()),
'|',
('partner_category_this', '=', False),
('partner_category_this', 'in',
self.this_partner_id.category_id.ids),
]
if self.other_partner_id:
type_selection_domain += [
'|',
('contact_type_other', '=', False),
('contact_type_other', '=',
self.other_partner_id.get_partner_type()),
'|',
('partner_category_other', '=', False),
('partner_category_other', 'in',
self.other_partner_id.category_id.ids),
]
result = {'domain': {
'type_selection_id': type_selection_domain,
}}
# Check wether domain results in no choice or wrong choice for
# type_selection_id:
warning = check_type_selection_domain(type_selection_domain)
if warning:
result['warning'] = warning
return result
@api.model
def _correct_vals(self, vals):
"""Fill left and right partner from this and other partner."""
vals = vals.copy()
if 'this_partner_id' in vals:
vals['left_partner_id'] = vals['this_partner_id']
del vals['this_partner_id']
if 'other_partner_id' in vals:
vals['right_partner_id'] = vals['other_partner_id']
del vals['other_partner_id']
if 'type_selection_id' not in vals:
return vals
selection = self.type_selection_id.browse(vals['type_selection_id'])
type_id = selection.type_id.id
is_inverse = selection.is_inverse
vals['type_id'] = type_id
del vals['type_selection_id']
# Need to switch right and left partner if we are in reverse id:
if 'left_partner_id' in vals or 'right_partner_id' in vals:
if is_inverse:
left_partner_id = False
right_partner_id = False
if 'left_partner_id' in vals:
right_partner_id = vals['left_partner_id']
del vals['left_partner_id']
if 'right_partner_id' in vals:
left_partner_id = vals['right_partner_id']
del vals['right_partner_id']
if left_partner_id:
vals['left_partner_id'] = left_partner_id
if right_partner_id:
vals['right_partner_id'] = right_partner_id
return vals
@api.multi
def write(self, vals):
"""divert non-problematic writes to underlying table"""
vals = self._correct_vals(vals)
for rec in self:
rec.relation_id.write(vals)
return True
@api.model
def create(self, vals):
"""Divert non-problematic creates to underlying table.
Create a res.partner.relation but return the converted id.
"""
is_inverse = False
if 'type_selection_id' in vals:
selection = self.type_selection_id.browse(
vals['type_selection_id']
)
is_inverse = selection.is_inverse
vals = self._correct_vals(vals)
res = self.relation_id.create(vals)
return_id = res.id * PADDING + (is_inverse and 1 or 0)
return self.browse(return_id)
@api.multi
def unlink(self):
"""divert non-problematic creates to underlying table"""
# pylint: disable=arguments-differ
for rec in self:
rec.relation_id.unlink()
return True

175
partner_multi_relation/models/res_partner_relation_type.py

@ -0,0 +1,175 @@
# -*- coding: utf-8 -*-
# © 2013-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
"""Define the type of relations that can exist between partners."""
from openerp import _, api, fields, models
from openerp.exceptions import ValidationError
from openerp.osv.expression import AND, OR
HANDLE_INVALID_ONCHANGE = [
('restrict',
_('Do not allow change that will result in invalid relations')),
('ignore',
_('Allow existing relations that do not fit changed conditions')),
('end',
_('End relations per today, if they do not fit changed conditions')),
('delete',
_('Delete relations that do not fit changed conditions')),
]
class ResPartnerRelationType(models.Model):
"""Model that defines relation types that might exist between partners"""
_name = 'res.partner.relation.type'
_description = 'Partner Relation Type'
_order = 'name'
name = fields.Char(
string='Name',
required=True,
translate=True,
)
name_inverse = fields.Char(
string='Inverse name',
required=True,
translate=True,
)
contact_type_left = fields.Selection(
selection='get_partner_types',
string='Left partner type',
)
contact_type_right = fields.Selection(
selection='get_partner_types',
string='Right partner type',
)
partner_category_left = fields.Many2one(
comodel_name='res.partner.category',
string='Left partner category',
)
partner_category_right = fields.Many2one(
comodel_name='res.partner.category',
string='Right partner category',
)
allow_self = fields.Boolean(
string='Reflexive',
help='This relation can be set up with the same partner left and '
'right',
default=False,
)
is_symmetric = fields.Boolean(
string='Symmetric',
help="This relation is the same from right to left as from left to"
" right",
default=False,
)
handle_invalid_onchange = fields.Selection(
selection=HANDLE_INVALID_ONCHANGE,
string='Invalid relation handling',
required=True,
default='restrict',
help="When adding relations criteria like partner type and category"
" are checked.\n"
"However when you change the criteria, there might be relations"
" that do not fit the new criteria.\n"
"Specify how this situation should be handled.",
)
@api.model
def get_partner_types(self):
"""A partner can be an organisation or an individual."""
# pylint: disable=no-self-use
return [
('c', _('Organisation')),
('p', _('Person')),
]
@api.onchange('is_symmetric')
def onchange_is_symmetric(self):
"""Set right side to left side if symmetric."""
if self.is_symmetric:
self.update({
'name_inverse': self.name,
'contact_type_right': self.contact_type_left,
'partner_category_right': self.partner_category_left,
})
@api.multi
def check_existing(self, vals):
"""Check wether records exist that do not fit new criteria."""
relation_model = self.env['res.partner.relation']
def get_type_condition(vals, side):
"""Add if needed check for contact type."""
fieldname1 = 'contact_type_%s' % side
fieldname2 = '%s_partner_id.is_company' % side
contact_type = fieldname1 in vals and vals[fieldname1] or False
if contact_type == 'c':
# Records that are not companies are invalid:
return [(fieldname2, '=', False)]
if contact_type == 'p':
# Records that are companies are invalid:
return [(fieldname2, '=', True)]
return []
def get_category_condition(vals, side):
"""Add if needed check for partner category."""
fieldname1 = 'partner_category_%s' % side
fieldname2 = '%s_partner_id.category_id' % side
category_id = fieldname1 in vals and vals[fieldname1] or False
if category_id:
# Records that do not have the specified category are invalid:
return [(fieldname2, 'not in', [category_id])]
return []
for rec in self:
handling = (
'handle_invalid_onchange' in vals and
vals['handle_invalid_onchange'] or
self.handle_invalid_onchange
)
if handling == 'ignore':
continue
invalid_conditions = []
for side in ['left', 'right']:
invalid_conditions = OR([
invalid_conditions,
get_type_condition(vals, side),
])
invalid_conditions = OR([
invalid_conditions,
get_category_condition(vals, side),
])
if not invalid_conditions:
return
# only look at relations for this type
invalid_domain = AND([
[('type_id', '=', rec.id)], invalid_conditions
])
invalid_relations = relation_model.with_context(
active_test=False
).search(invalid_domain)
if invalid_relations:
if handling == 'restrict':
raise ValidationError(
_('There are already relations not satisfying the'
' conditions for partner type or category.')
)
elif handling == 'delete':
invalid_relations.unlink()
else:
# Delete future records, end other ones, ignore relations
# already ended:
cutoff_date = fields.Date.today()
for relation in invalid_relations:
if relation.date_start >= cutoff_date:
relation.unlink()
elif (not relation.date_end or
relation.date_end > cutoff_date):
relation.write({'date_end': cutoff_date})
@api.multi
def write(self, vals):
"""Handle existing relations if conditions change."""
self.check_existing(vals)
return super(ResPartnerRelationType, self).write(vals)

127
partner_multi_relation/models/res_partner_relation_type_selection.py

@ -0,0 +1,127 @@
# -*- coding: utf-8 -*-
# © 2014-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
"""
For the model defined here _auto is set to False to prevent creating a
database file. The model is based on a SQL view based on
res_partner_relation_type where each type is included in the
result set twice, so it appears that the connection type and the inverse
type are separate records..
The original function _auto_init is still called because this function
normally (if _auto == True) not only creates the db tables, but it also takes
care of registering all fields in ir_model_fields. This is needed to make
the field labels translatable.
"""
from psycopg2.extensions import AsIs
from openerp import api, fields, models
from openerp.tools import drop_view_if_exists
from .res_partner_relation_type import ResPartnerRelationType
PADDING = 10
class ResPartnerRelationTypeSelection(models.Model):
"""Virtual relation types"""
_name = 'res.partner.relation.type.selection'
_description = 'All relation types'
_auto = False # Do not try to create table in _auto_init(..)
_foreign_keys = []
_log_access = False
_order = 'name asc'
type_id = fields.Many2one(
comodel_name='res.partner.relation.type',
string='Type',
)
name = fields.Char('Name')
contact_type_this = fields.Selection(
selection=ResPartnerRelationType.get_partner_types.im_func,
string='Current record\'s partner type',
)
is_inverse = fields.Boolean(
string="Is reverse type?",
help="Inverse relations are from right to left partner.",
)
contact_type_other = fields.Selection(
selection=ResPartnerRelationType.get_partner_types.im_func,
string='Other record\'s partner type',
)
partner_category_this = fields.Many2one(
comodel_name='res.partner.category',
string='Current record\'s category',
)
partner_category_other = fields.Many2one(
comodel_name='res.partner.category',
string='Other record\'s category',
)
allow_self = fields.Boolean(
string='Reflexive',
)
is_symmetric = fields.Boolean(
string='Symmetric',
)
def _auto_init(self, cr, context=None):
drop_view_if_exists(cr, self._table)
cr.execute(
"""CREATE OR REPLACE VIEW %(table)s AS
SELECT
id * %(padding)s AS id,
id AS type_id,
name AS name,
False AS is_inverse,
contact_type_left AS contact_type_this,
contact_type_right AS contact_type_other,
partner_category_left AS partner_category_this,
partner_category_right AS partner_category_other,
allow_self,
is_symmetric
FROM %(underlying_table)s
UNION SELECT
id * %(padding)s + 1,
id,
name_inverse,
True,
contact_type_right,
contact_type_left,
partner_category_right,
partner_category_left,
allow_self,
is_symmetric
FROM %(underlying_table)s
WHERE not is_symmetric
""",
{
'table': AsIs(self._table),
'padding': PADDING,
'underlying_table': AsIs('res_partner_relation_type'),
})
return super(ResPartnerRelationTypeSelection, self)._auto_init(
cr, context=context)
@api.multi
def name_get(self):
"""Get name or name_inverse from underlying model."""
return [
(this.id,
this.is_inverse and this.type_id.name_inverse or
this.type_id.display_name)
for this in self
]
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
"""Search for name or inverse name in underlying model."""
# pylint: disable=no-value-for-parameter
return self.search(
[
'|',
('type_id.name', operator, name),
('type_id.name_inverse', operator, name),
] + (args or []),
limit=limit
).name_get()

0
partner_relations/security/ir.model.access.csv → partner_multi_relation/security/ir.model.access.csv

0
partner_relations/static/description/icon.png → partner_multi_relation/static/description/icon.png

Before

Width: 90  |  Height: 90  |  Size: 13 KiB

After

Width: 90  |  Height: 90  |  Size: 13 KiB

7
partner_multi_relation/tests/__init__.py

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Therp BV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_partner_relation_common
from . import test_partner_relation
from . import test_partner_relation_all
from . import test_partner_search

280
partner_multi_relation/tests/test_partner_relation.py

@ -0,0 +1,280 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Therp BV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import date
from dateutil.relativedelta import relativedelta
from openerp import fields
from openerp.exceptions import ValidationError
from .test_partner_relation_common import TestPartnerRelationCommon
class TestPartnerRelation(TestPartnerRelationCommon):
def test_selection_name_search(self):
"""Test wether we can find type selection on reverse name."""
selection_types = self.selection_model.name_search(
name=self.selection_person2company.name
)
self.assertTrue(selection_types)
self.assertTrue(
(self.selection_person2company.id,
self.selection_person2company.name) in selection_types
)
def test_self_allowed(self):
"""Test creation of relation to same partner when type allows."""
type_allow = self.type_model.create({
'name': 'allow',
'name_inverse': 'allow_inverse',
'contact_type_left': 'p',
'contact_type_right': 'p',
'allow_self': True
})
self.assertTrue(type_allow)
reflexive_relation = self.relation_model.create({
'type_id': type_allow.id,
'left_partner_id': self.partner_01_person.id,
'right_partner_id': self.partner_01_person.id,
})
self.assertTrue(reflexive_relation)
def test_self_disallowed(self):
"""Test creating relation to same partner when disallowed.
Attempt to create a relation of a partner to the same partner should
raise an error when the type of relation explicitly disallows this.
"""
type_disallow = self.type_model.create({
'name': 'disallow',
'name_inverse': 'disallow_inverse',
'contact_type_left': 'p',
'contact_type_right': 'p',
'allow_self': False
})
self.assertTrue(type_disallow)
with self.assertRaises(ValidationError):
self.relation_model.create({
'type_id': type_disallow.id,
'left_partner_id': self.partner_01_person.id,
'right_partner_id': self.partner_01_person.id,
})
def test_self_default(self):
"""Test default not to allow relation with same partner.
Attempt to create a relation of a partner to the same partner
raise an error when the type of relation does not explicitly allow
this.
"""
type_default = self.type_model.create({
'name': 'default',
'name_inverse': 'default_inverse',
'contact_type_left': 'p',
'contact_type_right': 'p',
})
self.assertTrue(type_default)
with self.assertRaises(ValidationError):
self.relation_model.create({
'type_id': type_default.id,
'left_partner_id': self.partner_01_person.id,
'right_partner_id': self.partner_01_person.id,
})
def test_self_mixed(self):
"""Test creation of relation with wrong types.
Trying to create a relation between partners with an inappropiate
type should raise an error.
"""
with self.assertRaises(ValidationError):
self.relation_model.create({
'type_id': self.type_company2person.id,
'left_partner_id': self.partner_01_person.id,
'right_partner_id': self.partner_02_company.id,
})
def test_symmetric(self):
"""Test creating symmetric relation."""
# Start out with non symmetric relation:
type_symmetric = self.type_model.create({
'name': 'not yet symmetric',
'name_inverse': 'the other side of not symmetric',
'is_symmetric': False,
'contact_type_left': False,
'contact_type_right': 'p',
})
# not yet symmetric relation should result in two records in
# selection:
selection_symmetric = self.selection_model.search([
('type_id', '=', type_symmetric.id),
])
self.assertEqual(len(selection_symmetric), 2)
# Now change to symmetric and test name and inverse name:
with self.env.do_in_draft():
type_symmetric.write(
vals={
'name': 'sym',
'is_symmetric': True,
}
)
with self.env.do_in_onchange():
type_symmetric.onchange_is_symmetric()
self.assertEqual(type_symmetric.is_symmetric, True)
self.assertEqual(
type_symmetric.name_inverse,
type_symmetric.name
)
self.assertEqual(
type_symmetric.contact_type_right,
type_symmetric.contact_type_left
)
# now update the database:
type_symmetric.write(
vals={
'name': type_symmetric.name,
'is_symmetric': type_symmetric.is_symmetric,
'name_inverse': type_symmetric.name_inverse,
'contact_type_right': type_symmetric.contact_type_right,
}
)
# symmetric relation should result in only one record in
# selection:
selection_symmetric = self.selection_model.search([
('type_id', '=', type_symmetric.id),
])
self.assertEqual(len(selection_symmetric), 1)
relation = self.relation_all_model.create({
'type_selection_id': selection_symmetric.id,
'this_partner_id': self.partner_02_company.id,
'other_partner_id': self.partner_01_person.id,
})
partners = self.partner_model.search([
('search_relation_type_id', '=', relation.type_selection_id.id)
])
self.assertTrue(self.partner_01_person in partners)
self.assertTrue(self.partner_02_company in partners)
def test_category_domain(self):
"""Test check on category in relations."""
# Check on left side:
with self.assertRaises(ValidationError):
self.relation_model.create({
'type_id': self.type_ngo2volunteer.id,
'left_partner_id': self.partner_02_company.id,
'right_partner_id': self.partner_04_volunteer.id,
})
# Check on right side:
with self.assertRaises(ValidationError):
self.relation_model.create({
'type_id': self.type_ngo2volunteer.id,
'left_partner_id': self.partner_03_ngo.id,
'right_partner_id': self.partner_01_person.id,
})
def test_relation_type_change(self):
"""Test change in relation type conditions."""
# First create a relation type having no particular conditions.
(type_school2student,
school2student,
school2student_inverse) = (
self._create_relation_type_selection({
'name': 'school has student',
'name_inverse': 'studies at school',
})
)
# Second create relations based on those conditions.
partner_school = self.partner_model.create({
'name': 'Test School',
'is_company': True,
'ref': 'TS',
})
partner_bart = self.partner_model.create({
'name': 'Bart Simpson',
'is_company': False,
'ref': 'BS',
})
partner_lisa = self.partner_model.create({
'name': 'Lisa Simpson',
'is_company': False,
'ref': 'LS',
})
relation_school2bart = self.relation_all_model.create({
'this_partner_id': partner_school.id,
'type_selection_id': school2student.id,
'other_partner_id': partner_bart.id,
})
self.assertTrue(relation_school2bart)
relation_school2lisa = self.relation_all_model.create({
'this_partner_id': partner_school.id,
'type_selection_id': school2student.id,
'other_partner_id': partner_lisa.id,
})
self.assertTrue(relation_school2lisa)
relation_bart2lisa = self.relation_all_model.create({
'this_partner_id': partner_bart.id,
'type_selection_id': school2student.id,
'other_partner_id': partner_lisa.id,
})
self.assertTrue(relation_bart2lisa)
# Third creata a category and make it a condition for the
# relation type.
# - Test restriction
# - Test ignore
category_student = self.category_model.create({
'name': 'Student',
})
with self.assertRaises(ValidationError):
type_school2student.write({
'partner_category_right': category_student.id,
})
self.assertFalse(type_school2student.partner_category_right.id)
type_school2student.write({
'handle_invalid_onchange': 'ignore',
'partner_category_right': category_student.id,
})
self.assertEqual(
type_school2student.partner_category_right.id,
category_student.id
)
# Fourth make company type a condition for left partner
# - Test ending
# - Test deletion
partner_bart.write({
'category_id': [(4, category_student.id)],
})
partner_lisa.write({
'category_id': [(4, category_student.id)],
})
# Future student to be deleted by end action:
partner_homer = self.partner_model.create({
'name': 'Homer Simpson',
'is_company': False,
'ref': 'HS',
'category_id': [(4, category_student.id)],
})
relation_lisa2homer = self.relation_all_model.create({
'this_partner_id': partner_lisa.id,
'type_selection_id': school2student.id,
'other_partner_id': partner_homer.id,
'date_start': fields.Date.to_string(
date.today() + relativedelta(months=+6)
),
})
self.assertTrue(relation_lisa2homer)
type_school2student.write({
'handle_invalid_onchange': 'end',
'contact_type_left': 'c',
})
self.assertEqual(
relation_bart2lisa.date_end,
fields.Date.today()
)
self.assertFalse(relation_lisa2homer.exists())
type_school2student.write({
'handle_invalid_onchange': 'delete',
'contact_type_left': 'c',
'contact_type_right': 'p',
})
self.assertFalse(relation_bart2lisa.exists())

241
partner_multi_relation/tests/test_partner_relation_all.py

@ -0,0 +1,241 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Therp BV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp.exceptions import ValidationError
from .test_partner_relation_common import TestPartnerRelationCommon
class TestPartnerRelation(TestPartnerRelationCommon):
def setUp(self):
super(TestPartnerRelation, self).setUp()
# Create a new relation type which will not have valid relations:
category_nobody = self.category_model.create({
'name': 'Nobody',
})
(self.type_nobody,
self.selection_nobody,
self.selection_nobody_inverse) = (
self._create_relation_type_selection({
'name': 'has relation with nobody',
'name_inverse': 'nobody has relation with',
'contact_type_left': 'c',
'contact_type_right': 'p',
'partner_category_left': category_nobody.id,
'partner_category_right': category_nobody.id,
})
)
def _get_empty_relation(self):
"""Get empty relation record for onchange tests."""
# Need English, because we will compare text
return self.relation_all_model.with_context(lang='en_US').new({})
def test_create_with_active_id(self):
"""Test creation with this_partner_id from active_id."""
# Check wether we can create connection from company to person,
# taking the particular company from the active records:
relation = self.relation_all_model.with_context(
active_id=self.partner_02_company.id,
active_ids=self.partner_02_company.ids,
).create({
'other_partner_id': self.partner_01_person.id,
'type_selection_id': self.selection_company2person.id,
})
self.assertTrue(relation)
self.assertEqual(relation.this_partner_id, self.partner_02_company)
# Partner should have one relation now:
self.assertEqual(self.partner_01_person.relation_count, 1)
def test_display_name(self):
"""Test display name"""
relation = self._create_company2person_relation()
self.assertEqual(
relation.display_name, '%s %s %s' % (
relation.this_partner_id.name,
relation.type_selection_id.name,
relation.other_partner_id.name,
)
)
def test__regular_write(self):
"""Test write with valid data."""
relation = self._create_company2person_relation()
relation.write({
'date_start': '2014-09-01',
})
relation.invalidate_cache(ids=relation.ids)
self.assertEqual(relation.date_start, '2014-09-01')
def test_write_incompatible_dates(self):
"""Test write with date_end before date_start."""
relation = self._create_company2person_relation()
with self.assertRaises(ValidationError):
relation.write({
'date_start': '2016-09-01',
'date_end': '2016-08-01',
})
def test_validate_overlapping_01(self):
"""Test create overlapping with no start / end dates."""
relation = self._create_company2person_relation()
with self.assertRaises(ValidationError):
# New relation with no start / end should give error
self.relation_all_model.create({
'this_partner_id': relation.this_partner_id.id,
'type_selection_id': relation.type_selection_id.id,
'other_partner_id': relation.other_partner_id.id,
})
def test_validate_overlapping_02(self):
"""Test create overlapping with start / end dates."""
relation = self.relation_all_model.create({
'this_partner_id': self.partner_02_company.id,
'type_selection_id': self.selection_company2person.id,
'other_partner_id': self.partner_01_person.id,
'date_start': '2015-09-01',
'date_end': '2016-08-31',
})
# New relation with overlapping start / end should give error
with self.assertRaises(ValidationError):
self.relation_all_model.create({
'this_partner_id': relation.this_partner_id.id,
'type_selection_id': relation.type_selection_id.id,
'other_partner_id': relation.other_partner_id.id,
'date_start': '2016-08-01',
'date_end': '2017-07-30',
})
def test_validate_overlapping_03(self):
"""Test create not overlapping."""
relation = self.relation_all_model.create({
'this_partner_id': self.partner_02_company.id,
'type_selection_id': self.selection_company2person.id,
'other_partner_id': self.partner_01_person.id,
'date_start': '2015-09-01',
'date_end': '2016-08-31',
})
relation_another_record = self.relation_all_model.create({
'this_partner_id': relation.this_partner_id.id,
'type_selection_id': relation.type_selection_id.id,
'other_partner_id': relation.other_partner_id.id,
'date_start': '2016-09-01',
'date_end': '2017-08-31',
})
self.assertTrue(relation_another_record)
def test_inverse_record(self):
"""Test creation of inverse record."""
relation = self._create_company2person_relation()
inverse_relation = self.relation_all_model.search([
('this_partner_id', '=', relation.other_partner_id.id),
('other_partner_id', '=', relation.this_partner_id.id),
])
self.assertEqual(len(inverse_relation), 1)
self.assertEqual(
inverse_relation.type_selection_id.name,
self.selection_person2company.name
)
def test_inverse_creation(self):
"""Test creation of record through inverse selection."""
relation = self.relation_all_model.create({
'this_partner_id': self.partner_01_person.id,
'type_selection_id': self.selection_person2company.id,
'other_partner_id': self.partner_02_company.id,
})
# Check wether display name is what we should expect:
self.assertEqual(
relation.display_name, '%s %s %s' % (
self.partner_01_person.name,
self.selection_person2company.name,
self.partner_02_company.name,
)
)
def test_unlink(self):
"""Unlinking derived relation should unlink base relation."""
# Check wether underlying record is removed when record is removed:
relation = self._create_company2person_relation()
base_relation = relation.relation_id
relation.unlink()
self.assertFalse(base_relation.exists())
def test_on_change_type_selection(self):
"""Test on_change_type_selection."""
# 1. Test call with empty relation
relation_empty = self._get_empty_relation()
result = relation_empty.onchange_type_selection_id()
self.assertTrue('domain' in result)
self.assertFalse('warning' in result)
self.assertTrue('this_partner_id' in result['domain'])
self.assertFalse(result['domain']['this_partner_id'])
self.assertTrue('other_partner_id' in result['domain'])
self.assertFalse(result['domain']['other_partner_id'])
# 2. Test call with company 2 person relation
relation = self._create_company2person_relation()
domain = relation.onchange_type_selection_id()['domain']
self.assertTrue(
('is_company', '=', False) in domain['other_partner_id']
)
# 3. Test with relation needing categories.
relation_ngo_volunteer = self.relation_all_model.create({
'this_partner_id': self.partner_03_ngo.id,
'type_selection_id': self.selection_ngo2volunteer.id,
'other_partner_id': self.partner_04_volunteer.id,
})
domain = relation_ngo_volunteer.onchange_type_selection_id()['domain']
self.assertTrue(
('category_id', 'in', [self.category_01_ngo.id]) in
domain['this_partner_id']
)
self.assertTrue(
('category_id', 'in', [self.category_02_volunteer.id]) in
domain['other_partner_id']
)
# 4. Test with invalid or impossible combinations
relation_nobody = self._get_empty_relation()
with self.env.do_in_draft():
relation_nobody.type_selection_id = self.selection_nobody
warning = relation_nobody.onchange_type_selection_id()['warning']
self.assertTrue('message' in warning)
self.assertTrue('No this partner available' in warning['message'])
with self.env.do_in_draft():
relation_nobody.this_partner_id = self.partner_02_company
warning = relation_nobody.onchange_type_selection_id()['warning']
self.assertTrue('message' in warning)
self.assertTrue('incompatible' in warning['message'])
# Allow left partner and check message for other partner:
self.type_nobody.write({
'partner_category_left': False,
})
self.selection_nobody.invalidate_cache(ids=self.selection_nobody.ids)
warning = relation_nobody.onchange_type_selection_id()['warning']
self.assertTrue('message' in warning)
self.assertTrue('No other partner available' in warning['message'])
def test_on_change_partner_id(self):
"""Test on_change_partner_id."""
# 1. Test call with empty relation
relation_empty = self._get_empty_relation()
result = relation_empty.onchange_partner_id()
self.assertTrue('domain' in result)
self.assertFalse('warning' in result)
self.assertTrue('type_selection_id' in result['domain'])
self.assertFalse(result['domain']['type_selection_id'])
# 2. Test call with company 2 person relation
relation = self._create_company2person_relation()
domain = relation.onchange_partner_id()['domain']
self.assertTrue(
('contact_type_this', '=', 'c') in domain['type_selection_id']
)
# 3. Test with invalid or impossible combinations
relation_nobody = self._get_empty_relation()
with self.env.do_in_draft():
relation_nobody.this_partner_id = self.partner_02_company
relation_nobody.type_selection_id = self.selection_nobody
warning = relation_nobody.onchange_partner_id()['warning']
self.assertTrue('message' in warning)
self.assertTrue('incompatible' in warning['message'])

113
partner_multi_relation/tests/test_partner_relation_common.py

@ -0,0 +1,113 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Therp BV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp.tests import common
class TestPartnerRelationCommon(common.TransactionCase):
def setUp(self):
super(TestPartnerRelationCommon, self).setUp()
self.partner_model = self.env['res.partner']
self.category_model = self.env['res.partner.category']
self.type_model = self.env['res.partner.relation.type']
self.selection_model = self.env['res.partner.relation.type.selection']
self.relation_model = self.env['res.partner.relation']
self.relation_all_model = self.env['res.partner.relation.all']
self.partner_01_person = self.partner_model.create({
'name': 'Test User 1',
'is_company': False,
'ref': 'PR01',
})
self.partner_02_company = self.partner_model.create({
'name': 'Test Company',
'is_company': True,
'ref': 'PR02',
})
# Create partners with specific categories:
self.category_01_ngo = self.category_model.create({
'name': 'NGO',
})
self.partner_03_ngo = self.partner_model.create({
'name': 'Test NGO',
'is_company': True,
'ref': 'PR03',
'category_id': [(4, self.category_01_ngo.id)],
})
self.category_02_volunteer = self.category_model.create({
'name': 'Volunteer',
})
self.partner_04_volunteer = self.partner_model.create({
'name': 'Test Volunteer',
'is_company': False,
'ref': 'PR04',
'category_id': [(4, self.category_02_volunteer.id)],
})
# Create a new relation type withouth categories:
(self.type_company2person,
self.selection_company2person,
self.selection_person2company) = (
self._create_relation_type_selection({
'name': 'mixed',
'name_inverse': 'mixed_inverse',
'contact_type_left': 'c',
'contact_type_right': 'p',
})
)
# Create a new relation type with categories:
(self.type_ngo2volunteer,
self.selection_ngo2volunteer,
self.selection_volunteer2ngo) = (
self._create_relation_type_selection({
'name': 'NGO has volunteer',
'name_inverse': 'volunteer works for NGO',
'contact_type_left': 'c',
'contact_type_right': 'p',
'partner_category_left': self.category_01_ngo.id,
'partner_category_right': self.category_02_volunteer.id,
})
)
def _create_relation_type_selection(self, vals):
"""Create relation type and return this with selection types."""
assert 'name' in vals, (
"Name missing in vals to create relation type. Vals: %s."
% vals
)
assert 'name' in vals, (
"Name_inverse missing in vals to create relation type. Vals: %s."
% vals
)
new_type = self.type_model.create(vals)
self.assertTrue(
new_type,
msg="No relation type created with vals %s." % vals
)
selection_types = self.selection_model.search([
('type_id', '=', new_type.id),
])
for st in selection_types:
if st.is_inverse:
inverse_type_selection = st
else:
type_selection = st
self.assertTrue(
inverse_type_selection,
msg="Failed to find inverse type selection based on"
" relation type created with vals %s." % vals
)
self.assertTrue(
type_selection,
msg="Failed to find type selection based on"
" relation type created with vals %s." % vals
)
return (new_type, type_selection, inverse_type_selection)
def _create_company2person_relation(self):
"""Utility function to get a relation from company 2 partner."""
return self.relation_all_model.create({
'type_selection_id': self.selection_company2person.id,
'this_partner_id': self.partner_02_company.id,
'other_partner_id': self.partner_01_person.id,
})

76
partner_multi_relation/tests/test_partner_search.py

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
# Copyright 2015 Camptocamp SA
# Copyright 2016 Therp BV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import fields
from openerp.exceptions import ValidationError
from .test_partner_relation_common import TestPartnerRelationCommon
class TestPartnerSearch(TestPartnerRelationCommon):
def test_search_relation_type(self):
"""Test searching on relation type."""
relation = self._create_company2person_relation()
partners = self.partner_model.search([
('search_relation_type_id', '=', relation.type_selection_id.id)
])
self.assertTrue(self.partner_02_company in partners)
partners = self.partner_model.search([
('search_relation_type_id', '!=', relation.type_selection_id.id)
])
self.assertTrue(self.partner_01_person in partners)
partners = self.partner_model.search([
('search_relation_type_id', '=', self.type_company2person.name)
])
self.assertTrue(self.partner_01_person in partners)
self.assertTrue(self.partner_02_company in partners)
partners = self.partner_model.search([
('search_relation_type_id', '=', 'unknown relation')
])
self.assertFalse(partners)
# Check error with invalid search operator:
with self.assertRaises(ValidationError):
partners = self.partner_model.search([
('search_relation_type_id', 'child_of', 'some parent')
])
def test_search_relation_partner(self):
"""Test searching on related partner."""
self._create_company2person_relation()
partners = self.partner_model.search([
('search_relation_partner_id', '=', self.partner_02_company.id),
])
self.assertTrue(self.partner_01_person in partners)
def test_search_relation_date(self):
"""Test searching on relations valid on a certain date."""
self._create_company2person_relation()
partners = self.partner_model.search([
('search_relation_date', '=', fields.Date.today()),
])
self.assertTrue(self.partner_01_person in partners)
self.assertTrue(self.partner_02_company in partners)
def test_search_any_partner(self):
"""Test searching for partner left or right."""
self._create_company2person_relation()
both_relations = self.relation_all_model.search([
('any_partner_id', '=', self.partner_02_company.id),
])
self.assertEqual(len(both_relations), 2)
def test_search_partner_category(self):
"""Test searching for partners related to partners having category."""
relation_ngo_volunteer = self.relation_all_model.create({
'this_partner_id': self.partner_03_ngo.id,
'type_selection_id': self.selection_ngo2volunteer.id,
'other_partner_id': self.partner_04_volunteer.id,
})
self.assertTrue(relation_ngo_volunteer)
partners = self.partner_model.search([
('search_relation_partner_category_id', '=',
self.category_02_volunteer.id)
])
self.assertTrue(self.partner_03_ngo in partners)

2
partner_relations/view/menu.xml → partner_multi_relation/views/menu.xml

@ -5,7 +5,7 @@
id="menu_res_partner_relation_sales"
sequence="2"
parent="base.menu_sales"
action="action_res_partner_relation"
action="action_res_partner_relation_all"
/>
<act_window

42
partner_relations/view/res_partner.xml → partner_multi_relation/views/res_partner.xml

@ -3,14 +3,14 @@
<data>
<record id="view_res_partner_filter" model="ir.ui.view">
<field name="name">partner_relations.view_partner_filter</field>
<field name="name">partner_multi_relation.view_partner_filter</field>
<field name="inherit_id" ref="base.view_res_partner_filter" />
<field name="model">res.partner</field>
<field type="xml" name="arch">
<data>
<field name="parent_id" position="after">
<field name="search_relation_partner_id" />
<field name="search_relation_id" />
<field name="search_relation_type_id" />
<field name="search_relation_date" />
<field name="search_relation_partner_category_id" />
</field>
@ -19,30 +19,36 @@
</record>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">partner_relations.view_partner_form</field>
<field name="name">partner_multi_relation.view_partner_form</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="model">res.partner</field>
<field type="xml" name="arch">
<xpath expr="//div[@name='buttons']" position="inside">
<button class="oe_inline oe_stat_button"
type="action"
context="{
'search_default_this_partner_id': active_id,
'default_left_partner_id': active_id,
'active_model': 'res.partner',
'active_id': id,
'active_ids': [id],
'active_test': False,
}"
name="%(action_res_partner_relation_all)d"
icon="fa-users">
<field string="Relations" name="relation_count" widget="statinfo"/>
<xpath expr="//div[@name='button_box']" position="inside">
<button
class="oe_inline oe_stat_button"
type="action"
context="{
'search_default_this_partner_id': active_id,
'default_this_partner_id': active_id,
'active_model': 'res.partner',
'active_id': id,
'active_ids': [id],
'active_test': False,
}"
name="%(action_res_partner_relation_all)d"
icon="fa-users"
>
<field
string="Relations"
name="relation_count"
widget="statinfo"
/>
</button>
</xpath>
</field>
</record>
<act_window id="action_show_partner_relations"
<act_window id="action_show_partner_multi_relation"
name="Show partner's relations"
src_model="res.partner"
res_model="res.partner.relation.all"

96
partner_multi_relation/views/res_partner_relation_all.xml

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="tree_res_partner_relation_all" model="ir.ui.view">
<field name="model">res.partner.relation.all</field>
<field name="arch" type="xml">
<tree
string="Partner Relations"
colors="gray:not active; blue:date_start &gt; current_date"
editable="top"
>
<field
name="this_partner_id"
required="True"
options="{'no_create': True}"
/>
<field
name="type_selection_id"
required="True"
options="{'no_create': True}"
/>
<field
name="other_partner_id"
required="True"
options="{'no_create': True}"
/>
<field name="date_start" />
<field name="date_end" />
<field name="active" invisible="1" />
</tree>
</field>
</record>
<record id="search_res_partner_relation_all" model="ir.ui.view">
<field name="model">res.partner.relation.all</field>
<field name="arch" type="xml">
<search string="Search Relations">
<field name="any_partner_id" widget="many2one"/>
<field name="this_partner_id"/>
<field name="other_partner_id"/>
<field name="type_selection_id"/>
<filter
string="Left to right"
domain="[('record_type', '=', 'a')]"
/>
<filter
string="Right to left"
domain="[('record_type', '=', 'b')]"
/>
<filter
string="Include past records"
context="{'active_test': False}"
/>
<group expand="0" string="Group By">
<filter
string="One Partner"
context="{'group_by': 'this_partner_id'}"
/>
<filter
string="Relationship Type"
context="{'group_by': 'type_selection_id'}"
/>
<filter
string="Other Partner"
context="{'group_by': 'other_partner_id'}"
/>
</group>
</search>
</field>
</record>
<record
id="action_res_partner_relation_all"
model="ir.actions.act_window"
>
<field name="name">Relations</field>
<field name="res_model">res.partner.relation.all</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="tree_res_partner_relation_all"/>
<field
name="search_view_id"
ref="search_res_partner_relation_all"
/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Record and track your partners' relations. Relations may
be linked to other partners with a type either directly
or inversely.
</p>
</field>
</record>
</data>
</openerp>

23
partner_relations/view/res_partner_relation_type.xml → partner_multi_relation/views/res_partner_relation_type.xml

@ -2,42 +2,47 @@
<data>
<record id="tree_res_partner_relation_type" model="ir.ui.view">
<field name="model">res.partner.relation.type</field>
<field name="type">tree</field>
<field type="xml" name="arch">
<tree version="7.0" string="Partner relation">
<tree>
<field name="name" />
<field name="name_inverse" />
<field name="contact_type_left" />
<field name="contact_type_right" />
<field name="allow_self" />
<field name="is_symmetric" />
</tree>
</field>
</record>
<record id="form_res_partner_relation_type" model="ir.ui.view">
<field name="model">res.partner.relation.type</field>
<field name="type">form</field>
<field type="xml" name="arch">
<form version="7.0" string="Partner relation">
<form>
<sheet>
<group>
<field name="allow_self" />
<group
colspan="2" col="2"
string="Left side of relation"
>
name="left"
>
<field name="name" />
<field name="contact_type_left" />
<field name="partner_category_left" />
</group>
<group
colspan="2" col="2"
string="Right side of relation"
>
name="right"
attrs="{'invisible': [('is_symmetric', '=', True)]}"
>
<field name="name_inverse" />
<field name="contact_type_right" />
<field name="partner_category_right" />
</group>
</group>
<group name="properties" string="Properties">
<field name="allow_self" />
<field name="is_symmetric" />
<field name="handle_invalid_onchange" />
</group>
</sheet>
</form>
</field>

22
partner_relations/__init__.py

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import model
from . import tests

56
partner_relations/__openerp__.py

@ -1,56 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name": "Partner relations",
"version": "8.0.1.1.0",
"author": "Therp BV,Camptocamp,Odoo Community Association (OCA)",
"complexity": "normal",
"category": "Customer Relationship Management",
"depends": [
'base',
],
"demo": [
"data/demo.xml",
],
"test": [
"test/test_allow.yml",
# "test/test_disallow.yml",
],
"data": [
"view/res_partner_relation_all.xml",
'view/res_partner_relation.xml',
'view/res_partner.xml',
'view/res_partner_relation_type.xml',
'view/menu.xml',
'security/ir.model.access.csv',
],
"js": [
],
"css": [
],
"qweb": [
],
"auto_install": False,
'installable': False,
"external_dependencies": {
'python': [],
},
}

38
partner_relations/data/demo.xml

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="rel_type_assistant" model="res.partner.relation.type">
<field name="name">Is assistant of</field>
<field name="name_inverse">Has assistant</field>
<field name="contact_type_left">p</field>
<field name="contact_type_right">p</field>
</record>
<record id="rel_type_competitor" model="res.partner.relation.type">
<field name="name">Is competitor of</field>
<field name="name_inverse">Is competitor of</field>
<field name="contact_type_left">c</field>
<field name="contact_type_right">c</field>
</record>
<record id="rel_type_has_worked_for" model="res.partner.relation.type">
<field name="name">Has worked for</field>
<field name="name_inverse">Has former employee</field>
<field name="contact_type_left">p</field>
<field name="contact_type_right">c</field>
</record>
<record id="rel_1" model="res.partner.relation">
<field name="left_partner_id" ref="base.res_partner_12" />
<field name="right_partner_id" ref="base.res_partner_23" />
<field name="type_id" ref="rel_type_competitor" />
</record>
<record id="rel_2" model="res.partner.relation">
<field name="left_partner_id" ref="base.res_partner_13" />
<field name="right_partner_id" ref="base.res_partner_23" />
<field name="type_id" ref="rel_type_competitor" />
</record>
<record id="rel_3" model="res.partner.relation">
<field name="left_partner_id" ref="base.res_partner_12" />
<field name="right_partner_id" ref="base.res_partner_13" />
<field name="type_id" ref="rel_type_competitor" />
</record>
</data>
</openerp>

408
partner_relations/i18n/da.po

@ -1,408 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
#
# Translators:
# Hans Henrik Gabelgaard <hhg@gabelgaard.org>, 2015
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-23 21:40+0000\n"
"PO-Revision-Date: 2015-09-19 08:44+0000\n"
"Last-Translator: Hans Henrik Gabelgaard <hhg@gabelgaard.org>\n"
"Language-Team: Danish (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr "Aktiv"
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_relations
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Virksomhed"
#. module: partner_relations
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr "Aktuel partner"
#. module: partner_relations
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Group By"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_relations
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
msgid "Left Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr "Navn"
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partner"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
msgid "Partner Relation"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
msgid "Partner relation"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
msgid "Right Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
msgid "Show partner's relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
msgid "Show partners"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr ""

407
partner_relations/i18n/nl.po

@ -1,407 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: partner-contact (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-23 21:40+0000\n"
"PO-Revision-Date: 2015-10-01 19:24+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Dutch (http://www.transifex.com/oca/OCA-partner-contact-8-0/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,active:0 field:res.partner.relation.all,active:0
msgid "Active"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_relations
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,allow_self:0
msgid "Allow both sides to be the same"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:68
#, python-format
msgid "Company"
msgstr "Bedrijf"
#. module: partner_relations
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr "Aangemaakt door"
#. module: partner_relations
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr "Aangemaakt op"
#. module: partner_relations
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Group By"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_assistant
msgid "Has assistant"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_has_worked_for
msgid "Has former employee"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_has_worked_for
msgid "Has worked for"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,id:0 field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr "ID"
#. module: partner_relations
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_relations
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_assistant
msgid "Is assistant of"
msgstr ""
#. module: partner_relations
#: model:res.partner.relation.type,name:partner_relations.rel_type_competitor
#: model:res.partner.relation.type,name_inverse:partner_relations.rel_type_competitor
msgid "Is competitor of"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr "Laatst bijgewerkt door"
#. module: partner_relations
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr "Laatst bijgewerkt op"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
msgid "Left Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr "Partner"
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
msgid "Partner Relation"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
msgid "Partner relation"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:301
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:69
#, python-format
msgid "Person"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:370
#, python-format
msgid "Related partners"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
msgid "Right Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
msgid "Show partner's relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
msgid "Show partners"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:287
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:254
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:329
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr ""

376
partner_relations/i18n/partner_relations.pot

@ -1,376 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_relations
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-04-15 16:09+0000\n"
"PO-Revision-Date: 2015-04-15 16:09+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: partner_relations
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,help:partner_relations.action_res_partner_relation_all
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.\n"
" </p>\n"
" "
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,active:0
#: field:res.partner.relation.all,active:0
msgid "Active"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_all
msgid "All (non-inverse + inverse) relations between partners"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type_selection
msgid "All relation types"
msgstr ""
#. module: partner_relations
#: field:res.partner,relation_all_ids:0
msgid "All relations with current partner"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:64
#, python-format
msgid "Company"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,create_uid:0
#: field:res.partner.relation.type,create_uid:0
msgid "Created by"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,create_date:0
#: field:res.partner.relation.type,create_date:0
msgid "Created on"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,this_partner_id:0
msgid "Current Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,partner_category_this:0
#: field:res.partner.relation.type.selection,search_partner_category_this:0
msgid "Current record's category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,contact_type_this:0
msgid "Current record's partner type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,right_partner_id:0
msgid "Destination Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,date_end:0
#: field:res.partner.relation.all,date_end:0
msgid "Ending date"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Group By"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_id:0
msgid "Has relation of type"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_partner_id:0
msgid "Has relation with"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_partner_category_id:0
msgid "Has relation with a partner in category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,id:0
#: field:res.partner.relation.all,id:0
#: field:res.partner.relation.type,id:0
#: field:res.partner.relation.type.selection,id:0
msgid "ID"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,name_inverse:0
msgid "Inverse name"
msgstr ""
#. module: partner_relations
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
msgid "Inverse type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,write_uid:0
#: field:res.partner.relation.type,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,write_date:0
#: field:res.partner.relation.type,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
msgid "Left Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,left_contact_type:0
msgid "Left Partner Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,partner_category_left:0
msgid "Left partner category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,contact_type_left:0
msgid "Left partner type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
msgid "Left side of relation"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,name:0
#: field:res.partner.relation.type.selection,name:0
msgid "Name"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
#: field:res.partner.relation.all,other_partner_id:0
msgid "Other Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,partner_category_other:0
msgid "Other record's category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,contact_type_other:0
msgid "Other record's partner type"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner
#: field:res.partner.relation,partner_id_display:0
msgid "Partner"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.form_res_partner_relation
msgid "Partner Relation"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation_type
msgid "Partner Relation Type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.tree_res_partner_relation
#: view:res.partner.relation.all:partner_relations.tree_res_partner_relation_all
msgid "Partner Relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_type
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_type
msgid "Partner Relations Types"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,contact_type:0
msgid "Partner Type"
msgstr ""
#. module: partner_relations
#: model:ir.model,name:partner_relations.model_res_partner_relation
#: view:res.partner.relation.all:partner_relations.form_res_partner_relation_all
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
#: view:res.partner.relation.type:partner_relations.tree_res_partner_relation_type
msgid "Partner relation"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:291
#, python-format
msgid "Partners cannot have a relation with themselves."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation_type.py:65
#, python-format
msgid "Person"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,record_type:0
msgid "Record Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type.selection,record_type:0
msgid "Record type"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:360
#, python-format
msgid "Related partners"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,relation_id:0
msgid "Relation"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.all,type_id:0
#: field:res.partner.relation.all,type_selection_id:0
msgid "Relation Type"
msgstr ""
#. module: partner_relations
#: field:res.partner,search_relation_date:0
msgid "Relation valid"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation
#: model:ir.actions.act_window,name:partner_relations.action_res_partner_relation_all
#: model:ir.ui.menu,name:partner_relations.menu_res_partner_relation_sales
#: view:res.partner:partner_relations.view_partner_form
#: field:res.partner,relation_ids:0
msgid "Relations"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Relationship Type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
msgid "Right Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,right_contact_type:0
msgid "Right Partner Type"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,partner_category_right:0
msgid "Right partner category"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation.type,contact_type_right:0
msgid "Right partner type"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation.type:partner_relations.form_res_partner_relation_type
msgid "Right side of relation"
msgstr ""
#. module: partner_relations
#: view:res.partner.relation:partner_relations.search_res_partner_relation
#: view:res.partner.relation.all:partner_relations.search_res_partner_relation_all
msgid "Search Relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.act_window,name:partner_relations.action_show_partner_relations
msgid "Show partner's relations"
msgstr ""
#. module: partner_relations
#: model:ir.actions.server,name:partner_relations.action_show_right_relation_partners
msgid "Show partners"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,left_partner_id:0
msgid "Source Partner"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,date_start:0
#: field:res.partner.relation.all,date_start:0
msgid "Starting date"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:278
#, python-format
msgid "The %s partner is not applicable for this relation type."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:245
#, python-format
msgid "The starting date cannot be after the ending date."
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner_relation.py:319
#, python-format
msgid "There is already a similar relation with overlapping dates"
msgstr ""
#. module: partner_relations
#: field:res.partner.relation,type_id:0
#: field:res.partner.relation,type_selection_id:0
#: selection:res.partner.relation.all,record_type:0
#: selection:res.partner.relation.type.selection,record_type:0
#: field:res.partner.relation.type.selection,type_id:0
msgid "Type"
msgstr ""
#. module: partner_relations
#: code:addons/partner_relations/model/res_partner.py:109
#, python-format
msgid "Unsupported search operand \"%s\""
msgstr ""

39
partner_relations/model/__init__.py

@ -1,39 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
PADDING = 10
def get_partner_type(partner):
"""Get partner type for relation.
:param partner: a res.partner either a company or not
:return: 'c' for company or 'p' for person
:rtype: str
"""
return 'c' if partner.is_company else 'p'
from . import res_partner
from . import res_partner_relation
from . import res_partner_relation_type
from . import res_partner_relation_all
from . import res_partner_relation_type_selection

320
partner_relations/model/res_partner.py

@ -1,320 +0,0 @@
# -*- coding: utf-8 -*-
'''Extend res.partner model'''
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from openerp import osv, models, fields, exceptions, api
from openerp.osv.expression import is_leaf, AND, OR, FALSE_LEAF
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
from openerp.tools.translate import _
class ResPartner(models.Model):
_inherit = 'res.partner'
relation_count = fields.Integer(
'Relation Count',
compute="_count_relations"
)
@api.one
@api.depends("relation_ids")
def _count_relations(self):
"""Count the number of relations this partner has for Smart Button
Don't count inactive relations.
"""
self.relation_count = len([r for r in self.relation_ids if r.active])
def _get_relation_ids_select(self, cr, uid, ids, field_name, arg,
context=None):
'''return the partners' relations as tuple
(id, left_partner_id, right_partner_id)'''
cr.execute(
'''select id, left_partner_id, right_partner_id
from res_partner_relation
where (left_partner_id in %s or right_partner_id in %s)''' +
' order by ' + self.pool['res.partner.relation']._order,
(tuple(ids), tuple(ids))
)
return cr.fetchall()
def _get_relation_ids(
self, cr, uid, ids, field_name, arg, context=None):
'''getter for relation_ids'''
if context is None:
context = {}
result = dict([(i, []) for i in ids])
# TODO: do a permission test on returned ids
for row in self._get_relation_ids_select(
cr, uid, ids, field_name, arg, context=context):
if row[1] in result:
result[row[1]].append(row[0])
if row[2] in result:
result[row[2]].append(row[0])
return result
def _set_relation_ids(
self, cr, uid, ids, dummy_name, field_value, dummy_arg,
context=None):
'''setter for relation_ids'''
if context is None:
context = {}
relation_obj = self.pool.get('res.partner.relation')
context2 = self._update_context(context, ids)
for value in field_value:
if value[0] == 0:
relation_obj.create(cr, uid, value[2], context=context2)
if value[0] == 1:
# if we write partner_id_display, we also need to pass
# type_selection_id in order to have this write end up on
# the correct field
if 'partner_id_display' in value[2] and 'type_selection_id'\
not in value[2]:
relation_data = relation_obj.read(
cr, uid, [value[1]], ['type_selection_id'],
context=context)[0]
value[2]['type_selection_id'] =\
relation_data['type_selection_id']
relation_obj.write(
cr, uid, value[1], value[2], context=context2)
if value[0] == 2:
relation_obj.unlink(cr, uid, value[1], context=context2)
def _search_relation_id(
self, cr, uid, dummy_obj, name, args, context=None):
result = []
for arg in args:
if isinstance(arg, tuple) and arg[0] == name:
if arg[1] not in ['=', '!=', 'like', 'not like', 'ilike',
'not ilike', 'in', 'not in']:
raise exceptions.ValidationError(
_('Unsupported search operand "%s"') % arg[1])
relation_type_selection_ids = []
relation_type_selection = self\
.pool['res.partner.relation.type.selection']
if arg[1] == '=' and isinstance(arg[2], (long, int)):
relation_type_selection_ids.append(arg[2])
elif arg[1] == '!=' and isinstance(arg[2], (long, int)):
type_id, is_inverse = (
relation_type_selection.browse(cr, uid, arg[2],
context=context)
.get_type_from_selection_id()
)
result = OR([
result,
[
('relation_all_ids.type_id', '!=', type_id),
]
])
continue
else:
relation_type_selection_ids = relation_type_selection\
.search(
cr, uid,
[
('type_id.name', arg[1], arg[2]),
('record_type', '=', 'a'),
],
context=context)
relation_type_selection_ids.extend(
relation_type_selection.search(
cr, uid,
[
('type_id.name_inverse', arg[1], arg[2]),
('record_type', '=', 'b'),
],
context=context))
if not relation_type_selection_ids:
result = AND([result, [FALSE_LEAF]])
for relation_type_selection_id in relation_type_selection_ids:
type_id, is_inverse = (
relation_type_selection.browse(
cr, uid, relation_type_selection_id,
context=context
).get_type_from_selection_id()
)
result = OR([
result,
[
'&',
('relation_all_ids.type_id', '=', type_id),
('relation_all_ids.record_type', '=',
'b' if is_inverse else 'a')
],
])
return result
def _search_relation_date(self, cr, uid, obj, name, args, context=None):
result = []
for arg in args:
if isinstance(arg, tuple) and arg[0] == name:
# TODO: handle {<,>}{,=}
if arg[1] != '=':
continue
result.extend([
'&',
'|',
('relation_all_ids.date_start', '=', False),
('relation_all_ids.date_start', '<=', arg[2]),
'|',
('relation_all_ids.date_end', '=', False),
('relation_all_ids.date_end', '>=', arg[2]),
])
return result
def _search_related_partner_id(
self, cr, uid, dummy_obj, name, args, context=None):
result = []
for arg in args:
if isinstance(arg, tuple) and arg[0] == name:
result.append(
(
'relation_all_ids.other_partner_id',
arg[1],
arg[2],
))
return result
def _search_related_partner_category_id(
self, cr, uid, dummy_obj, name, args, context=None):
result = []
for arg in args:
if isinstance(arg, tuple) and arg[0] == name:
result.append(
(
'relation_all_ids.other_partner_id.category_id',
arg[1],
arg[2],
))
return result
_columns = {
'relation_ids': osv.fields.function(
lambda self, *args, **kwargs: self._get_relation_ids(
*args, **kwargs),
fnct_inv=_set_relation_ids,
type='one2many', obj='res.partner.relation',
string='Relations',
selectable=False,
),
'relation_all_ids': osv.fields.one2many(
'res.partner.relation.all', 'this_partner_id',
string='All relations with current partner',
auto_join=True,
selectable=False,
),
'search_relation_id': osv.fields.function(
lambda self, cr, uid, ids, *args: dict([
(i, False) for i in ids]),
fnct_search=_search_relation_id,
string='Has relation of type',
type='many2one', obj='res.partner.relation.type.selection'
),
'search_relation_partner_id': osv.fields.function(
lambda self, cr, uid, ids, *args: dict([
(i, False) for i in ids]),
fnct_search=_search_related_partner_id,
string='Has relation with',
type='many2one', obj='res.partner'
),
'search_relation_date': osv.fields.function(
lambda self, cr, uid, ids, *args: dict([
(i, False) for i in ids]),
fnct_search=_search_relation_date,
string='Relation valid', type='date'
),
'search_relation_partner_category_id': osv.fields.function(
lambda self, cr, uid, ids, *args: dict([
(i, False) for i in ids]),
fnct_search=_search_related_partner_category_id,
string='Has relation with a partner in category',
type='many2one', obj='res.partner.category'
),
}
def copy_data(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
default.setdefault('relation_ids', [])
default.setdefault('relation_all_ids', [])
return super(ResPartner, self).copy_data(cr, uid, id, default=default,
context=context)
def search(self, cr, uid, args, offset=0, limit=None, order=None,
context=None, count=False):
if context is None:
context = {}
# inject searching for current relation date if we search for relation
# properties and no explicit date was given
date_args = []
for arg in args:
if is_leaf(arg) and arg[0].startswith('search_relation'):
if arg[0] == 'search_relation_date':
date_args = []
break
if not date_args:
date_args = [
('search_relation_date', '=', time.strftime(
DEFAULT_SERVER_DATE_FORMAT))]
# because of auto_join, we have to do the active test by hand
active_args = []
if context.get('active_test', True):
for arg in args:
if is_leaf(arg) and\
arg[0].startswith('search_relation'):
active_args = [('relation_all_ids.active', '=', True)]
break
return super(ResPartner, self).search(
cr, uid, args + date_args + active_args, offset=offset,
limit=limit, order=order, context=context, count=count)
def read(
self, cr, uid, ids, fields=None, context=None,
load='_classic_read'):
return super(ResPartner, self).read(
cr, uid, ids, fields=fields,
context=self._update_context(context, ids), load=load)
def write(self, cr, uid, ids, vals, context=None):
return super(ResPartner, self).write(
cr, uid, ids, vals, context=self._update_context(context, ids))
def _update_context(self, context, ids):
if context is None:
context = {}
ids = ids if isinstance(ids, list) else [ids] if ids else []
result = context.copy()
result.setdefault('active_id', ids[0] if ids else None)
result.setdefault('active_ids', ids)
result.setdefault('active_model', self._name)
return result

376
partner_relations/model/res_partner_relation.py

@ -1,376 +0,0 @@
# -*- coding: utf-8 -*-
'''Define model res.partner.relation'''
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import osv, models, fields, api, exceptions, _
from . import get_partner_type
class ResPartnerRelation(models.Model):
'''Model res.partner.relation is used to describe all links or relations
between partners in the database.
In many parts of the code we have to know whether the active partner is
the left partner, or the right partner. If the active partner is the
right partner we have to show the inverse name.
Because the active partner is crucial for the working of partner
relationships, we make sure on the res.partner model that the partner id
is set in the context where needed.
'''
_name = 'res.partner.relation'
_description = 'Partner relation'
_order = 'active desc, date_start desc, date_end desc'
def _search_any_partner_id(self, operator, value):
return [
'|',
('left_partner_id', operator, value),
('right_partner_id', operator, value),
]
def _get_computed_fields(
self, cr, uid, ids, field_names, arg, context=None):
'''Return a dictionary of dictionaries, with for every partner for
ids, the computed values.'''
def get_values(self, dummy_field_names, dummy_arg, context=None):
'''Get computed values for record'''
values = {}
on_right_partner = self._on_right_partner(self.right_partner_id.id)
# type_selection_id
values['type_selection_id'] = (
((self.type_id.id) * 10) + (on_right_partner and 1 or 0))
# partner_id_display
values['partner_id_display'] = (
self.left_partner_id.id
if on_right_partner
else self.right_partner_id.id
)
return values
return dict([
(i.id, get_values(i, field_names, arg, context=context))
for i in self.browse(cr, uid, ids, context=context)
])
_columns = {
'type_selection_id': osv.fields.function(
_get_computed_fields,
multi="computed_fields",
fnct_inv=lambda *args: None,
type='many2one', obj='res.partner.relation.type.selection',
string='Type',
),
'partner_id_display': osv.fields.function(
_get_computed_fields,
multi="computed_fields",
fnct_inv=lambda *args: None,
type='many2one', obj='res.partner',
string='Partner'
),
}
allow_self = fields.Boolean(related='type_id.allow_self')
left_contact_type = fields.Selection(
lambda s: s.env['res.partner.relation.type']._get_partner_types(),
'Left Partner Type',
compute='_get_partner_type_any',
store=True,
)
right_contact_type = fields.Selection(
lambda s: s.env['res.partner.relation.type']._get_partner_types(),
'Right Partner Type',
compute='_get_partner_type_any',
store=True,
)
any_partner_id = fields.Many2many(
'res.partner',
string='Partner',
compute='_get_partner_type_any',
search='_search_any_partner_id'
)
left_partner_id = fields.Many2one(
'res.partner',
string='Source Partner',
required=True,
auto_join=True,
ondelete='cascade',
)
right_partner_id = fields.Many2one(
'res.partner',
string='Destination Partner',
required=True,
auto_join=True,
ondelete='cascade',
)
type_id = fields.Many2one(
'res.partner.relation.type',
string='Type',
required=True,
auto_join=True,
)
date_start = fields.Date('Starting date')
date_end = fields.Date('Ending date')
active = fields.Boolean('Active', default=True)
@api.one
@api.depends('left_partner_id', 'right_partner_id')
def _get_partner_type_any(self):
self.left_contact_type = get_partner_type(self.left_partner_id)
self.right_contact_type = get_partner_type(self.right_partner_id)
self.any_partner_id = self.left_partner_id + self.right_partner_id
def _on_right_partner(self, cr, uid, right_partner_id, context=None):
'''Determine wether functions are called in a situation where the
active partner is the right partner. Default False!
'''
if (context and 'active_ids' in context and
right_partner_id in context.get('active_ids', [])):
return True
return False
def _correct_vals(self, vals):
"""Fill type and left and right partner id, according to whether
we have a normal relation type or an inverse relation type
"""
vals = vals.copy()
# If type_selection_id ends in 1, it is a reverse relation type
if 'type_selection_id' in vals:
prts_model = self.env['res.partner.relation.type.selection']
type_selection_id = vals['type_selection_id']
(type_id, is_reverse) = (
prts_model.browse(type_selection_id).
get_type_from_selection_id()
)
vals['type_id'] = type_id
if self._context.get('active_id'):
if is_reverse:
vals['right_partner_id'] = self._context['active_id']
else:
vals['left_partner_id'] = self._context['active_id']
if vals.get('partner_id_display'):
if is_reverse:
vals['left_partner_id'] = vals['partner_id_display']
else:
vals['right_partner_id'] = vals['partner_id_display']
if vals.get('other_partner_id'):
if is_reverse:
vals['left_partner_id'] = vals['other_partner_id']
else:
vals['right_partner_id'] = vals['other_partner_id']
del vals['other_partner_id']
if vals.get('contact_type'):
del vals['contact_type']
return vals
@api.multi
def write(self, vals):
"""Override write to correct values, before being stored."""
vals = self._correct_vals(vals)
return super(ResPartnerRelation, self).write(vals)
@api.model
def create(self, vals):
"""Override create to correct values, before being stored."""
vals = self._correct_vals(vals)
return super(ResPartnerRelation, self).create(vals)
def on_change_type_selection_id(
self, cr, uid, dummy_ids, type_selection_id, context=None):
'''Set domain on partner_id_display, when selection a relation type'''
result = {
'domain': {'partner_id_display': []},
'value': {'type_id': False}
}
if not type_selection_id:
return result
prts_model = self.pool['res.partner.relation.type.selection']
type_model = self.pool['res.partner.relation.type']
(type_id, is_reverse) = (
prts_model.get_type_from_selection_id(
cr, uid, type_selection_id)
)
result['value']['type_id'] = type_id
type_obj = type_model.browse(cr, uid, type_id, context=context)
partner_domain = []
check_contact_type = type_obj.contact_type_right
check_partner_category = (
type_obj.partner_category_right and
type_obj.partner_category_right.id
)
if is_reverse:
# partner_id_display is left partner
check_contact_type = type_obj.contact_type_left
check_partner_category = (
type_obj.partner_category_left and
type_obj.partner_category_left.id
)
if check_contact_type == 'c':
partner_domain.append(('is_company', '=', True))
if check_contact_type == 'p':
partner_domain.append(('is_company', '=', False))
if check_partner_category:
partner_domain.append(
('category_id', 'child_of', check_partner_category))
result['domain']['partner_id_display'] = partner_domain
return result
@api.one
@api.constrains('date_start', 'date_end')
def _check_dates(self):
"""End date should not be before start date, if not filled
:raises exceptions.Warning: When constraint is violated
"""
if (self.date_start and self.date_end and
self.date_start > self.date_end):
raise exceptions.Warning(
_('The starting date cannot be after the ending date.')
)
@api.one
@api.constrains('left_partner_id', 'type_id')
def _check_partner_type_left(self):
"""Check left partner for required company or person
:raises exceptions.Warning: When constraint is violated
"""
self._check_partner_type("left")
@api.one
@api.constrains('right_partner_id', 'type_id')
def _check_partner_type_right(self):
"""Check right partner for required company or person
:raises exceptions.Warning: When constraint is violated
"""
self._check_partner_type("right")
@api.one
def _check_partner_type(self, side):
"""Check partner to left or right for required company or person
:param str side: left or right
:raises exceptions.Warning: When constraint is violated
"""
assert side in ['left', 'right']
ptype = getattr(self.type_id, "contact_type_%s" % side)
company = getattr(self, '%s_partner_id' % side).is_company
if (ptype == 'c' and not company) or (ptype == 'p' and company):
raise exceptions.Warning(
_('The %s partner is not applicable for this relation type.') %
side
)
@api.one
@api.constrains('left_partner_id', 'right_partner_id')
def _check_not_with_self(self):
"""Not allowed to link partner to same partner
:raises exceptions.Warning: When constraint is violated
"""
if self.left_partner_id == self.right_partner_id:
if not self.allow_self:
raise exceptions.Warning(
_('Partners cannot have a relation with themselves.')
)
@api.one
@api.constrains('left_partner_id', 'right_partner_id', 'active')
def _check_relation_uniqueness(self):
"""Forbid multiple active relations of the same type between the same
partners
:raises exceptions.Warning: When constraint is violated
"""
if not self.active:
return
domain = [
('type_id', '=', self.type_id.id),
('active', '=', True),
('id', '!=', self.id),
('left_partner_id', '=', self.left_partner_id.id),
('right_partner_id', '=', self.right_partner_id.id),
]
if self.date_start:
domain += ['|', ('date_end', '=', False),
('date_end', '>=', self.date_start)]
if self.date_end:
domain += ['|', ('date_start', '=', False),
('date_start', '<=', self.date_end)]
if self.search(domain):
raise exceptions.Warning(
_('There is already a similar relation with overlapping dates')
)
def get_action_related_partners(self, cr, uid, ids, context=None):
'''return a window action showing a list of partners taking part in the
relations names by ids. Context key 'partner_relations_show_side'
determines if we show 'left' side, 'right' side or 'all' (default)
partners.
If active_model is res.partner.relation.all, left=this and
right=other'''
if context is None:
context = {}
field_names = {}
if context.get('active_model', self._name) == self._name:
field_names = {
'left': ['left'],
'right': ['right'],
'all': ['left', 'right']
}
elif context.get('active_model') == 'res.partner.relation.all':
field_names = {
'left': ['this'],
'right': ['other'],
'all': ['this', 'other']
}
else:
assert False, 'Unknown active_model!'
partner_ids = []
field_names = field_names[
context.get('partner_relations_show_side', 'all')]
field_names = ['%s_partner_id' % n for n in field_names]
for relation in self.pool[context.get('active_model')].read(
cr, uid, ids, context=context, load='_classic_write'):
for name in field_names:
partner_ids.append(relation[name])
return {
'name': _('Related partners'),
'type': 'ir.actions.act_window',
'res_model': 'res.partner',
'domain': [('id', 'in', partner_ids)],
'views': [(False, 'tree'), (False, 'form')],
'view_type': 'form'
}

237
partner_relations/model/res_partner_relation_all.py

@ -1,237 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2014 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api
from openerp.tools import drop_view_if_exists
from .res_partner_relation_type_selection import \
ResPartnerRelationTypeSelection
from . import get_partner_type, PADDING
class ResPartnerRelationAll(models.AbstractModel):
_auto = False
_log_access = False
_name = 'res.partner.relation.all'
_overlays = 'res.partner.relation'
_description = 'All (non-inverse + inverse) relations between partners'
_additional_view_fields = []
'''append to this list if you added fields to res_partner_relation that
you need in this model and related fields are not adequate (ie for sorting)
You must use the same name as in res_partner_relation.
Don't overwrite this list in your declaration but append in _auto_init:
def _auto_init(self, cr, context=None):
self._additional_view_fields.append('my_field')
return super(ResPartnerRelationAll, self)._auto_init(
cr, context=context)
my_field = fields...
'''
this_partner_id = fields.Many2one(
'res.partner',
string='Current Partner',
required=True,
)
other_partner_id = fields.Many2one(
'res.partner',
string='Other Partner',
required=True,
)
type_id = fields.Many2one(
'res.partner.relation.type',
string='Relation Type',
required=True,
)
type_selection_id = fields.Many2one(
'res.partner.relation.type.selection',
string='Relation Type',
required=True,
)
relation_id = fields.Many2one(
'res.partner.relation',
'Relation',
readonly=True,
)
record_type = fields.Selection(
ResPartnerRelationTypeSelection._RECORD_TYPES,
'Record Type',
readonly=True,
)
contact_type = fields.Selection(
lambda s: s.env['res.partner.relation.type']._get_partner_types(),
'Partner Type',
default=lambda self: self._get_default_contact_type()
)
date_start = fields.Date('Starting date')
date_end = fields.Date('Ending date')
active = fields.Boolean('Active', default=True)
def _auto_init(self, cr, context=None):
drop_view_if_exists(cr, self._table)
additional_view_fields = ','.join(self._additional_view_fields)
additional_view_fields = (',' + additional_view_fields)\
if additional_view_fields else ''
cr.execute(
'''create or replace view %(table)s as
select
id * %(padding)d as id,
id as relation_id,
type_id,
cast('a' as char(1)) as record_type,
left_contact_type as contact_type,
left_partner_id as this_partner_id,
right_partner_id as other_partner_id,
date_start,
date_end,
active,
type_id * %(padding)d as type_selection_id
%(additional_view_fields)s
from %(underlying_table)s
union select
id * %(padding)d + 1,
id,
type_id,
cast('b' as char(1)),
right_contact_type,
right_partner_id,
left_partner_id,
date_start,
date_end,
active,
type_id * %(padding)d + 1
%(additional_view_fields)s
from %(underlying_table)s''' % {
'table': self._table,
'padding': PADDING,
'additional_view_fields': additional_view_fields,
'underlying_table': 'res_partner_relation',
}
)
return super(ResPartnerRelationAll, self)._auto_init(
cr, context=context)
def _get_underlying_object(self):
"""Get the record on which this record is overlaid"""
return self.env[self._overlays].browse(self.id / PADDING)
def _get_default_contact_type(self):
partner_id = self._context.get('default_this_partner_id')
if partner_id:
partner = self.env['res.partner'].browse(partner_id)
return get_partner_type(partner)
return False
@api.multi
def name_get(self):
return {
this.id: '%s %s %s' % (
this.this_partner_id.name,
this.type_selection_id.name_get()[0][1],
this.other_partner_id.name,
)
for this in self
}
@api.onchange('type_selection_id')
def onchange_type_selection_id(self):
"""Add domain on other_partner_id according to category_other and
contact_type_other"""
domain = []
if self.type_selection_id.contact_type_other:
domain.append(
('is_company', '=',
self.type_selection_id.contact_type_other == 'c'))
if self.type_selection_id.partner_category_other:
domain.append(
('category_id', 'in',
self.type_selection_id.partner_category_other.ids))
return {
'domain': {
'other_partner_id': domain,
}
}
@api.onchange('this_partner_id')
def onchange_this_partner_id(self):
if not self.this_partner_id:
return {'domain': {'type_selection_id': []}}
return {
'domain': {
'type_selection_id': [
'|',
('contact_type_this', '=', False),
('contact_type_this', '=',
'c' if self.this_partner_id else 'p'),
'|',
('partner_category_this', '=', False),
('partner_category_this', 'in',
self.this_partner_id.category_id.ids),
],
},
}
@api.one
def write(self, vals):
"""divert non-problematic writes to underlying table"""
underlying_objs = self._get_underlying_object()
vals = {
key: val
for key, val in vals.iteritems()
if not self._columns[key].readonly
}
vals['type_selection_id'] = vals.get(
'type_selection_id',
underlying_objs.type_selection_id.id
)
return underlying_objs.write(vals)
@api.model
def create(self, vals):
"""divert non-problematic creates to underlying table
Create a res.partner.relation but return the converted id
"""
vals = {
key: val
for key, val in vals.iteritems()
if not self._columns[key].readonly
}
vals['type_selection_id'] = vals.get(
'type_selection_id',
False,
)
res = self.env[self._overlays].create(vals)
return self.browse(res.id * PADDING)
@api.one
def unlink(self):
"""divert non-problematic creates to underlying table"""
return self._get_underlying_object().unlink()

70
partner_relations/model/res_partner_relation_type.py

@ -1,70 +0,0 @@
# -*- coding: utf-8 -*-
'''Define model res.partner.relation.type'''
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2013 Therp BV (<http://therp.nl>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api, _
class ResPartnerRelationType(models.Model):
"""Model that defines relation types that might exist between partners"""
_name = 'res.partner.relation.type'
_description = 'Partner Relation Type'
_order = 'name'
name = fields.Char(
'Name',
size=128,
required=True,
translate=True,
)
name_inverse = fields.Char(
'Inverse name',
size=128,
required=True,
translate=True,
)
contact_type_left = fields.Selection(
'_get_partner_types',
'Left partner type',
)
contact_type_right = fields.Selection(
'_get_partner_types',
'Right partner type',
)
partner_category_left = fields.Many2one(
'res.partner.category',
'Left partner category',
)
partner_category_right = fields.Many2one(
'res.partner.category',
'Right partner category',
)
allow_self = fields.Boolean(
'Allow both sides to be the same',
default=False,
)
@api.model
def _get_partner_types(self):
return [
('c', _('Company')),
('p', _('Person')),
]

175
partner_relations/model/res_partner_relation_type_selection.py

@ -1,175 +0,0 @@
# -*- coding: UTF-8 -*-
'''
Created on 23 may 2014
@author: Ronald Portier, Therp
rportier@therp.nl
http://www.therp.nl
For the model defined here _auto is set to False to prevent creating a
database file. All i/o operations are overridden to use a sql SELECT that
takes data from res_partner_connection_type where each type is included in the
result set twice, so it appears that the connection type and the inverse
type are separate records..
The original function _auto_init is still called because this function
normally (if _auto == True) not only creates the db tables, but it also takes
care of registering all fields in ir_model_fields. This is needed to make
the field labels translatable.
example content for last lines of _statement:
select id, record_type,
customer_id, customer_name, customer_city, customer_zip, customer_street,
caller_id, caller_name, caller_phone, caller_fax, caller_email
from FULL_LIST as ResPartnerRelationTypeSelection where record_type = 'c'
ORDER BY ResPartnerRelationTypeSelection.customer_name asc,
ResPartnerRelationTypeSelection.caller_name asc;
'''
from openerp import api
from openerp.osv import fields
from openerp.osv import orm
from openerp.tools import drop_view_if_exists
from .res_partner_relation_type import ResPartnerRelationType
from . import PADDING
class ResPartnerRelationTypeSelection(orm.Model):
'''Virtual relation types'''
_RECORD_TYPES = [
('a', 'Type'),
('b', 'Inverse type'),
]
_auto = False # Do not try to create table in _auto_init(..)
_log_access = False
@api.multi
def get_type_from_selection_id(self):
"""Selection id ic computed from id of underlying type and the
kind of record. This function does the inverse computation to give
back the original type id, and about the record type."""
type_id = self.id / PADDING
is_reverse = (self.id % PADDING) > 0
return type_id, is_reverse
def _auto_init(self, cr, context=None):
drop_view_if_exists(cr, self._table)
# TODO: we lose field value's translations here.
# probably we need to patch ir_translation.get_source for that
# to get res_partner_relation_type's translations
cr.execute(
'''create or replace view %(table)s as
select
id * %(padding)d as id,
id as type_id,
cast('a' as char(1)) as record_type,
name as name,
contact_type_left as contact_type_this,
contact_type_right as contact_type_other,
partner_category_left as partner_category_this,
partner_category_right as partner_category_other
from %(underlying_table)s
union select
id * %(padding)d + 1,
id,
cast('b' as char(1)),
name_inverse,
contact_type_right,
contact_type_left,
partner_category_right,
partner_category_left
from %(underlying_table)s''' % {
'table': self._table,
'padding': PADDING,
'underlying_table': 'res_partner_relation_type',
})
return super(ResPartnerRelationTypeSelection, self)._auto_init(
cr, context=context)
def _search_partner_category_this(self, cr, uid, obj, field_name, args,
context=None):
category_ids = []
for arg in args:
if isinstance(arg, tuple) and arg[0] == field_name\
and (arg[1] == '=' or arg[1] == 'in'):
# TODO don't we have an api function to eval that?
for delta in arg[2]:
if delta[0] == 6:
category_ids.extend(delta[2])
if category_ids:
return [
'|',
('partner_category_this', '=', False),
('partner_category_this', 'in', category_ids),
]
else:
return [('partner_category_this', '=', False)]
_name = 'res.partner.relation.type.selection'
_description = 'All relation types'
_foreign_keys = []
_columns = {
'record_type': fields.selection(_RECORD_TYPES, 'Record type', size=16),
'type_id': fields.many2one(
'res.partner.relation.type', 'Type'),
'name': fields.char('Name', size=64),
'contact_type_this': fields.selection(
ResPartnerRelationType._get_partner_types.im_func,
'Current record\'s partner type'),
'contact_type_other': fields.selection(
ResPartnerRelationType._get_partner_types.im_func,
'Other record\'s partner type'),
'partner_category_this': fields.many2one(
'res.partner.category', 'Current record\'s category'),
'partner_category_other': fields.many2one(
'res.partner.category', 'Other record\'s category'),
# search field to handle many2many deltas from the client
'search_partner_category_this': fields.function(
lambda self, cr, uid, ids, context=None: dict(
[(i, False) for i in ids]),
fnct_search=_search_partner_category_this,
type='many2many', obj='res.partner.category',
string='Current record\'s category'),
}
_order = 'name asc'
def name_get(self, cr, uid, ids, context=None):
'translate name using translations from res.partner.relation.type'
result = super(ResPartnerRelationTypeSelection, self).name_get(
cr, uid, ids, context=context)
ir_translation = self.pool['ir.translation']
return [
(i, ir_translation._get_source(
cr, uid,
'res.partner.relation.type,name_inverse'
if self.get_type_from_selection_id(cr, uid, i)[1]
else 'res.partner.relation.type,name',
'model', context.get('lang'), name))
for i, name in result]
def name_search(self, cr, uid, name='', args=None, operator='ilike',
context=None, limit=100):
'search for translated names in res.partner.relation.type'
res_partner_relation_type = self.pool['res.partner.relation.type']
relation_ids = res_partner_relation_type.search(
cr, uid, [('name', operator, name)],
context=context)
inverse_relation_ids = res_partner_relation_type.search(
cr, uid, [('name_inverse', operator, name)],
context=context)
all_ids = self.search(
cr, uid,
[
('id', 'in',
map(lambda x: x * PADDING, relation_ids) +
map(lambda x: x * PADDING + 1, inverse_relation_ids)),
] + (args or []),
context=context, limit=limit)
return self.name_get(cr, uid, all_ids, context=context)

22
partner_relations/test/test_allow.yml

@ -1,22 +0,0 @@
-
I create a relation allowing the same partner at both ends.
-
!record {model: res.partner.relation.type, id: partner_relations.allow_self}:
name: 'Relation Allow'
name_inverse: 'Inverse Relation Allow'
contact_type_right: 'p'
contact_type_left: 'p'
allow_self: True
-
I create a partner U for testing purposes
-
!record {model: res.partner, id: partner_relations.test_U}:
name: 'unittests.U'
image: ''
-
I create relation instance U -- (allow) --> U
-
!record {model: res.partner.relation, id: partner_relations.test_allow}:
left_partner_id: partner_relations.test_U
right_partner_id: partner_relations.test_U
type_id: partner_relations.allow_self

1
partner_relations/tests/__init__.py

@ -1 +0,0 @@
from . import test_partner_relations

80
partner_relations/tests/test_partner_relations.py

@ -1,80 +0,0 @@
# Author: Charbel Jacquin
# Copyright 2015 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from openerp.tests import common
from openerp.exceptions import ValidationError
class TestPartnerRelation(common.TransactionCase):
def setUp(self):
super(TestPartnerRelation, self).setUp()
self.partner_model = self.env['res.partner']
self.relation_type_model = self.env['res.partner.relation.type']
self.relation_model = self.env['res.partner.relation']
self.partner_1 = self.partner_model.create({
'name': 'Test User 1',
'is_company': False
})
self.partner_2 = self.partner_model.create({
'name': 'Test User 2',
'is_company': False
})
self.relation_allow = self.relation_type_model.create({
'name': 'allow',
'name_inverse': 'allow_inverse',
'contact_type_left': 'p',
'contact_type_right': 'p',
'allow_self': True
})
self.relation_disallow = self.relation_type_model.create({
'name': 'disallow',
'name_inverse': 'disallow_inverse',
'contact_type_left': 'p',
'contact_type_right': 'p',
'allow_self': False
})
self.relation_default = self.relation_type_model.create({
'name': 'default',
'name_inverse': 'default_inverse',
'contact_type_left': 'p',
'contact_type_right': 'p',
})
def test_self_allowed(self):
self.relation_model.create({'type_id': self.relation_allow.id,
'left_partner_id': self.partner_1.id,
'right_partner_id': self.partner_1.id})
def test_self_disallowed(self):
with self.assertRaises(ValidationError):
self.relation_model.create({'type_id': self.relation_disallow.id,
'left_partner_id': self.partner_1.id,
'right_partner_id': self.partner_1.id})
def test_self_default(self):
with self.assertRaises(ValidationError):
self.relation_model.create({'type_id': self.relation_default.id,
'left_partner_id': self.partner_1.id,
'right_partner_id': self.partner_1.id})

97
partner_relations/view/res_partner_relation.xml

@ -1,97 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="form_res_partner_relation" model="ir.ui.view">
<field name="model">res.partner.relation</field>
<field type="xml" name="arch">
<form string="Partner Relation">
<sheet>
<field name="left_partner_id" />
<field name="type_id" />
<field name="right_partner_id" />
</sheet>
</form>
</field>
</record>
<record id="tree_res_partner_relation" model="ir.ui.view">
<field name="model">res.partner.relation</field>
<field name="arch" type="xml">
<tree
string="Partner Relations"
colors="gray:date_end and date_end &lt; current_date or not active;blue:date_start &gt; current_date"
editable="top"
>
<field
name="left_partner_id"
options="{'create': false, 'create_edit': false}"
/>
<field
name="type_selection_id"
required="True"
options="{'create': false, 'create_edit': false}"/>
<field
name="right_partner_id"
options="{'create': false, 'create_edit': false}"
/>
<field name="date_start" />
<field name="date_end" />
<field name="active" />
</tree>
</field>
</record>
<record id="search_res_partner_relation" model="ir.ui.view">
<field name="model">res.partner.relation</field>
<field name="arch" type="xml">
<search string="Search Relations">
<field name="any_partner_id" widget="many2one"/>
<field name="left_partner_id"/>
<field name="right_partner_id"/>
<field name="type_id"/>
<field name="active"/>
<group expand="0" string="Group By">
<filter string="Left Partner" context="{'group_by': 'left_partner_id'}"/>
<filter string="Right Partner" context="{'group_by': 'right_partner_id'}"/>
<filter string="Relationship Type" context="{'group_by': 'type_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_res_partner_relation" model="ir.actions.act_window">
<field name="name">Relations</field>
<field name="res_model">res.partner.relation</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="tree_res_partner_relation"/>
<field name="search_view_id" ref="search_res_partner_relation"/>
<field name="domain">[('active', '=', True)]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.
</p>
</field>
</record>
<record id="action_show_right_relation_partners" model="ir.actions.server">
<field name="sequence" eval="5"/>
<field name="state">code</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_res_partner_relation"/>
<field name="code">action = self.get_action_related_partners(cr, uid, context.get('active_ids', []), dict(context or {}, partner_relations_show_side='right'))</field>
<field name="condition">True</field>
<field name="name">Show partners</field>
</record>
<record id="action_show_right_relation_partners_value" model="ir.values">
<field name="name">Show partners</field>
<field name="key">action</field>
<field name="key2">client_action_multi</field>
<field name="model">res.partner.relation.all</field>
<field name="value" eval="'ir.actions.server,%d' % ref('partner_relations.action_show_right_relation_partners')" />
</record>
</data>
</openerp>

92
partner_relations/view/res_partner_relation_all.xml

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="tree_res_partner_relation_all" model="ir.ui.view">
<field name="model">res.partner.relation.all</field>
<field name="arch" type="xml">
<tree
string="Partner Relations"
colors="gray:(date_end and date_end &lt; current_date) or not active;blue:date_start &gt; current_date"
editable="top"
>
<field
name="this_partner_id"
readonly="1"
/>
<field
name="type_selection_id"
required="True"
domain="[
'|',
('contact_type_this', '=', False),
('contact_type_this', '=', contact_type),
]"
options="{'create': false, 'create_edit': false}"
/>
<field
name="other_partner_id"
attrs="{
'readonly': [('type_selection_id', '=', False)],
}"
options="{'create': false, 'create_edit': false}"
/>
<field name="date_start" />
<field name="date_end" />
<field name="active" />
<field name="contact_type" invisible="1"/>
</tree>
</field>
</record>
<record id="form_res_partner_relation_all" model="ir.ui.view">
<field name="model">res.partner.relation.all</field>
<field name="arch" type="xml">
<form string="Partner relation">
<group>
<field name="this_partner_id" />
<field name="type_selection_id" />
<field name="other_partner_id" />
</group>
<group>
<field name="date_start" />
<field name="date_end" />
<field name="active" />
</group>
</form>
</field>
</record>
<record id="search_res_partner_relation_all" model="ir.ui.view">
<field name="model">res.partner.relation.all</field>
<field name="arch" type="xml">
<search string="Search Relations">
<field name="this_partner_id"/>
<field name="other_partner_id"/>
<field name="type_id"/>
<field name="active"/>
<group expand="0" string="Group By">
<filter string="Other Partner" context="{'group_by': 'other_partner_id'}"/>
<filter string="Relationship Type" context="{'group_by': 'type_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_res_partner_relation_all" model="ir.actions.act_window">
<field name="name">Relations</field>
<field name="res_model">res.partner.relation.all</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="tree_res_partner_relation_all"/>
<field name="search_view_id" ref="search_res_partner_relation_all"/>
<field name="domain">[('active', '=', True)]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Record and track your partners' relations. Relations may be linked to other partners with a type either directly or inversely.
</p>
</field>
</record>
</data>
</openerp>
Loading…
Cancel
Save