mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add ability to filter stock by variants for a templated part
This commit is contained in:
parent
0e684071fa
commit
75d38489d7
@ -11,7 +11,7 @@ from django.urls import reverse
|
|||||||
from .models import StockLocation, StockItem
|
from .models import StockLocation, StockItem
|
||||||
from .models import StockItemTracking
|
from .models import StockItemTracking
|
||||||
|
|
||||||
from part.models import PartCategory
|
from part.models import Part, PartCategory
|
||||||
|
|
||||||
from .serializers import StockItemSerializer, StockQuantitySerializer
|
from .serializers import StockItemSerializer, StockQuantitySerializer
|
||||||
from .serializers import LocationSerializer
|
from .serializers import LocationSerializer
|
||||||
@ -263,11 +263,28 @@ class StockList(generics.ListCreateAPIView):
|
|||||||
we may wish to also request stock items from all child locations.
|
we may wish to also request stock items from all child locations.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Start with all objects
|
||||||
|
stock_list = StockItem.objects.all()
|
||||||
|
|
||||||
|
# Does the client wish to filter by the Part ID?
|
||||||
|
part_id = self.request.query_params.get('part', None)
|
||||||
|
|
||||||
|
if part_id:
|
||||||
|
try:
|
||||||
|
part = Part.objects.get(pk=part_id)
|
||||||
|
|
||||||
|
# If the part is a Template part, select stock items for any "variant" parts under that template
|
||||||
|
if part.has_variants:
|
||||||
|
stock_list = stock_list.filter(part__in=[part.id for part in Part.objects.filter(variant_of=part_id)])
|
||||||
|
else:
|
||||||
|
stock_list = stock_list.filter(part=part_id)
|
||||||
|
|
||||||
|
except Part.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
# Does the client wish to filter by stock location?
|
# Does the client wish to filter by stock location?
|
||||||
loc_id = self.request.query_params.get('location', None)
|
loc_id = self.request.query_params.get('location', None)
|
||||||
|
|
||||||
# Start with all objects
|
|
||||||
stock_list = StockItem.objects.all()
|
|
||||||
|
|
||||||
if loc_id:
|
if loc_id:
|
||||||
try:
|
try:
|
||||||
@ -312,7 +329,6 @@ class StockList(generics.ListCreateAPIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
filter_fields = [
|
filter_fields = [
|
||||||
'part',
|
|
||||||
'supplier_part',
|
'supplier_part',
|
||||||
'customer',
|
'customer',
|
||||||
'belongs_to',
|
'belongs_to',
|
||||||
|
Loading…
Reference in New Issue
Block a user