Merge PR #1120 into 14.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2023-10-31 09:11:38 +00:00
31 changed files with 653 additions and 691 deletions

View File

@@ -1,8 +1,7 @@
# Do NOT update manually; changes here will be overwritten by Copier
_commit: v1.14.2
_commit: v1.17.2
_src_path: gh:oca/oca-addons-repo-template
ci: GitHub
dependency_installation_mode: PIP
generate_requirements_txt: true
github_check_license: true
github_ci_extra_env: {}
@@ -11,6 +10,7 @@ github_enable_makepot: true
github_enable_stale_action: true
github_enforce_dev_status_compatibility: true
include_wkhtmltopdf: false
odoo_test_flavor: Both
odoo_version: 14.0
org_name: Odoo Community Association (OCA)
org_slug: OCA
@@ -19,6 +19,4 @@ repo_description: Odoo modules related to Manufacturing
repo_name: Odoo Manufacturing Modules
repo_slug: manufacture
repo_website: https://github.com/OCA/manufacture
travis_apt_packages: []
travis_apt_sources: []

View File

@@ -22,6 +22,7 @@ globals:
odoo: readonly
openerp: readonly
owl: readonly
luxon: readonly
# Styling is handled by Prettier, so we only need to enable AST rules;
# see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890

View File

@@ -13,8 +13,10 @@ jobs:
pre-commit:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-python@v2
with:
python-version: "3.11"
- name: Get python version
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
- uses: actions/cache@v1
@@ -25,6 +27,15 @@ jobs:
run: pip install pre-commit
- name: Run pre-commit
run: pre-commit run --all-files --show-diff-on-failure --color=always
env:
# Consider valid a PR that changes README fragments but doesn't
# change the README.rst file itself. It's not really a problem
# because the bot will update it anyway after merge. This way, we
# lower the barrier for functional contributors that want to fix the
# readme fragments, while still letting developers get README
# auto-generated (which also helps functionals when using runboat).
# DOCS https://pre-commit.com/#temporarily-disabling-hooks
SKIP: oca-gen-addon-readme
- name: Check that all files generated by pre-commit are in git
run: |
newfiles="$(git ls-files --others --exclude-from=.gitignore)"

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
name: Detect unreleased dependencies
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- run: |
for reqfile in requirements.txt test-requirements.txt ; do
if [ -f ${reqfile} ] ; then
@@ -36,10 +36,10 @@ jobs:
matrix:
include:
- container: ghcr.io/oca/oca-ci/py3.6-odoo14.0:latest
makepot: "true"
name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.6-ocb14.0:latest
name: test with OCB
makepot: "true"
services:
postgres:
image: postgres:9.6
@@ -50,7 +50,7 @@ jobs:
ports:
- 5432:5432
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
persist-credentials: false
- name: Install addons and dependencies

View File

@@ -12,6 +12,8 @@ exclude: |
/static/(src/)?lib/|
# Repos using Sphinx to generate docs don't need prettying
^docs/_templates/.*\.html$|
# Don't bother non-technical authors with formatting issues in docs
readme/.*\.(rst|md)$|
# You don't usually want a bot to modify your legal texts
(LICENSE.*|COPYING.*)
default_language_version:
@@ -33,12 +35,24 @@ repos:
language: fail
files: '[a-zA-Z0-9_]*/i18n/en\.po$'
- repo: https://github.com/oca/maintainer-tools
rev: ab1d7f6
rev: 969238e47c07d0c40573acff81d170f63245d738
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
- id: oca-fix-manifest-website
args: ["https://github.com/OCA/manufacture"]
- id: oca-gen-addon-readme
args:
- --addons-dir=.
- --branch=14.0
- --org-name=OCA
- --repo-name=manufacture
- --if-source-changed
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.25
hooks:
- id: oca-checks-odoo-module
- id: oca-checks-po
- repo: https://github.com/myint/autoflake
rev: v1.4
hooks:

View File

@@ -21,7 +21,7 @@
<field name="name">mrp.bom.line.tree.view</field>
<field name="model">mrp.bom.line</field>
<field name="arch" type="xml">
<tree string="Components" create="1" edit="1" delete="1">
<tree create="1" edit="1" delete="1">
<field name="bom_id" />
<field name="product_id" />
<field name="product_qty" />

View File

@@ -5,7 +5,7 @@
<field name="model">mrp.area</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="MRP Area">
<tree>
<field name="name" />
<field name="warehouse_id" />
<field name="company_id" groups="base.group_multi_company" />

View File

@@ -41,7 +41,7 @@
<field name="model">mrp.inventory</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="MRP Inventory" create="false">
<tree create="false">
<field name="mrp_area_id" />
<field name="company_id" groups="base.group_multi_company" />
<field name="product_id" />

View File

