Exclude expired stock from builds

This commit is contained in:
Oliver Walters 2021-01-06 21:00:45 +11:00
parent 580e7599a0
commit 33d6396a4e
3 changed files with 15 additions and 0 deletions

View File

@ -27,6 +27,8 @@ from InvenTree.helpers import increment, getSetting, normalize
from InvenTree.validators import validate_build_order_reference from InvenTree.validators import validate_build_order_reference
from InvenTree.models import InvenTreeAttachment from InvenTree.models import InvenTreeAttachment
from common.models import InvenTreeSetting
import InvenTree.fields import InvenTree.fields
from stock import models as StockModels from stock import models as StockModels
@ -819,6 +821,10 @@ class Build(MPTTModel):
location__in=[loc for loc in self.take_from.getUniqueChildren()] location__in=[loc for loc in self.take_from.getUniqueChildren()]
) )
# Exclude expired stock items
if not InvenTreeSetting.get_setting('STOCK_ALLOW_EXPIRED_BUILD'):
items = items.exclude(StockModels.StockItem.EXPIRED_FILTER)
return items return items
@property @property

View File

@ -903,6 +903,7 @@ class BuildItemCreate(AjaxCreateView):
if self.build and self.part: if self.build and self.part:
available_items = self.build.availableStockItems(self.part, self.output) available_items = self.build.availableStockItems(self.part, self.output)
form.fields['stock_item'].queryset = available_items form.fields['stock_item'].queryset = available_items
self.available_stock = form.fields['stock_item'].queryset.all() self.available_stock = form.fields['stock_item'].queryset.all()

View File

@ -5,6 +5,8 @@ from django.urls import reverse
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from common.models import InvenTreeSetting
import json import json
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -32,6 +34,9 @@ class StockViewTestCase(TestCase):
password='password' password='password'
) )
self.user.is_staff = True
self.user.save()
# Put the user into a group with the correct permissions # Put the user into a group with the correct permissions
group = Group.objects.create(name='mygroup') group = Group.objects.create(name='mygroup')
self.user.groups.add(group) self.user.groups.add(group)
@ -163,6 +168,9 @@ class StockItemTest(StockViewTestCase):
and should be in the future! and should be in the future!
""" """
# First, ensure that the expiry date feature is enabled!
InvenTreeSetting.set_setting('STOCK_ENABLE_EXPIRY', True, self.user)
url = reverse('stock-item-create') url = reverse('stock-item-create')
response = self.client.get(url, {'part': 25}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') response = self.client.get(url, {'part': 25}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')