Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions project_sla/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
===========
Project SLA
===========

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |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-Escodoo%2Fproject--addons-lightgray.png?logo=github
:target: https://github.com/Escodoo/project-addons/tree/12.0/project_sla
:alt: Escodoo/project-addons

|badge1| |badge2| |badge3|

The Project SLA module is a feature of Odoo that allows defining Service Level Agreements (SLAs) for opportunities (tasks) generated by the Project module. The feature offers the possibility to configure multiple priority levels and set up rules for each of them. Rules can be configured based on different fields, such as project, partner, tags and task priority.

**Table of contents**

.. contents::
:local:

Usage
=====

To start using the Project SLA module, it is necessary to configure the projects to use SLAs and define a calendar for the rules to be applied. Once the project is configured, the user can create a new SLA by navigating to the "Project" application and selecting "SLAs" from the configuration menu. From there, the user can create a new SLA and configure the rules based on the fields mentioned above.

After creating the SLAs, create a new task and wait for the scheduled action responsible for synchronizing the SLA lines to be executed or force its execution through the technical menu where the scheduled actions are located.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/Escodoo/project-addons/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/Escodoo/project-addons/issues/new?body=module:%20project_sla%0Aversion:%2012.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
~~~~~~~

* Escodoo

Contributors
~~~~~~~~~~~~

* `Escodoo <https://www.escodoo.com.br>`_:

* Marcel Savegnago <marcel.savegnago@escodoo.com.br>

Maintainers
~~~~~~~~~~~

This module is maintained by the Escodoo.

.. |maintainer-Escodoo| image:: https://github.com/Escodoo.png?size=80px
:target: https://github.com/Escodoo
:alt: Escodoo

|maintainer-Escodoo|

We at Escodoo are exclusively dedicated to deploying the Odoo Platform and are
focused on providing solutions that make our customers more competitive, lowering
costs, making technology more accessible and ensuring it is used strategically to
add even more value to the business.

This module is part of the `Escodoo/project-addons <https://github.com/Escodoo/project-addons/tree/12.0/project_sla>`_ project on GitHub.

You are welcome to contribute.
1 change: 1 addition & 0 deletions project_sla/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
22 changes: 22 additions & 0 deletions project_sla/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2023 - TODAY, Escodoo
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Project SLA",
"summary": """
Project SLA""",
"version": "14.0.1.0.0",
"license": "AGPL-3",
"author": "Escodoo",
"website": "https://github.com/Escodoo/project-addons",
"depends": ["project"],
"data": [
"views/project_task.xml",
"views/project_sla.xml",
"views/project_sla_line.xml",
"views/project_project.xml",
"security/ir.model.access.csv",
"data/ir_cron_data.xml",
],
"demo": [],
}
14 changes: 14 additions & 0 deletions project_sla/data/ir_cron_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding='UTF-8' ?>
<odoo noupdate="1">
<record model="ir.cron" id="project_sla_cron_alert">
<field name="name">Sync All Project SLA Lines</field>
<field name="model_id" ref="model_project_task" />
<field name="state">code</field>
<field name="code">model.cron_sync_all_sla_lines()</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">5</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall" />
</record>
</odoo>
249 changes: 249 additions & 0 deletions project_sla/i18n/project_sla.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_sla
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \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: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__active
msgid "Active"
msgstr ""

#. module: project_sla
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_form
msgid "Apply on"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_task__sla_ids
msgid "Computed SLAs"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__create_uid
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__create_uid
msgid "Created by"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__create_date
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__create_date
msgid "Created on"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__deadline
msgid "Deadline"
msgstr ""

#. module: project_sla
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_form
msgid "Description of the policy..."
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__display_name
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__display_name
msgid "Display Name"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__duration
msgid "Duration (hours)"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_task__sla_deadline
msgid "Highest SLA Deadline"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__id
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__id
msgid "ID"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla____last_update
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line____last_update
msgid "Last Modified on"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__write_uid
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__write_uid
msgid "Last Updated by"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__write_date
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__write_date
msgid "Last Updated on"
msgstr ""