@@ -4,7 +4,7 @@
<field name="name">mrp.move.tree</field>
<field name="model">mrp.move</field>
<field name="arch" type="xml">
<tree string="MRP Moves">
<tree>
<field name="mrp_date" />
<field name="current_date" />
<field name="mrp_origin" />

View File

@@ -5,7 +5,7 @@
<field name="model">product.mrp.area</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Product MRP Area parameters">
<tree>
<field name="mrp_area_id" />
<field name="company_id" groups="base.group_multi_company" />
<field name="product_tmpl_id" />

View File

@@ -14,7 +14,7 @@
</p>
<group name="items" string="Items">
<field name="item_ids" nolabel="1">
<tree string="Items" nocreate="1" editable="top">
<tree nocreate="1" editable="top">
<field name="mrp_inventory_id" invisible="True" />
<field
name="warehouse_id"

View File

@@ -1,17 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data noupdate="1">
<odoo noupdate="1">
<record id="sequence_mrp_route" model="ir.sequence">
<field name="name">Routing</field>
<field name="code">mrp.routing</field>
<field name="prefix">RO/</field>
<field name="padding">5</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="company_id" eval="False" />
</record>
<record id="sequence_mrp_route" model="ir.sequence">
<field name="name">Routing</field>
<field name="code">mrp.routing</field>
<field name="prefix">RO/</field>
<field name="padding">5</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="company_id" eval="False" />
</record>
</data>
</odoo>

View File

@@ -1,116 +1,114 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="mrp_routing_workcenter_0" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="name">Manual Assembly</field>
<field name="time_cycle_manual">60</field>
<field name="sequence">5</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/assebly-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_0" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="name">Manual Assembly</field>
<field name="time_cycle_manual">60</field>
<field name="sequence">5</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/assebly-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_1" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="name">Long time assembly</field>
<field name="time_cycle_manual">180</field>
<field name="sequence">15</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/cutting-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_1" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="name">Long time assembly</field>
<field name="time_cycle_manual">180</field>
<field name="sequence">15</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/cutting-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_3" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="name">Testing</field>
<field name="time_cycle_manual">60</field>
<field name="sequence">10</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/assebly-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_3" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="name">Testing</field>
<field name="time_cycle_manual">60</field>
<field name="sequence">10</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/assebly-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_4" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_1" />
<field name="name">Packing</field>
<field name="time_cycle_manual">30</field>
<field name="sequence">5</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/cutting-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_4" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_1" />
<field name="name">Packing</field>
<field name="time_cycle_manual">30</field>
<field name="sequence">5</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/cutting-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_2" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_2" />
<field name="time_cycle_manual">120</field>
<field name="sequence">5</field>
<field name="name">Manual Assembly</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/assebly-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_2" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_2" />
<field name="time_cycle_manual">120</field>
<field name="sequence">5</field>
<field name="name">Manual Assembly</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/assebly-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_5" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="time_cycle_manual">120</field>
<field name="sequence">10</field>
<field name="name">Assembly Line 1</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/cutting-worksheet.pdf"
/>
</record>
<record id="mrp_routing_workcenter_5" model="mrp.routing.workcenter.template">
<field name="workcenter_id" ref="mrp.mrp_workcenter_3" />
<field name="time_cycle_manual">120</field>
<field name="sequence">10</field>
<field name="name">Assembly Line 1</field>
<field name="worksheet_type">pdf</field>
<field
name="worksheet"
type="base64"
file="mrp/static/img/cutting-worksheet.pdf"
/>
</record>
<record id="mrp_routing_0" model="mrp.routing">
<field name="name">Primary Assembly</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_0')])]"
/>
</record>
<record id="mrp_routing_0" model="mrp.routing">
<field name="name">Primary Assembly</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_0')])]"
/>
</record>
<record id="mrp_routing_1" model="mrp.routing">
<field name="name">Secondary Assembly</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_1'), ref('mrp_routing_workcenter_3'), ref('mrp_routing_workcenter_4')])]"
/>
</record>
<record id="mrp_routing_1" model="mrp.routing">
<field name="name">Secondary Assembly</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_1'), ref('mrp_routing_workcenter_3'), ref('mrp_routing_workcenter_4')])]"
/>
</record>
<record id="mrp_routing_2" model="mrp.routing">
<field name="name">Manual Component's Assembly</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_2')])]"
/>
</record>
<record id="mrp_routing_2" model="mrp.routing">
<field name="name">Manual Component's Assembly</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_2')])]"
/>
</record>
<record id="mrp_routing_3" model="mrp.routing">
<field name="name">Assemble Furniture</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_5')])]"
/>
</record>
<record id="mrp_routing_3" model="mrp.routing">
<field name="name">Assemble Furniture</field>
<field
name="operation_ids"
eval="[(6, 0, [ref('mrp_routing_workcenter_5')])]"
/>
</record>
</data>
</odoo>

View File

