Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[13.0] [MIG] partner_multi_relation #913

Closed
wants to merge 43 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
fbbbd08
[MIG] partner_multi_relation: Migration to 10.0
NL66278 Dec 28, 2016
09c7f09
[FIX] partner_multi_relation: Several fixes:
gurneyalex Apr 6, 2017
a830193
[IMP] Menu order and v10 deprecations
chienandalu May 30, 2017
81a46d8
OCA Transbot updated translations from Transifex
oca-transbot Jun 10, 2017
f82a956
[FIX] partner_multi_relation: Fix errors on searches
pedrobaeza Sep 14, 2017
3472674
OCA Transbot updated translations from Transifex
oca-transbot Nov 25, 2017
40dc041
[IMP] Make partner_multi_relation more extendable.
NL66278 Oct 16, 2017
cdcd45f
[FIX] partner_multi_relation. Drop is_inverse from vals on creation o…
NL66278 Feb 9, 2018
6dc22c5
[FIX] partner_multi_relation. Wrong self instead of this.
NL66278 Feb 13, 2018
870b03c
[MIG] partner_multi_relation: Migration to 11.0
ddufresne Feb 26, 2018
5e8800d
[FIX] partner_multi_relation. Extendable but threadsafe.
NL66278 Apr 12, 2018
06c26e3
[MIG] partner_multi_relation: Continue migration to 11.0
ddufresne Apr 16, 2018
fe26e0b
[UPD] Update partner_multi_relation.pot
oca-travis Nov 7, 2018
0362dfa
Migrate partner_multi_relation to version 12.0
Nov 14, 2018
80df511
[UPD] Update partner_multi_relation.pot
oca-travis Nov 16, 2018
595c256
Update translation files
oca-transbot Dec 29, 2018
bd30dd8
[UPD] Update partner_multi_relation.pot
oca-travis Jan 25, 2019
a129d71
Update translation files
oca-transbot Jan 27, 2019
b949549
[UPD] README.rst
OCA-git-bot Jul 29, 2019
ff27bec
Translated using Weblate (Spanish)
Galoperd Nov 10, 2019
d4e1c23
[FIX] Context Errors With Active ID
osi-scampbell Mar 7, 2020
66e574b
[IMP] Formatting
osi-scampbell Apr 27, 2020
918e70d
[FIX] remove import statements for tests
skeller1 Apr 28, 2020
f6a18c1
[IMP] Flake8
osi-scampbell Apr 28, 2020
466aa64
partner_multi_relation 12.0.1.0.1
OCA-git-bot Apr 29, 2020
7131169
[FIX] partner_multi_relation: fix unlinking of record sets with same …
skeller1 Apr 29, 2020
281f3be
partner_multi_relation 12.0.1.1.0
OCA-git-bot May 4, 2020
20fe0b6
Translated using Weblate (Italian)
SicurSam May 11, 2020
c4948d4
Translated using Weblate (Italian)
SicurSam May 12, 2020
1b53e19
partner_multi_relation 12.0.1.2.0
OCA-git-bot May 12, 2020
728273f
[IMP] partner_multi_relation: black, isort, prettier
Rad0van May 13, 2020
291cae3
[MIG] partner_multi_relation: Migration to 13.0
Rad0van May 13, 2020
ddee99c
Fix linting, remove .vscode from commit
Rad0van May 14, 2020
d2d75cf
More linting fixes
Rad0van May 14, 2020
839a529
Revert "More linting fixes"
Rad0van May 14, 2020
c380b2e
Incremental attempt to improve linting
Rad0van May 14, 2020
72dbaab
flake8 incremental changes
Rad0van May 14, 2020
efcab29
Another attempt
Rad0van May 14, 2020
f512000
More linting
Rad0van May 14, 2020
b3523af
Removed do_in_draft() and added coloring
Rad0van Jun 24, 2020
df7bbdb
...
Rad0van Jun 24, 2020
d950972
...
Rad0van Jun 24, 2020
8a4ec7d
...
Rad0van Jun 24, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
190 changes: 190 additions & 0 deletions partner_multi_relation/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
=================
Partner Relations
=================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github
:target: https://github.com/OCA/partner-contact/tree/13.0/partner_multi_relation
:alt: OCA/partner-contact
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/partner-contact-12-0/partner-contact-12-0-partner_multi_relation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/134/13.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

