mirror of
https://github.com/bringout/oca-workflow-process.git
synced 2026-04-19 12:52:04 +02:00
Initial commit: OCA Workflow Process packages (456 packages)
This commit is contained in:
commit
d366e42934
18799 changed files with 1284507 additions and 0 deletions
|
|
@ -0,0 +1,5 @@
|
|||
from . import ir_rule
|
||||
from . import purchase_order
|
||||
from . import purchase_team
|
||||
from . import res_partner
|
||||
from . import res_users
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
# © 2023 Solvos Consultoría Informática (<http://www.solvos.es>)
|
||||
# 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
|
||||
|
||||
|
||||
class PurchaseOrder(models.Model):
|
||||
_inherit = "purchase.order"
|
||||
|
||||
is_user_id_editable = fields.Boolean(
|
||||
compute="_compute_is_user_id_editable",
|
||||
)
|
||||
team_id = fields.Many2one(
|
||||
"purchase.team",
|
||||
string="Team",
|
||||
index=True,
|
||||
auto_join=True,
|
||||
compute="_compute_team_id",
|
||||
store=True,
|
||||
readonly=False,
|
||||
)
|
||||
|
||||
def _compute_is_user_id_editable(self):
|
||||
is_user_id_editable = self.env.user.has_group(
|
||||
"purchase.group_purchase_manager"
|
||||
) or not self.env.user.has_group("purchase_security.group_purchase_own_orders")
|
||||
self.is_user_id_editable = is_user_id_editable
|
||||
|
||||
@api.depends("user_id")
|
||||
def _compute_team_id(self):
|
||||
"""When a user is assigned, the first team which the user belongs to is
|
||||
assigned, and if no one, the first purchase team.
|
||||
"""
|
||||
first_team = self.env["purchase.team"].search([], limit=1)
|
||||
for record in self:
|
||||
record.team_id = record.user_id.purchase_team_ids[:1] or first_team
|
||||
|
||||
@api.onchange("partner_id")
|
||||
def onchange_partner_id(self):
|
||||
res = super().onchange_partner_id()
|
||||
if self.partner_id:
|
||||
partner = 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)
|
||||
)
|
||||
return res
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# Copyright 2023 Tecnativa - Stefan Ungureanu
|
||||
# Copyright 2023 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class PurchaseTeam(models.Model):
|
||||
_name = "purchase.team"
|
||||
_description = "Purchase Team"
|
||||
_order = "sequence,id"
|
||||
|
||||
name = fields.Char(required=True)
|
||||
sequence = fields.Integer(default=10)
|
||||
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",
|
||||
)
|
||||
|
|
@ -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,
|
||||
)
|
||||
|
|
@ -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…
Add table
Add a link
Reference in a new issue