@@ -1,18 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="mrp_bom_form_view" model="ir.ui.view">
<field name="name">mrp.bom.form.view</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='operation_ids']" position="before">
<label for="routing_id" />
<field name="routing_id" />
</xpath>
</field>
</record>
<record id="mrp_bom_form_view" model="ir.ui.view">
<field name="name">mrp.bom.form.view</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='operation_ids']" position="before">
<label for="routing_id" />
<field name="routing_id" />
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -1,139 +1,137 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="mrp_routing_form_view" model="ir.ui.view">
<field name="name">mrp.routing.form</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<form string="Routing">
<sheet>
<div class="oe_button_box" name="button_box">
</div>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<div class="oe_title">
<h1>
<field name="code" />
</h1>
</div>
<record id="mrp_routing_form_view" model="ir.ui.view">
<field name="name">mrp.routing.form</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<form string="Routing">
<sheet>
<div class="oe_button_box" name="button_box">
</div>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<div class="oe_title">
<h1>
<field name="code" />
</h1>
</div>
<group>
<group>
<group>
<field name="name" />
<field name="active" invisible="1" />
</group>
<group>
<field
name="company_id"
options="{'no_create': True}"
groups="base.group_multi_company"
/>
</group>
<field name="name" />
<field name="active" invisible="1" />
</group>
<notebook>
<page string="Work Center Operations">
<field
name="operation_ids"
context="{'default_routing_id': id}"
/>
</page>
<page string="Notes">
<field name="note" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<group>
<field
name="company_id"
options="{'no_create': True}"
groups="base.group_multi_company"
/>
</group>
</group>
<notebook>
<page string="Work Center Operations">
<field
name="operation_ids"
context="{'default_routing_id': id}"
/>
</page>
<page string="Notes">
<field name="note" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="mrp_routing_tree_view" model="ir.ui.view">
<field name="name">mrp.routing.tree</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<tree string="Routing">
<field name="code" />
<field name="name" />
<field name="active" invisible="1" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="mrp_routing_tree_view" model="ir.ui.view">
<field name="name">mrp.routing.tree</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<tree>
<field name="code" />
<field name="name" />
<field name="active" invisible="1" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record id="mrp_routing_kanban_view" model="ir.ui.view">
<field name="name">mrp.routing.kanban</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="code" />
<field name="name" />
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings mt4">
<strong class="o_kanban_record_title"><span><t
t-esc="record.name.value"
/></span></strong>
</div>
<span class="badge badge-pill"><field
name="code"
/></span>
<record id="mrp_routing_kanban_view" model="ir.ui.view">
<field name="name">mrp.routing.kanban</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<field name="code" />
<field name="name" />
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings mt4">
<strong class="o_kanban_record_title"><span><t
t-esc="record.name.value"
/></span></strong>
</div>
<span class="badge badge-pill"><field
name="code"
/></span>
</div>
</t>
</templates>
</kanban>
</field>
</record>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="mrp_routing_search_view" model="ir.ui.view">
<field name="name">mrp.routing.search</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<search string="Routing">
<field
name="name"
string="Routing"
filter_domain="['|', ('name', 'ilike', self), ('code', 'ilike', self)]"
/>
<filter
name="inactive"
string="Archived"
domain="[('active', '=', False)]"
/>
</search>
</field>
</record>
<record id="mrp_routing_search_view" model="ir.ui.view">
<field name="name">mrp.routing.search</field>
<field name="model">mrp.routing</field>
<field name="arch" type="xml">
<search string="Routing">
<field
name="name"
string="Routing"
filter_domain="['|', ('name', 'ilike', self), ('code', 'ilike', self)]"
/>
<filter
name="inactive"
string="Archived"
domain="[('active', '=', False)]"
/>
</search>
</field>
</record>
<record id="mrp_routing_action" model="ir.actions.act_window">
<field name="name">Routings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.routing</field>
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" ref="mrp_routing_tree_view" />
<field name="search_view_id" ref="mrp_routing_search_view" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new routing
</p><p>
Routings define the successive operations that need to be
done to realize a Manufacturing Order. Each operation from
a Routing is done at a specific Work Center and has a specific duration.
</p>
</field>
</record>
<record id="mrp_routing_action" model="ir.actions.act_window">
<field name="name">Routings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.routing</field>
<field name="view_mode">tree,kanban,form</field>
<field name="view_id" ref="mrp_routing_tree_view" />
<field name="search_view_id" ref="mrp_routing_search_view" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new routing
</p><p>
Routings define the successive operations that need to be
done to realize a Manufacturing Order. Each operation from
a Routing is done at a specific Work Center and has a specific duration.
</p>
</field>
</record>
<menuitem
id="menu_mrp_routing_action"
action="mrp_routing_action"
parent="mrp.menu_mrp_bom"
groups="mrp.group_mrp_routings"
sequence="50"
/>
<menuitem
id="menu_mrp_routing_action"
action="mrp_routing_action"
parent="mrp.menu_mrp_bom"
groups="mrp.group_mrp_routings"
sequence="50"
/>
</data>
</odoo>

