diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py
index 2872fecb55..b3399ece59 100644
--- a/InvenTree/build/models.py
+++ b/InvenTree/build/models.py
@@ -259,6 +259,23 @@ class Build(MPTTModel):
blank=True, help_text=_('Extra build notes')
)
+ def sub_builds(self, cascade=True):
+ """
+ Return all Build Order objects under this one.
+ """
+
+ if cascade:
+ return Build.objects.filter(parent=self.pk)
+ else:
+ descendants = self.get_descendants(include_self=True)
+ Build.objects.filter(parent__pk__in=[d.pk for d in descendants])
+
+
+ def sub_build_count(self, cascade=True):
+
+ return self.sub_builds(cascade=cascade).count()
+
+
@property
def is_overdue(self):
"""
diff --git a/InvenTree/build/templates/build/build_children.html b/InvenTree/build/templates/build/build_children.html
new file mode 100644
index 0000000000..f655a549eb
--- /dev/null
+++ b/InvenTree/build/templates/build/build_children.html
@@ -0,0 +1,16 @@
+{% extends "build/build_base.html" %}
+{% load static %}
+{% load i18n %}
+
+{% block details %}
+
+{% include "build/tabs.html" with tab="children" %}
+
+
{% trans "Child Build Orders" %}
+
+
+
+{% endblock %}
+
+{% block js_ready %}
+{% endblock %}
\ No newline at end of file
diff --git a/InvenTree/build/templates/build/tabs.html b/InvenTree/build/templates/build/tabs.html
index c6d2893620..6b36c3d052 100644
--- a/InvenTree/build/templates/build/tabs.html
+++ b/InvenTree/build/templates/build/tabs.html
@@ -24,6 +24,12 @@
{{ build.output_count }}
+
+
+ {% trans "Child Builds" %}
+ {{ build.sub_build_count }}
+
+
{% trans "Notes" %}
diff --git a/InvenTree/build/urls.py b/InvenTree/build/urls.py
index 6f681f5488..877b368817 100644
--- a/InvenTree/build/urls.py
+++ b/InvenTree/build/urls.py
@@ -20,6 +20,7 @@ build_detail_urls = [
url(r'^notes/', views.BuildNotes.as_view(), name='build-notes'),
+ url(r'^children/', views.BuildDetail.as_view(template_name='build/build_children.html'), name='build-children'),
url(r'^parts/', views.BuildDetail.as_view(template_name='build/parts.html'), name='build-parts'),
url(r'^attachments/', views.BuildDetail.as_view(template_name='build/attachments.html'), name='build-attachments'),
url(r'^output/', views.BuildDetail.as_view(template_name='build/build_output.html'), name='build-output'),
diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py
index 3c4b94c43d..272cd1e5d8 100644
--- a/InvenTree/build/views.py
+++ b/InvenTree/build/views.py
@@ -618,6 +618,7 @@ class BuildDetail(DetailView):
ctx['bom_price'] = build.part.get_price_info(build.quantity, buy=False)
ctx['BuildStatus'] = BuildStatus
+ ctx['sub_build_count'] = build.sub_build_count()
return ctx