diff --git a/mrp_workcenter_hierarchical/__init__.py b/mrp_workcenter_hierarchical/__init__.py index d8dfddcf3..f68a77f44 100644 --- a/mrp_workcenter_hierarchical/__init__.py +++ b/mrp_workcenter_hierarchical/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2016 Akretion (http://www.akretion.com) # David BEAL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/mrp_workcenter_hierarchical/__manifest__.py b/mrp_workcenter_hierarchical/__manifest__.py new file mode 100644 index 000000000..f8903196d --- /dev/null +++ b/mrp_workcenter_hierarchical/__manifest__.py @@ -0,0 +1,23 @@ +# © 2016 Akretion (http://www.akretion.com) +# David BEAL +# 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, +} diff --git a/mrp_workcenter_hierarchical/__openerp__.py b/mrp_workcenter_hierarchical/__openerp__.py deleted file mode 100644 index 44f8231c0..000000000 --- a/mrp_workcenter_hierarchical/__openerp__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2016 Akretion (http://www.akretion.com) -# David BEAL -# 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, -} diff --git a/mrp_workcenter_hierarchical/data/mrp_demo.xml b/mrp_workcenter_hierarchical/data/mrp_demo.xml index ab9f5fac7..f39fc8fd8 100644 --- a/mrp_workcenter_hierarchical/data/mrp_demo.xml +++ b/mrp_workcenter_hierarchical/data/mrp_demo.xml @@ -1,96 +1,96 @@ - + Assembly 1 - + 5 1 0.1 0.1 0.87 - + 0.1 - + 0.05 - + Assembly workshop 2 - + 5 1 0.1 0.1 0.87 - + 0.1 - + 0.05 - - + + Assembly A - + 5 1 0.1 0.1 0.87 - + 0.1 - + 0.05 - - + + Assembly B - + 5 1 0.1 0.1 0.87 - + 0.1 - + 0.05 - - + + Assembly C - + 5 1 0.1 0.1 0.87 - + 0.1 - + 0.05 - - + + Assembly E - + 5 1 0.1 0.1 0.87 - + 0.1 - + 0.05 - + - + diff --git a/mrp_workcenter_hierarchical/model/__init__.py b/mrp_workcenter_hierarchical/model/__init__.py index f605ba5bb..ec36a0176 100644 --- a/mrp_workcenter_hierarchical/model/__init__.py +++ b/mrp_workcenter_hierarchical/model/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2016 Akretion (http://www.akretion.com) # David BEAL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/mrp_workcenter_hierarchical/model/workcenter.py b/mrp_workcenter_hierarchical/model/workcenter.py index bdc47f4f9..35dc12000 100644 --- a/mrp_workcenter_hierarchical/model/workcenter.py +++ b/mrp_workcenter_hierarchical/model/workcenter.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2016 Akretion (http://www.akretion.com) # David BEAL # 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): - _inherit = 'mrp.workcenter' - _order = 'parent_left' + _inherit = "mrp.workcenter" + _order = "parent_left" _parent_store = True - parent_id = fields.Many2one('mrp.workcenter', string='Parent') - child_ids = fields.One2many( - 'mrp.workcenter', - 'parent_id', - string='Children') + parent_id = fields.Many2one("mrp.workcenter", string="Parent") + child_ids = fields.One2many("mrp.workcenter", "parent_id", string="Children") parent_level_1_id = fields.Many2one( - 'mrp.workcenter', - compute='_compute_parent_level', - string='Parent Level 1', - store=True) + "mrp.workcenter", + compute="_compute_parent_level", + string="Parent Level 1", + store=True, + ) parent_level_2_id = fields.Many2one( - 'mrp.workcenter', - compute='_compute_parent_level', - string='Parent Level 2', - store=True) + "mrp.workcenter", + compute="_compute_parent_level", + string="Parent Level 2", + store=True, + ) parent_level_3_id = fields.Many2one( - 'mrp.workcenter', - compute='_compute_parent_level', - string='Parent Level 3', - store=True) + "mrp.workcenter", + compute="_compute_parent_level", + string="Parent Level 3", + store=True, + ) parent_left = fields.Integer(select=True) parent_right = fields.Integer(select=True) @@ -45,18 +44,17 @@ class MrpWorkcenter(models.Model): return ids @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 get_next_level(parent_ids, workcenter): - return parent_ids and parent_ids.pop(0) or ( - workcenter.child_ids and workcenter.id - or workcenter.parent_id.id) + return ( + parent_ids + and parent_ids.pop(0) + or (workcenter.child_ids and workcenter.id or workcenter.parent_id.id) + ) for workcenter in self: parent_ids = workcenter._get_parent_ids() - workcenter.parent_level_1_id = get_next_level( - parent_ids, workcenter) - workcenter.parent_level_2_id = get_next_level( - parent_ids, workcenter) - workcenter.parent_level_3_id = get_next_level( - parent_ids, workcenter) + workcenter.parent_level_1_id = get_next_level(parent_ids, workcenter) + workcenter.parent_level_2_id = get_next_level(parent_ids, workcenter) + workcenter.parent_level_3_id = get_next_level(parent_ids, workcenter) diff --git a/mrp_workcenter_hierarchical/tests/__init__.py b/mrp_workcenter_hierarchical/tests/__init__.py index ccccde2c7..0a9f921b9 100644 --- a/mrp_workcenter_hierarchical/tests/__init__.py +++ b/mrp_workcenter_hierarchical/tests/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2016 Akretion (http://www.akretion.com) # David BEAL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/mrp_workcenter_hierarchical/tests/test_compute_level.py b/mrp_workcenter_hierarchical/tests/test_compute_level.py index 3446c9376..c711fdf2b 100644 --- a/mrp_workcenter_hierarchical/tests/test_compute_level.py +++ b/mrp_workcenter_hierarchical/tests/test_compute_level.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2016 Akretion (http://www.akretion.com) # David BEAL # 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): def test_compute_parent_level0(self): - workcenter = self.env['mrp.workcenter'].create({ - 'name': 'New Assembly', - 'calendar_id': self.env.ref('resource.timesheet_group1').id, - 'capacity_per_cycle': 5, - 'time_cycle': 1, - 'time_start': 0.1, - 'time_stop': 0.1, - 'time_efficiency': 0.87, - 'product_id': self.env.ref('product.product_assembly').id, - 'costs_hour': 0, - 'costs_hour_account_id': self.env.ref( - 'mrp.account_assembly_hours').id, - 'costs_cycle': 0.05, - 'costs_cycle_account_id': self.env.ref( - 'mrp.account_assembly_cycle').id, - }) - workcenter_child = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_A') - workcenter_child.write({'parent_id': workcenter.id}) + workcenter = self.env["mrp.workcenter"].create( + { + "name": "New Assembly", + "calendar_id": self.env.ref("resource.timesheet_group1").id, + "capacity_per_cycle": 5, + "time_cycle": 1, + "time_start": 0.1, + "time_stop": 0.1, + "time_efficiency": 0.87, + "product_id": self.env.ref("product.product_assembly").id, + "costs_hour": 0, + "costs_hour_account_id": self.env.ref("mrp.account_assembly_hours").id, + "costs_cycle": 0.05, + "costs_cycle_account_id": self.env.ref("mrp.account_assembly_cycle").id, + } + ) + workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_A") + workcenter_child.write({"parent_id": workcenter.id}) self.assertEqual(workcenter.parent_level_1_id, workcenter) def test_compute_parent_level1(self): - workcenter_child = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_E') + workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_E") workcenter_parent = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_top') - workcenter_child.write({'parent_id': workcenter_parent.id}) + "mrp_workcenter_hierarchical.mrp_workcenter_top" + ) + workcenter_child.write({"parent_id": workcenter_parent.id}) self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent) def test_compute_parent_level2(self): - workcenter_child = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_A') + workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_A") workcenter_parent1 = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_top') - workcenter_parent2 = self.env.ref('mrp.mrp_workcenter_0') - workcenter_child.write({'parent_id': workcenter_parent2.id}) - self.assertEqual( - workcenter_child.parent_level_2_id, workcenter_parent2) - self.assertEqual( - workcenter_child.parent_level_1_id, workcenter_parent1) + "mrp_workcenter_hierarchical.mrp_workcenter_top" + ) + workcenter_parent2 = self.env.ref("mrp.mrp_workcenter_0") + workcenter_child.write({"parent_id": workcenter_parent2.id}) + self.assertEqual(workcenter_child.parent_level_2_id, workcenter_parent2) + self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent1) def test_compute_parent_level3(self): - workcenter_child = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_B') + workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_B") workcenter_parent1 = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_top') + "mrp_workcenter_hierarchical.mrp_workcenter_top" + ) workcenter_parent2 = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_2') + "mrp_workcenter_hierarchical.mrp_workcenter_2" + ) workcenter_parent3 = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_A') - workcenter_child.write({'parent_id': workcenter_parent3.id}) - self.assertEqual( - workcenter_child.parent_level_3_id, workcenter_parent3) - self.assertEqual( - workcenter_child.parent_level_2_id, workcenter_parent2) - self.assertEqual( - workcenter_child.parent_level_1_id, workcenter_parent1) + "mrp_workcenter_hierarchical.mrp_workcenter_A" + ) + workcenter_child.write({"parent_id": workcenter_parent3.id}) + self.assertEqual(workcenter_child.parent_level_3_id, workcenter_parent3) + self.assertEqual(workcenter_child.parent_level_2_id, workcenter_parent2) + self.assertEqual(workcenter_child.parent_level_1_id, workcenter_parent1) def test_compute_parent_level3_bis(self): - workcenter_child = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_C') + workcenter_child = self.env.ref("mrp_workcenter_hierarchical.mrp_workcenter_C") workcenter_parent3 = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_A') + "mrp_workcenter_hierarchical.mrp_workcenter_A" + ) workcenter_parent4 = self.env.ref( - 'mrp_workcenter_hierarchical.mrp_workcenter_B') - workcenter_parent4.write({'parent_id': workcenter_parent3.id}) - workcenter_child.write({'parent_id': workcenter_parent4.id}) + "mrp_workcenter_hierarchical.mrp_workcenter_B" + ) + workcenter_parent4.write({"parent_id": workcenter_parent3.id}) + workcenter_child.write({"parent_id": workcenter_parent4.id}) self.assertEqual(workcenter_child.parent_id, workcenter_parent4) diff --git a/mrp_workcenter_hierarchical/views/workcenter_view.xml b/mrp_workcenter_hierarchical/views/workcenter_view.xml index 0b7473f3b..15314e909 100644 --- a/mrp_workcenter_hierarchical/views/workcenter_view.xml +++ b/mrp_workcenter_hierarchical/views/workcenter_view.xml @@ -1,37 +1,44 @@ - + - - - - - mrp.workcenter - - - - - - - - - - - - mrp.workcenter - - - - - - - - - - {'search_default_group_by_level_1': 1} - - + + + mrp.workcenter + + + + + + + + + + + mrp.workcenter + + + + + + + + + {'search_default_group_by_level_1': 1} + diff --git a/setup/mrp_workcenter_hierarchical/odoo/addons/mrp_workcenter_hierarchical b/setup/mrp_workcenter_hierarchical/odoo/addons/mrp_workcenter_hierarchical new file mode 120000 index 000000000..c788014eb --- /dev/null +++ b/setup/mrp_workcenter_hierarchical/odoo/addons/mrp_workcenter_hierarchical @@ -0,0 +1 @@ +../../../../mrp_workcenter_hierarchical \ No newline at end of file diff --git a/setup/mrp_workcenter_hierarchical/setup.py b/setup/mrp_workcenter_hierarchical/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/mrp_workcenter_hierarchical/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)