View File

@@ -1,143 +1,136 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="mrp_routing_workcenter_template_tree_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.template.tree</field>
<field name="model">mrp.routing.workcenter.template</field>
<field name="arch" type="xml">
<tree string="Template Routing Work Centers">
<field name="sequence" widget="handle" />
<field name="name" />
<field name="workcenter_id" />
<field name="routing_ids" widget="many2many_tags" />
</tree>
</field>
</record>
<record id="mrp_routing_workcenter_template_tree_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.template.tree</field>
<field name="model">mrp.routing.workcenter.template</field>
<field name="arch" type="xml">
<tree>
<field name="sequence" widget="handle" />
<field name="name" />
<field name="workcenter_id" />
<field name="routing_ids" widget="many2many_tags" />
</tree>
</field>
</record>
<record id="mrp_routing_workcenter_template_form_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.template.form</field>
<field name="model">mrp.routing.workcenter.template</field>
<field name="arch" type="xml">
<form string="Template Routing Work Centers">
<sheet>
<group>
<group name="description">
<field name="name" />
<record id="mrp_routing_workcenter_template_form_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.template.form</field>
<field name="model">mrp.routing.workcenter.template</field>
<field name="arch" type="xml">
<form string="Template Routing Work Centers">
<sheet>
<group>
<group name="description">
<field name="name" />
<field
name="workcenter_id"
context="{'default_company_id': company_id}"
/>
<field name="sequence" groups="base.group_no_one" />
<field name="on_template_change" />
</group><group name="workorder">
<field name="time_mode" widget="radio" />
<label
for="time_mode_batch"
attrs="{'invisible': [('time_mode', '=', 'manual')]}"
/>
<div attrs="{'invisible': [('time_mode', '=', 'manual')]}">
last
<field name="time_mode_batch" class="oe_inline" />
work orders
</div>
<label
for="time_cycle_manual"
attrs="{'invisible': [('time_mode', '=', 'auto')]}"
string="Default Duration"
/>
<div attrs="{'invisible': [('time_mode', '=', 'auto')]}">
<field
name="workcenter_id"
context="{'default_company_id': company_id}"
/>
<field name="sequence" groups="base.group_no_one" />
<field name="on_template_change" />
</group><group name="workorder">
<field name="time_mode" widget="radio" />
<label
for="time_mode_batch"
attrs="{'invisible': [('time_mode', '=', 'manual')]}"
/>
<div
attrs="{'invisible': [('time_mode', '=', 'manual')]}"
>
last
<field name="time_mode_batch" class="oe_inline" />
work orders
</div>
<label
for="time_cycle_manual"
attrs="{'invisible': [('time_mode', '=', 'auto')]}"
string="Default Duration"
/>
<div
attrs="{'invisible': [('time_mode', '=', 'auto')]}"
>
<field
name="time_cycle_manual"
widget="float_time"
class="oe_inline"
/> minutes
</div>
name="time_cycle_manual"
widget="float_time"
class="oe_inline"
/> minutes
</div>
<field
name="company_id"
groups="base.group_multi_company"
/>
</group>
</group>
<notebook>
<page string="Work Sheet" name="worksheet">
<group>
<field name="worksheet_type" widget="radio" />
<field
name="company_id"
groups="base.group_multi_company"
name="worksheet"
help="Upload your PDF file."
widget="pdf_viewer"
attrs="{'invisible': [('worksheet_type', '!=', 'pdf')], 'required': [('worksheet_type', '=', 'pdf')]}"
/>
<field
name="worksheet_google_slide"
placeholder="Google Slide Link"
widget="embed_viewer"
attrs="{'invisible': [('worksheet_type', '!=', 'google_slide')], 'required': [('worksheet_type', '=', 'google_slide')]}"
/>
<field
name="note"
attrs="{'invisible': [('worksheet_type', '!=', 'text')]}"
/>
</group>
</group>
<notebook>
<page string="Work Sheet" name="worksheet">
<group>
<field name="worksheet_type" widget="radio" />
<field
name="worksheet"
help="Upload your PDF file."
widget="pdf_viewer"
attrs="{'invisible': [('worksheet_type', '!=', 'pdf')], 'required': [('worksheet_type', '=', 'pdf')]}"
/>
<field
name="worksheet_google_slide"
placeholder="Google Slide Link"
widget="embed_viewer"
attrs="{'invisible': [('worksheet_type', '!=', 'google_slide')], 'required': [('worksheet_type', '=', 'google_slide')]}"
/>
<field
name="note"
attrs="{'invisible': [('worksheet_type', '!=', 'text')]}"
/>
</group>
</page>
<page string="Routings" name="routings">
<field name="routing_ids" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
</page>
<page string="Routings" name="routings">
<field name="routing_ids" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="mrp_routing_workcenter_template_search_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.template.search</field>
<field name="model">mrp.routing.workcenter.template</field>
<field name="arch" type="xml">
<search string="Template Operations">
<field name="name" />
<field name="workcenter_id" />
<field name="routing_ids" />
<filter
name="group_by_workcenter"
string="Workcenter"
context="{'group_by':'workcenter_id'}"
/>
</search>
</field>
</record>
<record id="mrp_routing_workcenter_template_search_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.template.search</field>
<field name="model">mrp.routing.workcenter.template</field>
<field name="arch" type="xml">
<search string="Template Operations">
<field name="name" />
<field name="workcenter_id" />
<field name="routing_ids" />
<filter
name="group_by_workcenter"
string="Workcenter"
context="{'group_by':'workcenter_id'}"
/>
</search>
</field>
</record>
<record
id="action_mrp_routing_workcenter_template_tree_view"
model="ir.actions.act_window"
>
<field name="name">Template Operations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.routing.workcenter.template</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_routing_workcenter_template_tree_view" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new template operation
</p><p>
Template Operation can be used to make template for operations related to bill of materials.
</p>
</field>
<field name="domain">[]</field>
</record>
<record
id="action_mrp_routing_workcenter_template_tree_view"
model="ir.actions.act_window"
>
<field name="name">Template Operations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.routing.workcenter.template</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_routing_workcenter_template_tree_view" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new template operation
</p><p>
Template Operation can be used to make template for operations related to bill of materials.
</p>
</field>
<field name="domain">[]</field>
</record>
<menuitem
id="menu_action_mrp_routing_workcenter_template_tree_view"
action="action_mrp_routing_workcenter_template_tree_view"
parent="mrp.menu_mrp_configuration"
groups="mrp.group_mrp_routings"
sequence="100"
/>
<menuitem
id="menu_action_mrp_routing_workcenter_template_tree_view"
action="action_mrp_routing_workcenter_template_tree_view"
parent="mrp.menu_mrp_configuration"
groups="mrp.group_mrp_routings"
sequence="100"
/>
</data>
</odoo>