This module aims to provide generic means to model relations between partners.

Examples would be 'is sibling of' or 'is friend of', but also 'has contract X
with' or 'is assistant of'. This way, you can encode your knowledge about your
partners directly in your partner list.

**Table of contents**

.. contents::
:local:

Usage
=====

Relation Types
~~~~~~~~~~~~~~

Before being able to use relations, you'll have define some first.
Do that in Contacts / Relations / Partner relations.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_list.png

A relation type has a name for both sides.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_form_empty.png

To have an assistant-relation, you would name one side 'is assistant of' and the other side 'has assistant'.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_form_name_filled.png

Partner Types
~~~~~~~~~~~~~

The `Partner Type` fields allow to constrain what type of partners can be used
on the left and right sides of the relation.

* In the example above, the assistant-relation only makes sense between people, so you would choose 'Person' for both partner types.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_form_partner_type_filled.png

* For a relation 'is a competitor of', both sides would be companies.
* A relation 'has worked for' should have persons on the left side and companies on the right side.

If you leave these fields empty, the relation is applicable to all types of partners.

Partner Categories
~~~~~~~~~~~~~~~~~~

You may use categories (tags) to further specify the type of partners.

You could for example enforce the 'is member of' relation to accept only companies with the label 'Organization' on the right side.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_form_category_filled.png

Reflexive
~~~~~~~~~

A reflexive relation type allows a partner to be in relation with himself.

For example, the CEO of a company could be his own manager.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_reflexive.png

Symmetric
~~~~~~~~~

A symetric relation has the same value for the left and right sides.

For example, in a competitor relation, both companies are competitors of each other.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_symmetric.png

Invalid Relation Handling
~~~~~~~~~~~~~~~~~~~~~~~~~

When the configuration of a relation type changes, some relations between 2 partners may become invalid.

For example, if the left partner type is set to `Person` and a relation already exists with a company on the right side,
that relation becomes invalid.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/relation_type_invalid_handling.png

What happens with invalid relations is customizable on the relation type.

4 possible behaviors are available:

* Do not allow change that will result in invalid relations
* Allow existing relations that do not fit changed conditions
* End relations per today, if they do not fit changed conditions
* Delete relations that do not fit changed conditions

Searching Partners With Relations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To search for existing relations, go to `Contacts / Relations / Relations`.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/search_relation.png

To find all assistants in your database, fill in 'assistant' and
autocomplete will propose to search for this type of relation.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/search_relation_2.png

Now if you want to find Colleen's assistant, you fill in 'Colleen' and one of the proposals
is to search for partners having a relation with Colleen.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/search_relation_3.png

Searching Relations From Partner View
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A smart button is available on the partner form view to display the list of relations.

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/partner_form_view_smart_button.png

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/13.0/partner_multi_relation/static/description/partner_form_view_smart_button_2.png

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/partner-contact/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/partner-contact/issues/new?body=module:%20partner_multi_relation%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Therp BV
* Camptocamp

Contributors
~~~~~~~~~~~~

* Holger Brunn <[email protected]>
* Stefan Rijnhart <[email protected]>
* Ronald Portier <[email protected]>
* Sandy Carter <[email protected]>
* Bruno Joliveau <[email protected]>
* Adriana Ierfino <[email protected]>
* Numigi (tm) and all its contributors (https://bit.ly/numigiens)

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/partner-contact <https://github.com/OCA/partner-contact/tree/13.0/partner_multi_relation>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions partner_multi_relation/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
22 changes: 22 additions & 0 deletions partner_multi_relation/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2013-2017 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Partner Relations",
"version": "13.0.1.0.0",
"author": "Therp BV,Camptocamp,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/partner-contact",
"complexity": "normal",
"category": "Customer Relationship Management",
"license": "AGPL-3",
"depends": ["contacts", "sales_team"],
"demo": ["data/demo.xml"],
"data": [
"security/ir.model.access.csv",
"views/res_partner_relation_all.xml",
"views/res_partner.xml",
"views/res_partner_relation_type.xml",
"views/menu.xml",
],
"auto_install": False,
"installable": True,
}
106 changes: 106 additions & 0 deletions partner_multi_relation/data/demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- 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="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">[email protected]</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="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">[email protected]</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="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">[email protected]</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>
</odoo>
Loading