-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by pedrobaeza
- Loading branch information
Showing
24 changed files
with
1,370 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
=============================================== | ||
Sales documents permissions by channels (teams) | ||
=============================================== | ||
|
||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png | ||
:target: https://odoo-community.org/page/development-status | ||
:alt: Production/Stable | ||
.. |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%2Fsale--workflow-lightgray.png?logo=github | ||
:target: https://github.com/OCA/sale-workflow/tree/16.0/sales_team_security | ||
:alt: OCA/sale-workflow | ||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
:target: https://translation.odoo-community.org/projects/sale-workflow-16-0/sale-workflow-16-0-sales_team_security | ||
:alt: Translate me on Weblate | ||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png | ||
:target: https://runbot.odoo-community.org/runbot/167/16.0 | ||
:alt: Try me on Runbot | ||
|
||
|badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
||
This module adds a new "Sale" group called "User: Team documents", that | ||
includes the proper permissions for showing only the information related to | ||
that user sale team (having assigned that team/channel or no team at all, | ||
independently from the assigned salesman): | ||
|
||
* Contacts. | ||
* Quotations/Sales Orders (implemented in sales_team_security_sale) | ||
* Leads/Opportunities (implemented in sales_team_security_crm) | ||
|
||
It also handles the propagation of the sales team from commercial partners to | ||
the contacts, which standard doesn't do. | ||
|
||
It also handles the sync (auto-creation and remove) of followers in company partners | ||
and childs of them according to salesmans. Any example about it: | ||
- Partner company > Salesman: Admin | ||
- Partner company, Contact 1 > Without salesman | ||
- Partner company, Contact 2 > Salesman: Demo | ||
All these partners have these followers: Admin + Demo | ||
|
||
And finally, there are rules for partners to be restricted to the own ones for | ||
the group "User: Own Documents Only" for being coherent with the permission | ||
scheme. Someone with this permission will see: | ||
|
||
- Contacts without salesman nor team assigned. | ||
- Contacts without salesman assigned, but the same team. | ||
- Contacts with them as salesman, independently from the team. | ||
- Contacts with them as follower. | ||
|
||
For keeping consistent accesses, followers of the main and shipping/invoice | ||
contacts are synced according the salesman of the children contacts | ||
|
||
**Table of contents** | ||
|
||
.. contents:: | ||
:local: | ||
|
||
Installation | ||
============ | ||
|
||
At installation time, this module sets in all the contacts that have the sales | ||
team empty the sales team of the parent, and sync followers in parent contacts | ||
and invoice/shipping addresses. If you have a lot of contacts, this | ||
operation can take a while. | ||
|
||
Configuration | ||
============= | ||
|
||
#. Go to *Configuration > Users & Companies > Users*. | ||
#. Open or create a user. | ||
#. On the section "Sale", select "User: Team documents". | ||
|
||
Known issues / Roadmap | ||
====================== | ||
|
||
* This module modifies sales security groups hierarchy, so any other module | ||
doing something similar might conflict with this one. | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/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/sale-workflow/issues/new?body=module:%20sales_team_security%0Aversion:%2016.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 | ||
~~~~~~~ | ||
|
||
* Tecnativa | ||
|
||
Contributors | ||
~~~~~~~~~~~~ | ||
|
||
* `Tecnativa <https://www.tecnativa.com>`__: | ||
|
||
* Pedro M. Baeza | ||
* Víctor Martínez | ||
* César A. Sánchez | ||
|
||
* `Guadaltech <https://www.guadaltech.es>`__: | ||
|
||
* Ramón Bajona | ||
|
||
* Iván Todorovich <[email protected]> | ||
|
||
* `Pesol <https://www.pesol.es>`__: | ||
|
||
* Jonathan Oscategui Taza <[email protected]> | ||
|
||
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. | ||
|
||
.. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px | ||
:target: https://github.com/pedrobaeza | ||
:alt: pedrobaeza | ||
.. |maintainer-ivantodorovich| image:: https://github.com/ivantodorovich.png?size=40px | ||
:target: https://github.com/ivantodorovich | ||
:alt: ivantodorovich | ||
|
||
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__: | ||
|
||
|maintainer-pedrobaeza| |maintainer-ivantodorovich| | ||
|
||
This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/16.0/sales_team_security>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
|
||
from . import models | ||
from .hooks import post_init_hook, uninstall_hook |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Copyright 2016-2020 Tecnativa - Pedro M. Baeza | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
|
||
{ | ||
"name": "Sales documents permissions by channels (teams)", | ||
"summary": "New group for seeing only sales channel's documents", | ||
"version": "16.0.1.0.0", | ||
"category": "Sales", | ||
"website": "https://github.com/OCA/sale-workflow", | ||
"author": "Tecnativa, Odoo Community Association (OCA)", | ||
"license": "AGPL-3", | ||
"installable": True, | ||
"development_status": "Production/Stable", | ||
"maintainers": ["pedrobaeza", "ivantodorovich"], | ||
"depends": ["sales_team"], | ||
"data": ["security/sales_team_security.xml", "views/res_partner_view.xml"], | ||
"post_init_hook": "post_init_hook", | ||
"uninstall_hook": "uninstall_hook", | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Copyright 2018-2016 Tecnativa - Pedro M. Baeza | ||
# Copyright 2020 - Iván Todorovich | ||
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html | ||
|
||
from odoo import SUPERUSER_ID, api | ||
|
||
|
||
def post_init_hook(cr, registry): | ||
"""At installation time, propagate the parent sales team to the children | ||
contacts that have this field empty, as it's supposed that the intention | ||
is to have the same. | ||
""" | ||
cr.execute( | ||
"""UPDATE res_partner | ||
SET team_id=parent.team_id | ||
FROM res_partner AS parent | ||
WHERE parent.team_id IS NOT NULL | ||
AND res_partner.parent_id = parent.id | ||
AND res_partner.team_id IS NULL""" | ||
) | ||
|
||
|
||
def uninstall_hook(cr, registry): # pragma: no cover | ||
"""At uninstall, revert changes made to record rules""" | ||
with api.Environment.manage(): | ||
env = api.Environment(cr, SUPERUSER_ID, {}) | ||
env.ref("sales_team.group_sale_salesman_all_leads").write( | ||
{ | ||
"implied_ids": [ | ||
(6, 0, [env.ref("sales_team.group_sale_salesman").id]), | ||
], | ||
} | ||
) | ||
# At installation time, we need to sync followers | ||
with api.Environment.manage(): | ||
env = api.Environment(cr, SUPERUSER_ID, {}) | ||
partners = env["res.partner"].search( | ||
[ | ||
("parent_id", "=", False), | ||
("is_company", "=", True), | ||
"|", | ||
("user_id", "!=", False), | ||
("child_ids.user_id", "!=", False), | ||
] | ||
) | ||
partners._add_followers_from_salesmans() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * sales_team_security | ||
# | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 15.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2022-06-28 21:00+0000\n" | ||
"PO-Revision-Date: 2022-06-28 21:00+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: sales_team_security | ||
#: model:ir.model,name:sales_team_security.model_res_partner | ||
msgid "Contact" | ||
msgstr "Contacto" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,help:sales_team_security.field_res_partner__team_id | ||
#: model:ir.model.fields,help:sales_team_security.field_res_users__team_id | ||
msgid "" | ||
"If set, this Sales Team will be used for sales and assignments related to " | ||
"this partner" | ||
msgstr "" | ||
"Si está configurado, este equipo de ventas será usado para las ventas y " | ||
"asignaciones relacionadas a este partner." | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model,name:sales_team_security.model_ir_rule | ||
msgid "Record Rule" | ||
msgstr "Regla de registro" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_partner__team_id | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_users__team_id | ||
msgid "Sales Team" | ||
msgstr "Equipo de ventas" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_partner__user_id | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_users__user_id | ||
msgid "Salesperson" | ||
msgstr "Comercial" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,help:sales_team_security.field_res_partner__user_id | ||
#: model:ir.model.fields,help:sales_team_security.field_res_users__user_id | ||
msgid "The internal user in charge of this contact." | ||
msgstr "El usuario interno a cargo de este contacto." | ||
|
||
#. module: sales_team_security | ||
#: model:res.groups,comment:sales_team_security.group_sale_team_manager | ||
msgid "" | ||
"The user will have an access to the documents of the sales teams he/she " | ||
"belongs to." | ||
msgstr "El usuario tendrá acceso a los documentos de los equipos comerciales a los que pertenece." | ||
|
||
#. module: sales_team_security | ||
#: model:res.groups,name:sales_team_security.group_sale_team_manager | ||
msgid "User: Team Documents Only" | ||
msgstr "Usuario: Solo documentos del equipo" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * sales_team_security | ||
# | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 15.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2022-06-28 21:01+0000\n" | ||
"PO-Revision-Date: 2023-03-20 12:23+0000\n" | ||
"Last-Translator: Francesco Foresti <[email protected]>\n" | ||
"Language-Team: \n" | ||
"Language: it\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: Weblate 4.14.1\n" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model,name:sales_team_security.model_res_partner | ||
msgid "Contact" | ||
msgstr "Contatto" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,help:sales_team_security.field_res_partner__team_id | ||
#: model:ir.model.fields,help:sales_team_security.field_res_users__team_id | ||
msgid "" | ||
"If set, this Sales Team will be used for sales and assignments related to " | ||
"this partner" | ||
msgstr "" | ||
"Se impostato, il team di vendita viene utilizzato per vendite e assegnazioni" | ||
" correlate al partner" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model,name:sales_team_security.model_ir_rule | ||
msgid "Record Rule" | ||
msgstr "Regola su record" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_partner__team_id | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_users__team_id | ||
msgid "Sales Team" | ||
msgstr "Team di vendita" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_partner__user_id | ||
#: model:ir.model.fields,field_description:sales_team_security.field_res_users__user_id | ||
msgid "Salesperson" | ||
msgstr "Addetto vendite" | ||
|
||
#. module: sales_team_security | ||
#: model:ir.model.fields,help:sales_team_security.field_res_partner__user_id | ||
#: model:ir.model.fields,help:sales_team_security.field_res_users__user_id | ||
msgid "The internal user in charge of this contact." | ||
msgstr "L'utente interno responsabile di questo contatto. " | ||
|
||
#. module: sales_team_security | ||
#: model:res.groups,comment:sales_team_security.group_sale_team_manager | ||
msgid "" | ||
"The user will have an access to the documents of the sales teams he/she " | ||
"belongs to." | ||
msgstr "" | ||
|
||
#. module: sales_team_security | ||
#: model:res.groups,name:sales_team_security.group_sale_team_manager | ||
msgid "User: Team Documents Only" | ||
msgstr "" |
Oops, something went wrong.