Browse Source

Merge pull request #510 from dreispt/9.0-add-kpi

[ADD] Extract kpi module from OCA/management-system#7.0
pull/546/head
Maxime Chambreuil 8 years ago
committed by GitHub
parent
commit
fc76286cf5
  1. 3
      mgmtsystem_kpi/__init__.py
  2. 70
      mgmtsystem_kpi/__openerp__.py
  3. 364
      mgmtsystem_kpi/i18n/fr.po
  4. 351
      mgmtsystem_kpi/i18n/mgmtsystem_kpi.pot
  5. 363
      mgmtsystem_kpi/i18n/nb.po
  6. 363
      mgmtsystem_kpi/i18n/pt_BR.po
  7. 357
      mgmtsystem_kpi/i18n/vi.po
  8. BIN
      mgmtsystem_kpi/images/kpi_computation.png
  9. BIN
      mgmtsystem_kpi/images/kpi_definition.png
  10. BIN
      mgmtsystem_kpi/images/kpi_range.png
  11. BIN
      mgmtsystem_kpi/images/kpi_threshold.png
  12. 532
      mgmtsystem_kpi/mgmtsystem_kpi.py
  13. 300
      mgmtsystem_kpi/mgmtsystem_kpi_view.xml
  14. 11
      mgmtsystem_kpi/security/ir.model.access.csv
  15. 36
      mgmtsystem_kpi/security/mgmtsystem_kpi_security.xml
  16. BIN
      mgmtsystem_kpi/static/src/img/icon.png

3
mgmtsystem_kpi/__init__.py

@ -0,0 +1,3 @@
# -*- encoding: utf-8 -*-
from . import mgmtsystem_kpi

70
mgmtsystem_kpi/__openerp__.py

@ -0,0 +1,70 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2012 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name": "Key Performance Indicator",
"version": "7.0.1.1.1",
"author": "Savoir-faire Linux,Odoo Community Association (OCA)",
"website": "http://www.savoirfairelinux.com",
"license": "AGPL-3",
"category": "Management System",
"complexity": "normal",
"description": """\
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.
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.
A threshold is a list of ranges and a range is:
* a name (like Good, Warning, Bad)
* a minimum 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)
This module depends on:
* base_external_dbsource (available in lp:openobject-extension)
* web_color (available in lp:web-addons)
""",
"depends": [
'mgmtsystem',
'base_external_dbsource',
'web_color',
],
"data": [
'security/ir.model.access.csv',
'security/mgmtsystem_kpi_security.xml',
'mgmtsystem_kpi_view.xml',
],
"images": [
"images/kpi_definition.png",
"images/kpi_computation.png",
"images/kpi_threshold.png",
"images/kpi_range.png",
],
"demo": [],
"test": [],
'installable': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

364
mgmtsystem_kpi/i18n/fr.po

@ -0,0 +1,364 @@
# French translation for openerp-mgmtsystem
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openerp-mgmtsystem package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-mgmtsystem\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-04-03 18:36+0000\n"
"PO-Revision-Date: 2013-05-14 01:00+0000\n"
"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) "
"<maxime.chambreuil@savoirfairelinux.com>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-04-24 06:29+0000\n"
"X-Generator: Launchpad (build 16985)\n"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,category_id:0
#: view:mgmtsystem.kpi.category:0
msgid "Category"
msgstr "Catégorie"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "KPI Computation"
msgstr "Calcul de ICP"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi.threshold.range,color:0
msgid "RGB code with #"
msgstr "Code RVB incluant le #"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.history:0
msgid "KPI History"
msgstr "Historique de l'ICP"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,kpi_code:0
msgid ""
"SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')."
msgstr ""
"Le code SQL doit retourner le résultat comme une \"value\" (ex: \"SELECT 5 "
"AS value\")."
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_type:0
msgid "KPI Computation Type"
msgstr "Type de calcul de l'ICP"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_kpi_list
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicators"
msgstr "Indicateurs Clé de Performance"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Group By..."
msgstr "Regrouper par..."
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,valid:0
#: field:mgmtsystem.kpi.threshold.range,valid:0
msgid "Valid"
msgstr "Valide"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Local DB"
msgstr "SQL - Base locale"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_category
msgid "KPI Category"
msgstr "Catégorie ICP"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity_uom:0
msgid "Periodicity UoM"
msgstr "UdM de la périodicité"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Type"
msgstr "Type"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,name:0
#: field:mgmtsystem.kpi.category,name:0
#: field:mgmtsystem.kpi.history,name:0
#: field:mgmtsystem.kpi.threshold,name:0
#: field:mgmtsystem.kpi.threshold.range,name:0
msgid "Name"
msgstr "Nom"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Week"
msgstr "Semaine"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,description:0
#: field:mgmtsystem.kpi.category,description:0
msgid "Description"
msgstr "Description"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
msgid "Python"
msgstr "Python"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_code:0
msgid "Maximum Computation Code"
msgstr "Code de calcul du maximum"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Min Type"
msgstr "Type du minimum"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_range_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_range
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,range_ids:0
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Ranges"
msgstr "Intervalles"
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "2 of your ranges are overlapping!"
msgstr "2 périodes se chevauchent!"
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_dbsource
msgid "Data Sources"
msgstr "Sources de données"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_type:0
msgid "Max Type"
msgstr "Type du maximum"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid ""
"Only active KPIs are computed by the scheduler based on the periodicity "
"configuration."
msgstr ""
"Seuls les ICPs actifs sont calculés par l'ordonnanceur en fonction de la "
"configuration de la périodicité."
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,active:0
msgid "Active"
msgstr "Actif"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold
msgid "KPI Threshold"
msgstr "Seuil de l'ICP"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Day"
msgstr "Jour"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Fixed value"
msgstr "Valeur fixe"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold_range
msgid "KPI Threshold Range"
msgstr "Intervalle du seuil de l'ICP"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_code:0
msgid "Minimum Computation Code"
msgstr "Code de calcul du minimum"
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "Please make sure your ranges do not overlap!"
msgstr "Assurez-vous que vos intervalles ne se chevauchent pas !"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_code:0
msgid "KPI Code"
msgstr "Code ICP"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Hour"
msgstr "Heure"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,date:0
msgid "Execution Date"
msgstr "Date d'exécution"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,max_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,max_value:0
msgid "Maximum"
msgstr "Maximum"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Compute KPI Now"
msgstr "Calculez l'ICP maintenant"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Externa DB"
msgstr "SQL - BD externe"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_history
msgid "History of the KPI"
msgstr "Historique de l'ICP"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,next_execution_date:0
msgid "Next execution date"
msgstr "Prochaine date d'exécution"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,max_dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,min_dbsource_id:0
msgid "External DB Source"
msgstr "Source de données externe"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,active:0
msgid ""
"Only active KPIs will be updated by the scheduler based on the periodicity "
"configuration."
msgstr ""
"Seuls les ICPs actif seront mis à jour par l'ordonnanceur en fonction de la "
"configuration de la périodicité."
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi.history,kpi_id:0
msgid "KPI"
msgstr "ICP"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,history_ids:0
msgid "History"
msgstr "Historique"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity:0
msgid "Periodicity"
msgstr "Fréquence"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,color:0
#: field:mgmtsystem.kpi.threshold.range,color:0
msgid "Color"
msgstr "Couleur"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
msgid "SQL - External DB"
msgstr "SQL - BD externe"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Python Code"
msgstr "Code Python"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Range"
msgstr "Intervalle"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Month"
msgstr "Mois"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,value:0
#: field:mgmtsystem.kpi.history,value:0
msgid "Value"
msgstr "Valeur"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,min_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,min_value:0
msgid "Minimum"
msgstr "Minimum"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_category_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_category
#: view:mgmtsystem.kpi.category:0
msgid "Categories"
msgstr "Catégories"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Computation"
msgstr "Calcul"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,threshold_id:0
#: view:mgmtsystem.kpi.threshold:0
msgid "Threshold"
msgstr "Seuil"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,kpi_ids:0
msgid "KPIs"
msgstr "ICPs"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,invalid_message:0
#: field:mgmtsystem.kpi.threshold.range,invalid_message:0
msgid "Message"
msgstr "Message"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_threshold
#: view:mgmtsystem.kpi.threshold:0
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,threshold_ids:0
msgid "Thresholds"
msgstr "Seuils"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicator"
msgstr "Indicateur Clé de Performance"

