[9.0][MIG] quality_control

This commit is contained in:
lreficent
2017-05-24 17:24:55 +02:00
committed by Enrique Martín
parent 9144c25e78
commit 3f65220873
23 changed files with 586 additions and 573 deletions

View File

@@ -2,9 +2,9 @@
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
===================================
Quality control management for Odoo
===================================
===============
Quality control
===============
This module provides a generic infrastructure for quality tests. The idea is
that it can be later reused for doing quality inspections on production lots
@@ -48,7 +48,7 @@ Usage
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/129/8.0
:target: https://runbot.odoo-community.org/runbot/129/9.0
Known issues / Roadmap
@@ -73,6 +73,7 @@ Contributors
* Pedro M. Baeza <pedro.baeza@serviciobaeza.com>
* Oihane Crucelaegui <oihanecrucelaegi@avanzosc.es>
* Ana Juaristi <anajuaristi@avanzosc.es>
* Lois Rilo <lois.rilo@eficent.com>
Maintainer
----------

View File

@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from . import wizard

View File

@@ -1,24 +1,21 @@
# -*- coding: utf-8 -*-
# (c) 2010 NaN Projectes de Programari Lliure, S.L. (http://www.NaN-tic.com)
# (c) 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# (c) 2014 Oihane Crucelaegui - AvanzOSC
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# 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",
"version": "8.0.1.3.0",
"version": "9.0.1.3.0",
"category": "Quality control",
"license": "AGPL-3",
"author": "OdooMRP team, "
"AvanzOSC, "
"Serv. Tecnol. Avanzados - Pedro M. Baeza, "
"Eficent, "
"Odoo Community Association (OCA)",
"website": "http://www.odoomrp.com",
"contributors": [
"Pedro M. Baeza <pedro.baeza@serviciosbaeza.com>",
"Oihane Crucelaegui <oihanecrucelaegi@avanzosc.es>",
"Ana Juaristi <anajuaristi@avanzosc.es>",
],
"depends": [
"product",
],

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<odoo>
<data noupdate="1">
<record id="qc_test_template_category_generic" model="qc.test.category">
<field name="name">Generic</field>
@@ -16,11 +16,6 @@
</data>
<data>
<record id="seq_type_qc_inspection" model="ir.sequence.type">
<field name="name">Quality inspection</field>
<field name="code">qc.inspection</field>
</record>
<record id="seq_qc_inspection" model="ir.sequence">
<field name="name">Quality inspection</field>
<field name="code">qc.inspection</field>
@@ -28,4 +23,4 @@
<field name="padding">6</field>
</record>
</data>
</openerp>
</odoo>

View File

@@ -1,7 +1,9 @@
# -*- encoding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
# -*- coding: utf-8 -*-
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import qc_trigger
from . import qc_trigger_line

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
class ProductCategory(models.Model):

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
class ProductProduct(models.Model):

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
class ProductTemplate(models.Model):

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields, api, exceptions, _
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, exceptions, fields, models, _
import openerp.addons.decimal_precision as dp

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields, api, exceptions, _
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, exceptions, fields, models, _
import openerp.addons.decimal_precision as dp

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields, api, exceptions, _
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, exceptions, fields, models, _
class QcTestTemplateCategory(models.Model):

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
class QcTrigger(models.Model):

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import fields, models
def _filter_trigger_lines(trigger_lines):

View File

@@ -1,26 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="product_category_qc_form_view">
<field name="name">product.category.qc</field>
<field name="model">product.category</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
<sheet position="inside">
<group name="qc" string="Quality control">
<field name="qc_triggers" nolabel="1">
<tree string="Quality control triggers" editable="bottom">
<field name="trigger" widget="selection" />
<field name="test" />
<field name="user" />
<field name="partners" widget="many2many_tags" />
</tree>
</field>
</group>
</sheet>
</field>
</record>
<record model="ir.ui.view" id="product_category_qc_form_view">
<field name="name">product.category.qc</field>
<field name="model">product.category</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
<group name="first" position="after">
<group name="qc" string="Quality control">
<field name="qc_triggers" nolabel="1">
<tree string="Quality control triggers" editable="bottom">
<field name="trigger" widget="selection" />
<field name="test" />
<field name="user" />
<field name="partners" widget="many2many_tags" />
</tree>
</field>
</group>
</group>
</field>
</record>
</data>
</openerp>

