[9.0][MIG] quality_control

This commit is contained in:
lreficent
2017-05-24 17:24:55 +02:00
parent 9ee316df7e
commit 1baa7c9fc2
20 changed files with 514 additions and 535 deletions

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields from openerp import fields, models
class ProductCategory(models.Model): class ProductCategory(models.Model):

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields from openerp import fields, models
class ProductProduct(models.Model): class ProductProduct(models.Model):

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields from openerp import fields, models
class ProductTemplate(models.Model): class ProductTemplate(models.Model):

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields, api, exceptions, _ from openerp import api, exceptions, fields, models, _
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields, api, exceptions, _ from openerp import api, exceptions, fields, models, _
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields, api, exceptions, _ from openerp import api, exceptions, fields, models, _
class QcTestTemplateCategory(models.Model): class QcTestTemplateCategory(models.Model):

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields from openerp import fields, models
class QcTrigger(models.Model): class QcTrigger(models.Model):

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields from openerp import fields, models
def _filter_trigger_lines(trigger_lines): def _filter_trigger_lines(trigger_lines):

View File

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

View File

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

View File

@@ -1,254 +1,253 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <odoo>
<data>
<record model="ir.ui.view" id="qc_inspection_form_view"> <record model="ir.ui.view" id="qc_inspection_form_view">
<field name="name">qc.inspection.form</field> <field name="name">qc.inspection.form</field>
<field name="model">qc.inspection</field> <field name="model">qc.inspection</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Inspection"> <form string="Inspection">
<header> <header>
<button name="action_draft" <button name="action_draft"
type="object" type="object"
attrs="{'invisible': [('state', '!=', 'canceled')]}" attrs="{'invisible': [('state', '!=', 'canceled')]}"
string="Draft" /> string="Draft" />
<button name="action_todo" <button name="action_todo"
type="object" type="object"
class="oe_highlight" 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" states="draft"
string="Mark todo" /> string="Set test" />
<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"/>
</div> </div>
</form> <h1>
</field> <label string="Inspection "/>
</record> <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"> <record model="ir.ui.view" id="qc_inspection_tree_view">
<field name="name">qc.inspection.tree</field> <field name="name">qc.inspection.tree</field>
<field name="model">qc.inspection</field> <field name="model">qc.inspection</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Inspections"> <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="name" />
<field name="user" /> <field name="user" />
<field name="test" /> <field name="object_id" />
<field name="qty" />
<field name="product" /> <field name="product" />
<field name="success" /> <field name="test" />
<field name="state" /> </group>
</tree> <newline />
</field> <filter string="Correct"
</record> 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"> <record model="ir.actions.act_window" id="action_qc_inspection">
<field name="name">qc.inspection.search</field> <field name="name">Inspections</field>
<field name="model">qc.inspection</field> <field name="res_model">qc.inspection</field>
<field name="arch" type="xml"> <field name="view_type">form</field>
<search string="Search inspection"> <field name="view_mode">tree,form</field>
<group> </record>
<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"> <menuitem name="Inspections"
<field name="name">Inspections</field> parent="qc_inspection_menu_parent"
<field name="res_model">qc.inspection</field> id="qc_inspection_menu"
<field name="view_type">form</field> action="action_qc_inspection" />
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Inspections" <record model="ir.ui.view" id="qc_inspection_line_tree_view">
parent="qc_inspection_menu_parent" <field name="name">qc.inspection.line.tree</field>
id="qc_inspection_menu" <field name="model">qc.inspection.line</field>
action="action_qc_inspection" /> <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"> <record model="ir.ui.view" id="qc_inspection_line_search_view">
<field name="name">qc.inspection.line.tree</field> <field name="name">qc.inspection.line.search</field>
<field name="model">qc.inspection.line</field> <field name="model">qc.inspection.line</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Inspection lines" delete="false" create="false" colors="red: success==False"> <search string="Search inspection line">
<group>
<field name="name" />
<field name="inspection_id" /> <field name="inspection_id" />
<field name="product" /> <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" /> <field name="success" />
</tree> </group>
</field> <newline />
</record> <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"> <record model="ir.actions.act_window" id="action_qc_inspection_line">
<field name="name">qc.inspection.line.search</field> <field name="name">Inspection lines</field>
<field name="model">qc.inspection.line</field> <field name="res_model">qc.inspection.line</field>
<field name="arch" type="xml"> <field name="view_type">form</field>
<search string="Search inspection line"> <field name="view_mode">tree</field>
<group> </record>
<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"> <menuitem name="Inspection lines"
<field name="name">Inspection lines</field> parent="qc_inspection_menu_parent"
<field name="res_model">qc.inspection.line</field> id="qc_inspection_lines_menu"
<field name="view_type">form</field> action="action_qc_inspection_line" />
<field name="view_mode">tree</field>
</record>
<menuitem name="Inspection lines" </odoo>
parent="qc_inspection_menu_parent"
id="qc_inspection_lines_menu"
action="action_qc_inspection_line" />
</data>
</openerp>

