[Add] mrp_bom_reference_selection

This commit is contained in:
dufresnedavid
2015-02-25 09:57:20 -05:00
parent 9e3a865d83
commit 5e6367cdeb
11 changed files with 475 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
MRP Bill of Material Reference Selection
========================================
This module was written to extend mrp features.
It delivers new feature to select the component in a bom when you have several bom for one product.
Installation
============
To install this module, you just need to select the module and insure yourself dependancies are available.
Configuration
=============
No particular configuration to use this module.
Usage
=====
To use this module, you need to :
- create a product
- create a bom from this product (ie : AA), give a reference to this bom (ie : A1)
- create an other bom for the same product, give a reference to this bom (ie : A2)
- now, you can create an other bom for an other product (ie : BB) with products AA as component. You will have to choose the bom you want between A1 or A2
Known issues / Roadmap
======================
Credits
=======
Module developed and tested with Odoo version 8.0
For questions, please contact our support services <support@savoirfairelinux.com>
Contributors
------------
* David DUFRESNE <david.dufresne@savoirfairelinux.com>
* Jordi RIERA <jordi.riera@savoirfairelinux.com>
* Bruno JOLIVEAU <bruno.joliveau@savoirfairelinux.com>
Icon
----
* http://en.wikipedia.org/wiki/File:People%27s_Action_Party_of_Singapore_logo.svg
Maintainer
----------
Odoo Community Association
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 http://odoo-community.org.

View File

@@ -0,0 +1,33 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Savoir-faire Linux
# (<http://www.savoirfairelinux.com>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import models
from openerp import SUPERUSER_ID
def set_bill_of_material_references(cr, registry):
bom_obj = registry['mrp.bom']
ref_obj = registry['mrp.bom.reference']
bom_ids = bom_obj.search(cr, SUPERUSER_ID, [])
for bom in bom_obj.browse(cr, SUPERUSER_ID, bom_ids):
if not bom.reference_id:
ref_obj.create(cr, SUPERUSER_ID, {'bom_id': bom.id})

View File

@@ -0,0 +1,43 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Savoir-faire Linux
# (<http://www.savoirfairelinux.com>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Bill of Material Selection Reference',
'version': '1.0',
'author': 'Savoir-faire Linux',
'license': 'AGPL-3',
'category': 'Others',
'summary': 'Bill of Material Selection Reference',
'depends': [
'mrp',
],
'external_dependencies': {
'python': [],
},
'data': [
'views/mrp_bom_view.xml',
'security/ir.model.access.csv',
],
'post_init_hook': 'set_bill_of_material_references',
'installable': True,
'application': True,
}

View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_reference_selection
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-25 13:19+0000\n"
"PO-Revision-Date: 2015-02-25 08:24-0500\n"
"Last-Translator: David Dufresne <david.dufresne@savoirfairelinux.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 1.5.4\n"
#. module: mrp_bom_reference_selection
#: model:ir.model,name:mrp_bom_reference_selection.model_mrp_bom
#: field:mrp.bom.reference,bom_id:0
msgid "Bill of Material"
msgstr "Nomenclature"
#. module: mrp_bom_reference_selection
#: field:mrp.bom,reference_id:0
msgid "BoM Reference"
msgstr "Référence de nomenclature"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,id:0
msgid "ID"
msgstr "ID"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,write_uid:0
msgid "Last Updated by"
msgstr "Dernière mise-à-jour par"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,write_date:0
msgid "Last Updated on"
msgstr "Dernière mise-à-jour le"
#. module: mrp_bom_reference_selection
#: model:ir.model,name:mrp_bom_reference_selection.model_mrp_bom_reference
msgid "MRP Bill of Material Reference"
msgstr "Référence de nomenclature"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.line,product_tmpl_id:0
msgid "Product Template"
msgstr "Modèle d'article"
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,name:0
msgid "Reference"
msgstr "Référence"

