diff --git a/quality_control_mrp/README.rst b/quality_control_mrp/README.rst new file mode 100644 index 000000000..22a06a73f --- /dev/null +++ b/quality_control_mrp/README.rst @@ -0,0 +1,11 @@ +MRP extension for quality control +================================= + +This module defines a trigger that creates inspections when a production order +is made. + +It also adds some shortcuts on production orders to these inspections. + +Contributors +------------ +* Pedro M. Baeza diff --git a/quality_control_mrp/__init__.py b/quality_control_mrp/__init__.py new file mode 100644 index 000000000..ad6c8186c --- /dev/null +++ b/quality_control_mrp/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import models diff --git a/quality_control_mrp/__openerp__.py b/quality_control_mrp/__openerp__.py new file mode 100644 index 000000000..3d98666dd --- /dev/null +++ b/quality_control_mrp/__openerp__.py @@ -0,0 +1,42 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Copyright (c) +# 2014 Serv. Tec. Avanzados - Pedro M. Baeza (http://www.serviciosbaeza.com) +# 2014 AvanzOsc (http://www.avanzosc.es) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + "name": "Quality control - MRP", + "version": "1.0", + "author": "OdooMRP team", + "website": "http://www.odoomrp.com", + "contributors": [ + "Pedro M. Baeza + + + + + Production done + + + + + Manufacturing Order + mrp.production + + + + diff --git a/quality_control_mrp/i18n/es.po b/quality_control_mrp/i18n/es.po new file mode 100644 index 000000000..04e8522a7 --- /dev/null +++ b/quality_control_mrp/i18n/es.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * quality_control_mrp +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-12-10 17:45+0000\n" +"PO-Revision-Date: 2014-12-10 17:45+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: quality_control_mrp +#: help:mrp.production,qc_inspections:0 +msgid "Inspections related to this production." +msgstr "Inspecciones relativas a esta producción." + +#. module: quality_control_mrp +#: view:qc.inspection:quality_control_mrp.qc_inspection_search_view_production +#: field:qc.inspection,production:0 +msgid "Production" +msgstr "Producción" + +#. module: quality_control_mrp +#: model:qc.trigger,name:quality_control_mrp.qc_trigger_mrp +msgid "Production done" +msgstr "Producción realizada" + +#. module: quality_control_mrp +#: view:qc.inspection.line:quality_control_mrp.qc_inspection_line_search_production_view +#: field:qc.inspection.line,production:0 +msgid "Production order" +msgstr "Orden de producción" + diff --git a/quality_control_mrp/i18n/quality_control_mrp.pot b/quality_control_mrp/i18n/quality_control_mrp.pot new file mode 100644 index 000000000..65cb98ce8 --- /dev/null +++ b/quality_control_mrp/i18n/quality_control_mrp.pot @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * quality_control_mrp +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-12-10 17:45+0000\n" +"PO-Revision-Date: 2014-12-10 17:45+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: quality_control_mrp +#: help:mrp.production,qc_inspections:0 +msgid "Inspections related to this production." +msgstr "" + +#. module: quality_control_mrp +#: view:qc.inspection:quality_control_mrp.qc_inspection_search_view_production +#: field:qc.inspection,production:0 +msgid "Production" +msgstr "" + +#. module: quality_control_mrp +#: model:qc.trigger,name:quality_control_mrp.qc_trigger_mrp +msgid "Production done" +msgstr "" + +#. module: quality_control_mrp +#: view:qc.inspection.line:quality_control_mrp.qc_inspection_line_search_production_view +#: field:qc.inspection.line,production:0 +msgid "Production order" +msgstr "" + diff --git a/quality_control_mrp/models/__init__.py b/quality_control_mrp/models/__init__.py new file mode 100644 index 000000000..adf4739b2 --- /dev/null +++ b/quality_control_mrp/models/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import qc_inspection +from . import mrp_production diff --git a/quality_control_mrp/models/mrp_production.py b/quality_control_mrp/models/mrp_production.py new file mode 100644 index 000000000..58b1707b3 --- /dev/null +++ b/quality_control_mrp/models/mrp_production.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## +from openerp import models, fields, api + + +class MrpProduction(models.Model): + _inherit = 'mrp.production' + + @api.one + @api.depends('qc_inspections', 'qc_inspections.state') + def _count_inspections(self): + self.created_inspections = len(self.qc_inspections) + self.passed_inspections = len([x for x in self.qc_inspections if + x.state == 'success']) + self.failed_inspections = len([x for x in self.qc_inspections if + x.state == 'failed']) + self.done_inspections = (self.passed_inspections + + self.failed_inspections) + + qc_inspections = fields.One2many( + comodel_name='qc.inspection', inverse_name='picking', copy=False, + string='Inspections', help="Inspections related to this production.") + created_inspections = fields.Integer( + compute="_count_inspections", string="Created inspections") + done_inspections = fields.Integer( + compute="_count_inspections", string="Done inspections") + passed_inspections = fields.Integer( + compute="_count_inspections", string="Inspections OK") + failed_inspections = fields.Integer( + compute="_count_inspections", string="Inspections failed") + + @api.v7 + def action_produce(self, cr, uid, production_id, production_qty, + production_mode, wiz=False, context=None): + production = self.browse(cr, uid, production_id, context=context) + production.action_produce( + production_id, production_qty, production_mode, wiz=wiz) + + @api.v8 + def action_produce(self, production_id, production_qty, production_mode, + wiz=False): + res = super(MrpProduction, self).action_produce( + production_id, production_qty, production_mode, wiz=wiz) + if production_mode == 'consume_produce': + inspection_model = self.env['qc.inspection'] + for move in self.move_created_ids2: + qc_trigger = self.env.ref('quality_control_mrp.qc_trigger_mrp') + tests = set() + for model in ['qc.trigger.product_category_line', + 'qc.trigger.product_template_line', + 'qc.trigger.product_line']: + tests = tests.union(self.env[model].get_test_for_product( + qc_trigger, move.product_id)) + for test in tests: + inspection_model._make_inspection(move, test) + return res diff --git a/quality_control_mrp/models/qc_inspection.py b/quality_control_mrp/models/qc_inspection.py new file mode 100644 index 000000000..cf7cc96bd --- /dev/null +++ b/quality_control_mrp/models/qc_inspection.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## +from openerp import models, fields, api + + +class QcInspection(models.Model): + _inherit = 'qc.inspection' + + @api.one + @api.depends('object_id') + def get_production(self): + self.production = False + if self.object_id: + if self.object_id._name == 'mrp.production': + self.production = self.object_id + + @api.one + @api.depends('object_id') + def _get_product(self): + """Overriden for getting the product from a mrp.production.""" + super(QcInspection, self)._get_product() + if self.object_id: + if self.object_id._name == 'mrp.production': + self.product = self.object_id.product_id + + @api.one + @api.depends('object_id') + def _get_qty(self): + super(QcInspection, self)._get_qty() + if self.object_id: + if self.object_id._name == 'mrp.production': + self.qty = self.object_id.product_qty + + production = fields.Many2one( + comodel_name="mrp.production", compute="get_production", store=True) + + +class QcInspectionLine(models.Model): + _inherit = 'qc.inspection.line' + + production = fields.Many2one( + comodel_name="mrp.production", related="inspection_id.production", + store=True, string="Production order") diff --git a/quality_control_mrp/static/description/icon.png b/quality_control_mrp/static/description/icon.png new file mode 100644 index 000000000..10f1f876f Binary files /dev/null and b/quality_control_mrp/static/description/icon.png differ diff --git a/quality_control_mrp/views/qc_inspection_view.xml b/quality_control_mrp/views/qc_inspection_view.xml new file mode 100644 index 000000000..8f1ee8c8c --- /dev/null +++ b/quality_control_mrp/views/qc_inspection_view.xml @@ -0,0 +1,68 @@ + + + + + + qc.inspection.form.view.production + qc.inspection + + + + + + + + + + qc.inspection.tree.view.production + qc.inspection + + + + + + + + + + qc.inspection.search.view.production + qc.inspection + + + + + + + + + + qc.inspection.line.tree.production + qc.inspection.line + + + + + + + + + + qc.inspection.line.search.production + qc.inspection.line + + + + + + + + + + + + +