mirror of
https://github.com/inventree/InvenTree.git
synced 2025-07-01 19:20:55 +00:00
Exclude sales order allocations when searching stock
This commit is contained in:
@ -6,6 +6,8 @@ JSON API for the Stock app
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from django.db.models import query
|
||||
from django.db.models.query import QuerySet
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
@ -34,6 +36,7 @@ from company.models import Company, SupplierPart
|
||||
from company.serializers import CompanySerializer, SupplierPartSerializer
|
||||
|
||||
from order.models import PurchaseOrder
|
||||
from order.models import SalesOrder, SalesOrderAllocation
|
||||
from order.serializers import POSerializer
|
||||
|
||||
import common.settings
|
||||
@ -645,6 +648,31 @@ class StockList(generics.ListCreateAPIView):
|
||||
# Filter StockItem without build allocations or sales order allocations
|
||||
queryset = queryset.filter(Q(sales_order_allocations__isnull=True) & Q(allocations__isnull=True))
|
||||
|
||||
# Exclude StockItems which are already allocated to a particular SalesOrder
|
||||
exclude_so_allocation = params.get('exclude_so_allocation', None)
|
||||
|
||||
if exclude_so_allocation is not None:
|
||||
|
||||
try:
|
||||
order = SalesOrder.objects.get(pk=exclude_so_allocation)
|
||||
|
||||
# Grab all the active SalesOrderAllocations for this order
|
||||
allocations = SalesOrderAllocation.objects.filter(
|
||||
line__pk__in=[
|
||||
line.pk for line in order.lines.all()
|
||||
]
|
||||
)
|
||||
|
||||
# Exclude any stock item which is already allocated to the sales order
|
||||
queryset = queryset.exclude(
|
||||
pk__in=[
|
||||
a.item.pk for a in allocations
|
||||
]
|
||||
)
|
||||
|
||||
except (ValueError, SalesOrder.DoesNotExist):
|
||||
pass
|
||||
|
||||
# Does the client wish to filter by the Part ID?
|
||||
part_id = params.get('part', None)
|
||||
|
||||
|
Reference in New Issue
Block a user