351
mgmtsystem_kpi/i18n/mgmtsystem_kpi.pot

@ -0,0 +1,351 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * mgmtsystem_kpi
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-03 18:36+0000\n"
"PO-Revision-Date: 2013-04-03 18:36+0000\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: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,category_id:0
#: view:mgmtsystem.kpi.category:0
msgid "Category"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "KPI Computation"
msgstr ""
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi.threshold.range,color:0
msgid "RGB code with #"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.history:0
msgid "KPI History"
msgstr ""
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,kpi_code:0
msgid "SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')."
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_type:0
msgid "KPI Computation Type"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_kpi_list
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicators"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Group By..."
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,valid:0
#: field:mgmtsystem.kpi.threshold.range,valid:0
msgid "Valid"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Local DB"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_category
msgid "KPI Category"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity_uom:0
msgid "Periodicity UoM"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Type"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,name:0
#: field:mgmtsystem.kpi.category,name:0
#: field:mgmtsystem.kpi.history,name:0
#: field:mgmtsystem.kpi.threshold,name:0
#: field:mgmtsystem.kpi.threshold.range,name:0
msgid "Name"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Week"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,description:0
#: field:mgmtsystem.kpi.category,description:0
msgid "Description"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
msgid "Python"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_code:0
msgid "Maximum Computation Code"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Min Type"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_range_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_range
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,range_ids:0
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Ranges"
msgstr ""
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "2 of your ranges are overlapping!"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_dbsource
msgid "Data Sources"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_type:0
msgid "Max Type"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Only active KPIs are computed by the scheduler based on the periodicity configuration."
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,active:0
msgid "Active"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold
msgid "KPI Threshold"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Day"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Fixed value"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold_range
msgid "KPI Threshold Range"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_code:0
msgid "Minimum Computation Code"
msgstr ""
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "Please make sure your ranges do not overlap!"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_code:0
msgid "KPI Code"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Hour"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,date:0
msgid "Execution Date"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,max_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,max_value:0
msgid "Maximum"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Compute KPI Now"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Externa DB"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_history
msgid "History of the KPI"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,next_execution_date:0
msgid "Next execution date"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,max_dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,min_dbsource_id:0
msgid "External DB Source"
msgstr ""
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,active:0
msgid "Only active KPIs will be updated by the scheduler based on the periodicity configuration."
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi.history,kpi_id:0
msgid "KPI"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,history_ids:0
msgid "History"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity:0
msgid "Periodicity"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,color:0
#: field:mgmtsystem.kpi.threshold.range,color:0
msgid "Color"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
msgid "SQL - External DB"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Python Code"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Range"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Month"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,value:0
#: field:mgmtsystem.kpi.history,value:0
msgid "Value"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,min_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,min_value:0
msgid "Minimum"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_category_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_category
#: view:mgmtsystem.kpi.category:0
msgid "Categories"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Computation"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,threshold_id:0
#: view:mgmtsystem.kpi.threshold:0
msgid "Threshold"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,kpi_ids:0
msgid "KPIs"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,invalid_message:0
#: field:mgmtsystem.kpi.threshold.range,invalid_message:0
msgid "Message"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_threshold
#: view:mgmtsystem.kpi.threshold:0
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,threshold_ids:0
msgid "Thresholds"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicator"
msgstr ""

363
mgmtsystem_kpi/i18n/nb.po