View File

@@ -1,43 +1,41 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="mrp_routing_workcenter_tree_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.tree</field>
<field name="model">mrp.routing.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_routing_workcenter_tree_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='workcenter_id']" position="before">
<field name="template_id" force_save="1" />
<field name="on_template_change" />
<!--FIXME: Can we skip this invisible files to get correct data on onchange?-->
<field name="time_mode" invisible="1" />
<field name="time_mode_batch" invisible="1" />
<field name="time_cycle_manual" invisible="1" />
<field name="company_id" invisible="1" />
<field name="worksheet" invisible="1" />
<field name="worksheet_type" invisible="1" />
<field name="worksheet_google_slide" invisible="1" />
<field name="note" invisible="1" />
</xpath>
</field>
</record>
<record id="mrp_routing_workcenter_tree_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.tree</field>
<field name="model">mrp.routing.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_routing_workcenter_tree_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='workcenter_id']" position="before">
<field name="template_id" force_save="1" />
<field name="on_template_change" />
<!--FIXME: Can we skip this invisible files to get correct data on onchange?-->
<field name="time_mode" invisible="1" />
<field name="time_mode_batch" invisible="1" />
<field name="time_cycle_manual" invisible="1" />
<field name="company_id" invisible="1" />
<field name="worksheet" invisible="1" />
<field name="worksheet_type" invisible="1" />
<field name="worksheet_google_slide" invisible="1" />
<field name="note" invisible="1" />
</xpath>
</field>
</record>
<record id="mrp_routing_workcenter_form_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.form</field>
<field name="model">mrp.routing.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_routing_workcenter_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="before">
<field name="template_id" />
<field
name="on_template_change"
attrs="{'invisible': [('template_id', '=', False)]}"
/>
</xpath>
</field>
</record>
<record id="mrp_routing_workcenter_form_view" model="ir.ui.view">
<field name="name">mrp.routing.workcenter.form</field>
<field name="model">mrp.routing.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_routing_workcenter_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="before">
<field name="template_id" />
<field
name="on_template_change"
attrs="{'invisible': [('template_id', '=', False)]}"
/>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -1,24 +1,22 @@
<?xml version="1.0" ?>
<odoo>
<data noupdate="1">
<record id="route_subcontracting_dropshipping" model='stock.location.route'>
<field name="name">Dropship Subcontractor on Order</field>
<field name="sequence">5</field>
<field name="company_id" />
<field name="product_selectable" eval="True" />
</record>
<odoo noupdate="1">
<record id="route_subcontracting_dropshipping" model='stock.location.route'>
<field name="name">Dropship Subcontractor on Order</field>
<field name="sequence">5</field>
<field name="company_id" />
<field name="product_selectable" eval="True" />
</record>
<function
model="res.company"
name="create_missing_subcontracting_dropshipping_rules"
<function
model="res.company"
name="create_missing_subcontracting_dropshipping_rules"
/>
<function model="stock.warehouse" name="write">
<value
model="stock.warehouse"
eval="obj().env['stock.warehouse'].search([]).ids"
/>
<function model="stock.warehouse" name="write">
<value
model="stock.warehouse"
eval="obj().env['stock.warehouse'].search([]).ids"
/>
<value eval="{'subcontracting_dropshipping_to_resupply': True}" />
</function>
</data>
<value eval="{'subcontracting_dropshipping_to_resupply': True}" />
</function>
</odoo>

