Merge PR #381 into 12.0

Signed-off-by lreficent
This commit is contained in:
OCA-git-bot
2019-07-12 11:47:45 +00:00
26 changed files with 1597 additions and 2 deletions

View File

@@ -20,7 +20,7 @@
<field name="name">Manager</field>
<field name="category_id" ref="module_category_quality_control"/>
<field name="implied_ids" eval="[(4, ref('group_quality_control_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
<record id="qc_test_multi_company_rule" model="ir.rule">

View File

@@ -0,0 +1,93 @@
====================
Quality Control Team
====================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
:target: https://odoo-community.org/page/development-status
:alt: Mature
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github
:target: https://github.com/OCA/manufacture/tree/12.0/quality_control_team
:alt: OCA/manufacture
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-quality_control_team
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/129/12.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This module extends the functionality of Quality Control app to support the
use of Quality control teams and to allow you to manage different team flows.
This module by itself does not provide any functionality to QC teams. It
provides the teams basic configuration and a dashboard to be used by other
modules.
**Table of contents**
.. contents::
:local:
Configuration
=============
To configure this module, you need to:
#. Go to *Quality Control > Configuration > Quality Control Teams*.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/manufacture/issues/new?body=module:%20quality_control_team%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Eficent
Contributors
~~~~~~~~~~~~
* Lois Rilo <lois.rilo@eficent.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
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.
.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px
:target: https://github.com/lreficent
:alt: lreficent
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-lreficent|
This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/12.0/quality_control_team>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,25 @@
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Quality Control Team",
"summary": "Adds quality control teams to handle different quality "
"control workflows",
"version": "12.0.1.1.0",
"development_status": "Mature",
"category": "Quality Control",
"website": "https://odoo-community.org/",
"author": "Eficent, Odoo Community Association (OCA)",
"maintainers": ["lreficent"],
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"quality_control",
],
"data": [
"security/ir.model.access.csv",
"views/qc_team_view.xml",
"views/qc_team_dashboard.xml",
"data/quality_control_team_data.xml",
],
}

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2017 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<data noupdate="0">
<record model="qc.team" id="qc_team_main">
<field name="name">Main QC Team</field>
<field name="member_ids" eval="[(4, ref('base.user_admin'))]"/>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,201 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * quality_control_team
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2018-12-13 11:58+0000\n"
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.3\n"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_active
msgid "Active"
msgstr "Aktiv"
#. module: quality_control_team
#: model:ir.actions.act_window,help:quality_control_team.qc_team_config_action
msgid "Click here to define a new quality control team."
msgstr "Klicken Sie hier, um ein neues Qualitätskontroll-Team zu definieren."
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_color
msgid "Color Index"
msgstr "Farbindex"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_company_id
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Company"
msgstr "Unternehmen"
#. module: quality_control_team
#: model:ir.model,name:quality_control_team.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_create_date
msgid "Created on"
msgstr "Erstellt am"
#. module: quality_control_team
#: model:ir.actions.act_window,name:quality_control_team.qc_team_dashboard_act
#: model:ir.ui.menu,name:quality_control_team.menu_qc_team_act
msgid "Dashboard"
msgstr "Dashboard"
#. module: quality_control_team
#: model:ir.actions.act_window,help:quality_control_team.qc_team_dashboard_act
msgid "Define a new quality control teams going to <b><i>Configuration &gt;\n"
" Quality Control Teams</i></b>."
msgstr ""
"Definieren Sie neue Qualitätskontroll-Teams <b><i>Konfiguration &gt;\n"
" Qualitätskontroll-Teams</i></b>."
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Follow this QC team to automatically track the events associated to users of this team."
msgstr ""
"Folgen Sie diesem Qualitätskontroll-Team, um automatisch alle Ereignisse "
"nachzuverfolgen, die mit einem Mitglied dieses Teams assoziiert sind."
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "Group By..."
msgstr "Gruppiere nach..."
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_id
msgid "ID"
msgstr "ID"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team___last_update
msgid "Last Modified on"
msgstr "Zuletzt geändert am"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert von"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_kanban
msgid "More <i class=\"fa fa-caret-down\"/>"
msgstr "Mehr <i class=\"fa fa-caret-down\"/>"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "More Info"
msgstr "Weitere Informationen"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "My Teams"
msgstr "Meine Teams"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "QC teams Search"
msgstr "Qualitätskontroll-Teams Suche"
#. module: quality_control_team
#: model:ir.model,name:quality_control_team.model_qc_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_name
#: model:ir.model.fields,field_description:quality_control_team.field_res_partner_qc_team_id
#: model:ir.model.fields,field_description:quality_control_team.field_res_users_qc_team_id
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_tree
msgid "Quality Control Team"
msgstr "Qualitätskontroll-Team"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Quality Control Team name..."
msgstr "Qualtitätskontroll-Teamname..."
#. module: quality_control_team
#: model:ir.actions.act_window,name:quality_control_team.qc_team_config_action
#: model:ir.ui.menu,name:quality_control_team.qc_team_config_menu
msgid "Quality Control Teams"
msgstr "Qualitätskontroll-Teams"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Quality Control team"
msgstr "Qualitätskontroll-Team"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_reply_to
msgid "Reply-To"
msgstr "Antworten-an"
#. module: quality_control_team
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_kanban
msgid "Settings"
msgstr "Einstellungen"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_user_id
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "Team Leader"
msgstr "Teamleiter"
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team_member_ids
#: model:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Team Members"
msgstr "Teammitglieder"
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team_color
msgid "The color of the team"
msgstr "Farbe des Teams"
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team_reply_to
msgid "The email address put in the 'Reply-To' of all emails sent by Odoo about cases in this QC team"
msgstr ""
"Dies ist die Email-Adresse, die in das 'Antworten-an' von allen Emails "
"eingefügt wird, die die Fälle dieses Teams betreffen und von Odoo versendet "
"werden"
#. module: quality_control_team
#: model:ir.actions.act_window,help:quality_control_team.qc_team_config_action
msgid "Use quality control team to organize your different\n"
" departments into separate teams. Each team will work in\n"
" its own list of processes, stages..."
msgstr ""
"Verwenden Sie Qualitätskontroll-Teams, um Ihre unterschiedlichen Abteilungen "
"in getrennten Teams zu organisieren. \n"
" Jedes Team wird in eigenen Prozesslisten, Stufen etc. "
"arbeiten."
#. module: quality_control_team
#: model:ir.model,name:quality_control_team.model_res_users
msgid "Users"
msgstr "Benutzer"

