# -*- 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)
