fix view change store
This commit is contained in:
1 parent
15a6ca4fe2
commit
c0939508eb
1 file changed
+21
-4
+21
-4
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user