mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
# Copyright 2020 ForgeFlow S.L.
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ProductTemplate(models.Model):
|
|
_inherit = "product.template"
|
|
|
|
refurbish_product_id = fields.Many2one(
|
|
comodel_name="product.product",
|
|
string="Refurbished Product",
|
|
compute="_compute_refurbish_product",
|
|
inverse="_inverse_refurbish_product",
|
|
search="_search_refurbish_product",
|
|
domain="[('type', '=', 'product')]",
|
|
)
|
|
|
|
property_stock_refurbish = fields.Many2one(
|
|
comodel_name="stock.location",
|
|
string="Refurbish Location",
|
|
company_dependent=True,
|
|
domain=[("usage", "like", "production")],
|
|
help="This stock location will be used, instead of the "
|
|
"default one, as the source location for "
|
|
"stock moves generated by repair orders when refurbishing takes "
|
|
"place.",
|
|
)
|
|
|
|
@api.depends("product_variant_ids", "product_variant_ids.refurbish_product_id")
|
|
def _compute_refurbish_product(self):
|
|
unique_variants = self.filtered(
|
|
lambda template: len(template.product_variant_ids) == 1
|
|
)
|
|
for template in unique_variants:
|
|
template.refurbish_product_id = (
|
|
template.product_variant_ids.refurbish_product_id
|
|
)
|
|
|
|
def _inverse_refurbish_product(self):
|
|
for rec in self:
|
|
if len(rec.product_variant_ids) == 1:
|
|
rec.product_variant_ids.refurbish_product_id = rec.refurbish_product_id
|
|
|
|
def _search_refurbish_product(self, operator, value):
|
|
products = self.env["product.product"].search(
|
|
[("refurbish_product_id", operator, value)], limit=None
|
|
)
|
|
return [("id", "in", products.mapped("product_tmpl_id").ids)]
|