View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_bom_reference_selection
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-25 13:19+0000\n"
"PO-Revision-Date: 2015-02-25 13:19+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_reference_selection
#: model:ir.model,name:mrp_bom_reference_selection.model_mrp_bom
#: field:mrp.bom.reference,bom_id:0
msgid "Bill of Material"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom,reference_id:0
msgid "BoM Reference"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,create_uid:0
msgid "Created by"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,create_date:0
msgid "Created on"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,id:0
msgid "ID"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: mrp_bom_reference_selection
#: model:ir.model,name:mrp_bom_reference_selection.model_mrp_bom_reference
msgid "MRP Bill of Material Reference"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.line,product_tmpl_id:0
msgid "Product Template"
msgstr ""
#. module: mrp_bom_reference_selection
#: field:mrp.bom.reference,name:0
msgid "Reference"
msgstr ""

View File

@@ -0,0 +1,27 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Savoir-faire Linux
# (<http://www.savoirfairelinux.com>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import (
mrp_bom,
mrp_bom_line,
mrp_bom_reference,
)

View File

@@ -0,0 +1,37 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Savoir-faire Linux
# (<http://www.savoirfairelinux.com>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api
class BillOfMaterial(models.Model):
_inherit = 'mrp.bom'
@api.model
def create(self, vals):
res = super(BillOfMaterial, self).create(vals)
if not res.reference_id:
self.env['mrp.bom.reference'].create({'bom_id': res.id})
return res
reference_id = fields.One2many(
'mrp.bom.reference', 'bom_id', string="BoM Reference")

View File

@@ -0,0 +1,71 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Savoir-faire Linux
# (<http://www.savoirfairelinux.com>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api
class BillOfMaterialLine(models.Model):
_inherit = 'mrp.bom.line'
reference_id = fields.Many2one('mrp.bom.reference', 'Ref')
product_tmpl_id = fields.Many2one(
'product.template', 'Product Template',
related='product_id.product_tmpl_id', store=True)
product_id = fields.Many2one(
'product.product', required=True, string='Product')
@api.multi
def onchange_product_id(self, product_id):
product = self.env['product.product'].browse(product_id)
res = {'value': {}}
if not product:
res['value']['reference_id'] = False
else:
refs = self.env['mrp.bom.reference'].search(
[('bom_id.product_tmpl_id', '=', product.product_tmpl_id.id)])
res['value']['reference_id'] = refs and refs[0]
return res
@api.one
@api.depends('product_id')
def _get_child_bom_lines(self):
if self.reference_id:
self.child_line_ids = self.reference_id.bom_id.bom_line_ids.ids
else:
bom_obj = self.env['mrp.bom']
bom_id = bom_obj._bom_find(
product_tmpl_id=self.product_id.product_tmpl_id.id,
product_id=self.product_id.id)
self.child_line_ids = bom_id and [
(6, 0, child_id) for child_id in
bom_obj.browse(bom_id).bom_line_ids.ids
] or False
child_line_ids = fields.One2many(
relation='mrp.bom.line',
compute='_get_child_bom_lines',
string="BOM lines of the referred bom",
)

View File

@@ -0,0 +1,34 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Savoir-faire Linux
# (<http://www.savoirfairelinux.com>).
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields
class BillOfMaterialReference(models.Model):
_name = 'mrp.bom.reference'
_description = 'MRP Bill of Material Reference'
bom_id = fields.Many2one(
'mrp.bom', required=True, ondelete='cascade',
string='Bill of Material')
name = fields.Char(related='bom_id.code', store=True)

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_mrp_bom_reference_user,mrp.bom.reference,model_mrp_bom_reference,mrp.group_mrp_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_mrp_bom_reference_user mrp.bom.reference model_mrp_bom_reference mrp.group_mrp_user 1 1 1 1

View File

@@ -0,0 +1,36 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="mrp_bom_tree_view" model="ir.ui.view">
<field name="name">mrp.bom.tree</field>
<field name="model">mrp.bom</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
<field name="sequence"/>
</tree>
</field>
</record>
<record id="mrp_bom_form_view" model="ir.ui.view">
<field name="name">mrp.bom.form</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='bom_line_ids']//field[@name='product_id']" position="replace">
<field name="product_id" on_change="onchange_product_id(product_id)"/>
<field name="product_tmpl_id" invisible="1"/>
<field name="reference_id"
domain="[
('bom_id.product_tmpl_id', '=', product_tmpl_id),
('name', '!=', False),
]"
/>
</xpath>
</field>
</record>
</data>
</openerp>