View File

@@ -31,7 +31,7 @@
<field name="name">mrp.tag.view.tree</field>
<field name="model">mrp.tag</field>
<field name="arch" type="xml">
<tree string="Tags" editable="bottom">
<tree editable="bottom">
<field name="name" />
<field name="color" widget="color_picker" />
</tree>

View File

@@ -6,27 +6,21 @@
Copyright 2017 Simone Rubino - Agile Business Group
Copyright 2021 Tecnativa - Carlos Roca
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data noupdate="1">
<record id="qc_test_template_category_generic" model="qc.test.category">
<field name="name">Generic</field>
</record>
<record id="qc_test_template_category_referenced" model="qc.test.category">
<field name="name">Referenced</field>
</record>
<record
forcecreate="True"
id="decimal_quality_control"
model="decimal.precision"
>
<field name="name">Quality Control</field>
<field name="digits">5</field>
</record>
<record id="seq_qc_inspection" model="ir.sequence">
<field name="name">Quality inspection</field>
<field name="code">qc.inspection</field>
<field name="prefix">QC-</field>
<field name="padding">6</field>
</record>
</data>
<odoo noupdate="1">
<record id="qc_test_template_category_generic" model="qc.test.category">
<field name="name">Generic</field>
</record>
<record id="qc_test_template_category_referenced" model="qc.test.category">
<field name="name">Referenced</field>
</record>
<record forcecreate="True" id="decimal_quality_control" model="decimal.precision">
<field name="name">Quality Control</field>
<field name="digits">5</field>
</record>
<record id="seq_qc_inspection" model="ir.sequence">
<field name="name">Quality inspection</field>
<field name="code">qc.inspection</field>
<field name="prefix">QC-</field>
<field name="padding">6</field>
</record>
</odoo>

View File

@@ -1,34 +1,32 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record model="qc.test" id="qc_test_1">
<field name="name">Generic Test (demo)</field>
<field name="type">generic</field>
<field name="active" eval="True" />
<field name="category" ref="qc_test_template_category_generic" />
</record>
<record model="qc.test.question" id="qc_test_question_1">
<field name="name">Overall quality</field>
<field name="test" ref="qc_test_1" />
<field name="type">qualitative</field>
</record>
<record model="qc.test.question.value" id="qc_test_question_value_1">
<field name="name">Good</field>
<field name="ok" eval="True" />
<field name="test_line" ref="qc_test_question_1" />
</record>
<record model="qc.test.question.value" id="qc_test_question_value_2">
<field name="name">Bad</field>
<field name="ok" eval="False" />
<field name="test_line" ref="qc_test_question_1" />
</record>
<record model="qc.test.question" id="qc_test_question_2">
<field name="name">Size</field>
<field name="test" ref="qc_test_1" />
<field name="type">quantitative</field>
<field name="min_value" eval="1.0" />
<field name="max_value" eval="10.0" />
<field name="uom_id" ref="uom.product_uom_unit" />
</record>
</data>
<odoo noupdate="1">
<record model="qc.test" id="qc_test_1">
<field name="name">Generic Test (demo)</field>
<field name="type">generic</field>
<field name="active" eval="True" />
<field name="category" ref="qc_test_template_category_generic" />
</record>
<record model="qc.test.question" id="qc_test_question_1">
<field name="name">Overall quality</field>
<field name="test" ref="qc_test_1" />
<field name="type">qualitative</field>
</record>
<record model="qc.test.question.value" id="qc_test_question_value_1">
<field name="name">Good</field>
<field name="ok" eval="True" />
<field name="test_line" ref="qc_test_question_1" />
</record>
<record model="qc.test.question.value" id="qc_test_question_value_2">
<field name="name">Bad</field>
<field name="ok" eval="False" />
<field name="test_line" ref="qc_test_question_1" />
</record>
<record model="qc.test.question" id="qc_test_question_2">
<field name="name">Size</field>
<field name="test" ref="qc_test_1" />
<field name="type">quantitative</field>
<field name="min_value" eval="1.0" />
<field name="max_value" eval="10.0" />
<field name="uom_id" ref="uom.product_uom_unit" />
</record>
</odoo>

View File

