add: add new two api

This commit is contained in:
behruz-dev
2025-09-11 15:14:23 +05:00
parent 4617377e9e
commit 6a89d228a9
4 changed files with 41 additions and 2 deletions

View File

@@ -7,5 +7,5 @@ class ExpenceFilter(django_filters.FilterSet):
class Meta: class Meta:
model = Expence model = Expence
fields = [ fields = [
'w' 'payment_type', 'project_folder', 'project', 'user', 'expence_type'
] ]

View File

@@ -47,6 +47,7 @@ urlpatterns = [
[ [
path('list/', income_views.IncomeListApiView.as_view()), path('list/', income_views.IncomeListApiView.as_view()),
path('create/', income_views.IncomeCreateApiView.as_view()), path('create/', income_views.IncomeCreateApiView.as_view()),
path('<uuid:counterparty_id>/list/', income_views.CounterpartyIncomeListApiView.as_view()),
] ]
)), )),
path('expence_type/', include( path('expence_type/', include(
@@ -61,6 +62,7 @@ urlpatterns = [
[ [
path('list/', expence_views.ExpenceListApiView.as_view()), path('list/', expence_views.ExpenceListApiView.as_view()),
path('create/', expence_views.ExpenceCreateApiView.as_view()), path('create/', expence_views.ExpenceCreateApiView.as_view()),
path('<uuid:counterparty_id>/list/', expence_views.CounterpartyExpenceListApiView.as_view()),
] ]
)) ))
] ]

View File

@@ -1,3 +1,5 @@
from django.shortcuts import get_object_or_404
from rest_framework import generics, views, parsers, filters from rest_framework import generics, views, parsers, filters
from rest_framework.response import Response from rest_framework.response import Response
@@ -7,6 +9,7 @@ from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.finance.models import Expence from core.apps.finance.models import Expence
from core.apps.finance.serializers import expence as serializers from core.apps.finance.serializers import expence as serializers
from core.apps.finance.filters.expence import ExpenceFilter from core.apps.finance.filters.expence import ExpenceFilter
from core.apps.counterparty.models import Counterparty
class ExpenceCreateApiView(generics.GenericAPIView): class ExpenceCreateApiView(generics.GenericAPIView):
@@ -61,3 +64,20 @@ class ExpenceListApiView(generics.GenericAPIView):
serializer = self.serializer_class(page, many=True) serializer = self.serializer_class(page, many=True)
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)
class CounterpartyExpenceListApiView(generics.GenericAPIView):
permission_classes = [HasRolePermission]
queryset = Expence.objects.select_related(
'cash_transaction', 'payment_type', 'project_folder', 'project', 'counterparty', 'expence_type',
'user'
).exclude(counterparty__isnull=True)
serializer_class = serializers.ExpenceListSerializer
def get(self, request, counterparty_id):
counterparty = get_object_or_404(Counterparty, id=counterparty_id)
page = self.paginate_queryset(self.queryset.filter(counterparty=counterparty))
if page is not None:
ser = self.serializer_class(page, many=True)
return self.get_paginated_response(ser.data)

View File

@@ -9,6 +9,7 @@ from core.apps.finance.models import Income
from core.apps.finance.serializers import income as serializers from core.apps.finance.serializers import income as serializers
from core.apps.accounts.permissions.permissions import HasRolePermission from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.finance.filters.income import IncomeFilter from core.apps.finance.filters.income import IncomeFilter
from core.apps.counterparty.models import Counterparty
class IncomeListApiView(generics.GenericAPIView): class IncomeListApiView(generics.GenericAPIView):
@@ -60,3 +61,19 @@ class IncomeCreateApiView(generics.GenericAPIView):
status=400 status=400
) )
class CounterpartyIncomeListApiView(generics.GenericAPIView):
permission_classes = [HasRolePermission]
queryset = Income.objects.select_related(
'cash_transaction', 'payment_type', 'project_folder', 'project', 'counterparty', 'type_income',
'user'
).exclude(counterparty__isnull=True)
serializer_class = serializers.IncomeListSerializer
def get(self, request, counterparty_id):
counterparty = get_object_or_404(Counterparty, id=counterparty_id)
page = self.paginate_queryset(self.queryset.filter(counterparty=counterparty))
if page is not None:
ser = self.serializer_class(page, many=True)
return self.get_paginated_response(ser.data)