diff --git a/core/apps/finance/urls.py b/core/apps/finance/urls.py index f5f8d6d..5c7216e 100644 --- a/core/apps/finance/urls.py +++ b/core/apps/finance/urls.py @@ -16,6 +16,7 @@ urlpatterns = [ path('create/', cash_views.CashTransactionCreateApiView.as_view()), path('/delete/', cash_views.CashTransactionDeleteApiView.as_view()), path('/update/', cash_views.CashTransactionUpdateApiView.as_view()), + path('statistics/', cash_views.CashTransactionStatisticsApiView.as_view()), ] )), path('cash_transaction_folder/', include( diff --git a/core/apps/finance/views/cash_transaction.py b/core/apps/finance/views/cash_transaction.py index 0d0eba8..a2b855f 100644 --- a/core/apps/finance/views/cash_transaction.py +++ b/core/apps/finance/views/cash_transaction.py @@ -1,4 +1,5 @@ from django.shortcuts import get_object_or_404 +from django.db.models import Sum from rest_framework import generics, views from rest_framework.response import Response @@ -65,3 +66,22 @@ class CashTransactionDeleteApiView(views.APIView): ) +class CashTransactionStatisticsApiView(views.APIView): + permission_classes = [HasRolePermission] + + def get(self, request): + cash_transaction_ids = request.query_params.getlist('cash_transaction') + if cash_transaction_ids: + queryset = CashTransaction.objects.filter(id__in=cash_transaction_ids) + queryset = CashTransaction.objects.all() + res = queryset.aggregate( + total_balance_usd=Sum('total_balance_usd'), + income_balance_usd=Sum('income_balance_usd'), + expence_balance_usd=Sum('expence_balance_usd'), + total_balance_uzs=Sum('total_balance_uzs'), + income_balance_uzs=Sum('income_balance_uzs'), + expence_balance_uzs=Sum('expence_balance_uzs') + ) + + return Response(res) + \ No newline at end of file