@@ -336,17 +336,11 @@ msgstr ""
#. module: quality_control_oca
#: model:ir.model.fields,help:quality_control_oca.field_qc_inspection__message_has_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_inspection__message_has_sms_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_test__message_has_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_test__message_has_sms_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_line__message_has_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_line__message_has_sms_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_product_category_line__message_has_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_product_category_line__message_has_sms_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_product_line__message_has_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_product_line__message_has_sms_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_product_template_line__message_has_error
#: model:ir.model.fields,help:quality_control_oca.field_qc_trigger_product_template_line__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ""
@@ -847,16 +841,6 @@ msgstr ""
msgid "Responsible User"
msgstr ""
#. module: quality_control_oca
#: model:ir.model.fields,field_description:quality_control_oca.field_qc_inspection__message_has_sms_error
#: model:ir.model.fields,field_description:quality_control_oca.field_qc_test__message_has_sms_error
#: model:ir.model.fields,field_description:quality_control_oca.field_qc_trigger_line__message_has_sms_error
#: model:ir.model.fields,field_description:quality_control_oca.field_qc_trigger_product_category_line__message_has_sms_error
#: model:ir.model.fields,field_description:quality_control_oca.field_qc_trigger_product_line__message_has_sms_error
#: model:ir.model.fields,field_description:quality_control_oca.field_qc_trigger_product_template_line__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: quality_control_oca
#: model_terms:ir.ui.view,arch_db:quality_control_oca.qc_inspection_search_view
msgid "Search inspection"

View File

@@ -15,7 +15,7 @@
<group name="first" position="after">
<group name="qc" string="Quality control">
<field name="qc_triggers" nolabel="1">
<tree string="Quality control triggers" editable="bottom">
<tree editable="bottom">
<field
name="trigger"
options="{'no_create': True, 'no_edit': True, 'no_open': True}"

View File

@@ -18,7 +18,7 @@
<page name="inventory" position="inside">
<group name="qc" string="Quality control">
<field name="qc_triggers" nolabel="1">
<tree string="Quality control triggers" editable="bottom">
<tree editable="bottom">
<field
name="trigger"
options="{'no_create': True, 'no_edit': True, 'no_open': True}"

View File

@@ -86,12 +86,7 @@
<notebook>
<page string="Questions">
<field name="inspection_lines" nolabel="1">
<tree
string="Inspection lines"
editable="top"
delete="false"
create="false"
>
<tree editable="top" delete="false" create="false">
<field name="name" />
<field name="question_type" />
<field name="possible_ql_values" invisible="1" />
@@ -141,7 +136,7 @@
<field name="name">qc.inspection.tree</field>
<field name="model">qc.inspection</field>
<field name="arch" type="xml">
<tree string="Inspections">
<tree>
<field name="name" />
<field name="user" />
<field name="test" />
@@ -241,7 +236,6 @@
<tree
decoration-danger="success==False"
decoration-info="success==True"
string="Inspection lines"
delete="false"
create="false"
>

View File

@@ -10,7 +10,7 @@
<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">
<tree editable="bottom">
<field name="complete_name" />
<field name="name" />
<field name="parent_id" />

View File

@@ -35,7 +35,7 @@
</group>
</group>
<field name="test_lines" nolabel="1">
<tree string="Questions">
<tree>
<field name="sequence" widget="handle" />
<field name="name" />
<field name="type" />
@@ -57,7 +57,7 @@
<field name="name">qc.test.tree</field>
<field name="model">qc.test</field>
<field name="arch" type="xml">
<tree string="Tests">
<tree>
<field name="name" />
<field name="category" />
<field name="type" />
@@ -95,7 +95,7 @@
nolabel="1"
attrs="{'required': [('type','=','qualitative')]}"
>
<tree string="Question value" editable="bottom">
<tree editable="bottom">
<field name="name" />
<field name="ok" />
</tree>

View File

@@ -26,7 +26,7 @@
<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">
<tree editable="bottom">
<field name="name" />
<field name="company_id" groups="base.group_multi_company" />
<field name="partner_selectable" />

View File

