Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0b38e98
Deprecate base_contact.
May 20, 2015
c131ca9
Translations and templates sync
sysadminmatmoz Aug 2, 2015
ac73227
Add missing default oca icons
yvaucher Aug 18, 2015
2811a5c
[UPD] prefix versions with 8.0
sbidoul Oct 9, 2015
39e01ce
[MIG] Make modules uninstallable
pedrobaeza Oct 14, 2015
02915b7
OCA module upgrade to version 9.0.
Oct 31, 2015
1557401
Making the 'personal contact' informations depentens of the module 'p…
yvaucher Jan 13, 2016
9e800ac
[MIG] Make modules uninstallable
pedrobaeza Oct 6, 2016
87899a0
[MIG] Rename manifest files
pedrobaeza Oct 6, 2016
3c6fc78
[MIG] 10.0 partner_contact_in_several_companies (#347)
Mar 8, 2017
2fa8c39
[MIG] V11 migration
Dec 2, 2017
6e7b6fd
[FIX] partner_contact_in_several_companies: Incorrect syntax for XML …
pedrobaeza Dec 17, 2017
7f0fd27
[FIX] partner_contact_in_several_companies: Fix problem in view (#541)
drdran Jan 2, 2018
d6b108f
[FIX] disable position editing on contact
Mar 11, 2018
f50200c
Translated using Weblate (Spanish)
Jul 19, 2019
ec8ebe7
[MIG] partner_contact_in_several_companies: Migration to 12.0
kongrattapong Feb 7, 2020
7a84462
Translated using Weblate (German)
marylla Apr 27, 2020
f133c0e
[MIG] partner_contact_in_several_companies: Migration to 13.0
foliveira-odoogap Aug 27, 2020
455ce1a
[IMP] fix minor changes in manyfest and view
foliveira-odoogap Aug 28, 2020
fbe9854
[IMP] check travis failure
foliveira-odoogap Sep 24, 2020
076fde5
[IMP] check travis failure_2
foliveira-odoogap Sep 24, 2020
b1a8ba1
[IMP] check travis failure_3
foliveira-odoogap Sep 24, 2020
52fb813
[IMP] pre-commit version downgrade
foliveira-odoogap Sep 25, 2020
cee21d0
[14.0][MIG] partner_contact_in_several_companies
jacob-willdooit Mar 20, 2021
5b5ad64
PR - Requested changes
jacob-willdooit Apr 6, 2021
b5fbb0c
Added translation using Weblate (French (France))
Yvesldff Apr 11, 2021
414f574
[FIX] Fix access right issues when using actions
Jan 31, 2022
9994a30
Translated using Weblate (Italian)
francesco-ooops May 2, 2022
99674d4
Translated using Weblate (French)
klodr Sep 16, 2022
433e20e
Translated using Weblate (French (Switzerland))
klodr Sep 16, 2022
7c7616f
Translated using Weblate (French (France))
klodr Sep 16, 2022
8446ca8
Translated using Weblate (Spanish)
Ivorra78 Jan 13, 2024
fdf89fd
[MIG] partner_contact_in_several_companies: Migration to 16.0
Oct 1, 2024
8338740
[IMP] partner_in_several_companies: complete README.rst
Oct 1, 2024
f02cd87
Translated using Weblate (Italian)
mymage Aug 25, 2025
e5f43c5
[IMP] partner_contact_in_several_companies: pre-commit execution
SirPyTech Sep 10, 2026
333d4f0
[MIG] partner_contact_in_several_companies: Migration to 18.0
Jun 5, 2026
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
217 changes: 217 additions & 0 deletions partner_contact_in_several_companies/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
============================
Contacts in several partners
============================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:78db4d4f7039afc92425214158b427a19fe6d71ca869162cc499f7b44547904e
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/18.0/partner_contact_in_several_companies
: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-18-0/partner-contact-18-0-partner_contact_in_several_companies
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/partner-contact&target_branch=18.0
:alt: Try me on Runboat

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

This module extends Odoo's Contacts app to **allow one contact to have
several job positions in different companies**. It is an essential
add-on for handling the 'gig economy' where people often work for
several companies at a time (e.g., film and television industry,
contract developers, construction, etc.)

Contacts are categorized as either:

- **Standalone Contact** (default): A normal contact (either an
Individual or a Company), though only Individual Standalone contacts
can be linked to.
- **Attached to existing Contact**: Usually used when adding a contact
under a Company, this contact is linked to a source Standalone
Contact. Source contacts can only be Individuals, not Companies, nor
can an Attached contact serve as the source of another Attached
contact.

**Table of contents**

.. contents::
:local:

Installation
============

1. Download the module from the OCA repository (ensure any dependencies
are satisfied).
2. Place the module in your Odoo addons directory.
3. Restart the Odoo service.
4. In Odoo, go to Apps > Update Apps List.
5. Find and install the Partner Contact in Several Companies module.

After installation, all existing contacts will be of type Standalone
(the default for the field contact_type).

Configuration
=============

No configuration is needed: new contacts will automatically be of type
Standalone.

Usage
=====

To add a new Standalone contact, add a contact as usual, either by
itself or under an existing contact's Contacts & Addresses tab (the
Contact Type will be 'Standalone' by default). Any Standalone Individual
contact can serve as the source for Attached contacts, whether that
Standalone contact was added by itself or under an existing Company's or
Individual's Contacts & Addresses tab.

To add a new Attached contact:
------------------------------

1. Ensure that the source Standalone contact is already created, though
you can create the Standalone contact on-the-fly if needed.
2. Open the contact under which you would like to add the Attached
contact (usually a Company, but it could be an Individual).
3. On the Contacts & Addresses tab, click the Add button.
4. Choose the type of contact you are adding (e.g. Contact, Delivery
Address, Other Address, etc., though usually you will select
Contact).
5. Select 'Attached to existing Contact' for the Contact Type
6. Select the source Standalone contact in the Contact drop-down list
(or create a new one on-the-fly). Only contacts that are Standalone
and are Individuals will appear in the list.
7. Fill in the other informational fields (e.g. Address, Email, Phone,
etc.) This data will not be copied or synchronized from the source
Standalone contact.
8. Click the Save & Close button (or Save & New). The Attached contact
will appear in the Contacts & Addresses tab of the parent Company,
and in the Other Positions tab of the source Standalone contact.
9. If you later change the Name of either a Standalone or Attached
contact, the Name will be synchronized between all related contacts.
However, other information (e.g., Address, Email, Phone, etc.) will
not be synchronized.

Searching for Contacts:
-----------------------

When searching for Contacts, only the matching Standalone contacts are
displayed, with the number of Attached contacts shown as '+ # other
position(s)'. Open the Standalone contact and select the Other Positions
tab to see the contacts that are 'Attached' to this Standalone contact.

NOTES:
------

1. This module merely sets up a relationship between the Standalone and
Attached contacts — other than 'Name', there is no address, phone,
email, etc. information synchronized or carried-over from one to the
other. For example, an email address in the Standalone contact is not
carried over to the Attached contact when created (and indeed they
can both have different email addresses). The contact Name is however
synchronized between Standalone and associated Attached contacts.
2. Attached contacts are not treated as duplicates when performing the
Contact Merge action due to Attached contacts being specifically
removed from the results of the res_partner.search() method (i.e.
only Standalone contacts are returned during a res_partner.search()).
3. This module is compatible with the OCA's Partner Contact Access Link
(partner_contact_access_link) module.
4. When you install this module, existing contacts will all become
Standalone contacts. If there are any child contacts of Companies
that you would like to convert to Attached to an existing contact, it
is a manual process: create the new Standalone contact without any
parent, and then change the child contact's Contact Type from
'Standalone' to 'Attached to existing Contact' and choose the new
Standalone contact that you created without any parent.

For further information:
------------------------

Please visit: \* https://www.odoo.com/forum/help-1 \*
https://github.com/OCA/partner-contact/

|Try me on Runbot|

.. |Try me on Runbot| image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:target: https://runbot.odoo-community.org/runbot/134/14.0

Known issues / Roadmap
======================

- You can not add position directly from individual partner, you can
just see other positions and update them

Improve:

- Add an wizard / form to clean create new position from individual
partner form. In this cas you will have to select an existing company
(or create one on the fly)

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 to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/partner-contact/issues/new?body=module:%20partner_contact_in_several_companies%0Aversion:%2018.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
-------

* Nicolas JEUDY
* Odoo SA

Contributors
------------

- Xavier ALT <xal@odoo.com> (original author)
- El Hadji Dem <elhadji.dem@savoirfairelinux.com>
- TheCloneMaster <the.clone.master@gmail.com>
- Sandy Carter <bwrsandman@gmail.com>
- Rudolf Schnapka <rs@techno-flex.de>
- Sebastien Alix <sebastien.alix@osiell.com>
- Jairo Llopis <j.llopis@grupoesoc.es>
- Richard deMeester <richard@willowit.com.au>
- Nicolas JEUDY
<`https://github.com/njeudy\\> <https://github.com/njeudy\>>`__
- Franco Tampieri <franco@tampieri.info>
- Rattapong Chokmasermkul <rattapongc@ecosoft.co.th>
- Stéphan Sainléger
<`https://github.com/stephansainleger\\> <https://github.com/stephansainleger\>>`__
- Ken Woychesko
<`https://github.com/bpmi\\> <https://github.com/bpmi\>>`__

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/18.0/partner_contact_in_several_companies>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions partner_contact_in_several_companies/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
17 changes: 17 additions & 0 deletions partner_contact_in_several_companies/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

{
"name": "Contacts in several partners",
"summary": "Allow to have one contact in several partners",
"version": "18.0.1.0.0",
"category": "Customer Relationship Management",
"website": "https://github.com/OCA/partner-contact",
"author": "Nicolas JEUDY, Odoo Community Association (OCA),Odoo SA",
"license": "AGPL-3",
"depends": ["base", "contacts", "partner_contact_personal_information_page"],
"data": ["views/res_partner.xml"],
"demo": ["demo/res_partner.xml", "demo/ir_actions.xml"],
"application": False,
"installable": True,
"auto_install": False,
}
13 changes: 13 additions & 0 deletions partner_contact_in_several_companies/demo/ir_actions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="action_partner_form" model="ir.actions.act_window">
<field name="name">All Customers in All Positions</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,list,form</field>
<field
name="context"
>{"search_default_customer":1, 'search_show_all_positions': {'is_set': True, 'set_value': True}}</field>
<field name="search_view_id" ref="base.view_res_partner_filter" />
</record>
</odoo>
20 changes: 20 additions & 0 deletions partner_contact_in_several_companies/demo/res_partner.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="res_partner_main2_position_consultant" model="res.partner">
<field name="name">Roger Scott</field>
<field name="function">Consultant</field>
<field name="parent_id" ref="base.res_partner_4" />
<field name="contact_id" ref="base.res_partner_main2" />
</record>
<record id="res_partner_contact1" model="res.partner">
<field name="name">Bob Egnops</field>
<field name="email">bob@hillenburg-oceaninstitute.com</field>
</record>
<record id="res_partner_contact1_work_position1" model="res.partner">
<field name="name">Bob Egnops</field>
<field name="function">Technician</field>
<field name="email">bob@yourcompany.com</field>
<field name="parent_id" ref="base.main_partner" />
<field name="contact_id" ref="res_partner_contact1" />
</record>
</odoo>
Loading
Loading