Public release from ruodoo-project: 19.0 - 2026-05-10 21:19:01 UTC
This commit is contained in:
26
mklab_forecast_mrp/models/product.py
Normal file
26
mklab_forecast_mrp/models/product.py
Normal file
@ -0,0 +1,26 @@
|
||||
# -*- 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)
|
||||
Reference in New Issue
Block a user