2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-01 11:10:54 +00:00

Filter StockItem API by staleness

This commit is contained in:
Oliver Walters
2021-01-06 22:20:54 +11:00
parent 33d6396a4e
commit ba915da22b
5 changed files with 86 additions and 29 deletions

View File

@ -23,6 +23,9 @@ from part.serializers import PartBriefSerializer
from company.models import SupplierPart
from company.serializers import SupplierPartSerializer
import common.settings
import common.models
from .serializers import StockItemSerializer
from .serializers import LocationSerializer, LocationBriefSerializer
from .serializers import StockTrackingSerializer
@ -535,16 +538,37 @@ class StockList(generics.ListCreateAPIView):
# Exclude items which are instaled in another item
queryset = queryset.filter(belongs_to=None)
# Filter by 'expired' status
expired = params.get('expired', None)
if common.settings.stock_expiry_enabled():
if expired is not None:
expired = str2bool(expired)
# Filter by 'expired' status
expired = params.get('expired', None)
if expired:
queryset = queryset.filter(StockItem.EXPIRED_FILTER)
else:
queryset = queryset.exclude(StockItem.EXPIRED_FILTER)
if expired is not None:
expired = str2bool(expired)
if expired:
queryset = queryset.filter(StockItem.EXPIRED_FILTER)
else:
queryset = queryset.exclude(StockItem.EXPIRED_FILTER)
# Filter by 'stale' status
stale = params.get('stale', None)
if stale is not None:
stale = str2bool(stale)
# How many days to account for "staleness"?
stale_days = common.models.InvenTreeSetting.get_setting('STOCK_STALE_DAYS')
if stale_days > 0:
stale_date = datetime.now().date() + timedelta(days=stale_days)
stale_filter = StockItem.IN_STOCK_FILTER & ~Q(expiry_date=None) & Q(expiry_date__lt=stale_date)
if stale:
queryset = queryset.filter(stale_filter)
else:
queryset = queryset.exclude(stale_filter)
# Filter by customer
customer = params.get('customer', None)