Initial commit: OCA Workflow Process packages (456 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:00 +02:00
commit d366e42934
18799 changed files with 1284507 additions and 0 deletions

View file

@ -0,0 +1,5 @@
from . import project_risk_category
from . import project_risk_response_category
from . import project_risk_response
from . import project_risk
from . import project_project

View file

@ -0,0 +1,28 @@
# Copyright 2019 Onestein
# Copyright 2020 Manuel Calero - Tecnativa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class Project(models.Model):
_inherit = "project.project"
project_risk_ids = fields.One2many(
comodel_name="project.risk", inverse_name="project_id"
)
project_risk_count = fields.Integer(compute="_compute_risk_count")
def _compute_risk_count(self):
for project in self:
project.project_risk_count = len(project.project_risk_ids)
def view_risk(self):
self.ensure_one()
action = self.env["ir.actions.act_window"]._for_xml_id(
"project_risk.project_risk_action"
)
action["context"] = {"default_project_id": self.id}
action["domain"] = [("project_id", "=", self.id)]
return action

View file

@ -0,0 +1,107 @@
# Copyright 2019 Onestein
# Copyright 2020 Manuel Calero - Tecnativa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class ProjectRisk(models.Model):
_inherit = ["mail.thread"]
_name = "project.risk"
_description = "Project Risk"
project_id = fields.Many2one(comodel_name="project.project", required=True)
project_risk_category_id = fields.Many2one(
string="Category",
comodel_name="project.risk.category",
required=True,
)
name = fields.Char(required=1)
description = fields.Html()
probability = fields.Selection(
required=True,
selection=[
("1", "Rare"),
("2", "Unlikely"),
("3", "Possible"),
("4", "Likely"),
("5", "Very likely"),
],
tracking=True,
)
impact = fields.Selection(
required=True,
selection=[
("1", "Trivial"),
("2", "Minor"),
("3", "Moderate"),
("4", "Significant"),
("5", "Extreme"),
],
)
rating = fields.Selection(
compute="_compute_rating",
store=True,
selection=[
("1", "N/A"),
("2", "Trivial"),
("3", "Very Low"),
("4", "Low"),
("5", "Low-Medium"),
("6", "Medium"),
("7", "Medium-High"),
("8", "High"),
("9", "Very High"),
("10", "Critical"),
],
)
proximity = fields.Selection(
selection=[
("1", "Very low"),
("2", "Low"),
("3", "Medium"),
("4", "High"),
("5", "Very High"),
("6", "Imminent"),
],
tracking=True,
)
project_risk_response_category_id = fields.Many2one(
comodel_name="project.risk.response.category",
string="Response Category",
)
state = fields.Selection(
selection=[("draft", "Draft"), ("active", "Active"), ("closed", "Closed")],
default="draft",
tracking=True,
)
owner_id = fields.Many2one(string="Owner", comodel_name="res.users", tracking=True)
actionee_id = fields.Many2one(
string="Actionee",
comodel_name="res.users",
tracking=True,
)
project_risk_response_ids = fields.One2many(
string="Response",
comodel_name="project.risk.response",
inverse_name="project_risk_id",
)
@api.depends("probability", "impact")
def _compute_rating(self):
for risk in self:
risk.rating = False
if risk.probability and risk.impact:
risk.rating = str(int(risk.probability) + int(risk.impact))

View file

@ -0,0 +1,11 @@
# Copyright 2019 Onestein
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ProjectRiskCategory(models.Model):
_name = "project.risk.category"
_description = "Project Risks Categories"
name = fields.Char(required=True)

View file

@ -0,0 +1,15 @@
# Copyright 2019 Onestein
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ProjectRiskResponse(models.Model):
_name = "project.risk.response"
_description = "Project Risks Responses"
project_risk_id = fields.Many2one(comodel_name="project.risk")
sequence = fields.Integer()
description = fields.Char()

View file

@ -0,0 +1,11 @@
# Copyright 2019 Onestein
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ProjectRiskResponseCategory(models.Model):
_name = "project.risk.response.category"
_description = "Project Risks Responses Categories"
name = fields.Char(required=True)