From af968f214103c75e33af78e2cc6f7c50224afbfd Mon Sep 17 00:00:00 2001 From: Tony Galmiche Date: Mon, 23 Apr 2018 09:54:33 +0200 Subject: [PATCH] add 10.0-mrp_bom_component_find and FIX oca rules --- mrp_bom_component_find/README.rst | 74 ++++++++++ mrp_bom_component_find/__init__.py | 4 + mrp_bom_component_find/__manifest__.py | 25 ++++ mrp_bom_component_find/i18n/fr.po | 130 ++++++++++++++++++ mrp_bom_component_find/models/__init__.py | 3 + mrp_bom_component_find/models/product.py | 30 ++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../description/mrp_bom_component_find.png | Bin 0 -> 58741 bytes .../views/product_views.xml | 31 +++++ mrp_bom_component_find/wizard/__init__.py | 3 + .../wizard/mrp_bom_component_find_wizard.py | 69 ++++++++++ .../wizard/mrp_bom_component_find_wizard.xml | 79 +++++++++++ mrp_mto_with_stock/README.rst | 5 +- 13 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 mrp_bom_component_find/README.rst create mode 100644 mrp_bom_component_find/__init__.py create mode 100644 mrp_bom_component_find/__manifest__.py create mode 100644 mrp_bom_component_find/i18n/fr.po create mode 100644 mrp_bom_component_find/models/__init__.py create mode 100644 mrp_bom_component_find/models/product.py create mode 100644 mrp_bom_component_find/static/description/icon.png create mode 100644 mrp_bom_component_find/static/description/mrp_bom_component_find.png create mode 100644 mrp_bom_component_find/views/product_views.xml create mode 100644 mrp_bom_component_find/wizard/__init__.py create mode 100644 mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.py create mode 100644 mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.xml diff --git a/mrp_bom_component_find/README.rst b/mrp_bom_component_find/README.rst new file mode 100644 index 000000000..dd1f1cc4d --- /dev/null +++ b/mrp_bom_component_find/README.rst @@ -0,0 +1,74 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +====================== +MRP BOM Component Find +====================== + +This module add MRP BOM component find functionality (Use Case). + +Allows you to find the product usages across all Bill of Materials. + + +Usage +===== + +* From the form of a component click on the button 'Component find'. +* or click on the 'Master Data / Component find' and choose a component. +* The result displays the list of finished products containing this + component and in which level of the bom this component appears + + +.. image:: static/description/mrp_bom_component_find.png + :alt: Sample Component find + :width: 95 % + :align: center + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/129/10.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Tony Galmiche (http://infosaone.com) + +Do not contact contributors directly about support or help with technical issues. + + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. + + + diff --git a/mrp_bom_component_find/__init__.py b/mrp_bom_component_find/__init__.py new file mode 100644 index 000000000..35e7c9600 --- /dev/null +++ b/mrp_bom_component_find/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import models +from . import wizard diff --git a/mrp_bom_component_find/__manifest__.py b/mrp_bom_component_find/__manifest__.py new file mode 100644 index 000000000..0c2b59e74 --- /dev/null +++ b/mrp_bom_component_find/__manifest__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Tony Galmiche - InfoSaône +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'MRB BOM Component Find (Product Use Case)', + 'version': '10.0.1.0.0', + 'category': 'mrp', + 'summary': 'Know the case of multi-level use of a component from bom', + 'author': 'Tony Galmiche,' + 'Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/manufacture', + 'license': 'AGPL-3', + 'depends': [ + 'mrp', + ], + 'data': [ + 'views/product_views.xml', + 'wizard/mrp_bom_component_find_wizard.xml', + ], + 'update_xml': [], + 'demo_xml': [], + 'installable': True, + 'application': False, +} diff --git a/mrp_bom_component_find/i18n/fr.po b/mrp_bom_component_find/i18n/fr.po new file mode 100644 index 000000000..198dc2294 --- /dev/null +++ b/mrp_bom_component_find/i18n/fr.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_bom_component_find +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-23 07:49+0000\n" +"PO-Revision-Date: 2018-04-23 07:49+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: mrp_bom_component_find +#: model:ir.ui.view,arch_db:mrp_bom_component_find.mrp_bom_component_find_wizard_form +msgid "Cancel" +msgstr "Annuler" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_component_id +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_product_id +msgid "Component" +msgstr "Composant" + +#. module: mrp_bom_component_find +#: model:ir.actions.act_window,name:mrp_bom_component_find.mrp_bom_component_find_wizard_action +#: model:ir.ui.menu,name:mrp_bom_component_find.mrp_bom_component_find_menu +#: model:ir.ui.view,arch_db:mrp_bom_component_find.mrp_bom_component_find_wizard_form +#: model:ir.ui.view,arch_db:mrp_bom_component_find.product_product_form_view_use_case_button +#: model:ir.ui.view,arch_db:mrp_bom_component_find.product_template_form_view_use_case_button +msgid "Component find" +msgstr "Recherche composant" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_create_uid +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_create_date +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_display_name +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_id +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_id +msgid "ID" +msgstr "ID" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line___last_update +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard___last_update +msgid "Last Modified on" +msgstr "Dernière Modification le" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_write_uid +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_write_date +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_wizard_write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_level +msgid "Level" +msgstr "Niveau" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_line +msgid "Line" +msgstr "Ligne" + +#. module: mrp_bom_component_find +#: model:ir.ui.view,arch_db:mrp_bom_component_find.mrp_bom_component_find_wizard_form +msgid "OK" +msgstr "OK" + +#. module: mrp_bom_component_find +#: model:ir.model,name:mrp_bom_component_find.model_product_product +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_mrp_bom_id +msgid "Product" +msgstr "Article" + +#. module: mrp_bom_component_find +#: model:ir.model,name:mrp_bom_component_find.model_product_template +msgid "Product Template" +msgstr "Modèle d'article" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_quantity +msgid "Quantity" +msgstr "Quantité" + +#. module: mrp_bom_component_find +#: model:ir.model.fields,field_description:mrp_bom_component_find.field_mrp_bom_component_find_line_wizard_id +msgid "Wizard" +msgstr "Assistant" + +#. module: mrp_bom_component_find +#: model:ir.model,name:mrp_bom_component_find.model_mrp_bom_component_find_line +msgid "mrp.bom.component.find.line" +msgstr "mrp.bom.component.find.line" + +#. module: mrp_bom_component_find +#: model:ir.model,name:mrp_bom_component_find.model_mrp_bom_component_find_wizard +msgid "mrp.bom.component.find.wizard" +msgstr "mrp.bom.component.find.wizard" + +#. module: mrp_bom_component_find +#: model:ir.ui.view,arch_db:mrp_bom_component_find.mrp_bom_component_find_wizard_form +msgid "or" +msgstr "ou" + diff --git a/mrp_bom_component_find/models/__init__.py b/mrp_bom_component_find/models/__init__.py new file mode 100644 index 000000000..d7d73083c --- /dev/null +++ b/mrp_bom_component_find/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import product diff --git a/mrp_bom_component_find/models/product.py b/mrp_bom_component_find/models/product.py new file mode 100644 index 000000000..41a331a67 --- /dev/null +++ b/mrp_bom_component_find/models/product.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + @api.multi + def use_case_action(self): + for obj in self: + products = self.env['product.product'].search([ + ('product_tmpl_id', '=', obj.id) + ]) + for product in products: + return product.use_case_action() + + +class ProductProduct(models.Model): + _inherit = "product.product" + + @api.multi + def use_case_action(self): + for obj in self: + vals = { + 'product_id': obj.id + } + wizard = self.env['mrp.bom.component.find.wizard'].create(vals) + return wizard.do_search_component() diff --git a/mrp_bom_component_find/static/description/icon.png b/mrp_bom_component_find/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/mrp_bom_component_find/static/description/mrp_bom_component_find.png b/mrp_bom_component_find/static/description/mrp_bom_component_find.png new file mode 100644 index 0000000000000000000000000000000000000000..36b64e4d653bde0ab5cfbd8acdc43a28fbdf2569 GIT binary patch literal 58741 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%0A*r$r!56f^0~A08}?NH49;K)HOG3mDc5K^jASo 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 + + + + product.template.procurement + product.template + + + +

+ +
+ + + + product.product.procurement + product.product + + + +
+ +
+
+
+ + diff --git a/mrp_bom_component_find/wizard/__init__.py b/mrp_bom_component_find/wizard/__init__.py new file mode 100644 index 000000000..aba89293f --- /dev/null +++ b/mrp_bom_component_find/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import mrp_bom_component_find_wizard diff --git a/mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.py b/mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.py new file mode 100644 index 000000000..206696715 --- /dev/null +++ b/mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api +from odoo.addons import decimal_precision as dp + + +class MrpBomComponentFindWizard(models.TransientModel): + _name = 'mrp.bom.component.find.wizard' + + product_id = fields.Many2one('product.product', 'Component', required=True) + + @api.multi + def mrp_bom_component_find(self, wizard_id, component_id, level): + cr = self._cr + cr.execute(""" + select + mbl.sequence, + mbl.product_id, + mbl.product_qty, + mb.product_tmpl_id, + mb.id mb_id, + (select id from product_product + where product_tmpl_id=mb.product_tmpl_id limit 1) compose_id + from mrp_bom_line mbl inner join mrp_bom mb on mbl.bom_id=mb.id + where mbl.product_id=%s + """, (str(component_id),)) + result = cr.fetchall() + for row in result: + compose_id = row[5] + level_txt = '' + for i in range(1, level): + level_txt = level_txt + u'-' + level_txt = level_txt + str(level) + vals = { + 'wizard_id': wizard_id, + 'level': level_txt, + 'component_id': component_id, + 'line': row[0], + 'quantity': row[2], + 'mrp_bom_id': row[4], + } + self.env['mrp.bom.component.find.line'].create(vals) + self.mrp_bom_component_find(wizard_id, compose_id, level + 1) + + @api.multi + def do_search_component(self): + for obj in self: + if obj.product_id: + self.mrp_bom_component_find(obj.id, obj.product_id.id, 1) + return { + 'name': "Component find %s " % obj.product_id.name, + 'view_mode': 'tree,form', + 'view_type': 'form', + 'res_model': 'mrp.bom.component.find.line', + 'type': 'ir.actions.act_window', + 'domain': [('wizard_id', '=', obj.id)], + } + + +class MrpBomComponentFindLine(models.TransientModel): + _name = 'mrp.bom.component.find.line' + + wizard_id = fields.Many2one('mrp.bom.component.find.wizard', 'Wizard') + level = fields.Char('Level') + component_id = fields.Many2one('product.product', 'Component') + line = fields.Integer('Line') + quantity = fields.Float( + 'Quantity', digits=dp.get_precision('Product Unit of Measure')) + mrp_bom_id = fields.Many2one('mrp.bom', 'Product') diff --git a/mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.xml b/mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.xml new file mode 100644 index 000000000..5ea9f626b --- /dev/null +++ b/mrp_bom_component_find/wizard/mrp_bom_component_find_wizard.xml @@ -0,0 +1,79 @@ + + + + mrp.bom.component.find.wizard.form + mrp.bom.component.find.wizard + +
+ + + +
+
+
+
+
+ + Component find + ir.actions.act_window + mrp.bom.component.find.wizard + form + tree,form + + new + + + mrp_bom_component_find_line_form_view + mrp.bom.component.find.line + +
+ + + + + + + + + +
+
+
+ + mrp_bom_component_find_line_tree_view + mrp.bom.component.find.line + tree + + + + + + + + + + + + mrp_bom_component_find_line_search_view + mrp.bom.component.find.line + + + + + + + + + + +
diff --git a/mrp_mto_with_stock/README.rst b/mrp_mto_with_stock/README.rst index fa154d0f2..8ddb7bd7b 100644 --- a/mrp_mto_with_stock/README.rst +++ b/mrp_mto_with_stock/README.rst @@ -29,9 +29,10 @@ To configure this module, you need to: standard behavior. If you want to use the second mode, based on forecast quantity + #. Go to the warehouse you want to follow this behaviour. -#. In the view form go to the tab *Warehouse Configuration* and set the - *MRP MTO with forecast stock*. You still need to configure the products +#. In the view form go to the tab *Warehouse Configuration* and set the *MRP + MTO with forecast stock*. You still need to configure the products like described in last step. Usage