2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-14 19:15:41 +00:00

Support filtering ReturnOrder by 'status'

- Refactors existing filter into the OrderFilter class
This commit is contained in:
Oliver Walters
2023-03-15 08:41:32 +11:00
parent 2efcbefe03
commit 4dc22697b0
2 changed files with 31 additions and 16 deletions

View File

@ -89,6 +89,14 @@ class GeneralExtraLineList(APIDownloadMixin):
class OrderFilter(rest_filters.FilterSet):
"""Base class for custom API filters for the OrderList endpoint."""
# Filter against order status
status = rest_filters.NumberFilter(label="Order Status", method='filter_status')
def filter_status(self, queryset, name, value):
"""Filter by integer status code"""
return queryset.filter(status=value)
# Exact match for reference
reference = rest_filters.CharFilter(
label='Filter by exact reference',
@ -261,13 +269,6 @@ class PurchaseOrderList(APIDownloadMixin, ListCreateAPI):
else:
queryset = queryset.exclude(models.PurchaseOrder.OVERDUE_FILTER)
# Special filtering for 'status' field
status = params.get('status', None)
if status is not None:
# First attempt to filter by integer value
queryset = queryset.filter(status=status)
# Attempt to filter by part
part = params.get('part', None)
@ -736,11 +737,6 @@ class SalesOrderList(APIDownloadMixin, ListCreateAPI):
else:
queryset = queryset.exclude(models.SalesOrder.OVERDUE_FILTER)
status = params.get('status', None)
if status is not None:
queryset = queryset.filter(status=status)
# Filter by "Part"
# Only return SalesOrder which have LineItem referencing the part
part = params.get('part', None)
@ -1258,6 +1254,8 @@ class ReturnOrderList(APIDownloadMixin, ListCreateAPI):
def filter_queryset(self, queryset):
"""Custom queryset filtering not supported by the ReturnOrderFilter class"""
queryset = super().filter_queryset(queryset)
return queryset
filter_backends = [
@ -1270,10 +1268,6 @@ class ReturnOrderList(APIDownloadMixin, ListCreateAPI):
'reference': ['reference_int', 'reference'],
}
filterset_fields = [
'customer',
]
ordering_fields = [
'creation_date',
'reference',

View File

@ -4,6 +4,9 @@
/* globals
global_settings
purchaseOrderCodes,
returnOrderCodes,
salesOrderCodes,
*/
/* exported
@ -15,6 +18,20 @@ function getAvailableTableFilters(tableKey) {
tableKey = tableKey.toLowerCase();
// Filters for "returnorder" table
if (tableKey == 'returnorder') {
return {
status: {
title: '{% trans "Order status" %}',
options: returnOrderCodes
},
assigned_to_me: {
type: 'bool',
title: '{% trans "Assigned to me" %}',
},
};
}
// Filters for "variant" table
if (tableKey == 'variants') {
return {
@ -434,6 +451,10 @@ function getAvailableTableFilters(tableKey) {
type: 'bool',
title: '{% trans "Overdue" %}',
},
assigned_to_me: {
type: 'bool',
title: '{% trans "Assigned to me" %}',
},
};
}