diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index d6dd0df0e3..392c773e6b 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -1150,7 +1150,7 @@ class BuildItem(models.Model): bom_item_valid = False - if self.bom_item: + if self.bom_item and self.build: """ A BomItem object has already been assigned. This is valid if: @@ -1162,10 +1162,13 @@ class BuildItem(models.Model): iii) The Part referenced by the StockItem is a valid substitute for the BomItem """ - if self.build and self.build.part == self.bom_item.part: - + if self.build.part == self.bom_item.part: bom_item_valid = self.bom_item.is_stock_item_valid(self.stock_item) + elif self.bom_item.inherited: + if self.build.part in self.bom_item.part.get_descendants(include_self=False): + bom_item_valid = self.bom_item.is_stock_item_valid(self.stock_item) + # If the existing BomItem is *not* valid, try to find a match if not bom_item_valid: diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 2ea898f66c..452864e3c4 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -309,14 +309,20 @@ class BuildAllocationItemSerializer(serializers.Serializer): ) def validate_bom_item(self, bom_item): - - # TODO: Fix this validation - allow for variants and substitutes! + """ + Check if the parts match! + """ build = self.context['build'] - # BomItem must point to the same 'part' as the parent build + # BomItem should point to the same 'part' as the parent build if build.part != bom_item.part: - raise ValidationError(_("bom_item.part must point to the same part as the build order")) + + # If not, it may be marked as "inherited" from a parent part + if bom_item.inherited and build.part in bom_item.part.get_descendants(include_self=False): + pass + else: + raise ValidationError(_("bom_item.part must point to the same part as the build order")) return bom_item diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 428e40649f..48ef98b2b1 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -77,6 +77,11 @@ src="{% static 'img/blank_image.png' %}" {% trans "Part" %} {{ build.part.full_name }} + + + {% trans "Quantity" %} + {{ build.quantity }} + {% trans "Build Description" %} @@ -127,11 +132,6 @@ src="{% static 'img/blank_image.png' %}" {% block details_right %} - - - - -
{% trans "Quantity" %}{{ build.quantity }}
{% trans "Status" %}