View File

@@ -1,26 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="product_template_qc_form_view">
<field name="name">product.template.qc</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<page string="Inventory" position="inside">
<group name="qc" string="Quality control">
<field name="qc_triggers" nolabel="1">
<tree string="Quality control triggers" editable="bottom">
<field name="trigger" widget="selection"/>
<field name="test"/>
<field name="user" />
<field name="partners" widget="many2many_tags" />
</tree>
</field>
</group>
</page>
</field>
</record>
<record model="ir.ui.view" id="product_template_qc_form_view">
<field name="name">product.template.qc</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[2]" position="inside">
<group name="qc" string="Quality control">
<field name="qc_triggers" nolabel="1">
<tree string="Quality control triggers" editable="bottom">
<field name="trigger" widget="selection"/>
<field name="test"/>
<field name="user" />
<field name="partners" widget="many2many_tags" />
</tree>
</field>
</group>
</xpath>
</field>
</record>
</data>
</openerp>
</odoo>

View File

@@ -1,254 +1,253 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="qc_inspection_form_view">
<field name="name">qc.inspection.form</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<form string="Inspection">
<header>
<button name="action_draft"
type="object"
attrs="{'invisible': [('state', '!=', 'canceled')]}"
string="Draft" />
<button name="action_todo"
type="object"
class="oe_highlight"
<record model="ir.ui.view" id="qc_inspection_form_view">
<field name="name">qc.inspection.form</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<form string="Inspection">
<header>
<button name="action_draft"
type="object"
attrs="{'invisible': [('state', '!=', 'canceled')]}"
string="Draft" />
<button name="action_todo"
type="object"
class="oe_highlight"
states="draft"
string="Mark todo" />
<button name="action_confirm"
type="object"
class="oe_highlight"
states="ready"
string="Confirm"
icon="gtk-ok" />
<button name="action_approve"
type="object"
states="waiting"
class="oe_highlight"
groups="quality_control.group_quality_control_manager"
string="Approve" />
<button name="action_cancel"
type="object"
attrs="{'invisible': ['|', ('auto_generated', '=', True), ('state', 'not in', ['waiting', 'ready', 'failed', 'success'])]}"
string="Cancel"
icon="gtk-cancel" />
<field name="state"
widget="statusbar"
statusbar_visible="draft,waiting,success"
statusbar_colors='{"success": "blue", "failed": "red"}' />
</header>
<sheet>
<div class="oe_right oe_button_box" name="buttons">
<button class="oe_inline oe_stat_button"
type="action"
name="%(action_qc_inspection_set_test)d"
icon="fa-bookmark-o"
states="draft"
string="Mark todo" />
<button name="action_confirm"
type="object"
class="oe_highlight"
states="ready"
string="Confirm"
icon="gtk-ok" />
<button name="action_approve"
type="object"
states="waiting"
class="oe_highlight"
groups="quality_control.group_quality_control_manager"
string="Approve" />
<button name="action_cancel"
type="object"
attrs="{'invisible': ['|', ('auto_generated', '=', True), ('state', 'not in', ['waiting', 'ready', 'failed', 'success'])]}"
string="Cancel"
icon="gtk-cancel" />
<field name="state"
widget="statusbar"
statusbar_visible="draft,waiting,success"
statusbar_colors='{"success": "blue", "failed": "red"}' />
</header>
<sheet>
<div class="oe_right oe_button_box" name="buttons">
<button class="oe_inline oe_stat_button"
type="action"
name="%(action_qc_inspection_set_test)d"
icon="fa-bookmark-o"
states="draft"
string="Set test" />
</div>
<h1>
<label string="Inspection "/>
<field name="name" class="oe_inline"/>
</h1>
<group>
<group>
<field name="test" />
<field name="user" />
<field name="object_id" />
<field name="qty" />
<field name="product" />
</group>
<group>
<field name="date" />
<field name="success" />
<field name="auto_generated" />
</group>
</group>
<notebook>
<page string="Questions">
<field name="inspection_lines" nolabel="1">
<tree string="Inspection lines" editable="top" delete="false" create="false">
<field name="name" />
<field name="question_type" />
<field name="possible_ql_values" invisible="1" />
<field name="qualitative_value"
attrs="{'readonly': [('question_type', '=', 'quantitative')]}" />
<field name="quantitative_value"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="uom_id"
groups="product.group_uom"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="test_uom_category" invisible="1"/>
<field name="valid_values" />
<field name="success" />
</tree>
</field>
</page>
<page string="Notes">
<group string="Internal notes" >
<field name="internal_notes"
nolabel="1" />
</group>
<group string="External notes" >
<field name="external_notes"
nolabel="1" />
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
<field name="message_ids" widget="mail_thread"/>
string="Set test" />
</div>
</form>
</field>
</record>
<h1>
<label string="Inspection "/>
<field name="name" class="oe_inline"/>
</h1>
<group>
<group>
<field name="test" />
<field name="user" />
<field name="object_id" />
<field name="qty" />
<field name="product" />
</group>
<group>
<field name="date" />
<field name="success" />
<field name="auto_generated" />
</group>
</group>
<notebook>
<page string="Questions">
<field name="inspection_lines" nolabel="1">
<tree string="Inspection lines" editable="top" delete="false" create="false">
<field name="name" />
<field name="question_type" />
<field name="possible_ql_values" invisible="1" />
<field name="qualitative_value"
attrs="{'readonly': [('question_type', '=', 'quantitative')]}" />
<field name="quantitative_value"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="uom_id"
groups="product.group_uom"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="test_uom_category" invisible="1"/>
<field name="valid_values" />
<field name="success" />
</tree>
</field>
</page>
<page string="Notes">
<group string="Internal notes" >
<field name="internal_notes"
nolabel="1" />
</group>
<group string="External notes" >
<field name="external_notes"
nolabel="1" />
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record model="ir.ui.view" id="qc_inspection_tree_view">
<field name="name">qc.inspection.tree</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<tree string="Inspections">
<record model="ir.ui.view" id="qc_inspection_tree_view">
<field name="name">qc.inspection.tree</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<tree string="Inspections">
<field name="name" />
<field name="user" />
<field name="test" />
<field name="qty" />
<field name="product" />
<field name="success" />
<field name="state" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="qc_inspection_search_view">
<field name="name">qc.inspection.search</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<search string="Search inspection">
<group>
<field name="name" />
<field name="user" />
<field name="test" />
<field name="qty" />
<field name="object_id" />
<field name="product" />
<field name="success" />
<field name="state" />
</tree>
</field>
</record>
<field name="test" />
</group>
<newline />
<filter string="Correct"
domain="[('success', '=', True)]"/>
<filter string="Incorrect"
domain="[('success', '=', False)]"/>
<newline />
<group expand="0" string="Group by...">
<filter string="Reference"
domain="[]"
context="{'group_by': 'object_id'}" />
<filter string="Test"
domain="[]"
context="{'group_by': 'test'}" />
<filter string="Responsible"
domain="[]"
context="{'group_by': 'user'}" />
<filter string="Product"
domain="[]"
context="{'group_by': 'product'}" />
<filter string="State"
domain="[]"
context="{'group_by': 'state'}" />
<filter string="Success"
domain="[]"
context="{'group_by': 'success'}" />
<filter string="Auto-generated"
domain="[]"
context="{'group_by': 'auto_generated'}" />
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="qc_inspection_search_view">
<field name="name">qc.inspection.search</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<search string="Search inspection">
<group>
<field name="name" />
<field name="user" />
<field name="object_id" />
<field name="product" />
<field name="test" />
</group>
<newline />
<filter string="Correct"
domain="[('success', '=', True)]"/>
<filter string="Incorrect"
domain="[('success', '=', False)]"/>
<newline />
<group expand="0" string="Group by...">
<filter string="Reference"
domain="[]"
context="{'group_by': 'object_id'}" />
<filter string="Test"
domain="[]"
context="{'group_by': 'test'}" />
<filter string="Responsible"
domain="[]"
context="{'group_by': 'user'}" />
<filter string="Product"
domain="[]"
context="{'group_by': 'product'}" />
<filter string="State"
domain="[]"
context="{'group_by': 'state'}" />
<filter string="Success"
domain="[]"
context="{'group_by': 'success'}" />
<filter string="Auto-generated"
domain="[]"
context="{'group_by': 'auto_generated'}" />
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_qc_inspection">
<field name="name">Inspections</field>
<field name="res_model">qc.inspection</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.actions.act_window" id="action_qc_inspection">
<field name="name">Inspections</field>
<field name="res_model">qc.inspection</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Inspections"
parent="qc_inspection_menu_parent"
id="qc_inspection_menu"
action="action_qc_inspection" />
<menuitem name="Inspections"
parent="qc_inspection_menu_parent"
id="qc_inspection_menu"
action="action_qc_inspection" />
<record model="ir.ui.view" id="qc_inspection_line_tree_view">
<field name="name">qc.inspection.line.tree</field>
<field name="model">qc.inspection.line</field>
<field name="arch" type="xml">
<tree string="Inspection lines" delete="false" create="false" colors="red: success==False">
<field name="inspection_id" />
<field name="product" />
<field name="name" />
<field name="question_type" />
<field name="possible_ql_values" invisible="1" />
<field name="qualitative_value"
attrs="{'readonly': [('question_type', '=', 'quantitative')]}" />
<field name="quantitative_value"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="uom_id"
groups="product.group_uom"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="test_uom_category" invisible="1"/>
<field name="valid_values" />
<field name="success" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="qc_inspection_line_tree_view">
<field name="name">qc.inspection.line.tree</field>
<field name="model">qc.inspection.line</field>
<field name="arch" type="xml">
<tree string="Inspection lines" delete="false" create="false" colors="red: success==False">
<record model="ir.ui.view" id="qc_inspection_line_search_view">
<field name="name">qc.inspection.line.search</field>
<field name="model">qc.inspection.line</field>
<field name="arch" type="xml">
<search string="Search inspection line">
<group>
<field name="name" />
<field name="inspection_id" />
<field name="product" />
<field name="name" />
<field name="question_type" />
<field name="possible_ql_values" invisible="1" />
<field name="qualitative_value"
attrs="{'readonly': [('question_type', '=', 'quantitative')]}" />
<field name="quantitative_value"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="uom_id"
groups="product.group_uom"
attrs="{'readonly': [('question_type', '=', 'qualitative')]}" />
<field name="test_uom_category" invisible="1"/>
<field name="valid_values" />
<field name="success" />
</tree>
</field>
</record>
</group>
<newline />
<filter string="Correct"
domain="[('success', '=', True)]"/>
<filter string="Incorrect"
domain="[('success', '=', False)]"/>
<newline />
<group expand="0" string="Group by...">
<filter string="Inspection"
domain="[]"
context="{'group_by': 'inspection_id'}" />
<filter string="Product"
domain="[]"
context="{'group_by': 'product'}" />
<filter string="Question"
domain="[]"
context="{'group_by': 'name'}" />
<filter string="Success"
domain="[]"
context="{'group_by': 'success'}" />
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="qc_inspection_line_search_view">
<field name="name">qc.inspection.line.search</field>
<field name="model">qc.inspection.line</field>
<field name="arch" type="xml">
<search string="Search inspection line">
<group>
<field name="name" />
<field name="inspection_id" />
<field name="product" />
<field name="success" />
</group>
<newline />
<filter string="Correct"
domain="[('success', '=', True)]"/>
<filter string="Incorrect"
domain="[('success', '=', False)]"/>
<newline />
<group expand="0" string="Group by...">
<filter string="Inspection"
domain="[]"
context="{'group_by': 'inspection_id'}" />
<filter string="Product"
domain="[]"
context="{'group_by': 'product'}" />
<filter string="Question"
domain="[]"
context="{'group_by': 'name'}" />
<filter string="Success"
domain="[]"
context="{'group_by': 'success'}" />
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_qc_inspection_line">
<field name="name">Inspection lines</field>
<field name="res_model">qc.inspection.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<record model="ir.actions.act_window" id="action_qc_inspection_line">
<field name="name">Inspection lines</field>
<field name="res_model">qc.inspection.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<menuitem name="Inspection lines"
parent="qc_inspection_menu_parent"
id="qc_inspection_lines_menu"
action="action_qc_inspection_line" />
<menuitem name="Inspection lines"
parent="qc_inspection_menu_parent"
id="qc_inspection_lines_menu"
action="action_qc_inspection_line" />
</data>
</openerp>
</odoo>

