Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
96 changes: 96 additions & 0 deletions mail_partner_resolution_by_company/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

==================================
Mail Partner Resolution by Company
==================================

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

.. |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/license-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%2Fmulti--company-lightgray.png?logo=github
:target: https://github.com/OCA/multi-company/tree/15.0/mail_partner_resolution_by_company
:alt: OCA/multi-company
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/multi-company-15-0/multi-company-15-0-mail_partner_resolution_by_company
: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/multi-company&target_branch=15.0
:alt: Try me on Runboat

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

This module limits partner resolution from incoming emails to partners belonging to the
current company or to shared companies.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

In models like project.task that interact directly with customers, incoming emails add
CC addresses as followers, but the company restriction is not considered. In a multi-company
environment, if a customer sends an email with a CC address that belongs to a contact
dedicated to another company, that contact is added as a follower. Since the user lacks
access rights to that contact’s company, they get an access error viewing the record.

This module addresses the issue by adding a company domain when matching email addresses
to contacts.

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/multi-company/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/multi-company/issues/new?body=module:%20mail_partner_resolution_by_company%0Aversion:%2015.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
~~~~~~~

* Quartile

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

* `Quartile <https://www.quartile.co>`__:

* Toshikimi Shigenobu
* Yoshi Tashiro

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/multi-company <https://github.com/OCA/multi-company/tree/15.0/mail_partner_resolution_by_company>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions mail_partner_resolution_by_company/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
14 changes: 14 additions & 0 deletions mail_partner_resolution_by_company/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Mail Partner Resolution by Company",
"summary": "Resolve partner by company when receiving emails",
"version": "15.0.1.0.0",
"category": "Mail",
"author": "Quartile, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/multi-company",
"license": "AGPL-3",
"depends": ["mail"],
"data": [],
"installable": True,
}
1 change: 1 addition & 0 deletions mail_partner_resolution_by_company/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import mail_thread
23 changes: 23 additions & 0 deletions mail_partner_resolution_by_company/models/mail_thread.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, models
Comment thread
nobuQuartile marked this conversation as resolved.
from odoo.osv import expression


class MailThread(models.AbstractModel):
_inherit = "mail.thread"

@api.model
def _mail_find_partner_from_emails(
self, emails, records=None, force_create=False, extra_domain=False
):
extra_domain = expression.AND(
[extra_domain or [], [("company_id", "in", [self.env.company.id, False])]]
)
return super()._mail_find_partner_from_emails(
emails,
records=records,
force_create=force_create,
extra_domain=extra_domain,
)
8 changes: 8 additions & 0 deletions mail_partner_resolution_by_company/readme/CONTEXT.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
In models like project.task that interact directly with customers, incoming emails add
CC addresses as followers, but the company restriction is not considered. In a multi-company
environment, if a customer sends an email with a CC address that belongs to a contact
dedicated to another company, that contact is added as a follower. Since the user lacks
access rights to that contact’s company, they get an access error viewing the record.

This module addresses the issue by adding a company domain when matching email addresses
to contacts.
4 changes: 4 additions & 0 deletions mail_partner_resolution_by_company/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* `Quartile <https://www.quartile.co>`__:

* Toshikimi Shigenobu
* Yoshi Tashiro
2 changes: 2 additions & 0 deletions mail_partner_resolution_by_company/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This module limits partner resolution from incoming emails to partners belonging to the
current company or to shared companies.
Loading
Loading