mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-03 22:55:43 +00:00 
			
		
		
		
	Improved table filtering for "purchase order" table (as seen from "part" view)
This commit is contained in:
		@@ -277,13 +277,31 @@ class POLineItemFilter(rest_filters.FilterSet):
 | 
				
			|||||||
            'part'
 | 
					            '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)
 | 
					        value = str2bool(value)
 | 
				
			||||||
@@ -293,7 +311,8 @@ class POLineItemFilter(rest_filters.FilterSet):
 | 
				
			|||||||
        if value:
 | 
					        if value:
 | 
				
			||||||
            queryset = queryset.filter(q)
 | 
					            queryset = queryset.filter(q)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            queryset = queryset.exclude(q)
 | 
					            # Only count "pending" orders
 | 
				
			||||||
 | 
					            queryset = queryset.exclude(q).filter(order__status__in=PurchaseOrderStatus.OPEN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return queryset
 | 
					        return queryset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -308,9 +308,17 @@ function getAvailableTableFilters(tableKey) {
 | 
				
			|||||||
    // Filters for PurchaseOrderLineItem table
 | 
					    // Filters for PurchaseOrderLineItem table
 | 
				
			||||||
    if (tableKey == 'purchaseorderlineitem') {
 | 
					    if (tableKey == 'purchaseorderlineitem') {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            completed: {
 | 
					            pending: {
 | 
				
			||||||
                type: 'bool',
 | 
					                type: 'bool',
 | 
				
			||||||
                title: '{% trans "Completed" %}',
 | 
					                title: '{% trans "Pending" %}',
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            received: {
 | 
				
			||||||
 | 
					                type: 'bool',
 | 
				
			||||||
 | 
					                title: '{% trans "Received" %}',
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            order_status: {
 | 
				
			||||||
 | 
					                title: '{% trans "Order status" %}',
 | 
				
			||||||
 | 
					                options: purchaseOrderCodes,
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user