View File

@@ -1,21 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<menuitem name="Quality control"
id="qc_menu"
groups="group_quality_control_user"
sequence="40" />
<menuitem name="Quality control"
id="qc_menu"
groups="group_quality_control_user"
sequence="40" />
<menuitem name="Inspections"
parent="qc_menu"
id="qc_inspection_menu_parent"
sequence="10" />
<menuitem name="Inspections"
parent="qc_menu"
id="qc_inspection_menu_parent"
sequence="10" />
<menuitem parent="qc_menu"
name="Tests"
id="qc_menu_test_parent"
groups="group_quality_control_manager"
sequence="20" />
</data>
</openerp>
<menuitem parent="qc_menu"
name="Tests"
id="qc_menu_test_parent"
groups="group_quality_control_manager"
sequence="20" />
</odoo>

View File

@@ -1,33 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="qc_test_category_tree_view">
<field name="name">qc.test.category.tree</field>
<field name="model">qc.test.category</field>
<field name="arch" type="xml">
<tree string="Test categories" editable="bottom">
<field name="complete_name"/>
<field name="name"/>
<field name="parent_id"/>
<field name="active"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="qc_test_category_tree_view">
<field name="name">qc.test.category.tree</field>
<field name="model">qc.test.category</field>
<field name="arch" type="xml">
<tree string="Test categories" editable="bottom">
<field name="complete_name"/>
<field name="name"/>
<field name="parent_id"/>
<field name="active"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_qc_test_category">
<field name="name">Test categories</field>
<field name="res_model">qc.test.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.actions.act_window" id="action_qc_test_category">
<field name="name">Test categories</field>
<field name="res_model">qc.test.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Test categories"
parent="qc_menu_test_parent"
id="qc_test_category_menu"
action="action_qc_test_category"
groups="group_quality_control_manager"
sequence="10" />
<menuitem name="Test categories"
parent="qc_menu_test_parent"
id="qc_test_category_menu"
action="action_qc_test_category"
groups="group_quality_control_manager"
sequence="10" />
</data>
</openerp>
</odoo>

