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:
@ -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',
|
||||
|
@ -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" %}',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user