@ -0,0 +1,363 @@
# Norwegian Bokmal translation for openerp-mgmtsystem
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
# This file is distributed under the same license as the openerp-mgmtsystem package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-mgmtsystem\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-04-03 18:36+0000\n"
"PO-Revision-Date: 2014-01-22 17:33+0000\n"
"Last-Translator: Torvald Baade Bringsvor <torvald@bringsvor.com>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-04-24 06:30+0000\n"
"X-Generator: Launchpad (build 16985)\n"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,category_id:0
#: view:mgmtsystem.kpi.category:0
msgid "Category"
msgstr "Kategori"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "KPI Computation"
msgstr "KPI beregning"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi.threshold.range,color:0
msgid "RGB code with #"
msgstr "RGB kode med tall"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.history:0
msgid "KPI History"
msgstr "KPI Historikk"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,kpi_code:0
msgid ""
"SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')."
msgstr ""
"SQL kode må returnere resultatet som 'verdi' (for eksempel 'SELECT S AS "
"verdi')."
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_type:0
msgid "KPI Computation Type"
msgstr "KPI Beregningstype"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_kpi_list
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicators"
msgstr "Nøkkeltall for ytelse (KPI)"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Group By..."
msgstr "Grupper etter ..."
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,valid:0
#: field:mgmtsystem.kpi.threshold.range,valid:0
msgid "Valid"
msgstr "Gyldig"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Local DB"
msgstr "SQL - lokal database"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_category
msgid "KPI Category"
msgstr "KPI Kategori"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity_uom:0
msgid "Periodicity UoM"
msgstr "Periodisitet måleenhet (UoM)"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Type"
msgstr "Type"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,name:0
#: field:mgmtsystem.kpi.category,name:0
#: field:mgmtsystem.kpi.history,name:0
#: field:mgmtsystem.kpi.threshold,name:0
#: field:mgmtsystem.kpi.threshold.range,name:0
msgid "Name"
msgstr "Navn"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Week"
msgstr "Uke"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,description:0
#: field:mgmtsystem.kpi.category,description:0
msgid "Description"
msgstr "Beskrivelse"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
msgid "Python"
msgstr "Python"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_code:0
msgid "Maximum Computation Code"
msgstr "Maksimal beregningskode"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Min Type"
msgstr "Min type"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_range_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_range
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,range_ids:0
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Ranges"
msgstr "Områder"
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "2 of your ranges are overlapping!"
msgstr "to av dine områder overlapper"
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_dbsource
msgid "Data Sources"
msgstr "Datakilder"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_type:0
msgid "Max Type"
msgstr "Maks type"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid ""
"Only active KPIs are computed by the scheduler based on the periodicity "
"configuration."
msgstr ""
"Kun aktive KPIer blir beregnet periodisk (av scheduler) basert på "
"konfigurert periode."
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,active:0
msgid "Active"
msgstr "Aktiv"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold
msgid "KPI Threshold"
msgstr "KPI nivå"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Day"
msgstr "Dag"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Fixed value"
msgstr "Fast verdi"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold_range
msgid "KPI Threshold Range"
msgstr "KPI Nivåområde"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_code:0
msgid "Minimum Computation Code"
msgstr "Minimal beregningskode"
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "Please make sure your ranges do not overlap!"
msgstr "Vennligst vær sikker på at områdene ikke overlapper!"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_code:0
msgid "KPI Code"
msgstr "KPI kode"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Hour"
msgstr "Time"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,date:0
msgid "Execution Date"
msgstr "Gjennomførings dato"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,max_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,max_value:0
msgid "Maximum"
msgstr "Maksimum"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Compute KPI Now"
msgstr "Beregn KPI Nå"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Externa DB"
msgstr "SQL - Ekstern database"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_history
msgid "History of the KPI"
msgstr "Historisk KPI"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,next_execution_date:0
msgid "Next execution date"
msgstr "Neste eksekveringsdato"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,max_dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,min_dbsource_id:0
msgid "External DB Source"
msgstr "Ekstern databasekilde"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,active:0
msgid ""
"Only active KPIs will be updated by the scheduler based on the periodicity "
"configuration."
msgstr ""
"Kun aktive KPIer blir oppdatert periodisk (av scheduler) basert på "
"konfigurert periode."
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi.history,kpi_id:0
msgid "KPI"
msgstr "KPI"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,history_ids:0
msgid "History"
msgstr "Historikk"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity:0
msgid "Periodicity"
msgstr "Periodisitet"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,color:0
#: field:mgmtsystem.kpi.threshold.range,color:0
msgid "Color"
msgstr "Farge"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
msgid "SQL - External DB"
msgstr "SQL - Ekstern database"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Python Code"
msgstr "Python kode"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Range"
msgstr "Intervall"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Month"
msgstr "Måned"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,value:0
#: field:mgmtsystem.kpi.history,value:0
msgid "Value"
msgstr "Verdi"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,min_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,min_value:0
msgid "Minimum"
msgstr "Minimum"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_category_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_category
#: view:mgmtsystem.kpi.category:0
msgid "Categories"
msgstr "Kategorier"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Computation"
msgstr "Beregning"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,threshold_id:0
#: view:mgmtsystem.kpi.threshold:0
msgid "Threshold"
msgstr "Terskel"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,kpi_ids:0
msgid "KPIs"
msgstr "KPIer"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,invalid_message:0
#: field:mgmtsystem.kpi.threshold.range,invalid_message:0
msgid "Message"
msgstr "Melding"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_threshold
#: view:mgmtsystem.kpi.threshold:0
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,threshold_ids:0
msgid "Thresholds"
msgstr "Terskler"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicator"
msgstr "Nøkkelindikator for ytelse (KPI)"

363
mgmtsystem_kpi/i18n/pt_BR.po