View File

@@ -1,128 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="qc_test_form_view">
<field name="name">qc.test.form</field>
<field name="model">qc.test</field>
<field name="arch" type="xml">
<form string="Test">
<sheet>
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name" class="oe_inline"/>
</h1>
<group>
<group>
<field name="type" />
<field name="object_id"
attrs="{'invisible': [('type','=','generic')]}"/>
<field name="active" />
</group>
<group>
<field name="category" />
<field name="fill_correct_values" />
<field name="company_id" groups="base.group_multi_company"/>
</group>
</group>
<field name="test_lines" nolabel="1" >
<tree string="Questions">
<field name="sequence" widget="handle"/>
<field name="name" />
<field name="type" />
<field name="min_value" />
<field name="max_value" />
<field name="uom_id" />
<field name="ql_values" />
</tree>
</field>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="qc_test_tree_view">
<field name="name">qc.test.tree</field>
<field name="model">qc.test</field>
<field name="arch" type="xml">
<tree string="Tests">
<field name="name" />
<field name="category" />
<field name="type" />
<field name="object_id" />
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_qc_test">
<field name="name">Tests</field>
<field name="res_model">qc.test</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.ui.view" id="qc_test_question_form_view">
<field name="name">qc.test.question.form</field>
<field name="model">qc.test.question</field>
<field name="arch" type="xml">
<form string="Test question">
<label for="name" class="oe_edit_only" />
<record model="ir.ui.view" id="qc_test_form_view">
<field name="name">qc.test.form</field>
<field name="model">qc.test</field>
<field name="arch" type="xml">
<form string="Test">
<sheet>
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name" class="oe_inline" />
<field name="name" class="oe_inline"/>
</h1>
<group>
<field name="sequence" />
<field name="type" />
<group>
<field name="type" />
<field name="object_id"
attrs="{'invisible': [('type','=','generic')]}"/>
<field name="active" />
</group>
<group>
<field name="category" />
<field name="fill_correct_values" />
<field name="company_id" groups="base.group_multi_company"/>
</group>
</group>
<group name="qualitative"
string="Answers"
colspan="4"
attrs="{'invisible': [('type', '!=', 'qualitative')]}">
<field name="ql_values"
nolabel="1"
attrs="{'required': [('type','=','qualitative')]}">
<tree string="Question value" editable="bottom">
<field name="name" />
<field name="ok" />
</tree>
</field>
</group>
<div name="quantitative"
align="center"
attrs="{'invisible': [('type', '!=', 'quantitative')]}" >
<h1 name="quantitative-data">
<span name="quantitative-interval" >
<field name="min_value"
class="oe_inline"
nolabel="1"
attrs="{'required': [('type',' =', 'quantitative')]}" />
<span> - </span>
<field name="max_value"
class="oe_inline"
nolabel="1"
attrs="{'required': [('type', '=', 'quantitative')]}" />
</span>
<span name="quantitative-uom" >
<field name="uom_id"
class="oe_inline"
nolabel="1"
attrs="{'required': [('type', '=', 'quantitative')]}" />
</span>
</h1>
</div>
<field name="notes" />
</form>
</field>
</record>
<field name="test_lines" nolabel="1" >
<tree string="Questions">
<field name="sequence" widget="handle"/>
<field name="name" />
<field name="type" />
<field name="min_value" />
<field name="max_value" />
<field name="uom_id" />
<field name="ql_values" />
</tree>
</field>
</sheet>
</form>
</field>
</record>
<menuitem name="Tests"
parent="qc_menu_test_parent"
id="qc_test_menu"
action="action_qc_test"
groups="group_quality_control_manager"
sequence="20" />
<record model="ir.ui.view" id="qc_test_tree_view">
<field name="name">qc.test.tree</field>
<field name="model">qc.test</field>
<field name="arch" type="xml">
<tree string="Tests">
<field name="name" />
<field name="category" />
<field name="type" />
<field name="object_id" />
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_qc_test">
<field name="name">Tests</field>
<field name="res_model">qc.test</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.ui.view" id="qc_test_question_form_view">
<field name="name">qc.test.question.form</field>
<field name="model">qc.test.question</field>
<field name="arch" type="xml">
<form string="Test question">
<label for="name" class="oe_edit_only" />
<h1>
<field name="name" class="oe_inline" />
</h1>
<group>
<field name="sequence" />
<field name="type" />
</group>
<group name="qualitative"
string="Answers"
colspan="4"
attrs="{'invisible': [('type', '!=', 'qualitative')]}">
<field name="ql_values"
nolabel="1"
attrs="{'required': [('type','=','qualitative')]}">
<tree string="Question value" editable="bottom">
<field name="name" />
<field name="ok" />
</tree>
</field>
</group>
<div name="quantitative"
align="center"
attrs="{'invisible': [('type', '!=', 'quantitative')]}" >
<h1 name="quantitative-data">
<span name="quantitative-interval" >
<field name="min_value"
class="oe_inline"
nolabel="1"
attrs="{'required': [('type',' =', 'quantitative')]}" />
<span> - </span>
<field name="max_value"
class="oe_inline"
nolabel="1"
attrs="{'required': [('type', '=', 'quantitative')]}" />
</span>
<span name="quantitative-uom" >
<field name="uom_id"
class="oe_inline"
nolabel="1"
attrs="{'required': [('type', '=', 'quantitative')]}" />
</span>
</h1>
</div>
<field name="notes" />
</form>
</field>
</record>
<menuitem name="Tests"
parent="qc_menu_test_parent"
id="qc_test_menu"
action="action_qc_test"
groups="group_quality_control_manager"
sequence="20" />
</data>
</openerp>

