mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
mrp_work_hierachical: pre-commit execution
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
# © 2016 Akretion (http://www.akretion.com)
|
||||||
# David BEAL <david.beal@akretion.com>
|
# David BEAL <david.beal@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|||||||
23
mrp_workcenter_hierarchical/__manifest__.py
Normal file
23
mrp_workcenter_hierarchical/__manifest__.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# © 2016 Akretion (http://www.akretion.com)
|
||||||
|
# David BEAL <david.beal@akretion.com>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MRP Workcenter Hierarchical",
|
||||||
|
"version": "14.0.0.0.0",
|
||||||
|
"author": "Akretion,Odoo Community Association (OCA)",
|
||||||
|
"summary": "Organise Workcenters by section",
|
||||||
|
"category": "Manufacturing",
|
||||||
|
"depends": [
|
||||||
|
"mrp",
|
||||||
|
],
|
||||||
|
"website": "https://github.com/OCA/manufacture",
|
||||||
|
"data": [
|
||||||
|
"views/workcenter_view.xml",
|
||||||
|
],
|
||||||
|
"demo": [
|
||||||
|
"data/mrp_demo.xml",
|
||||||
|
],
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"installable": True,
|
||||||
|
}
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
|
||||||
# David BEAL <david.beal@akretion.com>
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'MRP Workcenter Hierarchical',
|
|
||||||
'version': '9.0.1.0.0',
|
|
||||||
'author': 'Akretion,Odoo Community Association (OCA)',
|
|
||||||
'summary': "Organise Workcenters by section",
|
|
||||||
'category': 'Manufacturing',
|
|
||||||
'depends': [
|
|
||||||
'mrp_operations',
|
|
||||||
],
|
|
||||||
'website': 'https://github.com/OCA/manufacture',
|
|
||||||
'data': [
|
|
||||||
'views/workcenter_view.xml',
|
|
||||||
],
|
|
||||||
'demo': [
|
|
||||||
'data/mrp_demo.xml',
|
|
||||||
],
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
'installable': True,
|
|
||||||
'auto_install': False,
|
|
||||||
'application': False,
|
|
||||||
}
|
|
||||||
@@ -1,96 +1,96 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data noupdate="0">
|
<data noupdate="0">
|
||||||
<record id="mrp_workcenter_top" model="mrp.workcenter">
|
<record id="mrp_workcenter_top" model="mrp.workcenter">
|
||||||
<field name="name">Assembly 1</field>
|
<field name="name">Assembly 1</field>
|
||||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
<field name="calendar_id" ref="resource.timesheet_group1" />
|
||||||
<field name="capacity_per_cycle">5</field>
|
<field name="capacity_per_cycle">5</field>
|
||||||
<field name="time_cycle">1</field>
|
<field name="time_cycle">1</field>
|
||||||
<field name="time_start">0.1</field>
|
<field name="time_start">0.1</field>
|
||||||
<field name="time_stop">0.1</field>
|
<field name="time_stop">0.1</field>
|
||||||
<field name="time_efficiency">0.87</field>
|
<field name="time_efficiency">0.87</field>
|
||||||
<field name="product_id" ref="product.product_assembly"/>
|
<field name="product_id" ref="product.product_assembly" />
|
||||||
<field name="costs_hour">0.1</field>
|
<field name="costs_hour">0.1</field>
|
||||||
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours"/>
|
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours" />
|
||||||
<field name="costs_cycle">0.05</field>
|
<field name="costs_cycle">0.05</field>
|
||||||
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle"/>
|
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle" />
|
||||||
</record>
|
</record>
|
||||||
<record id="mrp_workcenter_2" model="mrp.workcenter">
|
<record id="mrp_workcenter_2" model="mrp.workcenter">
|
||||||
<field name="name">Assembly workshop 2</field>
|
<field name="name">Assembly workshop 2</field>
|
||||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
<field name="calendar_id" ref="resource.timesheet_group1" />
|
||||||
<field name="capacity_per_cycle">5</field>
|
<field name="capacity_per_cycle">5</field>
|
||||||
<field name="time_cycle">1</field>
|
<field name="time_cycle">1</field>
|
||||||
<field name="time_start">0.1</field>
|
<field name="time_start">0.1</field>
|
||||||
<field name="time_stop">0.1</field>
|
<field name="time_stop">0.1</field>
|
||||||
<field name="time_efficiency">0.87</field>
|
<field name="time_efficiency">0.87</field>
|
||||||
<field name="product_id" ref="product.product_assembly"/>
|
<field name="product_id" ref="product.product_assembly" />
|
||||||
<field name="costs_hour">0.1</field>
|
<field name="costs_hour">0.1</field>
|
||||||
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours"/>
|
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours" />
|
||||||
<field name="costs_cycle">0.05</field>
|
<field name="costs_cycle">0.05</field>
|
||||||
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle"/>
|
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle" />
|
||||||
<field name="parent_id" ref="mrp_workcenter_top"/>
|
<field name="parent_id" ref="mrp_workcenter_top" />
|
||||||
</record>
|
</record>
|
||||||
<record id="mrp_workcenter_A" model="mrp.workcenter">
|
<record id="mrp_workcenter_A" model="mrp.workcenter">
|
||||||
<field name="name">Assembly A</field>
|
<field name="name">Assembly A</field>
|
||||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
<field name="calendar_id" ref="resource.timesheet_group1" />
|
||||||
<field name="capacity_per_cycle">5</field>
|
<field name="capacity_per_cycle">5</field>
|
||||||
<field name="time_cycle">1</field>
|
<field name="time_cycle">1</field>
|
||||||
<field name="time_start">0.1</field>
|
<field name="time_start">0.1</field>
|
||||||
<field name="time_stop">0.1</field>
|
<field name="time_stop">0.1</field>
|
||||||
<field name="time_efficiency">0.87</field>
|
<field name="time_efficiency">0.87</field>
|
||||||
<field name="product_id" ref="product.product_assembly"/>
|
<field name="product_id" ref="product.product_assembly" />
|
||||||
<field name="costs_hour">0.1</field>
|
<field name="costs_hour">0.1</field>
|
||||||
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours"/>
|
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours" />
|
||||||
<field name="costs_cycle">0.05</field>
|
<field name="costs_cycle">0.05</field>
|
||||||
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle"/>
|
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle" />
|
||||||
<field name="parent_id" ref="mrp_workcenter_2"/>
|
<field name="parent_id" ref="mrp_workcenter_2" />
|
||||||
</record>
|
</record>
|
||||||
<record id="mrp_workcenter_B" model="mrp.workcenter">
|
<record id="mrp_workcenter_B" model="mrp.workcenter">
|
||||||
<field name="name">Assembly B</field>
|
<field name="name">Assembly B</field>
|
||||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
<field name="calendar_id" ref="resource.timesheet_group1" />
|
||||||
<field name="capacity_per_cycle">5</field>
|
<field name="capacity_per_cycle">5</field>
|
||||||
<field name="time_cycle">1</field>
|
<field name="time_cycle">1</field>
|
||||||
<field name="time_start">0.1</field>
|
<field name="time_start">0.1</field>
|
||||||
<field name="time_stop">0.1</field>
|
<field name="time_stop">0.1</field>
|
||||||
<field name="time_efficiency">0.87</field>
|
<field name="time_efficiency">0.87</field>
|
||||||
<field name="product_id" ref="product.product_assembly"/>
|
<field name="product_id" ref="product.product_assembly" />
|
||||||
<field name="costs_hour">0.1</field>
|
<field name="costs_hour">0.1</field>
|
||||||
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours"/>
|
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours" />
|
||||||
<field name="costs_cycle">0.05</field>
|
<field name="costs_cycle">0.05</field>
|
||||||
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle"/>
|
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle" />
|
||||||
<field name="parent_id" ref="mrp_workcenter_2"/>
|
<field name="parent_id" ref="mrp_workcenter_2" />
|
||||||
</record>
|
</record>
|
||||||
<record id="mrp_workcenter_C" model="mrp.workcenter">
|
<record id="mrp_workcenter_C" model="mrp.workcenter">
|
||||||
<field name="name">Assembly C</field>
|
<field name="name">Assembly C</field>
|
||||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
<field name="calendar_id" ref="resource.timesheet_group1" />
|
||||||
<field name="capacity_per_cycle">5</field>
|
<field name="capacity_per_cycle">5</field>
|
||||||
<field name="time_cycle">1</field>
|
<field name="time_cycle">1</field>
|
||||||
<field name="time_start">0.1</field>
|
<field name="time_start">0.1</field>
|
||||||
<field name="time_stop">0.1</field>
|
<field name="time_stop">0.1</field>
|
||||||
<field name="time_efficiency">0.87</field>
|
<field name="time_efficiency">0.87</field>
|
||||||
<field name="product_id" ref="product.product_assembly"/>
|
<field name="product_id" ref="product.product_assembly" />
|
||||||
<field name="costs_hour">0.1</field>
|
<field name="costs_hour">0.1</field>
|
||||||
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours"/>
|
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours" />
|
||||||
<field name="costs_cycle">0.05</field>
|
<field name="costs_cycle">0.05</field>
|
||||||
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle"/>
|
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle" />
|
||||||
<field name="parent_id" ref="mrp.mrp_workcenter_0"/>
|
<field name="parent_id" ref="mrp.mrp_workcenter_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="mrp_workcenter_E" model="mrp.workcenter">
|
<record id="mrp_workcenter_E" model="mrp.workcenter">
|
||||||
<field name="name">Assembly E</field>
|
<field name="name">Assembly E</field>
|
||||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
<field name="calendar_id" ref="resource.timesheet_group1" />
|
||||||
<field name="capacity_per_cycle">5</field>
|
<field name="capacity_per_cycle">5</field>
|
||||||
<field name="time_cycle">1</field>
|
<field name="time_cycle">1</field>
|
||||||
<field name="time_start">0.1</field>
|
<field name="time_start">0.1</field>
|
||||||
<field name="time_stop">0.1</field>
|
<field name="time_stop">0.1</field>
|
||||||
<field name="time_efficiency">0.87</field>
|
<field name="time_efficiency">0.87</field>
|
||||||
<field name="product_id" ref="product.product_assembly"/>
|
<field name="product_id" ref="product.product_assembly" />
|
||||||
<field name="costs_hour">0.1</field>
|
<field name="costs_hour">0.1</field>
|
||||||
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours"/>
|
<field name="costs_hour_account_id" ref="mrp.account_assembly_hours" />
|
||||||
<field name="costs_cycle">0.05</field>
|
<field name="costs_cycle">0.05</field>
|
||||||
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle"/>
|
<field name="costs_cycle_account_id" ref="mrp.account_assembly_cycle" />
|
||||||
</record>
|
</record>
|
||||||
<record id="mrp.mrp_workcenter_0" model="mrp.workcenter">
|
<record id="mrp.mrp_workcenter_0" model="mrp.workcenter">
|
||||||
<field name="parent_id" ref="mrp_workcenter_top"/>
|
<field name="parent_id" ref="mrp_workcenter_top" />
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
# © 2016 Akretion (http://www.akretion.com)
|
||||||
# David BEAL <david.beal@akretion.com>
|
# David BEAL <david.beal@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
# © 2016 Akretion (http://www.akretion.com)
|
||||||
# David BEAL <david.beal@akretion.com>
|
# David BEAL <david.beal@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
@@ -7,30 +6,30 @@ from openerp import api, fields, models
|
|||||||
|
|
||||||
|
|
||||||
class MrpWorkcenter(models.Model):
|
class MrpWorkcenter(models.Model):
|
||||||
_inherit = 'mrp.workcenter'
|
_inherit = "mrp.workcenter"
|
||||||
_order = 'parent_left'
|
_order = "parent_left"
|
||||||
_parent_store = True
|
_parent_store = True
|
||||||
|
|
||||||
parent_id = fields.Many2one('mrp.workcenter', string='Parent')
|
parent_id = fields.Many2one("mrp.workcenter", string="Parent")
|
||||||
child_ids = fields.One2many(
|
child_ids = fields.One2many("mrp.workcenter", "parent_id", string="Children")
|
||||||
'mrp.workcenter',
|
|
||||||
'parent_id',
|
|
||||||
string='Children')
|
|
||||||
parent_level_1_id = fields.Many2one(
|
parent_level_1_id = fields.Many2one(
|
||||||
'mrp.workcenter',
|
"mrp.workcenter",
|
||||||
compute='_compute_parent_level',
|
compute="_compute_parent_level",
|
||||||
string='Parent Level 1',
|
string="Parent Level 1",
|
||||||
store=True)
|
store=True,
|
||||||
|
)
|
||||||
parent_level_2_id = fields.Many2one(
|
parent_level_2_id = fields.Many2one(
|
||||||
'mrp.workcenter',
|
"mrp.workcenter",
|
||||||
compute='_compute_parent_level',
|
compute="_compute_parent_level",
|
||||||
string='Parent Level 2',
|
string="Parent Level 2",
|
||||||
store=True)
|
store=True,
|
||||||
|
)
|
||||||
parent_level_3_id = fields.Many2one(
|
parent_level_3_id = fields.Many2one(
|
||||||
'mrp.workcenter',
|
"mrp.workcenter",
|
||||||
compute='_compute_parent_level',
|
compute="_compute_parent_level",
|
||||||
string='Parent Level 3',
|
string="Parent Level 3",
|
||||||
store=True)
|
store=True,
|
||||||
|
)
|
||||||
parent_left = fields.Integer(select=True)
|
parent_left = fields.Integer(select=True)
|
||||||
parent_right = fields.Integer(select=True)
|
parent_right = fields.Integer(select=True)
|
||||||
|
|
||||||
@@ -45,18 +44,17 @@ class MrpWorkcenter(models.Model):
|
|||||||
return ids
|
return ids
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
@api.depends('parent_id.parent_id.parent_id', 'child_ids')
|
@api.depends("parent_id.parent_id.parent_id", "child_ids")
|
||||||
def _compute_parent_level(self):
|
def _compute_parent_level(self):
|
||||||
def get_next_level(parent_ids, workcenter):
|
def get_next_level(parent_ids, workcenter):
|
||||||
return parent_ids and parent_ids.pop(0) or (
|
return (
|
||||||
workcenter.child_ids and workcenter.id
|
parent_ids
|
||||||
or workcenter.parent_id.id)
|
and parent_ids.pop(0)
|
||||||
|
or (workcenter.child_ids and workcenter.id or workcenter.parent_id.id)
|
||||||
|
)
|
||||||
|
|
||||||
for workcenter in self:
|
for workcenter in self:
|
||||||
parent_ids = workcenter._get_parent_ids()
|
parent_ids = workcenter._get_parent_ids()
|
||||||
workcenter.parent_level_1_id = get_next_level(
|
workcenter.parent_level_1_id = get_next_level(parent_ids, workcenter)
|
||||||
parent_ids, workcenter)
|
workcenter.parent_level_2_id = get_next_level(parent_ids, workcenter)
|
||||||
workcenter.parent_level_2_id = get_next_level(
|
workcenter.parent_level_3_id = get_next_level(parent_ids, workcenter)
|
||||||
parent_ids, workcenter)
|
|
||||||
workcenter.parent_level_3_id = get_next_level(
|
|
||||||
parent_ids, workcenter)
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
# © 2016 Akretion (http://www.akretion.com)
|
||||||
# David BEAL <david.beal@akretion.com>
|
# David BEAL <david.beal@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
# © 2016 Akretion (http://www.akretion.com)
|
||||||
# David BEAL <david.beal@akretion.com>
|
# David BEAL <david.beal@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
@@ -8,71 +7,68 @@ from openerp.tests.common import TransactionCase
|
|||||||
|
|
||||||
class ComputeParentLevel(TransactionCase):
|
class ComputeParentLevel(TransactionCase):
|
||||||
def test_compute_parent_level0(self):
|
def test_compute_parent_level0(self):
|
||||||
workcenter = self.env['mrp.workcenter'].create({
|
workcenter = self.env["mrp.workcenter"].create(
|
||||||
'name': 'New Assembly',
|
{
|
||||||
'calendar_id': self.env.ref('resource.timesheet_group1').id,
|
"name": "New Assembly",
|
||||||
'capacity_per_cycle': 5,
|
"calendar_id": self.env.ref("resource.timesheet_group1").id,
|
||||||
'time_cycle': 1,
|
"capacity_per_cycle": 5,
|
||||||
'time_start': 0.1,
|
"time_cycle": 1,
|
||||||
'time_stop': 0.1,
|
"time_start": 0.1,
|
||||||
'time_efficiency': 0.87,
|
"time_stop": 0.1,
|
||||||
'product_id': self.env.ref('product.product_assembly').id,
|
"time_efficiency": 0.87,
|
||||||
'costs_hour': 0,
|
"product_id": self.env.ref("product.product_assembly").id,
|
||||||
'costs_hour_account_id': self.env.ref(
|
"costs_hour": 0,
|
||||||
'mrp.account_assembly_hours').id,
|
"costs_hour_account_id": self.env.ref("mrp.account_assembly_hours").id,
|
||||||
'costs_cycle': 0.05,
|
"costs_cycle": 0.05,
|
||||||
'costs_cycle_account_id': self.env.ref(
|
"costs_cycle_account_id": self.env.ref("mrp.account_assembly_cycle").id,
|
||||||
'mrp.account_assembly_cycle').id,
|
}
|
||||||
})
|
)
|
||||||
workcenter_child = self.env.ref(
|
workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_A")
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_A')
|
workcenter_child.write({"parent_id": workcenter.id})
|
||||||
workcenter_child.write({'parent_id': workcenter.id})
|
|
||||||
self.assertEqual(workcenter.parent_level_1_id, workcenter)
|
self.assertEqual(workcenter.parent_level_1_id, workcenter)
|
||||||
|
|
||||||
def test_compute_parent_level1(self):
|
def test_compute_parent_level1(self):
|
||||||
workcenter_child = self.env.ref(
|
workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_E")
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_E')
|
|
||||||
workcenter_parent = self.env.ref(
|
workcenter_parent = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_top')
|
"mrp_workcenter_hierarchical.mrp_workcenter_top"
|
||||||
workcenter_child.write({'parent_id': workcenter_parent.id})
|
)
|
||||||
|
workcenter_child.write({"parent_id": workcenter_parent.id})
|
||||||
self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent)
|
self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent)
|
||||||
|
|
||||||
def test_compute_parent_level2(self):
|
def test_compute_parent_level2(self):
|
||||||
workcenter_child = self.env.ref(
|
workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_A")
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_A')
|
|
||||||
workcenter_parent1 = self.env.ref(
|
workcenter_parent1 = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_top')
|
"mrp_workcenter_hierarchical.mrp_workcenter_top"
|
||||||
workcenter_parent2 = self.env.ref('mrp.mrp_workcenter_0')
|
)
|
||||||
workcenter_child.write({'parent_id': workcenter_parent2.id})
|
workcenter_parent2 = self.env.ref("mrp.mrp_workcenter_0")
|
||||||
self.assertEqual(
|
workcenter_child.write({"parent_id": workcenter_parent2.id})
|
||||||
workcenter_child.parent_level_2_id, workcenter_parent2)
|
self.assertEqual(workcenter_child.parent_level_2_id, workcenter_parent2)
|
||||||
self.assertEqual(
|
self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent1)
|
||||||
workcenter_child.parent_level_1_id, workcenter_parent1)
|
|
||||||
|
|
||||||
def test_compute_parent_level3(self):
|
def test_compute_parent_level3(self):
|
||||||
workcenter_child = self.env.ref(
|
workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_B")
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_B')
|
|
||||||
workcenter_parent1 = self.env.ref(
|
workcenter_parent1 = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_top')
|
"mrp_workcenter_hierarchical.mrp_workcenter_top"
|
||||||
|
)
|
||||||
workcenter_parent2 = self.env.ref(
|
workcenter_parent2 = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_2')
|
"mrp_workcenter_hierarchical.mrp_workcenter_2"
|
||||||
|
)
|
||||||
workcenter_parent3 = self.env.ref(
|
workcenter_parent3 = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_A')
|
"mrp_workcenter_hierarchical.mrp_workcenter_A"
|
||||||
workcenter_child.write({'parent_id': workcenter_parent3.id})
|
)
|
||||||
self.assertEqual(
|
workcenter_child.write({"parent_id": workcenter_parent3.id})
|
||||||
workcenter_child.parent_level_3_id, workcenter_parent3)
|
self.assertEqual(workcenter_child.parent_level_3_id, workcenter_parent3)
|
||||||
self.assertEqual(
|
self.assertEqual(workcenter_child.parent_level_2_id, workcenter_parent2)
|
||||||
workcenter_child.parent_level_2_id, workcenter_parent2)
|
self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent1)
|
||||||
self.assertEqual(
|
|
||||||
workcenter_child.parent_level_1_id, workcenter_parent1)
|
|
||||||
|
|
||||||
def test_compute_parent_level3_bis(self):
|
def test_compute_parent_level3_bis(self):
|
||||||
workcenter_child = self.env.ref(
|
workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_C")
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_C')
|
|
||||||
workcenter_parent3 = self.env.ref(
|
workcenter_parent3 = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_A')
|
"mrp_workcenter_hierarchical.mrp_workcenter_A"
|
||||||
|
)
|
||||||
workcenter_parent4 = self.env.ref(
|
workcenter_parent4 = self.env.ref(
|
||||||
'mrp_workcenter_hierarchical.mrp_workcenter_B')
|
"mrp_workcenter_hierarchical.mrp_workcenter_B"
|
||||||
workcenter_parent4.write({'parent_id': workcenter_parent3.id})
|
)
|
||||||
workcenter_child.write({'parent_id': workcenter_parent4.id})
|
workcenter_parent4.write({"parent_id": workcenter_parent3.id})
|
||||||
|
workcenter_child.write({"parent_id": workcenter_parent4.id})
|
||||||
self.assertEqual(workcenter_child.parent_id, workcenter_parent4)
|
self.assertEqual(workcenter_child.parent_id, workcenter_parent4)
|
||||||
|
|||||||
@@ -1,37 +1,44 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
<!--Workcenters-->
|
||||||
<!--Workcenters-->
|
<record id="view_mrp_workcenter_search" model="ir.ui.view">
|
||||||
|
<field name="model">mrp.workcenter</field>
|
||||||
<record id="view_mrp_workcenter_search" model="ir.ui.view">
|
<field name="inherit_id" ref="mrp.view_mrp_workcenter_search" />
|
||||||
<field name="model">mrp.workcenter</field>
|
<field name="arch" type="xml">
|
||||||
<field name="inherit_id" ref="mrp.view_mrp_workcenter_search"/>
|
<xpath expr="//group/filter" position="before">
|
||||||
<field name="arch" type="xml">
|
<filter
|
||||||
<xpath expr="//group/filter" position="before">
|
string="Parent Level 1"
|
||||||
<filter string="Parent Level 1" domain="[]" name="group_by_level_1"
|
domain="[]"
|
||||||
context="{'group_by':'parent_level_1_id'}"/>
|
name="group_by_level_1"
|
||||||
<filter string="Parent Level 2" domain="[]" name="group_by_level_2"
|
context="{'group_by':'parent_level_1_id'}"
|
||||||
context="{'group_by':'parent_level_2_id'}"/>
|
/>
|
||||||
<filter string="Parent Level 3" domain="[]" name="group_by_level_3"
|
<filter
|
||||||
context="{'group_by':'parent_level_3_id'}"/>
|
string="Parent Level 2"
|
||||||
</xpath>
|
domain="[]"
|
||||||
</field>
|
name="group_by_level_2"
|
||||||
</record>
|
context="{'group_by':'parent_level_2_id'}"
|
||||||
|
/>
|
||||||
<record id="mrp_workcenter_view" model="ir.ui.view">
|
<filter
|
||||||
<field name="model">mrp.workcenter</field>
|
string="Parent Level 3"
|
||||||
<field name="inherit_id" ref="mrp.mrp_workcenter_view"/>
|
domain="[]"
|
||||||
<field name="arch" type="xml">
|
name="group_by_level_3"
|
||||||
<field name="active" position="after">
|
context="{'group_by':'parent_level_3_id'}"
|
||||||
<field name="parent_id"/>
|
/>
|
||||||
</field>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="mrp_workcenter_view" model="ir.ui.view">
|
||||||
<record id="mrp.mrp_workcenter_action" model="ir.actions.act_window">
|
<field name="model">mrp.workcenter</field>
|
||||||
<field name="context">{'search_default_group_by_level_1': 1}</field>
|
<field name="inherit_id" ref="mrp.mrp_workcenter_view" />
|
||||||
</record>
|
<field name="arch" type="xml">
|
||||||
|
<field name="active" position="after">
|
||||||
|
<field name="parent_id" />
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<record id="mrp.mrp_workcenter_action" model="ir.actions.act_window">
|
||||||
|
<field name="context">{'search_default_group_by_level_1': 1}</field>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../../mrp_workcenter_hierarchical
|
||||||
6
setup/mrp_workcenter_hierarchical/setup.py
Normal file
6
setup/mrp_workcenter_hierarchical/setup.py
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import setuptools
|
||||||
|
|
||||||
|
setuptools.setup(
|
||||||
|
setup_requires=['setuptools-odoo'],
|
||||||
|
odoo_addon=True,
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user