mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-17 12:35:46 +00:00
Add "exclude_location" to build order auto-allocation
This commit is contained in:
@ -842,6 +842,7 @@ class Build(MPTTModel, ReferenceIndexingMixin):
|
||||
"""
|
||||
|
||||
location = kwargs.get('location', None)
|
||||
exclude_location = kwargs.get('exclude_location', None)
|
||||
interchangeable = kwargs.get('interchangeable', False)
|
||||
substitutes = kwargs.get('substitutes', True)
|
||||
|
||||
@ -875,6 +876,11 @@ class Build(MPTTModel, ReferenceIndexingMixin):
|
||||
sublocations = location.get_descendants(include_self=True)
|
||||
available_stock = available_stock.filter(location__in=[loc for loc in sublocations])
|
||||
|
||||
if exclude_location:
|
||||
# Exclude any stock items from the provided location
|
||||
sublocations = exclude_location.get_descendants(include_self=True)
|
||||
available_stock = available_stock.exclude(location__in=[loc for loc in sublocations])
|
||||
|
||||
"""
|
||||
Next, we sort the available stock items with the following priority:
|
||||
1. Direct part matches (+1)
|
||||
|
@ -717,6 +717,7 @@ class BuildAutoAllocationSerializer(serializers.Serializer):
|
||||
class Meta:
|
||||
fields = [
|
||||
'location',
|
||||
'exclude_location',
|
||||
'interchangeable',
|
||||
'substitutes',
|
||||
]
|
||||
@ -730,6 +731,15 @@ class BuildAutoAllocationSerializer(serializers.Serializer):
|
||||
help_text=_('Stock location where parts are to be sourced (leave blank to take from any location)'),
|
||||
)
|
||||
|
||||
exclude_location = serializers.PrimaryKeyRelatedField(
|
||||
queryset=StockLocation.objects.all(),
|
||||
many=False,
|
||||
allow_null=True,
|
||||
required=False,
|
||||
label=_('Exclude Location'),
|
||||
help_text=_('Exclude stock items from this selected location'),
|
||||
)
|
||||
|
||||
interchangeable = serializers.BooleanField(
|
||||
default=False,
|
||||
label=_('Interchangeable Stock'),
|
||||
@ -750,6 +760,7 @@ class BuildAutoAllocationSerializer(serializers.Serializer):
|
||||
|
||||
build.auto_allocate_stock(
|
||||
location=data.get('location', None),
|
||||
exclude_location=data.get('exclude_location', None),
|
||||
interchangeable=data['interchangeable'],
|
||||
substitutes=data['substitutes'],
|
||||
)
|
||||
|
Reference in New Issue
Block a user