View File

@@ -1,35 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="qc_trigger_form_view">
<field name="name">qc.trigger.form</field>
<field name="model">qc.trigger</field>
<field name="arch" type="xml">
<form string="Quality control trigger">
<group>
<field name="name" />
<field name="active" />
<field name="partner_selectable" />
</group>
<group>
<field name="company_id" groups="base.group_multi_company"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="qc_trigger_form_view">
<field name="name">qc.trigger.form</field>
<field name="model">qc.trigger</field>
<field name="arch" type="xml">
<form string="Quality control trigger">
<group>
<field name="name" />
<field name="active" />
<field name="partner_selectable" />
</group>
<group>
<field name="company_id" groups="base.group_multi_company"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="qc_trigger_tree_view">
<field name="name">qc.trigger.tree</field>
<field name="model">qc.trigger</field>
<field name="arch" type="xml">
<tree string="Quality control triggers" editable="bottom">
<field name="name" />
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="qc_trigger_tree_view">
<field name="name">qc.trigger.tree</field>
<field name="model">qc.trigger</field>
<field name="arch" type="xml">
<tree string="Quality control triggers" editable="bottom">
<field name="name" />
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
</data>
</openerp>
</odoo>

View File

@@ -1,5 +1,8 @@
# -*- encoding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
# -*- coding: utf-8 -*-
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import qc_test_wizard