View File

@@ -0,0 +1,293 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * quality_control_team
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_kanban
msgid "<i class=\"fa fa-ellipsis-v\" role=\"img\" aria-label=\"Manage\" title=\"Manage\"/>"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_needaction
msgid "Action Needed"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__active
msgid "Active"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_attachment_count
msgid "Attachment Count"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.actions.act_window,help:quality_control_team.qc_team_config_action
msgid "Click here to define a new quality control team."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__color
msgid "Color Index"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__company_id
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Company"
msgstr ""
#. module: quality_control_team
#: model:ir.model,name:quality_control_team.model_res_partner
msgid "Contact"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__create_uid
msgid "Created by"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__create_date
msgid "Created on"
msgstr ""
#. module: quality_control_team
#: model:ir.actions.act_window,name:quality_control_team.qc_team_dashboard_act
#: model:ir.ui.menu,name:quality_control_team.menu_qc_team_act
msgid "Dashboard"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.actions.act_window,help:quality_control_team.qc_team_dashboard_act
msgid "Define a new quality control teams going to <b><i>Configuration &gt;\n"
" Quality Control Teams</i></b>."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__display_name
msgid "Display Name"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Follow this QC team to automatically track the events associated to users of this team."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_follower_ids
msgid "Followers"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_channel_ids
msgid "Followers (Channels)"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_partner_ids
msgid "Followers (Partners)"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "Group By..."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__id
msgid "ID"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__message_unread
msgid "If checked new messages require your attention."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__message_needaction
msgid "If checked, new messages require your attention."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__message_has_error
msgid "If checked, some messages have a delivery error."
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_is_follower
msgid "Is Follower"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team____last_update
msgid "Last Modified on"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__write_uid
msgid "Last Updated by"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__write_date
msgid "Last Updated on"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_main_attachment_id
msgid "Main Attachment"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_has_error
msgid "Message Delivery error"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_ids
msgid "Messages"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "More Info"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "My Teams"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_needaction_counter
msgid "Number of Actions"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_has_error_counter
msgid "Number of error"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__message_needaction_counter
msgid "Number of messages which requires an action"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__message_unread_counter
msgid "Number of unread messages"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "QC teams Search"
msgstr ""
#. module: quality_control_team
#: model:ir.model,name:quality_control_team.model_qc_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__name
#: model:ir.model.fields,field_description:quality_control_team.field_res_partner__qc_team_id
#: model:ir.model.fields,field_description:quality_control_team.field_res_users__qc_team_id
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_tree
msgid "Quality Control Team"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Quality Control Team name..."
msgstr ""
#. module: quality_control_team
#: model:ir.actions.act_window,name:quality_control_team.qc_team_config_action
#: model:ir.ui.menu,name:quality_control_team.qc_team_config_menu
msgid "Quality Control Teams"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Quality Control team"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__reply_to
msgid "Reply-To"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_kanban
msgid "Settings"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__user_id
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_search
msgid "Team Leader"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__member_ids
#: model_terms:ir.ui.view,arch_db:quality_control_team.qc_team_view_form
msgid "Team Members"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__color
msgid "The color of the team"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__reply_to
msgid "The email address put in the 'Reply-To' of all emails sent by Odoo about cases in this QC team"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_unread
msgid "Unread Messages"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__message_unread_counter
msgid "Unread Messages Counter"
msgstr ""
#. module: quality_control_team
#: model_terms:ir.actions.act_window,help:quality_control_team.qc_team_config_action
msgid "Use quality control team to organize your different\n"
" departments into separate teams. Each team will work in\n"
" its own list of processes, stages..."
msgstr ""
#. module: quality_control_team
#: model:ir.model,name:quality_control_team.model_res_users
msgid "Users"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,field_description:quality_control_team.field_qc_team__website_message_ids
msgid "Website Messages"
msgstr ""
#. module: quality_control_team
#: model:ir.model.fields,help:quality_control_team.field_qc_team__website_message_ids
msgid "Website communication history"
msgstr ""

