mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-02 21:38:48 +00:00
Refactor stock filter
This commit is contained in:
parent
2cf40c0e0b
commit
46a8107be5
@ -13,6 +13,8 @@ from .models import PartParameter, PartParameterTemplate
|
|||||||
from .models import PartAttachment
|
from .models import PartAttachment
|
||||||
from .models import PartTestTemplate
|
from .models import PartTestTemplate
|
||||||
|
|
||||||
|
from stock.models import StockItem
|
||||||
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
from sql_util.utils import SubquerySum, SubqueryCount
|
from sql_util.utils import SubquerySum, SubqueryCount
|
||||||
@ -20,7 +22,7 @@ from sql_util.utils import SubquerySum, SubqueryCount
|
|||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.db.models.functions import Coalesce
|
from django.db.models.functions import Coalesce
|
||||||
|
|
||||||
from InvenTree.status_codes import StockStatus, PurchaseOrderStatus, BuildStatus
|
from InvenTree.status_codes import PurchaseOrderStatus, BuildStatus
|
||||||
from InvenTree.serializers import InvenTreeModelSerializer
|
from InvenTree.serializers import InvenTreeModelSerializer
|
||||||
from InvenTree.serializers import InvenTreeAttachmentSerializerField
|
from InvenTree.serializers import InvenTreeAttachmentSerializerField
|
||||||
|
|
||||||
@ -191,19 +193,10 @@ class PartSerializer(InvenTreeModelSerializer):
|
|||||||
to reduce database trips.
|
to reduce database trips.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Filter to limit stock items to "available"
|
|
||||||
stock_filter = Q(
|
|
||||||
status__in=StockStatus.AVAILABLE_CODES,
|
|
||||||
sales_order=None,
|
|
||||||
build_order=None,
|
|
||||||
belongs_to=None,
|
|
||||||
customer=None,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Annotate with the total 'in stock' quantity
|
# Annotate with the total 'in stock' quantity
|
||||||
queryset = queryset.annotate(
|
queryset = queryset.annotate(
|
||||||
in_stock=Coalesce(
|
in_stock=Coalesce(
|
||||||
SubquerySum('stock_items__quantity', filter=stock_filter),
|
SubquerySum('stock_items__quantity', filter=StockItem.IN_STOCK_FILTER),
|
||||||
Decimal(0)
|
Decimal(0)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user