1.修复及优化质检接口2.质量检查新增检测报告和检测结果2个字段
This commit is contained in:
@@ -32,7 +32,9 @@
|
||||
<field name="tag_ids"/>
|
||||
</div>
|
||||
<div>
|
||||
<strong><field name="product_tmpl_id"/></strong>
|
||||
<strong>
|
||||
<field name="product_tmpl_id"/>
|
||||
</strong>
|
||||
</div>
|
||||
<div>
|
||||
<field name="display_name"/>
|
||||
@@ -65,20 +67,28 @@
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="product_id" invisible="1"/>
|
||||
<div class="oe_button_box">
|
||||
<button name="action_see_check" type="object" attrs="{'invisible': [('check_id', '=', False)]}" class="oe_stat_button" icon="fa-check-square-o">
|
||||
<button name="action_see_check" type="object" attrs="{'invisible': [('check_id', '=', False)]}"
|
||||
class="oe_stat_button" icon="fa-check-square-o">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_value"><field name="check_id" readonly="1"/></span>
|
||||
<span class="o_stat_value">
|
||||
<field name="check_id" readonly="1"/>
|
||||
</span>
|
||||
<span class="o_stat_text">Quality Check</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="oe_title"><h1><field name="name" readonly="1"/></h1></div>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="title"/>
|
||||
<field name="product_tmpl_id"/>
|
||||
<field name="product_id" groups="product.group_product_variant"/>
|
||||
<field name="lot_id" context="{'default_product_id': product_id}" groups="stock.group_production_lot"/>
|
||||
<field name="lot_id" context="{'default_product_id': product_id}"
|
||||
groups="stock.group_production_lot"/>
|
||||
<field name="picking_id"/>
|
||||
</group>
|
||||
<group>
|
||||
@@ -144,25 +154,25 @@
|
||||
</record>
|
||||
|
||||
<record id="quality_alert_view_pivot" model="ir.ui.view">
|
||||
<field name="name">quality.alert.view.pivot</field>
|
||||
<field name="model">quality.alert</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Quality Alert Analysis" sample="1">
|
||||
<field name="stage_id" type="col"/>
|
||||
<field name="team_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
<field name="name">quality.alert.view.pivot</field>
|
||||
<field name="model">quality.alert</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Quality Alert Analysis" sample="1">
|
||||
<field name="stage_id" type="col"/>
|
||||
<field name="team_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="quality_alert_view_graph" model="ir.ui.view">
|
||||
<field name="name">quality.alert.view.graph</field>
|
||||
<field name="model">quality.alert</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Quality Alert Analysis" sample="1">
|
||||
<field name="reason_id"/>
|
||||
<field name="stage_id"/>
|
||||
</graph>
|
||||
</field>
|
||||
<field name="name">quality.alert.view.graph</field>
|
||||
<field name="model">quality.alert</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Quality Alert Analysis" sample="1">
|
||||
<field name="reason_id"/>
|
||||
<field name="stage_id"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="quality_alert_view_calendar" model="ir.ui.view">
|
||||
@@ -186,7 +196,8 @@
|
||||
<field name="view_mode">kanban,tree,form,pivot,graph,calendar</field>
|
||||
<field name="domain">[('team_id', '=', active_id)]</field>
|
||||
<field name="context">{'default_team_id': active_id,
|
||||
'search_default_team_id': [active_id]}</field>
|
||||
'search_default_team_id': [active_id]}
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="quality_alert_action_check" model="ir.actions.act_window">
|
||||
@@ -195,7 +206,7 @@
|
||||
<field name="view_mode">kanban,tree,form,pivot,graph,calendar</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new quality alert
|
||||
Create a new quality alert
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -212,24 +223,35 @@
|
||||
</record>
|
||||
|
||||
<!-- QUALITY.CHECK -->
|
||||
<record id="quality_check_view_form" model="ir.ui.view">
|
||||
<record id="quality_check_view_form" model="ir.ui.view">
|
||||
<field name="name">quality.check.view.form</field>
|
||||
<field name="model">quality.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="do_pass" type="object" class="btn-primary" attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Pass" data-hotkey="q"/>
|
||||
<button name="do_pass" type="object" attrs="{'invisible': [('quality_state', '!=', 'fail')]}" groups="quality.group_quality_manager" string="Pass" data-hotkey="q"/>
|
||||
<button name="do_fail" type="object" class="btn-primary" attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Fail" data-hotkey="w"/>
|
||||
<button name="do_fail" type="object" attrs="{'invisible': [('quality_state', '!=', 'pass')]}" groups="quality.group_quality_manager" string="Fail" data-hotkey="w"/>
|
||||
<button name="do_measure" type="object" attrs="{'invisible': ['|', ('test_type', '!=', 'measure'), ('quality_state', '!=', 'none')]}" string="Measure" data-hotkey="v"/>
|
||||
<button name="do_alert" type="object" attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'pass')]}" string="Create Alert" data-hotkey="g"/>
|
||||
<button name="do_alert" type="object" class="btn-primary" attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'fail')]}" string="Create Alert" data-hotkey="g"/>
|
||||
<button name="do_pass" type="object" class="btn-primary"
|
||||
attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Pass" data-hotkey="q"/>
|
||||
<button name="do_pass" type="object" attrs="{'invisible': [('quality_state', '!=', 'fail')]}"
|
||||
groups="quality.group_quality_manager" string="Pass" data-hotkey="q"/>
|
||||
<button name="do_fail" type="object" class="btn-primary"
|
||||
attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Fail" data-hotkey="w"/>
|
||||
<button name="do_fail" type="object" attrs="{'invisible': [('quality_state', '!=', 'pass')]}"
|
||||
groups="quality.group_quality_manager" string="Fail" data-hotkey="w"/>
|
||||
<button name="do_measure" type="object"
|
||||
attrs="{'invisible': ['|', ('test_type', '!=', 'measure'), ('quality_state', '!=', 'none')]}"
|
||||
string="Measure" data-hotkey="v"/>
|
||||
<button name="do_alert" type="object"
|
||||
attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'pass')]}"
|
||||
string="Create Alert" data-hotkey="g"/>
|
||||
<button name="do_alert" type="object" class="btn-primary"
|
||||
attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'fail')]}"
|
||||
string="Create Alert" data-hotkey="g"/>
|
||||
<field name="quality_state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button name="action_see_alerts" icon="fa-bell" type="object" class="oe_stat_button" attrs="{'invisible': [('alert_count', '=', 0)]}">
|
||||
<button name="action_see_alerts" icon="fa-bell" type="object" class="oe_stat_button"
|
||||
attrs="{'invisible': [('alert_count', '=', 0)]}">
|
||||
<field name="alert_count" string="Alerts" widget="statinfo"/>
|
||||
</button>
|
||||
</div>
|
||||
@@ -242,21 +264,27 @@
|
||||
<field name="move_line_id" invisible="1"/>
|
||||
<field name="product_tracking" invisible="1"/>
|
||||
<field name="is_lot_tested_fractionally" invisible="1"/>
|
||||
<field name="lot_name" attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', False), '|', ('measure_on', '!=', 'move_line'), ('move_line_id', '=', False)]}"/>
|
||||
<field name="lot_id" attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', True), ('measure_on', '!=', 'move_line')]}"/>
|
||||
<field name="lot_name"
|
||||
attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', False), '|', ('measure_on', '!=', 'move_line'), ('move_line_id', '=', False)]}"/>
|
||||
<field name="lot_id"
|
||||
attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', True), ('measure_on', '!=', 'move_line')]}"/>
|
||||
<label for="qty_line" attrs="{'invisible': [('move_line_id', '=', False)]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('move_line_id', '=', False)]}">
|
||||
<field name="qty_line"/>
|
||||
<field name="qty_line"/>
|
||||
<field name="uom_id"/>
|
||||
</div>
|
||||
<label for="qty_to_test" attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row" attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="qty_to_test"/>
|
||||
<label for="qty_to_test"
|
||||
attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="qty_to_test"/>
|
||||
<field name="uom_id"/>
|
||||
</div>
|
||||
<label for="qty_tested" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="qty_tested" attrs="{'readonly': [('quality_state', '!=', 'none')]}"/>
|
||||
<label for="qty_tested"
|
||||
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="qty_tested" attrs="{'readonly': [('quality_state', '!=', 'none')]}"/>
|
||||
<field name="uom_id"/>
|
||||
</div>
|
||||
<field name="test_type" invisible="1"/>
|
||||
@@ -264,26 +292,32 @@
|
||||
<field name="alert_ids" invisible="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="picking_id" attrs="{'invisible': [('quality_state', 'in', ('pass', 'fail')), ('picking_id', '=', False)]}"/>
|
||||
<field name="picking_id"
|
||||
attrs="{'invisible': [('quality_state', 'in', ('pass', 'fail')), ('picking_id', '=', False)]}"/>
|
||||
<field name="point_id"/>
|
||||
<field string="Type" name="test_type_id" options="{'no_open': True, 'no_create': True}" attrs="{'readonly': [('point_id', '!=', False)]}"/>
|
||||
<field string="Type" name="test_type_id" options="{'no_open': True, 'no_create': True}"
|
||||
attrs="{'readonly': [('point_id', '!=', False)]}"/>
|
||||
<field name="control_date" invisible="1"/>
|
||||
<field name="team_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="user_id" string="Control Person" invisible="1"/>
|
||||
<field name="partner_id" string="Partner" attrs="{'invisible': [('partner_id', '=', False)]}"/>
|
||||
<field name="partner_id" string="Partner"
|
||||
attrs="{'invisible': [('partner_id', '=', False)]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<group attrs="{'invisible': [('test_type', '!=', 'picture')]}">
|
||||
<field name="picture" widget="image"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Notes" name="notes">
|
||||
<group>
|
||||
<field string="Instructions" name="note"/>
|
||||
<field string="Notes" name="additional_note"/>
|
||||
</group>
|
||||
</page>
|
||||
<notebook>
|
||||
<page string="Notes" name="notes">
|
||||
<group>
|
||||
<field name="report_result"/>
|
||||
<field name="report_pdf" widget="pdf_viewer"/>
|
||||
<field string="Instructions" name="note"/>
|
||||
<field string="Notes" name="additional_note"/>
|
||||
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
@@ -311,18 +345,30 @@
|
||||
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<strong><span><t t-esc="record.name.value"/></span></strong>
|
||||
<strong>
|
||||
<span>
|
||||
<t t-esc="record.name.value"/>
|
||||
</span>
|
||||
</strong>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<strong><span t-attf-class="float-end text-end badge #{['none'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-secondary' : ['fail'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-danger' : ['done'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-primary' : 'text-bg-success'}"><t t-esc="record.quality_state.value"/></span></strong>
|
||||
<strong>
|
||||
<span t-attf-class="float-end text-end badge #{['none'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-secondary' : ['fail'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-danger' : ['done'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-primary' : 'text-bg-success'}">
|
||||
<t t-esc="record.quality_state.value"/>
|
||||
</span>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row text-muted">
|
||||
<div class="col-8">
|
||||
<span><t t-esc="record.product_id.value"/></span>
|
||||
<span>
|
||||
<t t-esc="record.product_id.value"/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span><t t-esc="record.lot_id.value"/></span>
|
||||
<span>
|
||||
<t t-esc="record.lot_id.value"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_kanban_bottom_right float-end">
|
||||
@@ -350,7 +396,8 @@
|
||||
<field name="user_id" string="Checked By" optional="show" widget='many2one_avatar_user'/>
|
||||
<field name="point_id" optional="hide"/>
|
||||
<field name="team_id" optional="show"/>
|
||||
<field name="quality_state" optional="show" widget='badge' decoration-success="quality_state == 'pass'" decoration-info="quality_state == 'none'" decoration-danger="quality_state == 'fail'"/>
|
||||
<field name="quality_state" optional="show" widget='badge' decoration-success="quality_state == 'pass'"
|
||||
decoration-info="quality_state == 'none'" decoration-danger="quality_state == 'fail'"/>
|
||||
<field name="company_id" groups="base.main_company"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -368,14 +415,14 @@
|
||||
</record>
|
||||
|
||||
<record id="quality_check_view_pivot" model="ir.ui.view">
|
||||
<field name="name">quality.check.view.pivot</field>
|
||||
<field name="model">quality.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Quality Check Analysis" sample="1">
|
||||
<field name="control_date" type="col" interval="day"/>
|
||||
<field name="product_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
<field name="name">quality.check.view.pivot</field>
|
||||
<field name="model">quality.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Quality Check Analysis" sample="1">
|
||||
<field name="control_date" type="col" interval="day"/>
|
||||
<field name="product_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="quality_check_view_search" model="ir.ui.view">
|
||||
@@ -383,7 +430,8 @@
|
||||
<field name="model">quality.check</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="product_id" string="Product" filter_domain="['|', ('product_id', 'ilike', self), ('lot_id', 'ilike', self)]"/>
|
||||
<field name="product_id" string="Product"
|
||||
filter_domain="['|', ('product_id', 'ilike', self), ('lot_id', 'ilike', self)]"/>
|
||||
<field name="picking_id"/>
|
||||
<field name="lot_id"/>
|
||||
<field name="team_id"/>
|
||||
@@ -426,10 +474,11 @@
|
||||
</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No quality check found
|
||||
</p><p>
|
||||
Define Quality Control Points in order to automatically generate
|
||||
quality checks at the right logistic operation: transfers, manufacturing orders.
|
||||
No quality check found
|
||||
</p>
|
||||
<p>
|
||||
Define Quality Control Points in order to automatically generate
|
||||
quality checks at the right logistic operation: transfers, manufacturing orders.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -458,10 +507,11 @@
|
||||
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No quality check found
|
||||
</p><p>
|
||||
Define Quality Control Points in order to automatically generate
|
||||
quality checks at the right logistic operation: transfers, manufacturing orders.
|
||||
No quality check found
|
||||
</p>
|
||||
<p>
|
||||
Define Quality Control Points in order to automatically generate
|
||||
quality checks at the right logistic operation: transfers, manufacturing orders.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -485,17 +535,25 @@
|
||||
<field name="inherit_id" ref="stock.product_template_form_view_procurement_button"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='action_view_related_putaway_rules']" position="after">
|
||||
<button name="action_see_quality_control_points" type="object" class="oe_stat_button" icon="fa-list" attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}" groups="quality.group_quality_user">
|
||||
<button name="action_see_quality_control_points" type="object" class="oe_stat_button" icon="fa-list"
|
||||
attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}"
|
||||
groups="quality.group_quality_user">
|
||||
<field string="Quality Points" name="quality_control_point_qty" widget="statinfo"/>
|
||||
</button>
|
||||
<button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check" attrs="{'invisible':['|', ('type', 'not in', ['product', 'consu']), ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}" groups="quality.group_quality_user">
|
||||
<button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check"
|
||||
attrs="{'invisible':['|', ('type', 'not in', ['product', 'consu']), ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}"
|
||||
groups="quality.group_quality_user">
|
||||
<div class="o_field_widget o_stat_info mr4">
|
||||
<span class="o_stat_text">Pass:</span>
|
||||
<span class="o_stat_text">Fail:</span>
|
||||
</div>
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_value"><field name="quality_pass_qty"/></span>
|
||||
<span class="o_stat_value"><field name="quality_fail_qty"/></span>
|
||||
<span class="o_stat_value">
|
||||
<field name="quality_pass_qty"/>
|
||||
</span>
|
||||
<span class="o_stat_value">
|
||||
<field name="quality_fail_qty"/>
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</xpath>
|
||||
@@ -509,17 +567,25 @@
|
||||
<field name="inherit_id" ref="stock.product_form_view_procurement_button"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='action_view_related_putaway_rules']" position="after">
|
||||
<button name="action_see_quality_control_points" type="object" icon="fa-list" class="oe_stat_button" attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}" groups="quality.group_quality_user">
|
||||
<button name="action_see_quality_control_points" type="object" icon="fa-list" class="oe_stat_button"
|
||||
attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}"
|
||||
groups="quality.group_quality_user">
|
||||
<field string="Quality Points" name="quality_control_point_qty" widget="statinfo"/>
|
||||
</button>
|
||||
<button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check" groups="quality.group_quality_user" attrs="{'invisible':[ ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}" >
|
||||
<button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check"
|
||||
groups="quality.group_quality_user"
|
||||
attrs="{'invisible':[ ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}">
|
||||
<div class="o_field_widget o_stat_info mr4">
|
||||
<span class="o_stat_text">Pass:</span>
|
||||
<span class="o_stat_text">Fail:</span>
|
||||
</div>
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_value"><field name="quality_pass_qty"/></span>
|
||||
<span class="o_stat_value"><field name="quality_fail_qty"/></span>
|
||||
<span class="o_stat_value">
|
||||
<field name="quality_pass_qty"/>
|
||||
</span>
|
||||
<span class="o_stat_value">
|
||||
<field name="quality_fail_qty"/>
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</xpath>
|
||||
@@ -533,8 +599,8 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="%(quality_check_action_production_lot)d" type="action"
|
||||
attrs="{'invisible': [('quality_check_qty', '=', 0)]}"
|
||||
icon="fa-check" class="oe_stat_button" groups="quality.group_quality_user">
|
||||
attrs="{'invisible': [('quality_check_qty', '=', 0)]}"
|
||||
icon="fa-check" class="oe_stat_button" groups="quality.group_quality_user">
|
||||
<field string="Quality Checks" name="quality_check_qty" widget="statinfo"/>
|
||||
</button>
|
||||
</xpath>
|
||||
@@ -557,24 +623,36 @@
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="#{kanban_color(record.color.raw_value)}">
|
||||
<span class="oe_kanban_color_help" t-attf-title="In #{kanban_getcolorname(record.color.raw_value)}" role="img" t-attf-aria-label="In #{kanban_getcolorname(record.color.raw_value)}"/>
|
||||
<span class="oe_kanban_color_help"
|
||||
t-attf-title="In #{kanban_getcolorname(record.color.raw_value)}" role="img"
|
||||
t-attf-aria-label="In #{kanban_getcolorname(record.color.raw_value)}"/>
|
||||
<div t-attf-class="o_kanban_card_header">
|
||||
<div class="o_kanban_card_header_title">
|
||||
<div class="o_primary"><field name="name"/></div>
|
||||
<div class="o_primary">
|
||||
<field name="name"/>
|
||||
</div>
|
||||
<div t-if="record.alias_name.value and record.alias_domain.value">
|
||||
<small><i class="fa fa-envelope-o" role="img" aria-label="Domain alias" title="Domain alias"></i>&nbsp; <field name="alias_id"/></small>
|
||||
<small><i class="fa fa-envelope-o" role="img" aria-label="Domain alias"
|
||||
title="Domain alias"></i>&nbsp;
|
||||
<field name="alias_id"/>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container o_kanban_card_content">
|
||||
<div class="row">
|
||||
<div class="col-6 o_kanban_primary_left">
|
||||
<button class="btn btn-primary" name="%(quality_alert_action_team)d" type="action">
|
||||
<span><field name="alert_count"/> Quality Alerts</span>
|
||||
<button class="btn btn-primary" name="%(quality_alert_action_team)d"
|
||||
type="action">
|
||||
<span>
|
||||
<field name="alert_count"/>
|
||||
Quality Alerts
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-6 o_kanban_primary_right">
|
||||
<a class="oe_kanban_stock_picking_type_list" name="%(quality_check_action_team)d" type="action">
|
||||
<a class="oe_kanban_stock_picking_type_list"
|
||||
name="%(quality_check_action_team)d" type="action">
|
||||
<field name="check_count"/>
|
||||
Checks In Progress
|
||||
</a>
|
||||
@@ -585,11 +663,14 @@
|
||||
<div t-if="widget.editable" role="menuitem">
|
||||
<a class="dropdown-item ps-0" type="edit">Configuration</a>
|
||||
</div>
|
||||
<div t-if="widget.editable" role="menuitem" aria-haspopup="true" class="o_no_padding_kanban_colorpicker">
|
||||
<div t-if="widget.editable" role="menuitem" aria-haspopup="true"
|
||||
class="o_no_padding_kanban_colorpicker">
|
||||
<ul class="oe_kanban_colorpicker" data-field="color" role="popup"/>
|
||||
</div>
|
||||
</div>
|
||||
<a class="o_kanban_manage_toggle_button o_left" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
|
||||
<a class="o_kanban_manage_toggle_button o_left" href="#">
|
||||
<i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/>
|
||||
</a>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
@@ -615,13 +696,14 @@
|
||||
<label for="alias_name" string="Email Alias"/>
|
||||
<div name="alias_def">
|
||||
<field name="alias_id" class="oe_read_only oe_inline"
|
||||
string="Email Alias" required="0"/>
|
||||
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
|
||||
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
string="Email Alias" required="0"/>
|
||||
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;">
|
||||
<field name="alias_name" class="oe_inline"/>@
|
||||
<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
</div>
|
||||
</div>
|
||||
<field name="alias_contact" class="oe_inline" groups="base.group_no_one"
|
||||
string="Accept Emails From"/>
|
||||
string="Accept Emails From"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
@@ -658,7 +740,9 @@
|
||||
<div t-attf-class="oe_kanban_content oe_kanban_global_click">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<strong><field name="name"/></strong>
|
||||
<strong>
|
||||
<field name="name"/>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -672,14 +756,15 @@
|
||||
<field name="name">Quality Overview</field>
|
||||
<field name="res_model">quality.alert.team</field>
|
||||
<field name="view_mode">kanban,form</field>
|
||||
<field name="view_id" ref="quality_alert_team_dashboard_view_kanban" />
|
||||
<field name="view_id" ref="quality_alert_team_dashboard_view_kanban"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_empty_folder">
|
||||
</p><p>
|
||||
Quality Teams group the different quality alerts/checks
|
||||
according to the roles (teams) that need them.
|
||||
</p>
|
||||
</field>
|
||||
<p>
|
||||
Quality Teams group the different quality alerts/checks
|
||||
according to the roles (teams) that need them.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="quality_alert_team_action_config" model="ir.actions.act_window">
|
||||
@@ -716,9 +801,9 @@
|
||||
<field name="res_model">quality.tag</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Add a new tag
|
||||
</p>
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Add a new tag
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -747,7 +832,9 @@
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_global_click">
|
||||
<div>
|
||||
<strong><field name="name"/></strong>
|
||||
<strong>
|
||||
<field name="name"/>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
@@ -763,8 +850,9 @@
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new quality alert stage
|
||||
</p><p>
|
||||
Quality Alert stages define the different steps a quality alert should go through.
|
||||
</p>
|
||||
<p>
|
||||
Quality Alert stages define the different steps a quality alert should go through.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -816,9 +904,19 @@
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
|
||||
<div><strong><t t-esc="record.name.value"/></strong></div>
|
||||
<div><strong>Products :</strong> <t t-esc="record.product_ids.value"/></div>
|
||||
<div><strong>Operations :</strong> <t t-esc="record.picking_type_ids.value"/></div>
|
||||
<div>
|
||||
<strong>
|
||||
<t t-esc="record.name.value"/>
|
||||
</strong>
|
||||
</div>
|
||||
<div>
|
||||
<strong>Products :</strong>
|
||||
<t t-esc="record.product_ids.value"/>
|
||||
</div>
|
||||
<div>
|
||||
<strong>Operations :</strong>
|
||||
<t t-esc="record.picking_type_ids.value"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
@@ -836,39 +934,54 @@
|
||||
<field string="Quality Checks" name="check_count" widget="statinfo"/>
|
||||
</button>
|
||||
<button name="action_see_spc_control" type="object" class="oe_stat_button"
|
||||
attrs="{'invisible': ['|', ('check_count', '=', 0), ('test_type', '!=', 'measure')]}">
|
||||
<span class="fa fa-2x" data-icon="∑" style="padding-left: 10px;" role="img" aria-label="Statistics" title="Statistics"/>
|
||||
attrs="{'invisible': ['|', ('check_count', '=', 0), ('test_type', '!=', 'measure')]}">
|
||||
<span class="fa fa-2x" data-icon="∑" style="padding-left: 10px;" role="img"
|
||||
aria-label="Statistics" title="Statistics"/>
|
||||
<div class="o_field_widget o_stat_info mr4">
|
||||
<span class="o_stat_text">AVG:</span>
|
||||
<span class="o_stat_text">STD:</span>
|
||||
</div>
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_value"><field name="average"/></span>
|
||||
<span class="o_stat_value"><field name="standard_deviation"/></span>
|
||||
<span class="o_stat_value">
|
||||
<field name="average"/>
|
||||
</span>
|
||||
<span class="o_stat_value">
|
||||
<field name="standard_deviation"/>
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='instructions']" position="after">
|
||||
<page string="Message If Failure" name="message_if_failure"
|
||||
attrs="{'invisible': [('test_type', 'in', ['picture', 'instructions', 'register_consumed_materials', 'print_label'])]}">
|
||||
attrs="{'invisible': [('test_type', 'in', ['picture', 'instructions', 'register_consumed_materials', 'print_label'])]}">
|
||||
<field name="failure_message"/>
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='test_type']" position="before">
|
||||
<field name="measure_on"/>
|
||||
<field name="measure_frequency_type" string="Control Frequency"/>
|
||||
<label for="measure_frequency_value" string="" attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}"/>
|
||||
<label for="measure_frequency_value" string=""
|
||||
attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}">
|
||||
<span attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}">Every </span>
|
||||
<field name="measure_frequency_value" nolabel="1" attrs="{'invisible': [('measure_frequency_type', '!=', 'random')]}"/>
|
||||
<label for="measure_frequency_value" string="% of Operations" attrs="{'invisible': ['|', ('measure_on', '=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/>
|
||||
<label for="measure_frequency_value" string="% of Transfers" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/>
|
||||
<field name="measure_frequency_unit_value" string="Frequency" nolabel="1" attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')]}"/>
|
||||
<field name="measure_frequency_unit" attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')], 'required': [('measure_frequency_type', '=', 'periodical')]}"/>
|
||||
<span attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}">Every</span>
|
||||
<field name="measure_frequency_value" nolabel="1"
|
||||
attrs="{'invisible': [('measure_frequency_type', '!=', 'random')]}"/>
|
||||
<label for="measure_frequency_value" string="% of Operations"
|
||||
attrs="{'invisible': ['|', ('measure_on', '=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/>
|
||||
<label for="measure_frequency_value" string="% of Transfers"
|
||||
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/>
|
||||
<field name="measure_frequency_unit_value" string="Frequency" nolabel="1"
|
||||
attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')]}"/>
|
||||
<field name="measure_frequency_unit"
|
||||
attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')], 'required': [('measure_frequency_type', '=', 'periodical')]}"/>
|
||||
</div>
|
||||
<field name="is_lot_tested_fractionally" attrs="{'invisible': [('measure_on', '!=', 'move_line')]}" string="Partial Transfer Test"/>
|
||||
<label for="testing_percentage_within_lot" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}" string="Percentage"/>
|
||||
<div class="o_row" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}">
|
||||
<field name="is_lot_tested_fractionally" attrs="{'invisible': [('measure_on', '!=', 'move_line')]}"
|
||||
string="Partial Transfer Test"/>
|
||||
<label for="testing_percentage_within_lot"
|
||||
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}"
|
||||
string="Percentage"/>
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}">
|
||||
<field name="testing_percentage_within_lot" nolabel="1"/>
|
||||
<label for="testing_percentage_within_lot" string="%"/>
|
||||
</div>
|
||||
@@ -877,12 +990,15 @@
|
||||
<label for="norm" attrs="{'invisible': [('test_type', '!=', 'measure')]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('test_type', '!=', 'measure')]}">
|
||||
<field name="norm" attrs="{'required': [('test_type', '=', 'measure')]}"/>
|
||||
<field name="norm_unit" string="Unit of Measure" attrs="{'required': [('test_type', '=', 'measure')]}"/>
|
||||
<field name="norm_unit" string="Unit of Measure"
|
||||
attrs="{'required': [('test_type', '=', 'measure')]}"/>
|
||||
</div>
|
||||
<label for="tolerance_min" string="Tolerance" attrs="{'invisible': [('test_type', '!=', 'measure')]}"/>
|
||||
<div attrs="{'invisible': [('test_type', '!=', 'measure')]}" class="o_row">
|
||||
<span>from </span> <field name="tolerance_min"/>
|
||||
<span>to </span> <field name="tolerance_max"/>
|
||||
<span>from</span>
|
||||
<field name="tolerance_min"/>
|
||||
<span>to</span>
|
||||
<field name="tolerance_max"/>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
@@ -895,95 +1011,96 @@
|
||||
<field name="search_view_id" ref="quality_point_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No quality control point found
|
||||
</p><p>
|
||||
Quality control points define the quality checks which should be
|
||||
performed at each operation, for your different products.
|
||||
No quality control point found
|
||||
</p>
|
||||
<p>
|
||||
Quality control points define the quality checks which should be
|
||||
performed at each operation, for your different products.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Menu structure-->
|
||||
<menuitem
|
||||
id="menu_quality_root"
|
||||
name="Quality"
|
||||
web_icon="quality_control,static/description/icon.svg"
|
||||
sequence="150"
|
||||
groups="quality.group_quality_user"/>
|
||||
id="menu_quality_root"
|
||||
name="Quality"
|
||||
web_icon="quality_control,static/description/icon.svg"
|
||||
sequence="150"
|
||||
groups="quality.group_quality_user"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_quality_dashboard"
|
||||
name="Overview"
|
||||
action="quality_alert_team_action"
|
||||
parent="menu_quality_root"
|
||||
sequence="5"/>
|
||||
id="menu_quality_dashboard"
|
||||
name="Overview"
|
||||
action="quality_alert_team_action"
|
||||
parent="menu_quality_root"
|
||||
sequence="5"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_quality_control"
|
||||
name="Quality Control"
|
||||
parent="menu_quality_root"
|
||||
sequence="15"/>
|
||||
id="menu_quality_control"
|
||||
name="Quality Control"
|
||||
parent="menu_quality_root"
|
||||
sequence="15"/>
|
||||
<menuitem
|
||||
id="menu_quality_control_points"
|
||||
name="Control Points"
|
||||
parent="menu_quality_control"
|
||||
action="quality_point_action"
|
||||
groups="quality.group_quality_manager"
|
||||
sequence="17"/>
|
||||
id="menu_quality_control_points"
|
||||
name="Control Points"
|
||||
parent="menu_quality_control"
|
||||
action="quality_point_action"
|
||||
groups="quality.group_quality_manager"
|
||||
sequence="17"/>
|
||||
<menuitem
|
||||
id="menu_quality_checks"
|
||||
name="Quality Checks"
|
||||
action="quality_check_action_main"
|
||||
parent="menu_quality_control"
|
||||
sequence="18"/>
|
||||
id="menu_quality_checks"
|
||||
name="Quality Checks"
|
||||
action="quality_check_action_main"
|
||||
parent="menu_quality_control"
|
||||
sequence="18"/>
|
||||
<menuitem
|
||||
id="menu_quality_alert"
|
||||
name="Quality Alerts"
|
||||
action="quality_alert_action_check"
|
||||
parent="menu_quality_control"
|
||||
sequence="20"/>
|
||||
id="menu_quality_alert"
|
||||
name="Quality Alerts"
|
||||
action="quality_alert_action_check"
|
||||
parent="menu_quality_control"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_quality_configuration"
|
||||
name="Configuration"
|
||||
groups="quality.group_quality_manager"
|
||||
parent="menu_quality_root"
|
||||
sequence="25"/>
|
||||
id="menu_quality_configuration"
|
||||
name="Configuration"
|
||||
groups="quality.group_quality_manager"
|
||||
parent="menu_quality_root"
|
||||
sequence="25"/>
|
||||
<menuitem
|
||||
id="menu_quality_config_alert_team"
|
||||
name="Quality Teams"
|
||||
action="quality_alert_team_action_config"
|
||||
parent="menu_quality_configuration"
|
||||
sequence="5"/>
|
||||
id="menu_quality_config_alert_team"
|
||||
name="Quality Teams"
|
||||
action="quality_alert_team_action_config"
|
||||
parent="menu_quality_configuration"
|
||||
sequence="5"/>
|
||||
<menuitem
|
||||
id="menu_quality_config_alert_stage"
|
||||
name="Quality Alert Stages"
|
||||
action="quality_alert_stage_action"
|
||||
parent="menu_quality_configuration"
|
||||
groups="base.group_no_one"
|
||||
sequence="15"/>
|
||||
id="menu_quality_config_alert_stage"
|
||||
name="Quality Alert Stages"
|
||||
action="quality_alert_stage_action"
|
||||
parent="menu_quality_configuration"
|
||||
groups="base.group_no_one"
|
||||
sequence="15"/>
|
||||
<menuitem
|
||||
id="menu_config_quality_tags"
|
||||
name="Quality Tags"
|
||||
groups="base.group_no_one"
|
||||
action="quality_tag_action"
|
||||
parent="menu_quality_configuration"
|
||||
sequence="25"/>
|
||||
id="menu_config_quality_tags"
|
||||
name="Quality Tags"
|
||||
groups="base.group_no_one"
|
||||
action="quality_tag_action"
|
||||
parent="menu_quality_configuration"
|
||||
sequence="25"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_quality_reporting"
|
||||
name="Reporting"
|
||||
groups="quality.group_quality_manager"
|
||||
parent="menu_quality_root"
|
||||
sequence="20"/>
|
||||
id="menu_quality_reporting"
|
||||
name="Reporting"
|
||||
groups="quality.group_quality_manager"
|
||||
parent="menu_quality_root"
|
||||
sequence="20"/>
|
||||
<menuitem
|
||||
id="menu_quality_alert_report"
|
||||
action="quality_alert_action_report"
|
||||
parent="menu_quality_reporting"
|
||||
sequence="6"/>
|
||||
id="menu_quality_alert_report"
|
||||
action="quality_alert_action_report"
|
||||
parent="menu_quality_reporting"
|
||||
sequence="6"/>
|
||||
<menuitem
|
||||
id="menu_quality_check_report"
|
||||
action="quality_check_action_report"
|
||||
parent="menu_quality_reporting"
|
||||
sequence="5"/>
|
||||
id="menu_quality_check_report"
|
||||
action="quality_check_action_report"
|
||||
parent="menu_quality_reporting"
|
||||
sequence="5"/>
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user