[12.0][MIG] Migrate module kpi to v12

pull/409/head
Adrià Gil Sorribes 2019-01-02 12:21:33 +01:00 committed by flachica
parent a9a03359a0
commit b3a93a7abc
11 changed files with 657 additions and 170 deletions

View File

@ -10,20 +10,20 @@ Key Performance Indicator
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status :target: https://odoo-community.org/page/development-status
:alt: Beta :alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: LGPL-3 :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/11.0/kpi :target: https://github.com/OCA/reporting-engine/tree/12.0/kpi
:alt: OCA/server-tools :alt: OCA/reporting-engine
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-11-0/server-tools-11-0-kpi :target: https://translation.odoo-community.org/projects/reporting-engine-12-0/reporting-engine-12-0-kpi
:alt: Translate me on Weblate :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/253/11.0 :target: https://runbot.odoo-community.org/runbot/143/12.0
:alt: Try me on Runbot :alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge1| |badge2| |badge3| |badge4| |badge5|
This module provides the basis for creating key performance indicators, This module provides the basis for creating key performance indicators,
including static and dynamic thresholds (SQL query or Python code), including static and dynamic thresholds (SQL query or Python code),
@ -41,18 +41,10 @@ A threshold is a list of ranges and a range is:
* a maximum value (fixed, sql query or python code) * a maximum value (fixed, sql query or python code)
* color (RGB code like #00FF00 for green, #FFA500 for orange, #FF0000 for red) * color (RGB code like #00FF00 for green, #FFA500 for orange, #FF0000 for red)
**Table of contents** **Table of contents**
.. contents:: .. contents::
:local: :local:
Configuration
=============
Users must be added to the appropriate groups within Odoo as follows:
* Creators: Settings > Users > Groups > Management System / User
* Responsible Persons: Settings > Users > Groups > Management System / Approving User
Usage Usage
===== =====
@ -60,25 +52,24 @@ Usage
Example of usage: Example of usage:
https://www.youtube.com/watch?v=OC4-y2klzIk https://www.youtube.com/watch?v=OC4-y2klzIk
Known issues / Roadmap
======================
* Use web_widget_color to display color associated to threshold range
Bug Tracker Bug Tracker
=========== ===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
In case of trouble, please check there if your issue has already been reported. 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 If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20kpi%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. `feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20kpi%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. Do not contact contributors directly about support or help with technical issues.
Credits Credits
======= =======
Authors
~~~~~~~
* Savoir-faire Linux
Contributors Contributors
~~~~~~~~~~~~ ~~~~~~~~~~~~
@ -88,6 +79,7 @@ Contributors
* Sandy Carter <sandy.carter@savoirfairelinux.com> * Sandy Carter <sandy.carter@savoirfairelinux.com>
* Gervais Naoussi <gervaisnaoussi@gmail.com> * Gervais Naoussi <gervaisnaoussi@gmail.com>
* Iván Todorovich <ivan.todorovich@gmail.com> * Iván Todorovich <ivan.todorovich@gmail.com>
* Adrià Gil <adria.gil@eficent.com>
Maintainers Maintainers
~~~~~~~~~~~ ~~~~~~~~~~~
@ -102,6 +94,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use. promote its widespread use.
This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/11.0/kpi>`_ project on GitHub. This module is part of the `OCA/reporting-engine <https://github.com/OCA/reporting-engine/tree/12.0/kpi>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@ -1,4 +1,3 @@
# Copyright 2012 - Now Savoir-faire Linux <https://www.savoirfairelinux.com/>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models from . import models

View File

@ -3,7 +3,7 @@
{ {
"name": "Key Performance Indicator", "name": "Key Performance Indicator",
"version": "11.0.1.0.0", "version": "12.0.1.0.0",
"author": "Savoir-faire Linux,Odoo Community Association (OCA)", "author": "Savoir-faire Linux,Odoo Community Association (OCA)",
"website": "http://www.savoirfairelinux.com", "website": "http://www.savoirfairelinux.com",
"license": "AGPL-3", "license": "AGPL-3",

View File

@ -4,7 +4,7 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n" "Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n" "Last-Translator: <>\n"
"Language-Team: \n" "Language-Team: \n"
@ -14,69 +14,69 @@ msgstr ""
"Plural-Forms: \n" "Plural-Forms: \n"
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_active #: model:ir.model.fields,field_description:kpi.field_kpi__active
#: model:ir.ui.view,arch_db:kpi.view_kpi_filter #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_filter
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.actions.act_window,name:kpi.open_category_list #: model:ir.actions.act_window,name:kpi.open_category_list
#: model:ir.ui.menu,name:kpi.menu_configuration_kpi_category #: model:ir.ui.menu,name:kpi.menu_configuration_kpi_category
#: model:ir.ui.view,arch_db:kpi.view_kpi_category_tree #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_category_tree
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_id_2257 #: model:ir.model.fields,field_description:kpi.field_kpi__category_id
#: model:ir.ui.view,arch_db:kpi.view_kpi_category_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_category_form
#: model:ir.ui.view,arch_db:kpi.view_kpi_filter
msgid "Category" msgid "Category"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,help:kpi.field_kpi_threshold_range_color #: model:ir.model.fields,help:kpi.field_kpi_threshold_range__color
msgid "Choose your color" msgid "Choose your color"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_history_color #: model:ir.model.fields,field_description:kpi.field_kpi__color
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_color #: model:ir.model.fields,field_description:kpi.field_kpi_history__color
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__color
msgid "Color" msgid "Color"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_company_id #: model:ir.model.fields,field_description:kpi.field_kpi__company_id
#: model:ir.model.fields,field_description:kpi.field_kpi_history_company_id #: model:ir.model.fields,field_description:kpi.field_kpi_history__company_id
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_company_id #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__company_id
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_company_id #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__company_id
msgid "Company" msgid "Company"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_form
msgid "Computation" msgid "Computation"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_form
msgid "Compute KPI Now" msgid "Compute KPI Now"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_create_uid #: model:ir.model.fields,field_description:kpi.field_kpi__create_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_create_uid #: model:ir.model.fields,field_description:kpi.field_kpi_category__create_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_history_create_uid #: model:ir.model.fields,field_description:kpi.field_kpi_history__create_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_create_uid #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__create_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_create_uid #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__create_uid
msgid "Created by" msgid "Created by"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_create_date #: model:ir.model.fields,field_description:kpi.field_kpi__create_date
#: model:ir.model.fields,field_description:kpi.field_kpi_create_date #: model:ir.model.fields,field_description:kpi.field_kpi_category__create_date
#: model:ir.model.fields,field_description:kpi.field_kpi_history_create_date #: model:ir.model.fields,field_description:kpi.field_kpi_history__create_date
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_create_date #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__create_date
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_create_date #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__create_date
msgid "Created on" msgid "Created on"
msgstr "" msgstr ""
@ -91,45 +91,47 @@ msgid "Day"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_description #: model:ir.model.fields,field_description:kpi.field_kpi__description
#: model:ir.model.fields,field_description:kpi.field_kpi_description #: model:ir.model.fields,field_description:kpi.field_kpi_category__description
#: model:ir.ui.view,arch_db:kpi.view_kpi_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_form
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_display_name #: model:ir.model.fields,field_description:kpi.field_kpi__display_name
#: model:ir.model.fields,field_description:kpi.field_kpi_display_name #: model:ir.model.fields,field_description:kpi.field_kpi_category__display_name
#: model:ir.model.fields,field_description:kpi.field_kpi_history_display_name #: model:ir.model.fields,field_description:kpi.field_kpi_history__display_name
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_display_name #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__display_name
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_display_name #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__display_name
msgid "Display Name" msgid "Display Name"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_max_error #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_form
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_min_error #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
msgid "Error"
msgstr ""
#. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_form
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
msgid "Errors" msgid "Errors"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_history_date #: model:ir.model.fields,field_description:kpi.field_kpi_history__date
msgid "Execution Date" msgid "Execution Date"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_dbsource_id #: model:ir.model.fields,field_description:kpi.field_kpi__dbsource_id
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_max_dbsource_id
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_min_dbsource_id
msgid "External DB Source" msgid "External DB Source"
msgstr "" msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__max_dbsource_id
msgid "External DB Source Maximum"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__min_dbsource_id
msgid "External DB Source Minimum"
msgstr ""
#. module: kpi #. module: kpi
#: selection:kpi.threshold.range,max_type:0 #: selection:kpi.threshold.range,max_type:0
#: selection:kpi.threshold.range,min_type:0 #: selection:kpi.threshold.range,min_type:0
@ -137,13 +139,8 @@ msgid "Fixed value"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_filter #: model:ir.model.fields,field_description:kpi.field_kpi__history_ids
msgid "Group By..." #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_form
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_history_ids
#: model:ir.ui.view,arch_db:kpi.view_kpi_form
msgid "History" msgid "History"
msgstr "" msgstr ""
@ -158,19 +155,17 @@ msgid "Hour"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_id #: model:ir.model.fields,field_description:kpi.field_kpi__id
#: model:ir.model.fields,field_description:kpi.field_kpi_history_id #: model:ir.model.fields,field_description:kpi.field_kpi_category__id
#: model:ir.model.fields,field_description:kpi.field_kpi_id #: model:ir.model.fields,field_description:kpi.field_kpi_history__id
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_id #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__id
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_id #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__id
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_history_kpi_id #: model:ir.model.fields,field_description:kpi.field_kpi_history__kpi_id
#: model:ir.ui.menu,name:kpi.menu_configuration_kpi #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_filter
#: model:ir.ui.menu,name:kpi.menu_reporting_kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_filter
msgid "KPI" msgid "KPI"
msgstr "" msgstr ""
@ -180,26 +175,36 @@ msgid "KPI Category"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_kpi_code #: model:ir.model.fields,field_description:kpi.field_kpi__kpi_code
msgid "KPI Code" msgid "KPI Code"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_form
msgid "KPI Computation" msgid "KPI Computation"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_kpi_type #: model:ir.model.fields,field_description:kpi.field_kpi__kpi_type
msgid "KPI Computation Type" msgid "KPI Computation Type"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_history_form #: model:ir.actions.act_window,name:kpi.open_kpi_dashboard
#: model:ir.ui.view,arch_db:kpi.view_kpi_history_tree msgid "KPI Dashboard"
msgstr ""
#. module: kpi
#: model_terms:ir.ui.view,arch_db:kpi.view_kpi_history_form
#: model_terms:ir.ui.view,arch_db:kpi.view_kpi_history_tree
msgid "KPI History" msgid "KPI History"
msgstr "" msgstr ""
#. module: kpi
#: model:ir.actions.act_window,name:kpi.open_kpi_list
msgid "KPI Maintenance"
msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model,name:kpi.model_kpi_threshold #: model:ir.model,name:kpi.model_kpi_threshold
msgid "KPI Threshold" msgid "KPI Threshold"
@ -211,132 +216,175 @@ msgid "KPI Threshold Range"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_kpi_ids #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__kpi_ids
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_form
msgid "KPIs" msgid "KPIs"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model,name:kpi.model_kpi #: model:ir.model,name:kpi.model_kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_form
msgid "Key Performance Indicator" msgid "Key Performance Indicator"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.actions.act_window,name:kpi.open_kpi_list #: model:ir.ui.menu,name:kpi.menu_configuration_kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_tree #: model:ir.ui.menu,name:kpi.menu_configuration_kpi_kpi
#: model:ir.ui.menu,name:kpi.menu_kpi_dasboard
#: model_terms:ir.ui.view,arch_db:kpi.view_kpi_tree
msgid "Key Performance Indicators" msgid "Key Performance Indicators"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi___last_update #: model:ir.model.fields,field_description:kpi.field_kpi____last_update
#: model:ir.model.fields,field_description:kpi.field_kpi_category___last_update #: model:ir.model.fields,field_description:kpi.field_kpi_category____last_update
#: model:ir.model.fields,field_description:kpi.field_kpi_history___last_update #: model:ir.model.fields,field_description:kpi.field_kpi_history____last_update
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold___last_update #: model:ir.model.fields,field_description:kpi.field_kpi_threshold____last_update
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range___last_update #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range____last_update
msgid "Last Modified on" msgid "Last Modified on"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_write_uid #: model:ir.model.fields,field_description:kpi.field_kpi__write_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_history_write_uid #: model:ir.model.fields,field_description:kpi.field_kpi_category__write_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_write_uid #: model:ir.model.fields,field_description:kpi.field_kpi_history__write_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_write_uid #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__write_uid
#: model:ir.model.fields,field_description:kpi.field_kpi_write_uid #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__write_uid
msgid "Last Updated by" msgid "Last Updated by"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_write_date #: model:ir.model.fields,field_description:kpi.field_kpi__write_date
#: model:ir.model.fields,field_description:kpi.field_kpi_history_write_date #: model:ir.model.fields,field_description:kpi.field_kpi_category__write_date
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_write_date #: model:ir.model.fields,field_description:kpi.field_kpi_history__write_date
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_write_date #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__write_date
#: model:ir.model.fields,field_description:kpi.field_kpi_write_date #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__write_date
msgid "Last Updated on" msgid "Last Updated on"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: code:addons/kpi/models/kpi_threshold.py:69 #: model:ir.model.fields,field_description:kpi.field_kpi__last_execution
msgid "Last execution"
msgstr ""
#. module: kpi
#: code:addons/kpi/models/kpi_threshold.py:68
#, python-format #, python-format
msgid "Make sure your ranges do not overlap!" msgid "Make sure your ranges do not overlap!"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_max_type #: model:res.groups,name:kpi.group_kpi_manager
msgid "Manage KPI's"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__max_type
msgid "Max Type" msgid "Max Type"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_max_fixed_value #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_max_value
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
msgid "Maximum" msgid "Maximum"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_max_code #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__max_code
msgid "Maximum Computation Code" msgid "Maximum Computation Code"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_invalid_message #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__max_error
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_invalid_message msgid "Maximum Error"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__max_fixed_value
msgid "Maximum Fixed Value"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__max_value
msgid "Maximum Value"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold__invalid_message
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__invalid_message
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_min_type #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__min_type
msgid "Min Type" msgid "Min Type"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_min_fixed_value #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_min_value
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
msgid "Minimum" msgid "Minimum"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_min_code #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__min_code
msgid "Minimum Computation Code" msgid "Minimum Computation Code"
msgstr "" msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__min_error
msgid "Minimum Error"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__min_fixed_value
msgid "Minimum Fixed Value"
msgstr ""
#. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__min_value
msgid "Minimum Value"
msgstr ""
#. module: kpi
#: selection:kpi,periodicity_uom:0
msgid "Minute"
msgstr ""
#. module: kpi #. module: kpi
#: selection:kpi,periodicity_uom:0 #: selection:kpi,periodicity_uom:0
msgid "Month" msgid "Month"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_category_name #: model:ir.model.fields,field_description:kpi.field_kpi__name
#: model:ir.model.fields,field_description:kpi.field_kpi_history_name #: model:ir.model.fields,field_description:kpi.field_kpi_category__name
#: model:ir.model.fields,field_description:kpi.field_kpi_name #: model:ir.model.fields,field_description:kpi.field_kpi_history__name
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_name #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__name
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_name #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__name
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_next_execution_date #: model:ir.model.fields,field_description:kpi.field_kpi__next_execution_date
msgid "Next execution date" msgid "Next execution date"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_filter #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_filter
msgid "Only active KPIs are computed by the scheduler based on the periodicity configuration." msgid "Only active KPIs are computed by the scheduler based on the periodicity configuration."
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,help:kpi.field_kpi_active #: model:ir.model.fields,help:kpi.field_kpi__active
msgid "Only active KPIs will be updated by the scheduler based on the periodicity configuration." msgid "Only active KPIs will be updated by the scheduler based on the periodicity configuration."
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_periodicity #: model:ir.model.fields,field_description:kpi.field_kpi__periodicity
msgid "Periodicity" msgid "Periodicity"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_periodicity_uom #: model:ir.model.fields,field_description:kpi.field_kpi__periodicity_uom
msgid "Periodicity UoM" msgid "Periodicity UoM"
msgstr "" msgstr ""
@ -352,16 +400,16 @@ msgid "Python Code"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
msgid "Range" msgid "Range"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.actions.act_window,name:kpi.open_threshold_range_list #: model:ir.actions.act_window,name:kpi.open_threshold_range_list
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_ids #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__range_ids
#: model:ir.ui.menu,name:kpi.menu_configuration_kpi_range #: model:ir.ui.menu,name:kpi.menu_configuration_kpi_range
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_form
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_tree #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_tree
msgid "Ranges" msgid "Ranges"
msgstr "" msgstr ""
@ -384,45 +432,47 @@ msgid "SQL - Local DB"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,help:kpi.field_kpi_kpi_code #: model:ir.model.fields,help:kpi.field_kpi__kpi_code
msgid "SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')." msgid "SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')."
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_id_2252 #: model:ir.model.fields,field_description:kpi.field_kpi__threshold_id
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_form
msgid "Threshold" msgid "Threshold"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.actions.act_window,name:kpi.open_threshold_list #: model:ir.actions.act_window,name:kpi.open_threshold_list
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_threshold_ids #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__threshold_ids
#: model:ir.ui.menu,name:kpi.menu_configuration_kpi_threshold #: model:ir.ui.menu,name:kpi.menu_configuration_kpi_threshold
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_range_form
#: model:ir.ui.view,arch_db:kpi.view_kpi_threshold_tree #: model_terms:ir.ui.view,arch_db:kpi.view_kpi_threshold_tree
msgid "Thresholds" msgid "Thresholds"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: code:addons/kpi/models/kpi_threshold.py:68 #: code:addons/kpi/models/kpi_threshold.py:67
#, python-format #, python-format
msgid "Two of your ranges are overlapping." msgid "Two of your ranges are overlapping."
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.ui.view,arch_db:kpi.view_kpi_filter #: model:ir.actions.server,name:kpi.ir_cron_kpi_action_ir_actions_server
msgid "Type" #: model:ir.cron,cron_name:kpi.ir_cron_kpi_action
#: model:ir.cron,name:kpi.ir_cron_kpi_action
msgid "Update KPI values"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range_valid #: model:ir.model.fields,field_description:kpi.field_kpi_threshold__valid
#: model:ir.model.fields,field_description:kpi.field_kpi_threshold_valid #: model:ir.model.fields,field_description:kpi.field_kpi_threshold_range__valid
msgid "Valid" msgid "Valid"
msgstr "" msgstr ""
#. module: kpi #. module: kpi
#: model:ir.model.fields,field_description:kpi.field_kpi_history_value #: model:ir.model.fields,field_description:kpi.field_kpi__value
#: model:ir.model.fields,field_description:kpi.field_kpi_value #: model:ir.model.fields,field_description:kpi.field_kpi_history__value
msgid "Value" msgid "Value"
msgstr "" msgstr ""

View File

@ -1,4 +1,3 @@
# Copyright 2012 - Now Savoir-faire Linux <https://www.savoirfairelinux.com/>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import kpi_category from . import kpi_category

View File

@ -52,13 +52,14 @@ class KPIThresholdRange(models.Model):
('local', 'SQL - Local DB'), ('local', 'SQL - Local DB'),
('external', 'SQL - Externa DB'), ('external', 'SQL - Externa DB'),
), 'Min Type', required=True) ), 'Min Type', required=True)
min_value = fields.Float(string='Minimum', compute="_compute_min_value") min_value = fields.Float(string='Minimum Value',
min_fixed_value = fields.Float('Minimum') compute="_compute_min_value")
min_fixed_value = fields.Float('Minimum Fixed Value')
min_code = fields.Text('Minimum Computation Code') min_code = fields.Text('Minimum Computation Code')
min_error = fields.Char('Error', compute="_compute_min_value") min_error = fields.Char('Minimum Error', compute="_compute_min_value")
min_dbsource_id = fields.Many2one( min_dbsource_id = fields.Many2one(
'base.external.dbsource', 'base.external.dbsource',
'External DB Source', 'External DB Source Minimum',
) )
max_type = fields.Selection(( max_type = fields.Selection((
('static', 'Fixed value'), ('static', 'Fixed value'),
@ -66,13 +67,14 @@ class KPIThresholdRange(models.Model):
('local', 'SQL - Local DB'), ('local', 'SQL - Local DB'),
('external', 'SQL - External DB'), ('external', 'SQL - External DB'),
), 'Max Type', required=True) ), 'Max Type', required=True)
max_value = fields.Float(string='Maximum', compute="_compute_max_value") max_value = fields.Float(string='Maximum Value',
max_fixed_value = fields.Float('Maximum') compute="_compute_max_value")
max_fixed_value = fields.Float('Maximum Fixed Value')
max_code = fields.Text('Maximum Computation Code') max_code = fields.Text('Maximum Computation Code')
max_error = fields.Char('Error', compute="_compute_max_value") max_error = fields.Char('Maximum Error', compute="_compute_max_value")
max_dbsource_id = fields.Many2one( max_dbsource_id = fields.Many2one(
'base.external.dbsource', 'base.external.dbsource',
'External DB Source', 'External DB Source Maximum',
) )
color = fields.Char( color = fields.Char(

View File

@ -5,6 +5,7 @@
"access_kpi_threshold_user","kpi.threshold.user","model_kpi_threshold","base.group_user",1,0,0,0 "access_kpi_threshold_user","kpi.threshold.user","model_kpi_threshold","base.group_user",1,0,0,0
"access_kpi_threshold_range_user","kpi.threshold.range.user","model_kpi_threshold_range","base.group_user",1,0,0,0 "access_kpi_threshold_range_user","kpi.threshold.range.user","model_kpi_threshold_range","base.group_user",1,0,0,0
"access_kpi_manager","kpi.manager","model_kpi","kpi.group_kpi_manager",1,1,1,1 "access_kpi_manager","kpi.manager","model_kpi","kpi.group_kpi_manager",1,1,1,1
"access_kpi_history_manager","kpi.history.user","model_kpi_history","kpi.group_kpi_manager",1,1,1,1
"access_kpi_category_manager","kpi.category.manager","model_kpi_category","kpi.group_kpi_manager",1,1,1,1 "access_kpi_category_manager","kpi.category.manager","model_kpi_category","kpi.group_kpi_manager",1,1,1,1
"access_kpi_threshold_manager","kpi.threshold.manager","model_kpi_threshold","kpi.group_kpi_manager",1,1,1,1 "access_kpi_threshold_manager","kpi.threshold.manager","model_kpi_threshold","kpi.group_kpi_manager",1,1,1,1
"access_kpi_threshold_range_manager","kpi.threshold.range.manager","model_kpi_threshold_range","kpi.group_kpi_manager",1,1,1,1 "access_kpi_threshold_range_manager","kpi.threshold.range.manager","model_kpi_threshold_range","kpi.group_kpi_manager",1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
5 access_kpi_threshold_user kpi.threshold.user model_kpi_threshold base.group_user 1 0 0 0
6 access_kpi_threshold_range_user kpi.threshold.range.user model_kpi_threshold_range base.group_user 1 0 0 0
7 access_kpi_manager kpi.manager model_kpi kpi.group_kpi_manager 1 1 1 1
8 access_kpi_history_manager kpi.history.user model_kpi_history kpi.group_kpi_manager 1 1 1 1
9 access_kpi_category_manager kpi.category.manager model_kpi_category kpi.group_kpi_manager 1 1 1 1
10 access_kpi_threshold_manager kpi.threshold.manager model_kpi_threshold kpi.group_kpi_manager 1 1 1 1
11 access_kpi_threshold_range_manager kpi.threshold.range.manager model_kpi_threshold_range kpi.group_kpi_manager 1 1 1 1

View File

@ -7,7 +7,7 @@
<record id="group_kpi_manager" model="res.groups"> <record id="group_kpi_manager" model="res.groups">
<field name="name">Manage KPI's</field> <field name="name">Manage KPI's</field>
<field name="category_id" ref="base.module_category_hidden"/> <field name="category_id" ref="base.module_category_hidden"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/> <field name="users" eval="[(4, ref('base.user_admin'))]"/>
</record> </record>
</data> </data>
<data noupdate="1"> <data noupdate="1">

View File

@ -0,0 +1,444 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<title>Key Performance Indicator</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="key-performance-indicator">
<h1 class="title">Key Performance Indicator</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/reporting-engine/tree/12.0/kpi"><img alt="OCA/reporting-engine" src="https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/reporting-engine-12-0/reporting-engine-12-0-kpi"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/143/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module provides the basis for creating key performance indicators,
including static and dynamic thresholds (SQL query or Python code),
on local and remote data sources.</p>
<p>The module also provides the mecanism to update KPIs automatically.
A scheduler is executed every hour and updates the KPI values, based
on the periodicity of each KPI. KPI computation can also be done
manually.</p>
<p>A threshold is a list of ranges and a range is:</p>
<ul class="simple">
<li>a name (like Good, Warning, Bad)</li>
<li>a minimum value (fixed, sql query or python code)</li>
<li>a maximum value (fixed, sql query or python code)</li>
<li>color (RGB code like #00FF00 for green, #FFA500 for orange, #FF0000 for red)</li>
</ul>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="id1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
<p>Example of usage:
<a class="reference external" href="https://www.youtube.com/watch?v=OC4-y2klzIk">https://www.youtube.com/watch?v=OC4-y2klzIk</a></p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/reporting-engine/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/reporting-engine/issues/new?body=module:%20kpi%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2>
<ul class="simple">
<li>Savoir-faire Linux</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple">
<li>Daniel Reis &lt;<a class="reference external" href="mailto:dreis.pt&#64;hotmail.com">dreis.pt&#64;hotmail.com</a>&gt;</li>
<li>Glen Dromgoole &lt;<a class="reference external" href="mailto:gdromgoole&#64;tier1engineering.com">gdromgoole&#64;tier1engineering.com</a>&gt;</li>
<li>Loic Lacroix &lt;<a class="reference external" href="mailto:loic.lacroix&#64;savoirfairelinux.com">loic.lacroix&#64;savoirfairelinux.com</a>&gt;</li>
<li>Sandy Carter &lt;<a class="reference external" href="mailto:sandy.carter&#64;savoirfairelinux.com">sandy.carter&#64;savoirfairelinux.com</a>&gt;</li>
<li>Gervais Naoussi &lt;<a class="reference external" href="mailto:gervaisnaoussi&#64;gmail.com">gervaisnaoussi&#64;gmail.com</a>&gt;</li>
<li>Iván Todorovich &lt;<a class="reference external" href="mailto:ivan.todorovich&#64;gmail.com">ivan.todorovich&#64;gmail.com</a>&gt;</li>
<li>Adrià Gil &lt;<a class="reference external" href="mailto:adria.gil&#64;eficent.com">adria.gil&#64;eficent.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/reporting-engine/tree/12.0/kpi">OCA/reporting-engine</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@ -27,7 +27,7 @@
<sheet> <sheet>
<group col="6" colspan="6"> <group col="6" colspan="6">
<field name="name" colspan="2"/> <field name="name" colspan="2"/>
<field name="color" colspan="2"/> <field name="color" colspan="2" widget="color"/>
<field name="company_id" groups="base.group_multi_company" colspan="2" /> <field name="company_id" groups="base.group_multi_company" colspan="2" />
</group> </group>
<group col="6"> <group col="6">

View File

@ -63,8 +63,8 @@
</group> </group>
<newline/> <newline/>
<group expand="0" name="Group By..."> <group expand="0" name="Group By...">
<filter string="Category" context="{'group_by':'category_id'}"/> <filter name="Category" context="{'group_by':'category_id'}"/>
<filter string="Type" context="{'group_by':'kpi_type'}"/> <filter name="Type" context="{'group_by':'kpi_type'}"/>
</group> </group>
</search> </search>
</field> </field>