From 80bfe4691d7888a4ff590954da0f418bcf1a2829 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 9 Sep 2025 17:47:14 +0500 Subject: [PATCH] add: add counterparty statistics --- core/apps/counterparty/urls.py | 1 + core/apps/counterparty/views/counterparty.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/apps/counterparty/urls.py b/core/apps/counterparty/urls.py index 5803413..10a525c 100644 --- a/core/apps/counterparty/urls.py +++ b/core/apps/counterparty/urls.py @@ -13,6 +13,7 @@ urlpatterns = [ path('archived/list/', cp_views.ArchivedCounterpartyListApiView.as_view()), path('/delete/', cp_views.CounterpartyDeleteApiView.as_view()), path('/update/', cp_views.CounterpartyUpdateApiView.as_view()), + path('statistics/', cp_views.CounterpartyStatisticsApiView.as_view()), ] )), path('counterparty_folder/', include( diff --git a/core/apps/counterparty/views/counterparty.py b/core/apps/counterparty/views/counterparty.py index ebb569b..a23138a 100644 --- a/core/apps/counterparty/views/counterparty.py +++ b/core/apps/counterparty/views/counterparty.py @@ -1,3 +1,4 @@ +from django.db.models import Sum from django.shortcuts import get_object_or_404 from rest_framework import generics, views @@ -95,4 +96,19 @@ class FolderCounterpartyListApiView(generics.GenericAPIView): page = self.paginate_queryset(queryset) if page is not None: serializer = self.serializer_class(page, many=True) - return self.get_paginated_response(serializer.data) \ No newline at end of file + return self.get_paginated_response(serializer.data) + + +class CounterpartyStatisticsApiView(views.APIView): + permission_classes = [HasRolePermission] + + def get(self, request): + res = Counterparty.objects.aggregate( + kredit_usd=Sum('kredit_usd'), + kredit_uzs=Sum('kredit_uzs'), + total_kredit=Sum('total_kredit'), + debit_usd=Sum('debit_usd'), + debit_uzs=Sum('debit_uzs'), + total_debut=Sum('total_debit'), + ) + return Response(res) \ No newline at end of file