fix view change store

This commit is contained in:
javad committed 2026-06-10 22:57:55 +03:30
1 parent 15a6ca4fe2
commit c0939508eb
1 file changed
+21 -4
+21 -4
View File
@@ -9,11 +9,11 @@ from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
from django.urls import reverse
from django.http import Http404, HttpResponseRedirect
from django.db.models import Count, Sum
from django.db.models import Count, Sum, Subquery, OuterRef, Value
from django.contrib.auth.models import Permission, User
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, permission_required
from django.db.models.functions import Coalesce
from django.shortcuts import get_object_or_404
from django.db.models import Q
@@ -581,16 +581,33 @@ def store(request, s_id):
searchQS = request.POST.get('searchQS', '')
mojodi = request.POST.get('mojodi', '')
#return HttpResponse(mojodi 2)
# تعریف ساب‌کوئری کاملاً مستقل برای واکشی فیلد لحظه‌ای از آخرین تراکنش انبار
latest_stock_subquery = ProductInStore.objects.filter(
Product=OuterRef('pk'),
StoreRoom=storeO,
year=1400
).order_by('-createdDT', '-id').values('current_stock_at_time')[:1]
if searchQS !='':
productSum = Product.objects.filter(productinstore__StoreRoom=storeO ,productinstore__year=1400,product_name__contains=searchQS).annotate(mojodi=( Sum('productinstore__s_in') - Sum('productinstore__s_out') ))
# محاسبات Sum شما دقیقاً حفظ شده و فیلد جدید به انتهای annotate اضافه شده است
productSum = Product.objects.filter(productinstore__StoreRoom=storeO ,productinstore__year=1400,product_name__contains=searchQS).annotate(
mojodi=( Sum('productinstore__s_in') - Sum('productinstore__s_out') ),
current_stock_at_time=Coalesce(Subquery(latest_stock_subquery), Value(0)) # فیلد مستقل جدید
)
if mojodi == "0":
productSum = productSum.filter(mojodi__lte=0)
searchStatus = True
else:
productSum = Product.objects.filter(productinstore__StoreRoom=storeO ,productinstore__year=1400).annotate(mojodi=( Sum('productinstore__s_in') - Sum('productinstore__s_out') ))
# محاسبات Sum شما دقیقاً حفظ شده و فیلد جدید به انتهای annotate اضافه شده است
productSum = Product.objects.filter(productinstore__StoreRoom=storeO ,productinstore__year=1400).annotate(
mojodi=( Sum('productinstore__s_in') - Sum('productinstore__s_out') ),
current_stock_at_time=Coalesce(Subquery(latest_stock_subquery), Value(0)) # فیلد مستقل جدید
)
if mojodi == "0":
searchStatus = True
productSum = productSum.filter(mojodi__lte=0)
data = {'storeO': storeO,'productSum': productSum, 's_id': s_id, 'searchStatus': searchStatus, "mojodi": mojodi, 'djsearchQS':searchQS, 'productCategory': productCategory}
return render(request, 'admin_panel/store.html', data)