@@ -1,84 +1,76 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="view_repair_order_form" model="ir.ui.view">
<field name="name">repair.order.form.view</field>
<field name="model">repair.order</field>
<field name="inherit_id" ref="repair.view_repair_order_form" />
<field name="arch" type="xml">
<xpath
expr="//button[@name='action_created_invoice']"
position="before"
<record id="view_repair_order_form" model="ir.ui.view">
<field name="name">repair.order.form.view</field>
<field name="model">repair.order</field>
<field name="inherit_id" ref="repair.view_repair_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_created_invoice']" position="before">
<button
name="action_show_sales_order"
type="object"
class="oe_stat_button"
icon="fa-pencil-square-o"
attrs="{'invisible': [('sale_order_count', '=', 0.0)]}"
groups="sales_team.group_sale_salesman"
>
<button
name="action_show_sales_order"
type="object"
class="oe_stat_button"
icon="fa-pencil-square-o"
attrs="{'invisible': [('sale_order_count', '=', 0.0)]}"
groups="sales_team.group_sale_salesman"
>
<field
name="sale_order_count"
widget="statinfo"
string="Sale Order(s)"
/>
</button>
</xpath>
<xpath expr="//field[@name='invoice_state']" position="after">
<field name="create_sale_order" invisible="1" />
</xpath>
<xpath
expr="//button[@name='action_repair_start']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': ['|', ('create_sale_order', '=', True), '&amp;', ('state','!=','confirmed'), '!', '&amp;', ('state','=','ready'), ('invoice_method','=','b4repair')]}</attribute>
</xpath>
<xpath expr="//button[@name='action_repair_start']" position="after">
<button
name="action_create_sale_order"
type="object"
string="Create Sales Order"
attrs="{'invisible': ['|', '|', ('create_sale_order', '=', False), ('sale_order_count', '&gt;', 0), ('state','!=','confirmed')]}"
class="oe_highlight"
<field
name="sale_order_count"
widget="statinfo"
string="Sale Order(s)"
/>
</xpath>
<xpath expr="//field[@name='invoice_method']" position="attributes">
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='location_id']" position="attributes">
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='operations']//tree//field[@name='type']"
position="attributes"
>
<attribute
name="attrs"
>{'column_invisible': [('parent.create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='operations']//tree//field[@name='lot_id']"
position="attributes"
>
<attribute
name="attrs"
>{'column_invisible': [('parent.create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute
name="attrs"
>{'required': ['|', ('create_sale_order', '=', True), ('invoice_method','!=','none')]}</attribute>
</xpath>
</field>
</record>
</button>
</xpath>
<xpath expr="//field[@name='invoice_state']" position="after">
<field name="create_sale_order" invisible="1" />
</xpath>
<xpath expr="//button[@name='action_repair_start']" position="attributes">
<attribute
name="attrs"
>{'invisible': ['|', ('create_sale_order', '=', True), '&amp;', ('state','!=','confirmed'), '!', '&amp;', ('state','=','ready'), ('invoice_method','=','b4repair')]}</attribute>
</xpath>
<xpath expr="//button[@name='action_repair_start']" position="after">
<button
name="action_create_sale_order"
type="object"
string="Create Sales Order"
attrs="{'invisible': ['|', '|', ('create_sale_order', '=', False), ('sale_order_count', '&gt;', 0), ('state','!=','confirmed')]}"
class="oe_highlight"
/>
</xpath>
<xpath expr="//field[@name='invoice_method']" position="attributes">
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='location_id']" position="attributes">
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='operations']//tree//field[@name='type']"
position="attributes"
>
<attribute
name="attrs"
>{'column_invisible': [('parent.create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='operations']//tree//field[@name='lot_id']"
position="attributes"
>
<attribute
name="attrs"
>{'column_invisible': [('parent.create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute
name="attrs"
>{'required': ['|', ('create_sale_order', '=', True), ('invoice_method','!=','none')]}</attribute>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -1,54 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="view_repair_type_form" model="ir.ui.view">
<field name="name">repair.type.form.view</field>
<field name="model">repair.type</field>
<field name="inherit_id" ref="repair_type.repair_type_view_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='source_location_id']" position="before">
<field name="create_sale_order" />
</xpath>
<xpath expr="//field[@name='source_location_id']" position="attributes">
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='source_location_add_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='destination_location_add_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='source_location_remove_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='destination_location_remove_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
</field>
</record>
<record id="view_repair_type_form" model="ir.ui.view">
<field name="name">repair.type.form.view</field>
<field name="model">repair.type</field>
<field name="inherit_id" ref="repair_type.repair_type_view_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='source_location_id']" position="before">
<field name="create_sale_order" />
</xpath>
<xpath expr="//field[@name='source_location_id']" position="attributes">
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='source_location_add_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='destination_location_add_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='source_location_remove_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
<xpath
expr="//field[@name='destination_location_remove_part_id']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('create_sale_order', '=', True)]}</attribute>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -1,29 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="view_sale_order_form" model="ir.ui.view">
<field name="name">sale.order.form.view</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_view_invoice']" position="before">
<button
name="action_show_repair_order"
type="object"
class="oe_stat_button"
icon="fa-pencil-square-o"
attrs="{'invisible': [('repair_order_count', '=', 0.0)]}"
>
<field
name="repair_order_count"
widget="statinfo"
string="Repair Order(s)"
/>
</button>
</xpath>
</field>
</record>
<record id="view_sale_order_form" model="ir.ui.view">
<field name="name">sale.order.form.view</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_view_invoice']" position="before">
<button
name="action_show_repair_order"
type="object"
class="oe_stat_button"
icon="fa-pencil-square-o"
attrs="{'invisible': [('repair_order_count', '=', 0.0)]}"
>
<field
name="repair_order_count"
widget="statinfo"
string="Repair Order(s)"
/>
</button>
</xpath>
</field>
</record>
</data>
</odoo>