Files
public/mklab_forecast_mrp/models/product.py

27 lines
1.2 KiB
Python

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