Check semen in inputs recursively.

In some cases it is desirable to use an intermediate product so the BOM does not
directly have the semen product.
This commit is contained in:
Albert Cervera i Areny 2019-01-07 23:29:09 +01:00
parent 239fd9ee67
commit 5e556f766f
1 changed files with 14 additions and 4 deletions

View File

@ -45,9 +45,19 @@ class BOM:
bom.check_specie_semen_in_inputs()
def check_specie_semen_in_inputs(self):
if not self.semen_dose:
return
if not self.check_specie_semen_in_inputs_recursive():
self.raise_user_error('missing_semen_input', self.rec_name)
def check_specie_semen_in_inputs_recursive(self):
if self.semen_dose:
semen_product = self.specie.semen_product
semen_input_lines = [i for i in self.inputs
if i.product == semen_product]
if not semen_input_lines:
self.raise_user_error('missing_semen_input', (self.rec_name,))
for i in self.inputs:
if i.product.boms:
for l in i.product.boms:
if l.bom.check_specie_semen_in_inputs_recursive():
return True
elif i.product == semen_product:
return True
return False