#. module: project_sla
#: selection:project.sla,priority:0
msgid "Low"
msgstr ""

#. module: project_sla
#: selection:project.sla.line,status:0
msgid "Met"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__name
msgid "Name"
msgstr ""

#. module: project_sla
#: selection:project.sla,priority:0
msgid "Normal"
msgstr ""

#. module: project_sla
#: selection:project.sla.line,status:0
msgid "Not Met"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__partner_ids
msgid "Partners"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__priority
msgid "Priority"
msgstr ""

#. module: project_sla
#: model:ir.model,name:project_sla.model_project_project
#: model:ir.model.fields,field_description:project_sla.field_project_sla__project_id
msgid "Project"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__reached_date
msgid "Reached Date"
msgstr ""

#. module: project_sla
#: model:ir.model,name:project_sla.model_project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__sla_id
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_form
msgid "SLA"
msgstr ""

#. module: project_sla
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_form
msgid "SLA Description"
msgstr ""

#. module: project_sla
#: model:ir.model,name:project_sla.model_project_sla_line
msgid "SLA Line"
msgstr ""

#. module: project_sla
#: model:ir.actions.act_window,name:project_sla.action_project_sla_line_tree
#: model:ir.model.fields,field_description:project_sla.field_project_sla__sla_line_ids
#: model:ir.model.fields,field_description:project_sla.field_project_task__sla_line_ids
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_line_tree
msgid "SLA Lines"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__description
msgid "SLA Policy Description"
msgstr ""

#. module: project_sla
#: model_terms:ir.ui.view,arch_db:project_sla.project_task_form_view
msgid "SLA Status"
msgstr ""

#. module: project_sla
#: model:ir.ui.menu,name:project_sla.menu_project_sla_line_list
msgid "SLA lines"
msgstr ""

#. module: project_sla
#: model:ir.actions.act_window,name:project_sla.action_project_sla_tree
#: model:ir.ui.menu,name:project_sla.menu_project_sla_list
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_tree
msgid "SLAs"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__status
msgid "Status"
msgstr ""

#. module: project_sla
#: model:ir.actions.server,name:project_sla.project_sla_cron_alert_ir_actions_server
#: model:ir.cron,cron_name:project_sla.project_sla_cron_alert
#: model:ir.cron,name:project_sla.project_sla_cron_alert
msgid "Sync All Project SLA Lines"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__tag_ids
msgid "Tags"
msgstr ""

#. module: project_sla
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_form
msgid "Target"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__target_stage_id
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__sla_target_stage_id
msgid "Target Stage"
msgstr ""

#. module: project_sla
#: model:ir.model,name:project_sla.model_project_task
#: model:ir.model.fields,field_description:project_sla.field_project_sla_line__task_id
msgid "Task"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_sla__task_ids
msgid "Tasks"
msgstr ""

#. module: project_sla
#: sql_constraint:project.sla:0
msgid "The duration of an SLA must be positive."
msgstr ""

#. module: project_sla
#: model:ir.model.fields,help:project_sla.field_project_project__resource_calendar_id
msgid "Timetable working hours to adjust the gantt diagram report"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_project__use_sla
msgid "Use SLA"
msgstr ""

#. module: project_sla
#: model:ir.model.fields,field_description:project_sla.field_project_project__resource_calendar_id
msgid "Working Hours"
msgstr ""

#. module: project_sla
#: model_terms:ir.ui.view,arch_db:project_sla.view_project_sla_form
msgid "e.g. Close urgent tasks within 8 hours"
msgstr ""

4 changes: 4 additions & 0 deletions project_sla/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import project_project
from . import project_sla
from . import project_task
from . import project_sla_line
15 changes: 15 additions & 0 deletions project_sla/models/project_project.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2023 - TODAY, Marcel Savegnago <marcel.savegnago@escodoo.com.br>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ProjectProject(models.Model):
_inherit = "project.project"

use_sla = fields.Boolean(string="Use SLA")
resource_calendar_id = fields.Many2one(
"resource.calendar",
"Working Hours",
default=lambda self: self.env.user.company_id.resource_calendar_id,
)
Loading