mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-15 19:45:46 +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):
|
class OrderFilter(rest_filters.FilterSet):
|
||||||
"""Base class for custom API filters for the OrderList endpoint."""
|
"""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
|
# Exact match for reference
|
||||||
reference = rest_filters.CharFilter(
|
reference = rest_filters.CharFilter(
|
||||||
label='Filter by exact reference',
|
label='Filter by exact reference',
|
||||||
@ -261,13 +269,6 @@ class PurchaseOrderList(APIDownloadMixin, ListCreateAPI):
|
|||||||
else:
|
else:
|
||||||
queryset = queryset.exclude(models.PurchaseOrder.OVERDUE_FILTER)
|
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
|
# Attempt to filter by part
|
||||||
part = params.get('part', None)
|
part = params.get('part', None)
|
||||||
|
|
||||||
@ -736,11 +737,6 @@ class SalesOrderList(APIDownloadMixin, ListCreateAPI):
|
|||||||
else:
|
else:
|
||||||
queryset = queryset.exclude(models.SalesOrder.OVERDUE_FILTER)
|
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"
|
# Filter by "Part"
|
||||||
# Only return SalesOrder which have LineItem referencing the part
|
# Only return SalesOrder which have LineItem referencing the part
|
||||||
part = params.get('part', None)
|
part = params.get('part', None)
|
||||||
@ -1258,6 +1254,8 @@ class ReturnOrderList(APIDownloadMixin, ListCreateAPI):
|
|||||||
def filter_queryset(self, queryset):
|
def filter_queryset(self, queryset):
|
||||||
"""Custom queryset filtering not supported by the ReturnOrderFilter class"""
|
"""Custom queryset filtering not supported by the ReturnOrderFilter class"""
|
||||||
|
|
||||||
|
queryset = super().filter_queryset(queryset)
|
||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
filter_backends = [
|
filter_backends = [
|
||||||
@ -1270,10 +1268,6 @@ class ReturnOrderList(APIDownloadMixin, ListCreateAPI):
|
|||||||
'reference': ['reference_int', 'reference'],
|
'reference': ['reference_int', 'reference'],
|
||||||
}
|
}
|
||||||
|
|
||||||
filterset_fields = [
|
|
||||||
'customer',
|
|
||||||
]
|
|
||||||
|
|
||||||
ordering_fields = [
|
ordering_fields = [
|
||||||
'creation_date',
|
'creation_date',
|
||||||
'reference',
|
'reference',
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
/* globals
|
/* globals
|
||||||
global_settings
|
global_settings
|
||||||
|
purchaseOrderCodes,
|
||||||
|
returnOrderCodes,
|
||||||
|
salesOrderCodes,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* exported
|
/* exported
|
||||||
@ -15,6 +18,20 @@ function getAvailableTableFilters(tableKey) {
|
|||||||
|
|
||||||
tableKey = tableKey.toLowerCase();
|
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
|
// Filters for "variant" table
|
||||||
if (tableKey == 'variants') {
|
if (tableKey == 'variants') {
|
||||||
return {
|
return {
|
||||||
@ -434,6 +451,10 @@ function getAvailableTableFilters(tableKey) {
|
|||||||
type: 'bool',
|
type: 'bool',
|
||||||
title: '{% trans "Overdue" %}',
|
title: '{% trans "Overdue" %}',
|
||||||
},
|
},
|
||||||
|
assigned_to_me: {
|
||||||
|
type: 'bool',
|
||||||
|
title: '{% trans "Assigned to me" %}',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user