Move 124 sale modules to oca-sale, create oca-project with 56 project modules from oca-workflow-process

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ernad Husremovic 2025-08-30 18:04:10 +02:00
parent 9eb7ae5807
commit 6094c218b2
2332 changed files with 125826 additions and 0 deletions

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))