# -*- coding: utf-8 -*- from odoo import models, fields class ProductProduct(models.Model): _inherit = 'product.product' is_forecast_ok = fields.Boolean(string='Участвует в прогнозах') def find_available_bom(self, qty=1): """Возвращает первый не-виртуальный BOM, для которого все компоненты есть на складе. Возвращает (bom, notes) или (False, причина). """ for s in self: boms = s.bom_ids.filtered(lambda b: not b.is_virtual) if not boms: return False, 'Нет спецификаций для продукта ' + s.name for bom in boms: if bom.bom_available(qty): return bom, 'Найдена доступная спецификация' return False, 'Нет спецификации, для которой все компоненты есть на складе (' + s.name + ')' def start_planning(self, qty): """Точка входа для подбора BOM из строки прогноза.""" return self.find_available_bom(qty)