diff --git a/InvenTree/InvenTree/static/css/inventree.css b/InvenTree/InvenTree/static/css/inventree.css
index a8c7503680..2319c2b9f7 100644
--- a/InvenTree/InvenTree/static/css/inventree.css
+++ b/InvenTree/InvenTree/static/css/inventree.css
@@ -307,6 +307,11 @@
font-style: italic;
}
+.rowinherited {
+ background-color: #efe;
+ opacity: 90%;
+}
+
.dropdown {
padding-left: 1px;
margin-left: 1px;
diff --git a/InvenTree/part/templates/part/bom.html b/InvenTree/part/templates/part/bom.html
index d8e8854791..ca0446378c 100644
--- a/InvenTree/part/templates/part/bom.html
+++ b/InvenTree/part/templates/part/bom.html
@@ -72,11 +72,9 @@
-
+
-
-
{% endblock %}
{% block js_load %}
diff --git a/InvenTree/templates/js/bom.js b/InvenTree/templates/js/bom.js
index 8ab1b03227..b7f17bb519 100644
--- a/InvenTree/templates/js/bom.js
+++ b/InvenTree/templates/js/bom.js
@@ -420,15 +420,24 @@ function loadBomTable(table, options) {
sortable: true,
search: true,
rowStyle: function(row, index) {
- if (row.validated) {
- return {
- classes: 'rowvalid'
- };
- } else {
- return {
- classes: 'rowinvalid'
- };
+
+ var classes = [];
+
+ // Shade rows differently if they are for different parent parts
+ if (row.part != options.parent_id) {
+ classes.push('rowinherited');
}
+
+ if (row.validated) {
+ classes.push('rowvalid');
+ } else {
+ classes.push('rowinvalid');
+ }
+
+ return {
+ classes: classes.join(' '),
+ };
+
},
formatNoMatches: function() {
return '{% trans "No BOM items found" %}';