mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
[ADD] mrp_bom_equivalent
This commit is contained in:
committed by
Maxime Chambreuil
parent
c55d3fe2cd
commit
1f3c4d4f99
61
mrp_bom_equivalent/README.rst
Normal file
61
mrp_bom_equivalent/README.rst
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||||
|
:alt: License: AGPL-3
|
||||||
|
|
||||||
|
=====================
|
||||||
|
MRP BoM Equivalences
|
||||||
|
=====================
|
||||||
|
|
||||||
|
This module allows the user to specify non-equivalent products to a part on a BOM.
|
||||||
|
|
||||||
|
Other modules can assume that products in the same category are equivalent and can be used in a Manufacturing Order if the main part is not available. Those non-equivalent products can be excluded.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
* Go to Manufacturing > Master Data > Bill of Materials
|
||||||
|
* Create or update a BOM to check the box "Use Equivalences"
|
||||||
|
* Set the non-equivalent products among the products of the same category
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues
|
||||||
|
<https://github.com/OCA/manufacture/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 <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Bhavesh Odedra <bodedra@opensourceintegrators.com>
|
||||||
|
|
||||||
|
Funders
|
||||||
|
-------
|
||||||
|
|
||||||
|
The development of this module has been financially supported by:
|
||||||
|
|
||||||
|
* Open Source Integrators <http://www.opensourceintegrators.com>
|
||||||
|
|
||||||
|
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.
|
||||||
4
mrp_bom_equivalent/__init__.py
Normal file
4
mrp_bom_equivalent/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from . import models
|
||||||
17
mrp_bom_equivalent/__manifest__.py
Normal file
17
mrp_bom_equivalent/__manifest__.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MRP BoM Equivalences",
|
||||||
|
"summary": "Specify non-equivalent products to a part on a BOM",
|
||||||
|
"version": "11.0.1.0.0",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"author": "Open Source Integrators, Odoo Community Association (OCA)",
|
||||||
|
"category": "MRP",
|
||||||
|
"website": "http://www.opensourceintegrators.com",
|
||||||
|
"depends": ["mrp", "product_priority"],
|
||||||
|
"data": [
|
||||||
|
"views/mrp_view.xml",
|
||||||
|
],
|
||||||
|
"installable": True,
|
||||||
|
}
|
||||||
5
mrp_bom_equivalent/models/__init__.py
Normal file
5
mrp_bom_equivalent/models/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from . import mrp
|
||||||
|
from . import product
|
||||||
19
mrp_bom_equivalent/models/mrp.py
Normal file
19
mrp_bom_equivalent/models/mrp.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class MRPBoMLine(models.Model):
|
||||||
|
_inherit = 'mrp.bom.line'
|
||||||
|
|
||||||
|
use_equivalences = fields.Boolean(
|
||||||
|
string='Use equivalences'
|
||||||
|
)
|
||||||
|
nonequivalent_product_ids = fields.Many2many(
|
||||||
|
"product.product",
|
||||||
|
"mrp_bom_line_product_rel",
|
||||||
|
"bom_line_id",
|
||||||
|
"product_id",
|
||||||
|
string="Non-Equivalent Products"
|
||||||
|
)
|
||||||
40
mrp_bom_equivalent/models/product.py
Normal file
40
mrp_bom_equivalent/models/product.py
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import api, models
|
||||||
|
|
||||||
|
|
||||||
|
class ProductProduct(models.Model):
|
||||||
|
_inherit = 'product.product'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def name_search(self, name, args=None, operator='ilike', limit=100):
|
||||||
|
if 'nonequivalent_product_id' in self._context:
|
||||||
|
category_id = self.browse(
|
||||||
|
self._context.get('nonequivalent_product_id')).categ_id
|
||||||
|
recs = self.search(
|
||||||
|
[('categ_id', '=', category_id.id),
|
||||||
|
('id', '!=', self._context.get('nonequivalent_product_id')),
|
||||||
|
('name', operator, name)] + args, limit=limit)
|
||||||
|
if not recs:
|
||||||
|
recs = self.browse()
|
||||||
|
return recs.name_get()
|
||||||
|
return super(ProductProduct, self).name_search(name, args=args,
|
||||||
|
operator=operator,
|
||||||
|
limit=limit)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def search_read(self, domain=None, fields=None, offset=0, limit=None,
|
||||||
|
order=None):
|
||||||
|
if 'nonequivalent_product_id' in self._context:
|
||||||
|
category_id = self.browse(
|
||||||
|
self._context.get('nonequivalent_product_id')).categ_id
|
||||||
|
domain +=\
|
||||||
|
[('categ_id', '=', category_id.id),
|
||||||
|
('id', '!=', self._context.get('nonequivalent_product_id'))]
|
||||||
|
order = order or self.priority
|
||||||
|
return super(ProductProduct, self).search_read(domain=domain,
|
||||||
|
fields=fields,
|
||||||
|
offset=offset,
|
||||||
|
limit=limit,
|
||||||
|
order=order)
|
||||||
BIN
mrp_bom_equivalent/static/description/icon.png
Normal file
BIN
mrp_bom_equivalent/static/description/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
17
mrp_bom_equivalent/views/mrp_view.xml
Normal file
17
mrp_bom_equivalent/views/mrp_view.xml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Bills of Materials form view -->
|
||||||
|
<record id="mrp_bom_equivalences_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">
|
||||||
|
<data>
|
||||||
|
<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='operation_id']" position="after">
|
||||||
|
<field name="use_equivalences"/>
|
||||||
|
<field name="nonequivalent_product_ids" attrs="{'readonly': [('use_equivalences', '=', False)]}" context="{'nonequivalent_product_id': product_id}" widget="many2many_tags"/>
|
||||||
|
</xpath>
|
||||||
|
</data>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
3
oca_dependencies.txt
Normal file
3
oca_dependencies.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# List the OCA project dependencies, one per line
|
||||||
|
# Add a repository url and branch if you need a forked version
|
||||||
|
product-attribute
|
||||||
Reference in New Issue
Block a user