Skip to content

Commit

Permalink
Merge pull request #1371 from OCA/15.0
Browse files Browse the repository at this point in the history
Syncing from upstream OCA/purchase-workflow (15.0)
  • Loading branch information
bt-admin authored Feb 15, 2024
2 parents 605cbe4 + 47b9158 commit b57421a
Show file tree
Hide file tree
Showing 16 changed files with 471 additions and 28 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ addon | version | maintainers | summary
[purchase_requisition_order_remaining_qty](purchase_requisition_order_remaining_qty/) | 15.0.1.0.0 | [![victoralmau](https://github.com/victoralmau.png?size=30px)](https://github.com/victoralmau) | Purchase Requisition Order Remaining Qty
[purchase_requisition_tier_validation](purchase_requisition_tier_validation/) | 15.0.1.0.0 | | Extends the functionality of Purchase Agreements to support a tier validation process.
[purchase_rfq_number](purchase_rfq_number/) | 15.0.1.0.1 | | Different sequence for purchase for quotations
[purchase_security](purchase_security/) | 15.0.3.1.0 | [![pilarvargas-tecnativa](https://github.com/pilarvargas-tecnativa.png?size=30px)](https://github.com/pilarvargas-tecnativa) | See only your purchase orders
[purchase_security](purchase_security/) | 15.0.4.0.0 | [![pilarvargas-tecnativa](https://github.com/pilarvargas-tecnativa.png?size=30px)](https://github.com/pilarvargas-tecnativa) | See only your purchase orders
[purchase_stock_price_unit_sync](purchase_stock_price_unit_sync/) | 15.0.1.0.4 | | Update cost price in stock moves already done
[purchase_stock_return_request](purchase_stock_return_request/) | 15.0.1.0.1 | | Purchase Stock Return Request
[purchase_stock_secondary_unit](purchase_stock_secondary_unit/) | 15.0.1.1.1 | | Get product quantities in a secondary unit
Expand Down
4 changes: 2 additions & 2 deletions purchase_request_tier_validation/i18n/it.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-12-22 19:34+0000\n"
"PO-Revision-Date: 2024-02-14 16:41+0000\n"
"Last-Translator: mymage <[email protected]>\n"
"Language-Team: none\n"
"Language: it\n"
Expand Down Expand Up @@ -100,7 +100,7 @@ msgstr ""
#: model:ir.model.fields,field_description:purchase_request_tier_validation.field_purchase_request__validated
#: model_terms:ir.ui.view,arch_db:purchase_request_tier_validation.view_purchase_request_filter
msgid "Validated"
msgstr "Approvato"
msgstr "Approvata"

#. module: purchase_request_tier_validation
#: model:ir.model.fields,field_description:purchase_request_tier_validation.field_purchase_request__validated_message
Expand Down
2 changes: 1 addition & 1 deletion purchase_security/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Purchase Order security
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:84710bf6088628111e60464b0ef87243c926a836f3a0849bb2f4d8cc38d64223
!! source digest: sha256:42fcbc71ab83444a9fa147761ca8754acb9f77fee0ca0ea3cdfd1a81ad4425f2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
Expand Down
3 changes: 2 additions & 1 deletion purchase_security/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

{
"name": "Purchase Order security",
"version": "15.0.3.1.0",
"version": "15.0.4.0.0",
"category": "Purchase",
"development_status": "Production/Stable",
"author": "Tecnativa, Odoo Community Association (OCA)",
Expand All @@ -16,6 +16,7 @@
"security/ir.model.access.csv",
"views/purchase_order_views.xml",
"views/purchase_team_views.xml",
"views/res_partner_views.xml",
],
"installable": True,
"auto_install": False,
Expand Down
45 changes: 39 additions & 6 deletions purchase_security/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2023-07-24 20:25+0200\n"
"Last-Translator: \n"
"POT-Creation-Date: 2024-02-13 13:34+0000\n"
"PO-Revision-Date: 2024-02-14 19:35+0000\n"
"Last-Translator: Ivorra78 <[email protected]>\n"
"Language-Team: \n"
"Language: es_ES\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"

#. module: purchase_security
#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form
Expand All @@ -31,6 +31,11 @@ msgstr ""
msgid "Avatar"
msgstr "Avatar"

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_res_partner
msgid "Contact"
msgstr "Contacto"

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid
msgid "Created by"
Expand Down Expand Up @@ -98,6 +103,29 @@ msgstr "Equipos de compra"
msgid "Purchase Users"
msgstr "Usuarios de compra"

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id
#: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter
msgid "Purchase representative"
msgstr "Representante de compra"

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id
msgid "Purchase team"
msgstr "Equipo de compra"

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids
msgid "Purchases Teams"
msgstr "Equipos de compras"

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_ir_rule
msgid "Record Rule"
msgstr "Regla de Registro"

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence
msgid "Sequence"
Expand All @@ -118,6 +146,11 @@ msgstr "Usuario (pedidos propios)"
msgid "User (team orders)"
msgstr "Usuario (pedidos del equipo)"

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_res_users
msgid "Users"
msgstr "Usuarios"

#. module: purchase_security
#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form
msgid "e.g. Europe"
Expand Down
33 changes: 33 additions & 0 deletions purchase_security/i18n/it.po
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ msgstr ""
msgid "Avatar"
msgstr ""

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_res_partner
msgid "Contact"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid
msgid "Created by"
Expand Down Expand Up @@ -95,6 +100,29 @@ msgstr ""
msgid "Purchase Users"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id
#: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter
msgid "Purchase representative"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id
msgid "Purchase team"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids
msgid "Purchases Teams"
msgstr ""

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_ir_rule
msgid "Record Rule"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence
msgid "Sequence"
Expand All @@ -115,6 +143,11 @@ msgstr "Utente (solo propri ordini)"
msgid "User (team orders)"
msgstr ""

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_res_users
msgid "Users"
msgstr ""

#. module: purchase_security
#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form
msgid "e.g. Europe"
Expand Down
33 changes: 33 additions & 0 deletions purchase_security/i18n/purchase_security.pot
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ msgstr ""
msgid "Avatar"
msgstr ""

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_res_partner
msgid "Contact"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid
msgid "Created by"
Expand Down Expand Up @@ -90,6 +95,29 @@ msgstr ""
msgid "Purchase Users"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id
#: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter
msgid "Purchase representative"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id
msgid "Purchase team"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids
msgid "Purchases Teams"
msgstr ""

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_ir_rule
msgid "Record Rule"
msgstr ""

#. module: purchase_security
#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence
msgid "Sequence"
Expand All @@ -110,6 +138,11 @@ msgstr ""
msgid "User (team orders)"
msgstr ""

#. module: purchase_security
#: model:ir.model,name:purchase_security.model_res_users
msgid "Users"
msgstr ""

#. module: purchase_security
#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form
msgid "e.g. Europe"
Expand Down
3 changes: 3 additions & 0 deletions purchase_security/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
from . import ir_rule
from . import purchase_order
from . import purchase_team
from . import res_partner
from . import res_users
57 changes: 57 additions & 0 deletions purchase_security/models/ir_rule.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

from odoo import api, models, tools
from odoo.osv import expression
from odoo.tools import config


class IrRule(models.Model):
_inherit = "ir.rule"

@api.model
@tools.conditional(
"xml" not in config["dev_mode"],
tools.ormcache(
"self.env.uid",
"self.env.su",
"model_name",
"mode",
"tuple(self._compute_domain_context_values())",
),
)
def _compute_domain(self, model_name, mode="read"):
"""Inject extra domain for restricting partners when the user
has the group 'Purchase / User (own orders)."""
res = super()._compute_domain(model_name, mode=mode)
user = self.env.user
group1 = "purchase_security.group_purchase_own_orders"
group2 = "purchase_security.group_purchase_group_orders"
group3 = "purchase.group_purchase_manager"
if model_name == "res.partner" and not self.env.su:
if user.has_group(group1) and not user.has_group(group3):
extra_domain = [
"|",
("message_partner_ids", "in", user.partner_id.ids),
"|",
("id", "=", user.partner_id.id),
]
if user.has_group(group2):
extra_domain += [
"|",
("purchase_team_id", "=", user.purchase_team_ids[:1].id),
("purchase_team_id", "=", False),
]
else:
extra_domain += [
"|",
("purchase_user_id", "=", user.id),
"&",
("purchase_user_id", "=", False),
"|",
("purchase_team_id", "=", False),
("purchase_team_id", "=", user.purchase_team_ids[:1].id),
]
extra_domain = expression.normalize_domain(extra_domain)
res = expression.AND([extra_domain] + [res])
return res
22 changes: 15 additions & 7 deletions purchase_security/models/purchase_order.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Copyright 2023 Tecnativa - Stefan Ungureanu
# Copyright 2023 Tecnativa - Pedro M. Baeza
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, fields, models
Expand All @@ -25,11 +26,18 @@ def _compute_team_id(self):
"""
first_team = self.env["purchase.team"].search([], limit=1)
for record in self:
if record.user_id:
team = self.env["purchase.team"].search(
[("user_ids", "=", record.user_id.id)], limit=1
record.team_id = record.user_id.purchase_team_ids[:1] or first_team

def onchange_partner_id(self):
res = super().onchange_partner_id()
if self.partner_id:
partner = self.partner_id or self.partner_id.commercial_partner_id
if not self.env.context.get("default_user_id"):
self.user_id = partner.purchase_user_id or self.env.user
if not self.env.context.get("default_team_id"):
self.team_id = (
partner.purchase_team_id
or self.user_id.purchase_team_ids[:1]
or self.env["purchase.team"].search([], limit=1)
)
if team:
record.team_id = team.id
continue
record.team_id = first_team.id
return res
8 changes: 7 additions & 1 deletion purchase_security/models/purchase_team.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,10 @@ class PurchaseTeam(models.Model):

name = fields.Char(required=True)
sequence = fields.Integer(default=10)
user_ids = fields.Many2many("res.users", string="Purchase Users")
user_ids = fields.Many2many(
comodel_name="res.users",
relation="purchase_team_res_users_rel",
column1="purchase_team_id",
column2="res_users_id",
string="Purchase Users",
)
20 changes: 20 additions & 0 deletions purchase_security/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

from odoo import fields, models


class ResPartner(models.Model):
_inherit = "res.partner"

purchase_user_id = fields.Many2one(
comodel_name="res.users",
domain="[('share', '=', False)]",
string="Purchase representative",
index=True,
)
purchase_team_id = fields.Many2one(
comodel_name="purchase.team",
string="Purchase team",
index=True,
)
19 changes: 19 additions & 0 deletions purchase_security/models/res_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ResUsers(models.Model):
_inherit = "res.users"

purchase_team_ids = fields.Many2many(
comodel_name="purchase.team",
relation="purchase_team_res_users_rel",
column1="res_users_id",
column2="purchase_team_id",
string="Purchases Teams",
check_company=True,
copy=False,
readonly=True,
)
Loading

0 comments on commit b57421a

Please sign in to comment.