@ -0,0 +1,363 @@
# French translation for openerp-mgmtsystem
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openerp-mgmtsystem package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-mgmtsystem\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-04-03 18:36+0000\n"
"PO-Revision-Date: 2013-07-18 15:14+0000\n"
"Last-Translator: Claudio de Araujo Santos <claudioaraujosantos@gmail.com>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-04-24 06:30+0000\n"
"X-Generator: Launchpad (build 16985)\n"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,category_id:0
#: view:mgmtsystem.kpi.category:0
msgid "Category"
msgstr "Categoria"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "KPI Computation"
msgstr "Cálculo de ICD"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi.threshold.range,color:0
msgid "RGB code with #"
msgstr "Código RGB com #"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.history:0
msgid "KPI History"
msgstr "Historico ICD"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,kpi_code:0
msgid ""
"SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')."
msgstr ""
"Código SQL deve retornar o resultado como \"valor\" (ou seja, 'SELECT 5 AS "
"value')."
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_type:0
msgid "KPI Computation Type"
msgstr "Tipo cálculo ICD"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_kpi_list
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicators"
msgstr "Indicadores Chave de Desempenho"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Group By..."
msgstr "Agrupar Por..."
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,valid:0
#: field:mgmtsystem.kpi.threshold.range,valid:0
msgid "Valid"
msgstr "Válido"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Local DB"
msgstr "SQL - DB local"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_category
msgid "KPI Category"
msgstr "Categoria ICD"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity_uom:0
msgid "Periodicity UoM"
msgstr "UoM periodicidade"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Type"
msgstr "Tipo"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,name:0
#: field:mgmtsystem.kpi.category,name:0
#: field:mgmtsystem.kpi.history,name:0
#: field:mgmtsystem.kpi.threshold,name:0
#: field:mgmtsystem.kpi.threshold.range,name:0
msgid "Name"
msgstr "Nome"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Week"
msgstr "Semana"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,description:0
#: field:mgmtsystem.kpi.category,description:0
msgid "Description"
msgstr "Descrição"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
msgid "Python"
msgstr "Python"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_code:0
msgid "Maximum Computation Code"
msgstr "Código máximo do cálculo"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Min Type"
msgstr "Tipo minimo"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_range_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_range
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,range_ids:0
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Ranges"
msgstr "Intervalos"
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "2 of your ranges are overlapping!"
msgstr "2 de suas faixas são sobrepostas!"
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_dbsource
msgid "Data Sources"
msgstr "Fonte de dados"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_type:0
msgid "Max Type"
msgstr "Tipo máximo"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid ""
"Only active KPIs are computed by the scheduler based on the periodicity "
"configuration."
msgstr ""
"Só os ICDs ativos são calculados pelo planificador baseado na configuração "
"de periodicidade."
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,active:0
msgid "Active"
msgstr "Ativo"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold
msgid "KPI Threshold"
msgstr "Limiar ICD"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Day"
msgstr "Dia"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Fixed value"
msgstr "Valor fixo"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold_range
msgid "KPI Threshold Range"
msgstr "Faixa limiar do ICD"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_code:0
msgid "Minimum Computation Code"
msgstr "Código minimo de cálculo"
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "Please make sure your ranges do not overlap!"
msgstr "Por favor, certifique-se seus intervalos não se sobrepõem!"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_code:0
msgid "KPI Code"
msgstr "Código ICD"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Hour"
msgstr "Hora"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,date:0
msgid "Execution Date"
msgstr "Data de Execução"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,max_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,max_value:0
msgid "Maximum"
msgstr "Máximo"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Compute KPI Now"
msgstr "Cálcule o ICD agora"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Externa DB"
msgstr "SQL - DB Externo"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_history
msgid "History of the KPI"
msgstr "História do ICD"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,next_execution_date:0
msgid "Next execution date"
msgstr "Próxima data de execução"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,max_dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,min_dbsource_id:0
msgid "External DB Source"
msgstr "Fonte Externa de Dados"
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,active:0
msgid ""
"Only active KPIs will be updated by the scheduler based on the periodicity "
"configuration."
msgstr ""
"Somente os ICDs ativos serão atualizados pelo programador com base na "
"configuração periodicidade."
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi.history,kpi_id:0
msgid "KPI"
msgstr "IDC"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,history_ids:0
msgid "History"
msgstr "Histórico"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity:0
msgid "Periodicity"
msgstr "Periodicidade"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,color:0
#: field:mgmtsystem.kpi.threshold.range,color:0
msgid "Color"
msgstr "Cor"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
msgid "SQL - External DB"
msgstr "SQL - DB externo"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Python Code"
msgstr "Código Python"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Range"
msgstr "Intervalo"
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Month"
msgstr "Mês"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,value:0
#: field:mgmtsystem.kpi.history,value:0
msgid "Value"
msgstr "Valor"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,min_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,min_value:0
msgid "Minimum"
msgstr "Mínimo"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_category_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_category
#: view:mgmtsystem.kpi.category:0
msgid "Categories"
msgstr "Categorias"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Computation"
msgstr "Calcular"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,threshold_id:0
#: view:mgmtsystem.kpi.threshold:0
msgid "Threshold"
msgstr "Limiar"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,kpi_ids:0
msgid "KPIs"
msgstr "ICDs"
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,invalid_message:0
#: field:mgmtsystem.kpi.threshold.range,invalid_message:0
msgid "Message"
msgstr "Mensagem"
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_threshold
#: view:mgmtsystem.kpi.threshold:0
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,threshold_ids:0
msgid "Thresholds"
msgstr "Limites"
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicator"
msgstr "Indicador Chave Desempenho"

357
mgmtsystem_kpi/i18n/vi.po

@ -0,0 +1,357 @@
# Vietnamese translation for openerp-mgmtsystem
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
# This file is distributed under the same license as the openerp-mgmtsystem package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-mgmtsystem\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2013-04-03 18:36+0000\n"
"PO-Revision-Date: 2014-03-05 03:04+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese <vi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-04-24 06:30+0000\n"
"X-Generator: Launchpad (build 16985)\n"
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,category_id:0
#: view:mgmtsystem.kpi.category:0
msgid "Category"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "KPI Computation"
msgstr ""
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi.threshold.range,color:0
msgid "RGB code with #"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.history:0
msgid "KPI History"
msgstr ""
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,kpi_code:0
msgid ""
"SQL code must return the result as 'value' (i.e. 'SELECT 5 AS value')."
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_type:0
msgid "KPI Computation Type"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_kpi_list
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicators"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Group By..."
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,valid:0
#: field:mgmtsystem.kpi.threshold.range,valid:0
msgid "Valid"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Local DB"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_category
msgid "KPI Category"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity_uom:0
msgid "Periodicity UoM"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Type"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,name:0
#: field:mgmtsystem.kpi.category,name:0
#: field:mgmtsystem.kpi.history,name:0
#: field:mgmtsystem.kpi.threshold,name:0
#: field:mgmtsystem.kpi.threshold.range,name:0
msgid "Name"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Week"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,description:0
#: field:mgmtsystem.kpi.category,description:0
msgid "Description"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
msgid "Python"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_code:0
msgid "Maximum Computation Code"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Min Type"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_range_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_range
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,range_ids:0
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Ranges"
msgstr ""
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "2 of your ranges are overlapping!"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_dbsource
msgid "Data Sources"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,max_type:0
msgid "Max Type"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid ""
"Only active KPIs are computed by the scheduler based on the periodicity "
"configuration."
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,active:0
msgid "Active"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold
msgid "KPI Threshold"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Day"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Fixed value"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_threshold_range
msgid "KPI Threshold Range"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold.range,min_code:0
msgid "Minimum Computation Code"
msgstr ""
#. module: mgmtsystem_kpi
#: code:addons/mgmtsystem_kpi/mgmtsystem_kpi.py:218
#, python-format
msgid "Please make sure your ranges do not overlap!"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,kpi_code:0
msgid "KPI Code"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Hour"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,date:0
msgid "Execution Date"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,max_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,max_value:0
msgid "Maximum"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Compute KPI Now"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "SQL - Externa DB"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi_history
msgid "History of the KPI"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,next_execution_date:0
msgid "Next execution date"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,max_dbsource_id:0
#: field:mgmtsystem.kpi.threshold.range,min_dbsource_id:0
msgid "External DB Source"
msgstr ""
#. module: mgmtsystem_kpi
#: help:mgmtsystem.kpi,active:0
msgid ""
"Only active KPIs will be updated by the scheduler based on the periodicity "
"configuration."
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi.history,kpi_id:0
msgid "KPI"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
#: field:mgmtsystem.kpi,history_ids:0
msgid "History"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,periodicity:0
msgid "Periodicity"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.history,color:0
#: field:mgmtsystem.kpi.threshold.range,color:0
msgid "Color"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,kpi_type:0
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
msgid "SQL - External DB"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi.threshold.range,max_type:0
#: selection:mgmtsystem.kpi.threshold.range,min_type:0
msgid "Python Code"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
msgid "Range"
msgstr ""
#. module: mgmtsystem_kpi
#: selection:mgmtsystem.kpi,periodicity_uom:0
msgid "Month"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,value:0
#: field:mgmtsystem.kpi.history,value:0
msgid "Value"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,min_fixed_value:0
#: field:mgmtsystem.kpi.threshold.range,min_value:0
msgid "Minimum"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_category_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_category
#: view:mgmtsystem.kpi.category:0
msgid "Categories"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Computation"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi,threshold_id:0
#: view:mgmtsystem.kpi.threshold:0
msgid "Threshold"
msgstr ""
#. module: mgmtsystem_kpi
#: view:mgmtsystem.kpi.threshold:0
#: field:mgmtsystem.kpi.threshold,kpi_ids:0
msgid "KPIs"
msgstr ""
#. module: mgmtsystem_kpi
#: field:mgmtsystem.kpi.threshold,invalid_message:0
#: field:mgmtsystem.kpi.threshold.range,invalid_message:0
msgid "Message"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.actions.act_window,name:mgmtsystem_kpi.open_mgmtsystem_threshold_list
#: model:ir.ui.menu,name:mgmtsystem_kpi.menu_mgmtsystem_configuration_kpi_threshold
#: view:mgmtsystem.kpi.threshold:0
#: view:mgmtsystem.kpi.threshold.range:0
#: field:mgmtsystem.kpi.threshold.range,threshold_ids:0
msgid "Thresholds"
msgstr ""
#. module: mgmtsystem_kpi
#: model:ir.model,name:mgmtsystem_kpi.model_mgmtsystem_kpi
#: view:mgmtsystem.kpi:0
msgid "Key Performance Indicator"
msgstr ""

