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:
@ -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)
|
||||
|
Reference in New Issue
Block a user