View File

@@ -0,0 +1,3 @@
from . import qc_team
from . import res_partner
from . import res_user

View File

@@ -0,0 +1,60 @@
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class QualityControlTeam(models.Model):
_name = "qc.team"
_inherit = ['mail.thread']
_description = "Quality Control Team"
_order = "name"
@api.model
def _get_default_qc_team_id(self, user_id=None):
if not user_id:
user_id = self.env.uid
qc_team_id = None
if 'default_qc_team_id' in self.env.context:
qc_team_id = self.env['qc.team'].browse(
self.env.context.get('default_qc_team_id'))
if not qc_team_id or not qc_team_id.exists():
company_id = self.sudo(user_id).company_id.id
qc_team_id = self.env['qc.team'].sudo().search([
'|',
('user_id', '=', user_id),
('member_ids', '=', user_id),
'|',
('company_id', '=', False),
('company_id', 'child_of', [company_id])
], limit=1)
if not qc_team_id:
default_team_id = self.env.ref(
'quality_control_team.qc_team_main', raise_if_not_found=False)
if default_team_id:
qc_team_id = default_team_id
return qc_team_id
name = fields.Char(
string='Quality Control Team', required=True)
active = fields.Boolean(default=True)
company_id = fields.Many2one(
comodel_name='res.company', string='Company',
default=lambda self: self.env['res.company']._company_default_get(
'qc.team'))
user_id = fields.Many2one(
comodel_name='res.users', string='Team Leader')
member_ids = fields.One2many(
comodel_name='res.users', inverse_name='qc_team_id',
string='Team Members')
reply_to = fields.Char(
string='Reply-To',
help="The email address put in the 'Reply-To' of all emails sent by "
"Odoo about cases in this QC team")
color = fields.Integer(string='Color Index', help="The color of the team")
@api.model
def create(self, values):
return super(
QualityControlTeam,
self.with_context(mail_create_nosubscribe=True)).create(values)

