mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
from odoo import fields, models
|
|
|
|
|
|
class ProductTemplate(models.Model):
|
|
_inherit = "product.template"
|
|
|
|
product_tmpl_interchangeable_ids = fields.Many2many(
|
|
comodel_name="product.product",
|
|
compute="_compute_product_tmpl_interchangeable_ids",
|
|
inverse="_inverse_product_tmpl_interchangeable_ids",
|
|
)
|
|
|
|
def _compute_product_tmpl_interchangeable_ids(self):
|
|
"""Compute interchangeable products"""
|
|
for rec in self:
|
|
rec.product_tmpl_interchangeable_ids = (
|
|
rec.product_variant_ids.product_interchangeable_ids
|
|
)
|
|
|
|
def _inverse_product_tmpl_interchangeable_ids(self):
|
|
"""Set new interchangeable product"""
|
|
for rec in self:
|
|
rec.product_variant_id.product_replaces_ids = (
|
|
rec.product_tmpl_interchangeable_ids
|
|
)
|
|
|
|
|
|
class Product(models.Model):
|
|
_inherit = "product.product"
|
|
|
|
product_interchangeable_ids = fields.Many2many(
|
|
comodel_name="product.product",
|
|
string="Replaces",
|
|
help="Products that can be substituted by current product",
|
|
inverse="_inverse_product_interchangeable_ids",
|
|
compute="_compute_product_interchangeable_ids",
|
|
)
|
|
|
|
product_replaces_ids = fields.Many2many(
|
|
comodel_name="product.product",
|
|
string="Replaces",
|
|
relation="product_substitute_rel",
|
|
column1="product_id",
|
|
column2="product_replaced_id",
|
|
help="Products that can be substituted by current product",
|
|
)
|
|
product_replaced_by_ids = fields.Many2many(
|
|
comodel_name="product.product",
|
|
string="Replaces",
|
|
relation="product_substitute_rel",
|
|
column1="product_replaced_id",
|
|
column2="product_id",
|
|
help="Products that can substitute current current product",
|
|
)
|
|
|
|
def _compute_product_interchangeable_ids(self):
|
|
"""Compute interchangeable products"""
|
|
for rec in self:
|
|
rec.product_interchangeable_ids = (
|
|
rec.product_replaces_ids | rec.product_replaced_by_ids
|
|
) - rec
|
|
|
|
def _inverse_product_interchangeable_ids(self):
|
|
"""Set new interchangeable product"""
|
|
for rec in self:
|
|
rec.product_replaces_ids = rec.product_interchangeable_ids
|