View File

@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory
##############################################################################
from openerp import models, fields, api
# Copyright 2010 NaN Projectes de Programari Lliure, S.L.
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
# Copyright 2014 Oihane Crucelaegui - AvanzOSC
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, fields, models
class QcInspectionSetTest(models.TransientModel):

View File

@@ -1,36 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="view_qc_test_set_test_form" model="ir.ui.view">
<field name="name">qc.inspection.set.test.form</field>
<field name="model">qc.inspection.set.test</field>
<field name="arch" type="xml">
<form string="Select test" version="7.0">
<group>
<field name="test" />
</group>
<footer>
<button name="action_create_test"
string="Accept"
type="object"
class="oe_highlight"/>
or
<button special="cancel"
class="oe_link"
string="Cancel" />
</footer>
</form>
</field>
</record>
<odoo>
<record id="action_qc_inspection_set_test" model="ir.actions.act_window">
<field name="name">Select test</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">qc.inspection.set.test</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="view_qc_test_set_test_form" model="ir.ui.view">
<field name="name">qc.inspection.set.test.form</field>
<field name="model">qc.inspection.set.test</field>
<field name="arch" type="xml">
<form string="Select test" version="7.0">
<group>
<field name="test" />
</group>
<footer>
<button name="action_create_test"
string="Accept"
type="object"
class="oe_highlight"/>
or
<button special="cancel"
class="oe_link"
string="Cancel" />
</footer>
</form>
</field>
</record>
</data>
</openerp>
<record id="action_qc_inspection_set_test" model="ir.actions.act_window">
<field name="name">Select test</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">qc.inspection.set.test</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>