View File

@@ -0,0 +1,11 @@
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
qc_team_id = fields.Many2one(
comodel_name='qc.team', string='Quality Control Team')

View File

@@ -0,0 +1,11 @@
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
qc_team_id = fields.Many2one(
comodel_name='qc.team', string='Quality Control Team')

View File

@@ -0,0 +1,3 @@
To configure this module, you need to:
#. Go to *Quality Control > Configuration > Quality Control Teams*.

View File

@@ -0,0 +1 @@
* Lois Rilo <lois.rilo@eficent.com>

View File

@@ -0,0 +1,6 @@
This module extends the functionality of Quality Control app to support the
use of Quality control teams and to allow you to manage different team flows.
This module by itself does not provide any functionality to QC teams. It
provides the teams basic configuration and a dashboard to be used by other
modules.

View File

@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_user_qc_team,qc.team.user,quality_control_team.model_qc_team,quality_control.group_quality_control_user,1,0,0,0
access_manager_qc_team,qc.team.manager,quality_control_team.model_qc_team,quality_control.group_quality_control_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_user_qc_team qc.team.user quality_control_team.model_qc_team quality_control.group_quality_control_user 1 0 0 0
3 access_manager_qc_team qc.team.manager quality_control_team.model_qc_team quality_control.group_quality_control_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="30"
inkscape:export-xdpi="30"
inkscape:export-filename="icon.png"
sodipodi:docname="icon.svg"
viewBox="0 0 256 256"
height="256"
width="256"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
version="1.1"
id="svg2">
<sodipodi:namedview
inkscape:current-layer="layer2"
inkscape:window-maximized="1"
inkscape:window-y="27"
inkscape:window-x="67"
inkscape:cy="127.07369"
inkscape:cx="107.5354"
inkscape:zoom="2.8284271"
showguides="true"
showgrid="false"
id="namedview4"
inkscape:window-height="1025"
inkscape:window-width="1853"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff"
inkscape:guide-bbox="true">
<sodipodi:guide
position="94.776276,202.08872"
orientation="-0.70710678,0.70710678"
id="guide37"
inkscape:locked="false" />
<sodipodi:guide
position="165.52734,51.804688"
orientation="-0.70710678,0.70710678"
id="guide39"
inkscape:locked="false" />
<sodipodi:guide
position="179.5,115.53516"
orientation="-0.70710678,0.70710678"
id="guide41"
inkscape:locked="false" />
<sodipodi:guide
position="187.67187,135.85937"
orientation="-0.70710678,0.70710678"
id="guide43"
inkscape:locked="false" />
<sodipodi:guide
position="114.09375,209.71875"
orientation="-0.70710678,0.70710678"
id="guide45"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34371">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34373"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34375">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34377"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34379">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34381"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34383">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34385"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34387">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34389"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34391">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34393"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath34395">
<rect
style="fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1"
id="rect34397"
width="256"
height="256"
x="0"
y="0" />
</clipPath>
</defs>
<g
inkscape:label="Background"
id="layer1"
inkscape:groupmode="layer">
<rect
y="0"
x="0"
height="256"
width="256"
id="rect1402"
style="fill:#5f8dd3;fill-opacity:1;stroke:none;stroke-width:2.00009322;stroke-opacity:1" />
</g>
<g
inkscape:label="Icon"
id="layer2"
inkscape:groupmode="layer">
<path
style="fill:#000000;fill-opacity:0.39215687;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 93.274537,55.413019 -0.232492,148.92005 0,256 l 113.65983,0.0628 51.65772,-51.65734 -10.8795,-38.87869 24.53203,-24.53203 -0.65704,-11.49529 8.7558,-8.75581 -8.89934,-9.28603 -10.15043,-37.646183 -56.05389,-25.401624 -8.07323,8.073227 z"
id="path35"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.30461562"
clip-path="url(#clipPath34391)"
d="M 139.01367 45.707031 C 135.39131 45.632696 131.83894 49.968749 127.97656 49.96875 C 123.85669 49.96875 119.58846 45.096742 115.66016 45.892578 C 111.73185 46.688414 110.04842 52.717143 106.4043 54.220703 C 102.76018 55.724264 97.271068 52.682921 93.914062 54.910156 C 90.557058 57.13739 91.64247 63.610387 88.720703 66.519531 C 85.798935 69.428675 78.734925 68.970386 76.519531 72.3125 C 74.304136 75.654614 78.553541 81.177043 77.027344 84.810547 C 75.501146 88.44405 68.314747 90.07636 67.507812 94.070312 C 66.700879 98.064264 72.498047 101.56353 72.498047 105.70508 C 72.498047 109.84663 66.768712 114.86455 67.435547 118.27148 C 68.102381 121.67842 74.661791 123.75386 76.001953 127.54883 C 77.342117 131.3438 74.093851 136.73605 76.523438 140.40039 C 78.953025 144.06473 84.741221 142.22552 87.626953 145.21094 C 90.512685 148.19636 90.700537 155.67885 94.064453 157.89648 C 97.428368 160.11411 102.96871 156.62342 106.45898 158.14453 C 109.94926 159.66564 110.95664 165.81756 115.07227 166.69336 C 119.1879 167.56915 123.30016 162.21875 127.45898 162.21875 C 131.61781 162.21875 135.4702 167.72211 139.36914 166.99414 C 143.26808 166.26617 144.94335 159.11495 148.75391 157.56445 C 152.56447 156.01395 158.74247 159.99111 162.12305 157.74023 C 165.50364 155.48935 164.51689 148.36189 167.42188 145.47852 C 170.32687 142.59515 177.18724 143.77271 179.38867 140.46094 C 181.59009 137.14918 177.61995 131.09263 179.19531 127.39258 C 180.77066 123.69252 187.73538 122.27616 188.52539 118.22266 C 189.3154 114.16915 183.9707 110.39874 183.9707 106.35352 C 183.9707 102.30829 189.31459 98.557179 188.54297 94.568359 C 187.77135 90.579539 180.93909 88.570205 179.35156 84.773438 C 177.76402 80.976671 181.42005 75.249136 179.13281 71.863281 C 176.84557 68.477426 169.7821 68.768357 166.9707 66.001953 C 164.15931 63.235548 165.82319 57.466183 162.48438 55.208984 C 159.14555 52.951786 152.88328 56.010604 149.05859 54.460938 C 145.2339 52.911271 143.61386 46.531419 139.73828 45.783203 C 139.49606 45.73644 139.25516 45.711987 139.01367 45.707031 z M 127.97656 63.46875 A 42.883841 42.883841 0 0 1 170.85938 106.35352 A 42.883841 42.883841 0 0 1 127.97656 149.23633 A 42.883841 42.883841 0 0 1 85.091797 106.35352 A 42.883841 42.883841 0 0 1 127.97656 63.46875 z M 127.97656 71.257812 A 35.095012 35.095012 0 0 0 92.880859 106.35352 A 35.095012 35.095012 0 0 0 127.97656 141.44727 A 35.095012 35.095012 0 0 0 163.07031 106.35352 A 35.095012 35.095012 0 0 0 127.97656 71.257812 z M 127.83789 79.617188 C 127.96863 79.610895 128.09961 79.613943 128.22852 79.628906 C 128.84726 79.700731 129.42283 80.032851 129.75195 80.761719 L 135.9082 94.392578 L 151.2207 96.324219 C 153.30011 96.586438 153.10622 99.30251 152.1543 100.17578 L 141.24219 110.18555 L 144.13477 125.32617 C 144.39408 126.68389 142.58895 128.45503 140.61523 127.33984 L 127.87109 120.14062 L 114.84766 127.30469 C 113.39881 128.10162 111.06729 126.30454 111.39453 124.69141 L 114.27344 110.5 L 103.87109 100.73633 C 102.55305 99.499152 102.93224 96.453333 105.11719 96.203125 L 119.24023 94.587891 L 125.72852 80.789062 C 126.00804 80.194684 126.92268 79.661232 127.83789 79.617188 z "
id="circle3368" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path3338"
d="m 98.010569,165.89812 5.436331,-0.84134 c 6.11145,10.88609 11.13432,9.61647 16.24428,9.31943 l -7.31316,35.85391 -9.5783,-9.12527 -12.814214,3.23591 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.67500001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath34379)" />
<path
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.67500001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 157.29249,165.96284 -5.43634,-0.84134 c -6.11144,10.88609 -11.13431,9.61647 -16.24428,9.31943 l 7.31316,35.85391 9.57831,-9.12527 12.81421,3.23591 z"
id="path3340"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc"
clip-path="url(#clipPath34375)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -0,0 +1,433 @@
<?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.14: http://docutils.sourceforge.net/" />
<title>Quality Control Team</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="quality-control-team">
<h1 class="title">Quality Control Team</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="Mature" src="https://img.shields.io/badge/maturity-Mature-brightgreen.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/manufacture/tree/12.0/quality_control_team"><img alt="OCA/manufacture" src="https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-quality_control_team"><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/129/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionality of Quality Control app to support the
use of Quality control teams and to allow you to manage different team flows.</p>
<p>This module by itself does not provide any functionality to QC teams. It
provides the teams basic configuration and a dashboard to be used by other
modules.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="id1">Configuration</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="configuration">
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
<p>To configure this module, you need to:</p>
<ol class="arabic simple">
<li>Go to <em>Quality Control &gt; Configuration &gt; Quality Control Teams</em>.</li>
</ol>
</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/manufacture/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/manufacture/issues/new?body=module:%20quality_control_team%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>Eficent</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple">
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;eficent.com">lois.rilo&#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>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external" href="https://github.com/lreficent"><img alt="lreficent" src="https://github.com/lreficent.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/manufacture/tree/12.0/quality_control_team">OCA/manufacture</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

