diff --git a/InvenTree/InvenTree/static/script/inventree/filters.js b/InvenTree/InvenTree/static/script/inventree/filters.js
index 3209ba3beb..df767441d4 100644
--- a/InvenTree/InvenTree/static/script/inventree/filters.js
+++ b/InvenTree/InvenTree/static/script/inventree/filters.js
@@ -14,7 +14,7 @@
function defaultFilters() {
return {
- stock: "cascade=1",
+ stock: "cascade=1&in_stock=1",
build: "",
parts: "cascade=1",
company: "",
diff --git a/InvenTree/part/templates/part/stock.html b/InvenTree/part/templates/part/stock.html
index 03174f45c3..3030363476 100644
--- a/InvenTree/part/templates/part/stock.html
+++ b/InvenTree/part/templates/part/stock.html
@@ -40,7 +40,6 @@
part: {{ part.id }},
location_detail: true,
part_detail: true,
- in_stock: true,
},
groupByField: 'location',
buttons: [
diff --git a/InvenTree/part/templates/part/tabs.html b/InvenTree/part/templates/part/tabs.html
index 82d727eeb3..ffb92cf191 100644
--- a/InvenTree/part/templates/part/tabs.html
+++ b/InvenTree/part/templates/part/tabs.html
@@ -51,15 +51,6 @@
{% endif %}
{% if part.trackable %}
- {% if 0 %}
-
-
- {% trans "Tracking" %}
- {% if parts.serials.all|length > 0 %}
- {{ part.serials.all|length }}
- {% endif %}
-
- {% endif %}
{% trans "Tests" %}
{% if part.getTestTemplates.count > 0 %}{{ part.getTestTemplates.count }}{% endif %}
diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py
index bde9b2b25b..07fdd7952e 100644
--- a/InvenTree/stock/serializers.py
+++ b/InvenTree/stock/serializers.py
@@ -71,6 +71,7 @@ class StockItemSerializer(InvenTreeModelSerializer):
'belongs_to',
'build',
'build_order',
+ 'customer',
'sales_order',
'supplier_part',
'supplier_part__supplier',
@@ -141,6 +142,7 @@ class StockItemSerializer(InvenTreeModelSerializer):
'batch',
'build_order',
'belongs_to',
+ 'customer',
'in_stock',
'link',
'location',
diff --git a/InvenTree/stock/templates/stock/location.html b/InvenTree/stock/templates/stock/location.html
index 20032e557c..7e6a4fab42 100644
--- a/InvenTree/stock/templates/stock/location.html
+++ b/InvenTree/stock/templates/stock/location.html
@@ -248,7 +248,6 @@
{% endif %}
part_detail: true,
location_detail: true,
- in_stock: true,
},
url: "{% url 'api-stock-list' %}",
});
diff --git a/InvenTree/templates/js/stock.html b/InvenTree/templates/js/stock.html
index 789667b006..2600a1635d 100644
--- a/InvenTree/templates/js/stock.html
+++ b/InvenTree/templates/js/stock.html
@@ -494,10 +494,15 @@ function loadStockTable(table, options) {
sortable: true,
formatter: function(value, row, index, field) {
if (value) {
- return renderLink(value, '/stock/location/' + row.location + '/');
+ return renderLink(value, `/stock/location/${row.location}/`);
}
else {
- return '{% trans "No stock location set" %}';
+ if (row.customer) {
+ var text = "{% trans "Shipped to customer" %}";
+ return renderLink(text, `/company/${row.customer}/assigned-stock/`);
+ } else {
+ return '{% trans "No stock location set" %}';
+ }
}
}
},
diff --git a/InvenTree/templates/js/table_filters.html b/InvenTree/templates/js/table_filters.html
index bec29b0487..3c9381331c 100644
--- a/InvenTree/templates/js/table_filters.html
+++ b/InvenTree/templates/js/table_filters.html
@@ -14,6 +14,11 @@ function getAvailableTableFilters(tableKey) {
// Filters for the "Stock" table
if (tableKey == 'stock') {
return {
+ in_stock: {
+ type: 'bool',
+ title: '{% trans "In Stock" %}',
+ description: '{% trans "Show items which are in stock" %}',
+ },
cascade: {
type: 'bool',
title: '{% trans "Include sublocations" %}',