View File

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

View File

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

View File

@@ -1,128 +1,125 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data>
<record model="ir.ui.view" id="qc_test_form_view"> <record model="ir.ui.view" id="qc_test_form_view">
<field name="name">qc.test.form</field> <field name="name">qc.test.form</field>
<field name="model">qc.test</field> <field name="model">qc.test</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Test"> <form string="Test">
<sheet> <sheet>
<label for="name" class="oe_edit_only"/> <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" />
<h1> <h1>
<field name="name" class="oe_inline" /> <field name="name" class="oe_inline"/>
</h1> </h1>
<group> <group>
<field name="sequence" /> <group>
<field name="type" /> <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>
<group name="qualitative" <field name="test_lines" nolabel="1" >
string="Answers" <tree string="Questions">
colspan="4" <field name="sequence" widget="handle"/>
attrs="{'invisible': [('type', '!=', 'qualitative')]}"> <field name="name" />
<field name="ql_values" <field name="type" />
nolabel="1" <field name="min_value" />
attrs="{'required': [('type','=','qualitative')]}"> <field name="max_value" />
<tree string="Question value" editable="bottom"> <field name="uom_id" />
<field name="name" /> <field name="ql_values" />
<field name="ok" /> </tree>
</tree> </field>
</field> </sheet>
</group> </form>
<div name="quantitative" </field>
align="center" </record>
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" <record model="ir.ui.view" id="qc_test_tree_view">
parent="qc_menu_test_parent" <field name="name">qc.test.tree</field>
id="qc_test_menu" <field name="model">qc.test</field>
action="action_qc_test" <field name="arch" type="xml">
groups="group_quality_control_manager" <tree string="Tests">
sequence="20" /> <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> </openerp>

View File

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

View File

@@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# For copyright and license notices, see __openerp__.py file in root directory # For copyright and license notices, see __openerp__.py file in root directory
############################################################################## ##############################################################################
from openerp import models, fields, api from openerp import api, fields, models
class QcInspectionSetTest(models.TransientModel): class QcInspectionSetTest(models.TransientModel):

View File

@@ -1,36 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<openerp> <odoo>
<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>
<record id="action_qc_inspection_set_test" model="ir.actions.act_window"> <record id="view_qc_test_set_test_form" model="ir.ui.view">
<field name="name">Select test</field> <field name="name">qc.inspection.set.test.form</field>
<field name="type">ir.actions.act_window</field> <field name="model">qc.inspection.set.test</field>
<field name="res_model">qc.inspection.set.test</field> <field name="arch" type="xml">
<field name="view_type">form</field> <form string="Select test" version="7.0">
<field name="view_mode">form</field> <group>
<field name="target">new</field> <field name="test" />
</record> </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> <record id="action_qc_inspection_set_test" model="ir.actions.act_window">
</openerp> <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>