@@ -0,0 +1 @@
from . import test_quality_control_team

View File

@@ -0,0 +1,35 @@
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests.common import TransactionCase
class TestQualityControlTeam(TransactionCase):
def setUp(self):
super(TestQualityControlTeam, self).setUp()
self.qc_team_obj = self.env['qc.team']
self.main_qc_team = self.env.ref('quality_control_team.qc_team_main')
self.other_company = self.env['res.company'].create({
'name': 'other company',
})
self.user_test = self.env['res.users'].create({
'name': 'Test User',
'login': 'testuser',
'company_id': self.other_company.id,
'company_ids': [(4, self.other_company.id)],
})
def test_default_qc_team(self):
"""Test that the QC team is defaulted correctly."""
team = self.qc_team_obj._get_default_qc_team_id(
user_id=self.user_test.id)
self.assertEqual(team, self.main_qc_team)
test_team = self.qc_team_obj.create({
'name': 'Test Team',
'user_id': self.user_test.id,
'company_id': self.other_company.id,
})
team = self.qc_team_obj._get_default_qc_team_id(
user_id=self.user_test.id)
self.assertEqual(team, test_team)

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Copyright 2017-19 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<record id="qc_team_view_kanban" model="ir.ui.view" >
<field name="name">qc.team.dashboard</field>
<field name="model">qc.team</field>
<field name="arch" type="xml">
<kanban class="o_kanban_dashboard oe_background_grey" create="0">
<field name="name"/>
<field name="user_id"/>
<field name="member_ids"/>
<field name="color"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)}">
<div class="o_kanban_card_header">
<div class="o_kanban_card_header_title">
<div class="o_primary"><field name="name"/></div>
</div>
<div class="o_kanban_manage_button_section">
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
</div>
</div>
<div class="container o_kanban_card_content">
<div class="row o_kanban_card_upper_content">
<div class="col-6 o_kanban_primary_left" name="card_left"/>
<div class="col-6 o_kanban_primary_right" name="card_right"/>
</div>
</div>
<div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
<div t-if="widget.editable" class="o_kanban_card_manage_settings row" groups="quality_control.group_quality_control_manager">
<div role="menuitem" aria-haspopup="true" class="col-8">
<ul class="oe_kanban_colorpicker" data-field="color" role="menu"/>
</div>
<div role="menuitem" class="col-4 text-right">
<a type="edit">Settings</a>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="qc_team_search" model="ir.ui.view">
<field name="name">Case Teams - Search</field>
<field name="model">qc.team</field>
<field name="arch" type="xml">
<search string="QC teams Search">
<field name="name"/>
<field name="user_id"/>
<filter name="personal" string="My Teams"
domain="['|', ('member_ids', '=', uid), ('user_id', '=', uid)]"/>
<group expand="0" string="Group By...">
<filter name="group_user_id" string="Team Leader" domain="[]" context="{'group_by':'user_id'}"/>
</group>
</search>
</field>
</record>
<record id="qc_team_dashboard_act" model="ir.actions.act_window">
<field name="name">Dashboard</field>
<field name="res_model">qc.team</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,form</field>
<field name="context">{'search_default_personal':1}</field>
<field name="help" type="html">
<p>Define a new quality control teams going to <b><i>Configuration >
Quality Control Teams</i></b>.
</p>
</field>
</record>
<menuitem id="menu_qc_team_act" action="qc_team_dashboard_act"
sequence="1" parent="quality_control.qc_menu" name="Dashboard"/>
</odoo>

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Copyright 2017 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<record id="qc_team_view_form" model="ir.ui.view">
<field name="name">qc.team.form</field>
<field name="model">qc.team</field>
<field name="arch" type="xml">
<form string="Quality Control Team">
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-archive">
<field name="active" widget="boolean_button" options='{"terminology": "archive"}'/>
</button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only" string="Quality Control team"/>
<h1>
<field name="name" placeholder="Quality Control Team name..."/>
</h1>
<div name="options_active"/>
</div>
<group>
<group name="left">
<field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager']}"/>
</group>
<group name="right">
</group>
</group>
<notebook>
<page name="members" string="Team Members">
<field name="member_ids" widget="many2many" options="{'not_delete': True}">
<kanban quick_create="false" create="true" delete="true">
<field name="id"/>
<field name="name"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click" style="max-width: 200px">
<div class="o_kanban_record_top">
<img t-att-src="kanban_image('res.users', 'image_small', record.id.raw_value)" height="40" width="40" class="oe_avatar oe_kanban_avatar_smallbox mb0"/>
<div class="o_kanban_record_headings ml8">
<strong class="o_kanban_record_title"><field name="name"/></strong>
</div>
<a t-if="! read_only_mode" type="delete" class="text-danger">
<i class="fa fa-times"></i>
</a>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</page>
<page string="More Info" name="more_info" groups="base.group_no_one">
<group string="Company" groups="base.group_multi_company">
<field name="company_id" options="{'no_create': True}"/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"
help="Follow this QC team to automatically track the events associated to users of this team."/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record id="qc_team_view_tree" model="ir.ui.view">
<field name="name">qc.team.tree</field>
<field name="model">qc.team</field>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="Quality Control Team">
<field name="name"/>
<field name="active" invisible="1"/>
<field name="user_id"/>
</tree>
</field>
</record>
<record id="qc_team_config_action" model="ir.actions.act_window">
<field name="name">Quality Control Teams</field>
<field name="res_model">qc.team</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to define a new quality control team.
</p><p>
Use quality control team to organize your different
departments into separate teams. Each team will work in
its own list of processes, stages...
</p>
</field>
</record>
<menuitem name="Quality Control Teams"
id="qc_team_config_menu"
groups="base.group_system"
parent="quality_control.menu_qc_config"
action="qc_team_config_action"
sequence="10"/>
</odoo>

View File

@@ -1 +1 @@
12.0.20190711.0
12.0.20190712.0

View File

@@ -16,6 +16,7 @@ setuptools.setup(
'odoo12-addon-mrp_production_putaway_strategy',
'odoo12-addon-mrp_warehouse_calendar',
'odoo12-addon-quality_control',
'odoo12-addon-quality_control_team',
'odoo12-addon-repair_refurbish',
],
classifiers=[

View File

@@ -0,0 +1 @@
../../../../quality_control_team

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)