BIN
mgmtsystem_kpi/images/kpi_computation.png

After

Width: 658  |  Height: 352  |  Size: 41 KiB

BIN
mgmtsystem_kpi/images/kpi_definition.png

After

Width: 655  |  Height: 353  |  Size: 46 KiB

BIN
mgmtsystem_kpi/images/kpi_range.png

After

Width: 818  |  Height: 449  |  Size: 27 KiB

BIN
mgmtsystem_kpi/images/kpi_threshold.png

After

Width: 655  |  Height: 266  |  Size: 25 KiB

532
mgmtsystem_kpi/mgmtsystem_kpi.py

@ -0,0 +1,532 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2012 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from datetime import datetime, timedelta
from openerp.osv import fields, orm
from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval
from openerp.tools import (
DEFAULT_SERVER_DATETIME_FORMAT as DATETIME_FORMAT,
)
import time
import re
import logging
_logger = logging.getLogger(__name__)
def is_one_value(result):
# check if sql query returns only one value
if type(result) is dict and 'value' in result.dictfetchone():
return True
elif type(result) is list and 'value' in result[0]:
return True
else:
return False
RE_SELECT_QUERY = re.compile('.*(' + '|'.join((
'INSERT',
'UPDATE',
'DELETE',
'CREATE',
'ALTER',
'DROP',
'GRANT',
'REVOKE',
'INDEX',
)) + ')')
def is_select_query(query):
"""Check if sql query is a SELECT statement"""
return not RE_SELECT_QUERY.match(query.upper())
class mgmtsystem_kpi_category(orm.Model):
"""
KPI Category
"""
_name = "mgmtsystem.kpi.category"
_description = "KPI Category"
_columns = {
'name': fields.char('Name', size=50, required=True),
'description': fields.text('Description')
}
class mgmtsystem_kpi_threshold_range(orm.Model):
"""
KPI Threshold Range
"""
_name = "mgmtsystem.kpi.threshold.range"
_description = "KPI Threshold Range"
def compute_min_value(self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids):
value = None
if obj.min_type == 'local' and is_select_query(obj.min_code):
cr.execute(obj.min_code)
dic = cr.dictfetchall()
if is_one_value(dic):
value = dic[0]['value']
elif (obj.min_type == 'external'
and obj.min_dbsource_id.id
and is_select_query(obj.min_code)):
dbsrc_obj = obj.min_dbsource_id
res = dbsrc_obj.execute(obj.min_code)
if is_one_value(res):
value = res[0]['value']
elif obj.min_type == 'python':
value = safe_eval(obj.min_code)
else:
value = obj.min_fixed_value
result[obj.id] = value
return result
def compute_max_value(self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids, context):
value = None
if obj.max_type == 'local' and is_select_query(obj.max_code):
cr.execute(obj.max_code)
dic = cr.dictfetchall()
if is_one_value(dic):
value = dic[0]['value']
elif obj.max_type == 'python':
value = safe_eval(obj.max_code)
elif (obj.max_type == 'external'
and obj.max_dbsource_id.id
and is_select_query(obj.max_code)):
dbsrc_obj = obj.max_dbsource_id
res = dbsrc_obj.execute(obj.max_code)
if is_one_value(res):
value = res[0]['value']
else:
value = obj.max_fixed_value
result[obj.id] = value
return result
def _is_valid_range(self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids, context):
if obj.max_value < obj.min_value:
result[obj.id] = False
else:
result[obj.id] = True
return result
def _generate_invalid_message(
self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids, context):
if obj.valid:
result[obj.id] = ""
else:
result[obj.id] = ("Minimum value is greater than the maximum "
"value! Please adjust them.")
return result
_columns = {
'name': fields.char('Name', size=50, required=True),
'valid': fields.function(
_is_valid_range,
string='Valid',
type='boolean',
required=True,
),
'invalid_message': fields.function(
_generate_invalid_message,
string='Message',
type='char',
size=100,
),
'min_type': fields.selection((
('static', 'Fixed value'),
('python', 'Python Code'),
('local', 'SQL - Local DB'),
('external', 'SQL - Externa DB'),
), 'Min Type', required=True),
'min_value': fields.function(
compute_min_value,
string='Minimum',
type='float',
),
'min_fixed_value': fields.float('Minimum'),
'min_code': fields.text('Minimum Computation Code'),
'min_dbsource_id': fields.many2one(
'base.external.dbsource',
'External DB Source',
),
'max_type': fields.selection((
('static', 'Fixed value'),
('python', 'Python Code'),
('local', 'SQL - Local DB'),
('external', 'SQL - External DB'),
), 'Max Type', required=True),
'max_value': fields.function(
compute_max_value,
string='Maximum',
type='float',
),
'max_fixed_value': fields.float('Maximum'),
'max_code': fields.text('Maximum Computation Code'),
'max_dbsource_id': fields.many2one(
'base.external.dbsource',
'External DB Source',
),
'color': fields.char(
'Color',
help='RGB code with #',
size=7,
required=True,
),
'threshold_ids': fields.many2many(
'mgmtsystem.kpi.threshold',
'mgmtsystem_kpi_threshold_range_rel',
'range_id',
'threshold_id',
'Thresholds',
),
'company_id': fields.many2one('res.company', 'Company')
}
_defaults = {
'company_id': (
lambda self, cr, uid, c:
self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id),
'valid': True,
}
class mgmtsystem_kpi_threshold(orm.Model):
"""
KPI Threshold
"""
_name = "mgmtsystem.kpi.threshold"
_description = "KPI Threshold"
def _is_valid_threshold(self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids, context):
# check if ranges overlap
# TODO: This code can be done better
for range1 in obj.range_ids:
for range2 in obj.range_ids:
if (range1.valid and range2.valid
and range1.min_value < range2.min_value):
result[obj.id] = range1.max_value <= range2.min_value
return result
def _generate_invalid_message(
self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids, context):
if obj.valid:
result[obj.id] = ""
else:
result[obj.id] = ("2 of your ranges are overlapping! Please "
"make sure your ranges do not overlap.")
return result
_columns = {
'name': fields.char('Name', size=50, required=True),
'range_ids': fields.many2many(
'mgmtsystem.kpi.threshold.range',
'mgmtsystem_kpi_threshold_range_rel',
'threshold_id',
'range_id',
'Ranges'
),
'valid': fields.function(
_is_valid_threshold,
string='Valid',
type='boolean',
required=True,
),
'invalid_message': fields.function(
_generate_invalid_message,
string='Message',
type='char',
size=100,
),
'kpi_ids': fields.one2many('mgmtsystem.kpi', 'threshold_id', 'KPIs'),
'company_id': fields.many2one('res.company', 'Company')
}
_defaults = {
'company_id': (
lambda self, cr, uid, c:
self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id),
'valid': True,
}
def create(self, cr, uid, data, context=None):
if context is None:
context = {}
# check if ranges overlap
# TODO: This code can be done better
range_obj1 = self.pool.get('mgmtsystem.kpi.threshold.range')
range_obj2 = self.pool.get('mgmtsystem.kpi.threshold.range')
for range1 in data['range_ids'][0][2]:
range_obj1 = range_obj1.browse(cr, uid, range1, context)
for range2 in data['range_ids'][0][2]:
range_obj2 = range_obj2.browse(cr, uid, range2, context)
if (range_obj1.valid and range_obj2.valid
and range_obj1.min_value < range_obj2.min_value):
if range_obj1.max_value > range_obj2.min_value:
raise orm.except_orm(
_("2 of your ranges are overlapping!"),
_("Please make sure your ranges do not overlap!")
)
range_obj2 = self.pool.get('mgmtsystem.kpi.threshold.range')
range_obj1 = self.pool.get('mgmtsystem.kpi.threshold.range')
return super(mgmtsystem_kpi_threshold, self).create(
cr, uid, data, context
)
def get_color(self, cr, uid, ids, kpi_value, context=None):
if context is None:
context = {}
color = '#FFFFFF'
for obj in self.browse(cr, uid, ids, context):
for range_obj in obj.range_ids:
if (range_obj.min_value <= kpi_value <= range_obj.max_value
and range_obj.valid):
color = range_obj.color
return color
class mgmtsystem_kpi_history(orm.Model):
"""
History of the KPI
"""
_name = "mgmtsystem.kpi.history"
_description = "History of the KPI"
_columns = {
'name': fields.char('Name', size=150, required=True),
'kpi_id': fields.many2one('mgmtsystem.kpi', 'KPI', required=True),
'date': fields.datetime(
'Execution Date',
required=True,
readonly=True,
),
'value': fields.float('Value', required=True, readonly=True),
'color': fields.text('Color', required=True, readonly=True),
'company_id': fields.many2one('res.company', 'Company')
}
_defaults = {
'company_id': (
lambda self, cr, uid, c:
self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id),
'name': lambda *a: time.strftime('%d %B %Y'),
'date': lambda *a: time.strftime(DATETIME_FORMAT),
'color': '#FFFFFF',
}
_order = "date desc"
class mgmtsystem_kpi(orm.Model):
"""
Key Performance Indicators
"""
_name = "mgmtsystem.kpi"
_description = "Key Performance Indicator"
def _display_last_kpi_value(
self, cr, uid, ids, field_name, arg, context=None):
if context is None:
context = {}
result = {}
for obj in self.browse(cr, uid, ids):
if obj.history_ids:
result[obj.id] = obj.history_ids[0].value
else:
result[obj.id] = 0
return result
def compute_kpi_value(self, cr, uid, ids, context=None):
if context is None:
context = {}
for obj in self.browse(cr, uid, ids):
kpi_value = 0
if obj.kpi_type == 'local' and is_select_query(obj.kpi_code):
cr.execute(obj.kpi_code)
dic = cr.dictfetchall()
if is_one_value(dic):
kpi_value = dic[0]['value']
elif (obj.kpi_type == 'external'
and obj.dbsource_id.id
and is_select_query(obj.kpi_code)):
dbsrc_obj = obj.dbsource_id
res = dbsrc_obj.execute(obj.kpi_code)
if is_one_value(res):
kpi_value = res[0]['value']
elif obj.kpi_type == 'python':
kpi_value = safe_eval(obj.kpi_code)
threshold_obj = obj.threshold_id
values = {
'kpi_id': obj.id,
'value': kpi_value,
'color': threshold_obj.get_color(kpi_value),
}
history_obj = self.pool.get('mgmtsystem.kpi.history')
history_id = history_obj.create(cr, uid, values, context=context)
obj.history_ids.append(history_id)
return True
def update_next_execution_date(self, cr, uid, ids, context=None):
if context is None:
context = {}
for obj in self.browse(cr, uid, ids):
if obj.periodicity_uom == 'hour':
delta = timedelta(hours=obj.periodicity)
elif obj.periodicity_uom == 'day':
delta = timedelta(days=obj.periodicity)
elif obj.periodicity_uom == 'week':
delta = timedelta(weeks=obj.periodicity)
elif obj.periodicity_uom == 'month':
delta = timedelta(months=obj.periodicity)
else:
delta = timedelta()
new_date = datetime.now() + delta
values = {
'next_execution_date': new_date.strftime(DATETIME_FORMAT),
}
obj.write(values)
return True
# Method called by the scheduler
def update_kpi_value(self, cr, uid, ids=None, context=None):
if context is None:
context = {}
if not ids:
filters = [
'&',
'|',
('active', '=', True),
('next_execution_date', '<=',
datetime.now().strftime(DATETIME_FORMAT)),
('next_execution_date', '=', False),
]
if 'filters' in context:
filters.extend(context['filters'])
ids = self.search(cr, uid, filters, context=context)
res = None
try:
res = self.compute_kpi_value(cr, uid, ids, context=context)
self.update_next_execution_date(cr, uid, ids, context=context)
except Exception:
_logger.exception("Failed updating KPI values")
return res
_columns = {
'name': fields.char('Name', size=50, required=True),
'description': fields.text('Description'),
'category_id': fields.many2one(
'mgmtsystem.kpi.category',
'Category',
required=True,
),
'threshold_id': fields.many2one(
'mgmtsystem.kpi.threshold',
'Threshold',
required=True,
),
'periodicity': fields.integer('Periodicity'),
'periodicity_uom': fields.selection((
('hour', 'Hour'),
('day', 'Day'),
('week', 'Week'),
('month', 'Month')
), 'Periodicity UoM', required=True),
'next_execution_date': fields.datetime(
'Next execution date',
readonly=True,
),
'value': fields.function(
_display_last_kpi_value,
string='Value',
type='float',
),
'kpi_type': fields.selection((
('python', 'Python'),
('local', 'SQL - Local DB'),
('external', 'SQL - External DB')
), 'KPI Computation Type'),
'dbsource_id': fields.many2one(
'base.external.dbsource',
'External DB Source',
),
'kpi_code': fields.text(
'KPI Code',
help=("SQL code must return the result as 'value' "
"(i.e. 'SELECT 5 AS value')."),
),
'history_ids': fields.one2many(
'mgmtsystem.kpi.history',
'kpi_id',
'History',
),
'active': fields.boolean(
'Active',
help=("Only active KPIs will be updated by the scheduler based on"
" the periodicity configuration."),
),
'company_id': fields.many2one('res.company', 'Company')
}
_defaults = {
'company_id': (
lambda self, cr, uid, c:
self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id),
'active': True,
'periodicity': 1,
'periodicity_uom': 'day',
}

