Files
manufacture/mrp_multi_level/models/product_template.py
2024-12-04 09:42:25 +05:30

50 lines
1.7 KiB
Python

# Copyright 2018 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
import ast
from odoo import api, fields, models
class ProductTemplate(models.Model):
_inherit = 'product.template'
mrp_area_ids = fields.One2many(
comodel_name='product.mrp.area',
inverse_name='product_tmpl_id',
string='MRP Area parameters',
)
mrp_area_count = fields.Integer(
string='MRP Area Parameter Count',
readonly=True,
compute='_compute_mrp_area_count',
)
@api.multi
def _compute_mrp_area_count(self):
for rec in self:
rec.mrp_area_count = len(rec.mrp_area_ids)
@api.multi
def action_view_mrp_area_parameters(self):
self.ensure_one()
action = self.env.ref('mrp_multi_level.product_mrp_area_action')
result = action.read()[0]
ctx = ast.literal_eval(result.get('context'))
mrp_areas = self.env['mrp.area'].search([])
if 'context' not in result:
result['context'] = {}
if len(mrp_areas) == 1:
ctx.update({'default_mrp_area_id': mrp_areas[0].id})
mrp_area_ids = self.with_context(
active_test=False).mrp_area_ids.ids
if len(self.product_variant_ids) == 1:
variant = self.product_variant_ids[0]
ctx.update({'default_product_id': variant.id})
if len(mrp_area_ids) != 1:
result['domain'] = [('id', 'in', mrp_area_ids)]
else:
res = self.env.ref('mrp_multi_level.product_mrp_area_form', False)
result['views'] = [(res and res.id or False, 'form')]
result['res_id'] = mrp_area_ids[0]
result['context'] = ctx
return result