add: add two new api for finance

This commit is contained in:
behruz-dev
2025-09-15 17:41:20 +05:00
parent 84a9da409a
commit 14dc870d47
5 changed files with 51 additions and 4 deletions

View File

@@ -81,3 +81,7 @@ class ExpenceContractCreateSerializer(serializers.ModelSerializer):
)
return expence_contract
class ExpenceContractCalculatePriceSerializer(serializers.Serializer):
price = serializers.IntegerField()

View File

@@ -77,3 +77,5 @@ class IncomeContractCreateSerializer(serializers.ModelSerializer):
return income_contract
class IncomeContractCalculatePriceSerializer(serializers.Serializer):
price = serializers.IntegerField()

View File

@@ -72,6 +72,7 @@ urlpatterns = [
path('list/', ic_views.IncomeContractListApiView.as_view()),
path('create/', ic_views.IncomeContractCreateApiView.as_view()),
path('statistics/', ic_views.IncomeContractStatisticsApiView.as_view()),
path('<uuid:id>/calculate_price/', ic_views.IncomeContractCalculatePriceApiView.as_view()),
]
)),
path('expence_contract/', include(
@@ -79,6 +80,7 @@ urlpatterns = [
path('list/', ec_views.ExpenceContractListApiView.as_view()),
path('create/', ec_views.ExpenceContractCreateApiView.as_view()),
path('statistics/', ec_views.ExpenceContractStatisticsApiView.as_view()),
path('<uuid:id>/calculate_price/', ec_views.ExpenceContractCalculatePriceApiView.as_view()),
]
))
]

View File

@@ -1,5 +1,6 @@
from django.utils.timezone import now
from django.db.models import Sum, Q, F
from django.shortcuts import get_object_or_404
from django_filters.rest_framework.backends import DjangoFilterBackend
@@ -7,7 +8,7 @@ from rest_framework import generics, views, filters
from rest_framework.response import Response
from core.apps.finance.models import ExpenceContract
from core.apps.finance.serializers.expence_contract import ExpenceContractSerializer, ExpenceContractCreateSerializer
from core.apps.finance.serializers.expence_contract import ExpenceContractSerializer, ExpenceContractCreateSerializer, ExpenceContractCalculatePriceSerializer
from core.apps.accounts.permissions.permissions import HasRolePermission
@@ -99,3 +100,22 @@ class ExpenceContractStatisticsApiView(views.APIView):
'usd': usd
}
return Response(res, status=200)
class ExpenceContractCalculatePriceApiView(generics.GenericAPIView):
serializer_class = ExpenceContractCalculatePriceSerializer
queryset = ExpenceContract.objects.all()
permission_classes = [HasRolePermission]
def get(self, request, id):
expence_contract = get_object_or_404(ExpenceContract, id=id)
serializer = self.serializer_class(data=request.data)
serializer.is_valid()
price = serializer.validated_data.get('price')
expence_contract.price -= price
expence_contract.paid_price += price
expence_contract.save()
return Response({
'success': True,
'message': 'price calculated',
}, status=200)

View File

@@ -9,7 +9,7 @@ from rest_framework.response import Response
from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.finance.models import IncomeContract
from core.apps.finance.serializers.income_contract import IncomeContractSerializer, IncomeContractCreateSerializer
from core.apps.finance.serializers.income_contract import IncomeContractSerializer, IncomeContractCreateSerializer, IncomeContractCalculatePriceSerializer
class IncomeContractCreateApiView(generics.GenericAPIView):
@@ -100,3 +100,22 @@ class IncomeContractStatisticsApiView(views.APIView):
'usd': usd
}
return Response(res, status=200)
class IncomeContractCalculatePriceApiView(generics.GenericAPIView):
serializer_class = IncomeContractCalculatePriceSerializer
queryset = IncomeContract.objects.all()
permission_classes = [HasRolePermission]
def get(self, request, id):
income_contract = get_object_or_404(IncomeContract, id=id)
serializer = self.serializer_class(data=request.data)
serializer.is_valid()
price = serializer.validated_data.get('price')
income_contract.price -= price
income_contract.paid_price += price
income_contract.save()
return Response({
'success': True,
'message': 'price calculated',
}, status=200)