300
mgmtsystem_kpi/mgmtsystem_kpi_view.xml

@ -0,0 +1,300 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- KPI -->
<record id="view_mgmtsystem_kpi_tree" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.tree</field>
<field name="model">mgmtsystem.kpi</field>
<field name="arch" type="xml">
<tree string="Key Performance Indicators">
<field name="name"/>
<field name="value" widget="progressbar"/>
<field name="category_id"/>
<field name="kpi_type"/>
<field name="company_id" group="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="view_mgmtsystem_kpi_filter" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.filter</field>
<field name="model">mgmtsystem.kpi</field>
<field name="arch" type="xml">
<search string="KPI">
<group>
<filter name="active" icon="terp-document-new" domain="[('active','=',True)]" string="Active" help="Only active KPIs are computed by the scheduler based on the periodicity configuration."/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="category_id"/>
<field name="company_id" group="base.group_multi_company"/>
</group>
<newline />
<group expand="0" string="Group By...">
<filter string="Category" context="{'group_by':'category_id'}"/>
<filter string="Type" context="{'group_by':'kpi_type'}"/>
</group>
</search>
</field>
</record>
<record id="view_mgmtsystem_kpi_form" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.form</field>
<field name="model">mgmtsystem.kpi</field>
<field name="arch" type="xml">
<form string="Key Performance Indicator">
<group col="6" colspan="6">
<field name="name" colspan="2"/>
<field name="threshold_id" colspan="2"/>
<field name="category_id" colspan="2"/>
<newline/>
<field name="value" colspan="2"/>
<button name="compute_kpi_value" string="Compute KPI Now" colspan="2" type="object"/>
<field name="active" colspan="2"/>
<field name="company_id" group="base.group_multi_company"/>
</group>
<notebook colspan="6">
<page string="History">
<field name="history_ids" readonly="1" nolabel="1"/>
</page>
<page string="Computation">
<group col="6">
<field name="periodicity" colspan="2"/>
<field name="periodicity_uom" colspan="2"/>
<field name="next_execution_date" colspan="2"/>
<separator string="KPI Computation" colspan="6"/>
<newline/>
<field name="kpi_type" colspan="2"/>
<field name="dbsource_id" colspan="2" attrs="{'invisible' : [('kpi_type', '!=', 'external')]}"/>
<newline/>
<field name="kpi_code" colspan="6"/>
</group>
</page>
<page string="Description">
<field name="description" nolabel="1"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_mgmtsystem_kpi_list">
<field name="name">Key Performance Indicators</field>
<field name="res_model">mgmtsystem.kpi</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_mgmtsystem_kpi_tree"/>
<field name="search_view_id" ref="view_mgmtsystem_kpi_filter"/>
</record>
<menuitem id="menu_mgmtsystem_kpi"
name="KPI"
action="open_mgmtsystem_kpi_list"
sequence="15"
parent="mgmtsystem.menu_mgmtsystem_main"
groups="base.group_user"/>
<!-- KPI history -->
<record id="view_mgmtsystem_kpi_history_tree" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.history.tree</field>
<field name="model">mgmtsystem.kpi.history</field>
<field name="arch" type="xml">
<tree string="KPI History">
<field name="name"/>
<field name="date"/>
<field name="value"/>
<field name="color" widget="color"/>
<field name="company_id" group="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Configuration menu -->
<menuitem id="menu_mgmtsystem_configuration_kpi"
name="KPI"
parent="mgmtsystem.menu_mgmtsystem_configuration"
groups="mgmtsystem.group_mgmtsystem_manager"
sequence="20"/>
<!-- Categories -->
<record id="view_mgmtsystem_kpi_category_tree" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.category.tree</field>
<field name="model">mgmtsystem.kpi.category</field>
<field name="arch" type="xml">
<tree string="Categories">
<field name="name"/>
</tree>
</field>
</record>
<record id="view_mgmtsystem_kpi_category_form" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.category.form</field>
<field name="model">mgmtsystem.kpi.category</field>
<field name="arch" type="xml">
<form string="Category">
<field name="name"/>
<newline/>
<field name="description" colspan="4"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_mgmtsystem_category_list">
<field name="name">Categories</field>
<field name="res_model">mgmtsystem.kpi.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_mgmtsystem_kpi_category_tree"/>
</record>
<menuitem id="menu_mgmtsystem_configuration_kpi_category"
name="Categories"
action="open_mgmtsystem_category_list"
parent="menu_mgmtsystem_configuration_kpi"
groups="mgmtsystem.group_mgmtsystem_manager"
sequence="10"/>
<!-- Thresholds -->
<record id="view_mgmtsystem_kpi_threshold_tree" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.threshold.tree</field>
<field name="model">mgmtsystem.kpi.threshold</field>
<field name="arch" type="xml">
<tree string="Thresholds">
<field name="name"/>
<field name="invalid_message"/>
<field name="company_id" group="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="view_mgmtsystem_kpi_threshold_form" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.threshold.form</field>
<field name="model">mgmtsystem.kpi.threshold</field>
<field name="arch" type="xml">
<form string="Threshold">
<field name="name"/>
<newline/>
<separator string="Ranges" colspan="2"/>
<newline/>
<field name="range_ids" nolabel="1" colspan="2"/>
<newline/>
<separator string="KPIs" colspan="2"/>
<newline/>
<field name="kpi_ids" nolabel="1" colspan="2"/>
<newline/>
<field name="invalid_message" nolabel="1" attrs="{'invisible' : [('invalid_message', '=', '')]}" colspan="2"/>
<newline/>
<field name="company_id" group="base.group_multi_company"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_mgmtsystem_threshold_list">
<field name="name">Thresholds</field>
<field name="res_model">mgmtsystem.kpi.threshold</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_mgmtsystem_kpi_threshold_tree"/>
</record>
<menuitem id="menu_mgmtsystem_configuration_kpi_threshold"
name="Thresholds"
action="open_mgmtsystem_threshold_list"
parent="menu_mgmtsystem_configuration_kpi"
groups="mgmtsystem.group_mgmtsystem_manager"
sequence="10"/>
<!-- Ranges -->
<record id="view_mgmtsystem_kpi_threshold_range_tree" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.threshold.range.tree</field>
<field name="model">mgmtsystem.kpi.threshold.range</field>
<field name="arch" type="xml">
<tree string="Ranges">
<field name="name"/>
<field name="min_value"/>
<field name="max_value"/>
<field name="color" widget="color"/>
<field name="invalid_message"/>
<field name="company_id" group="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="view_mgmtsystem_kpi_threshold_range_form" model="ir.ui.view">
<field name="name">mgmtsystem.kpi.threshold.range.form</field>
<field name="model">mgmtsystem.kpi.threshold.range</field>
<field name="arch" type="xml">
<form string="Range">
<field name="name"/>
<field name="color"/>
<field name="company_id" group="base.group_multi_company"/>
<newline/>
<separator string="Minimum" colspan="4"/>
<newline/>
<field name="min_type"/>
<field name="min_fixed_value" attrs="{'invisible' : [('min_type', '!=', 'static')]}"/>
<field name="min_dbsource_id" attrs="{'invisible' : [('min_type', '!=', 'external')]}"/>
<newline/>
<field name="min_code" colspan="4" attrs="{'invisible' : [('min_type', 'NOT IN', ('local','external','python'))]}"/>
<newline/>
<separator string="Maximum" colspan="4"/>
<newline/>
<field name="max_type"/>
<field name="max_fixed_value" attrs="{'invisible' : [('max_type', '!=', 'static')]}"/>
<field name="max_dbsource_id" attrs="{'invisible' : [('max_type', '!=', 'external')]}"/>
<newline/>
<field name="max_code" colspan="4" attrs="{'invisible' : [('max_type', 'NOT IN', ('local','external','python'))]}"/>
<newline/>
<separator string="Thresholds" colspan="4"/>
<field name="threshold_ids" nolabel="1" colspan="4"/>
<field name="invalid_message" nolabel="1" attrs="{'invisible' : [('invalid_message', '=', '')]}" colspan="4"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_mgmtsystem_threshold_range_list">
<field name="name">Ranges</field>
<field name="res_model">mgmtsystem.kpi.threshold.range</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_mgmtsystem_kpi_threshold_range_tree"/>
</record>
<menuitem id="menu_mgmtsystem_configuration_kpi_range"
name="Ranges"
action="open_mgmtsystem_threshold_range_list"
parent="menu_mgmtsystem_configuration_kpi"
groups="mgmtsystem.group_mgmtsystem_manager"
sequence="20"/>
<menuitem id="menu_mgmtsystem_configuration_kpi_dbsource"
name="Data Sources"
action="base_external_dbsource.action_dbsource"
parent="menu_mgmtsystem_configuration_kpi"
groups="mgmtsystem.group_mgmtsystem_manager"
sequence="20"/>
</data>
<data noupdate="1">
<record forcecreate="True" id="ir_cron_mgmtsystem_kpi_action" model="ir.cron">
<field name="name">Update KPI values</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'mgmtsystem.kpi'" name="model"/>
<field eval="'update_kpi_value'" name="function"/>
<field eval="'()'" name="args"/>
</record>
</data>
</openerp>

