Merge pull request #2432 from SchrodingersGat/po-part-filter

Improved table filtering for "purchase order" table
This commit is contained in:
Oliver 2021-12-07 11:29:38 +11:00 committed by GitHub
commit af1fe021f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 7 deletions

View File

@ -277,13 +277,31 @@ class POLineItemFilter(rest_filters.FilterSet):
'part'
]
completed = rest_filters.BooleanFilter(label='completed', method='filter_completed')
pending = rest_filters.BooleanFilter(label='pending', method='filter_pending')
def filter_completed(self, queryset, name, value):
def filter_pending(self, queryset, name, value):
"""
Filter by "pending" status (order status = pending)
"""
Filter by lines which are "completed" (or "not" completed)
A line is completed when received >= quantity
value = str2bool(value)
if value:
queryset = queryset.filter(order__status__in=PurchaseOrderStatus.OPEN)
else:
queryset = queryset.exclude(order__status__in=PurchaseOrderStatus.OPEN)
return queryset
order_status = rest_filters.NumberFilter(label='order_status', field_name='order__status')
received = rest_filters.BooleanFilter(label='received', method='filter_received')
def filter_received(self, queryset, name, value):
"""
Filter by lines which are "received" (or "not" received)
A line is considered "received" when received >= quantity
"""
value = str2bool(value)
@ -293,7 +311,8 @@ class POLineItemFilter(rest_filters.FilterSet):
if value:
queryset = queryset.filter(q)
else:
queryset = queryset.exclude(q)
# Only count "pending" orders
queryset = queryset.exclude(q).filter(order__status__in=PurchaseOrderStatus.OPEN)
return queryset

View File

@ -308,9 +308,17 @@ function getAvailableTableFilters(tableKey) {
// Filters for PurchaseOrderLineItem table
if (tableKey == 'purchaseorderlineitem') {
return {
completed: {
pending: {
type: 'bool',
title: '{% trans "Completed" %}',
title: '{% trans "Pending" %}',
},
received: {
type: 'bool',
title: '{% trans "Received" %}',
},
order_status: {
title: '{% trans "Order status" %}',
options: purchaseOrderCodes,
},
};
}