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] - migration partner_multi_relation #932

Closed
wants to merge 38 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e696053
Merge pull request #329 from OCA/13.0
bt-admin Oct 1, 2019
6dd8486
Merge pull request #331 from OCA/13.0
bt-admin Oct 4, 2019
752d99b
Merge pull request #332 from OCA/13.0
bt-admin Oct 6, 2019
f0eafc1
Merge pull request #335 from OCA/13.0
bt-admin Oct 12, 2019
1807e98
Merge pull request #337 from OCA/13.0
bt-admin Oct 15, 2019
63b2209
Merge pull request #346 from OCA/13.0
bt-admin Nov 18, 2019
5f23572
Merge pull request #348 from OCA/13.0
bt-admin Nov 19, 2019
1c9cb5d
Merge pull request #352 from OCA/13.0
bt-admin Nov 20, 2019
e310788
Merge pull request #355 from OCA/13.0
bt-admin Nov 21, 2019
612e80b
Merge pull request #356 from OCA/13.0
bt-admin Nov 26, 2019
2ba4d7c
Merge pull request #357 from OCA/13.0
bt-admin Nov 27, 2019
92772ae
Merge pull request #359 from OCA/13.0
bt-admin Nov 29, 2019
aea3802
Merge pull request #362 from OCA/13.0
bt-admin Dec 3, 2019
23e5f11
Merge pull request #365 from OCA/13.0
bt-admin Dec 11, 2019
70a49a6
Merge pull request #366 from OCA/13.0
bt-admin Dec 18, 2019
df43b7a
Merge pull request #368 from OCA/13.0
bt-admin Dec 24, 2019
846a127
Merge pull request #369 from OCA/13.0
bt-admin Dec 29, 2019
52bd557
Merge pull request #378 from OCA/13.0
bt-admin Jan 24, 2020
ec906ff
Merge pull request #381 from OCA/13.0
bt-admin Feb 1, 2020
7d96381
Merge pull request #382 from OCA/13.0
bt-admin Feb 3, 2020
90efdc6
Merge pull request #390 from OCA/13.0
bt-admin Feb 20, 2020
33f3637
Merge pull request #395 from OCA/13.0
bt-admin Feb 29, 2020
3b6f180
Merge pull request #397 from OCA/13.0
bt-admin Mar 4, 2020
b51ebd5
Merge pull request #398 from OCA/13.0
bt-admin Mar 5, 2020
cacb395
Merge pull request #399 from OCA/13.0
bt-admin Mar 11, 2020
53404c0
Merge pull request #402 from OCA/13.0
bt-admin Mar 15, 2020
8215b3b
Merge pull request #404 from OCA/13.0
bt-admin Mar 22, 2020
48bd5c1
Merge pull request #405 from OCA/13.0
bt-admin Mar 26, 2020
3afa1fd
Merge pull request #407 from OCA/13.0
bt-admin Mar 29, 2020
641718e
Merge pull request #409 from OCA/13.0
bt-admin Apr 2, 2020
7fcc531
Merge pull request #411 from OCA/13.0
bt-admin Apr 3, 2020
cb3cffc
Merge pull request #415 from OCA/13.0
bt-admin Apr 20, 2020
9599cbb
Merge pull request #417 from OCA/13.0
bt-admin Apr 21, 2020
2a0f71f
Merge pull request #423 from OCA/13.0
bt-admin Apr 29, 2020
6d82a2b
Merge pull request #429 from OCA/13.0
bt-admin May 12, 2020
5fb24ab
[t117028] Migration v13: partner_multi_relation OCA Module
May 14, 2020
3f9692d
[t117028] Migration v13: partner_multi_relation OCA Module
May 14, 2020
d31313d
[t117028] Migration v13: partner_multi_relation OCA Module
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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.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/12.0/partner_multi_relation/static/description/partner_form_view_smart_button.png

.. image:: https://raw.githubusercontent.com/OCA/partner-contact/12.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:%2012.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/12.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
28 changes: 28 additions & 0 deletions partner_multi_relation/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 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": [
'base',
'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,
}
116 changes: 116 additions & 0 deletions partner_multi_relation/data/demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<?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="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">[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="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">[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="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">[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