11
mgmtsystem_kpi/security/ir.model.access.csv

@ -0,0 +1,11 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_mgmtsystem_kpi_user","mgmtsystem.kpi.user","model_mgmtsystem_kpi","base.group_user",1,0,0,0
"access_mgmtsystem_kpi_history_user","mgmtsystem.kpi.history.user","model_mgmtsystem_kpi_history","base.group_user",1,0,0,0
"access_mgmtsystem_kpi_category_user","mgmtsystem.kpi.category.user","model_mgmtsystem_kpi_category","base.group_user",1,0,0,0
"access_mgmtsystem_kpi_threshold_user","mgmtsystem.kpi.threshold.user","model_mgmtsystem_kpi_threshold","base.group_user",1,0,0,0
"access_mgmtsystem_kpi_threshold_range_user","mgmtsystem.kpi.threshold.range.user","model_mgmtsystem_kpi_threshold_range","base.group_user",1,0,0,0
"access_mgmtsystem_kpi_manager","mgmtsystem.kpi.manager","model_mgmtsystem_kpi","mgmtsystem.group_mgmtsystem_manager",1,1,1,1
"access_mgmtsystem_kpi_category_manager","mgmtsystem.kpi.category.manager","model_mgmtsystem_kpi_category","mgmtsystem.group_mgmtsystem_manager",1,1,1,1
"access_mgmtsystem_kpi_threshold_manager","mgmtsystem.kpi.threshold.manager","model_mgmtsystem_kpi_threshold","mgmtsystem.group_mgmtsystem_manager",1,1,1,1
"access_mgmtsystem_kpi_threshold_range_manager","mgmtsystem.kpi.threshold.range.manager","model_mgmtsystem_kpi_threshold_range","mgmtsystem.group_mgmtsystem_manager",1,1,1,1
"access_base_external_dbsource_mgmtsystem_manager","base.external.dbsource.manager","base_external_dbsource.model_base_external_dbsource","mgmtsystem.group_mgmtsystem_manager",1,1,1,1

36
mgmtsystem_kpi/security/mgmtsystem_kpi_security.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Rule -->
<record model="ir.rule" id="mgmtsystem_kpi_rule">
<field name="name">mgmtsystem_kpi multi-company</field>
<field name="model_id" ref="model_mgmtsystem_kpi"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="mgmtsystem_kpi_threshold_range_rule">
<field name="name">mgmtsystem_kpi_threshold_range multi-company</field>
<field name="model_id" ref="model_mgmtsystem_kpi_threshold_range"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="mgmtsystem_kpi_threshold_rule">
<field name="name">mgmtsystem_kpi_threshold multi-company</field>
<field name="model_id" ref="model_mgmtsystem_kpi_threshold"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="mgmtsystem_kpi_history_rule">
<field name="name">mgmtsystem_kpi_history multi-company</field>
<field name="model_id" ref="model_mgmtsystem_kpi_history"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</data>
</openerp>

BIN
mgmtsystem_kpi/static/src/img/icon.png

After

Width: 100  |  Height: 100  |  Size: 2.3 KiB

Loading…
Cancel
Save