add: add two new api for finance
This commit is contained in:
@@ -81,3 +81,7 @@ class ExpenceContractCreateSerializer(serializers.ModelSerializer):
|
||||
)
|
||||
return expence_contract
|
||||
|
||||
|
||||
|
||||
class ExpenceContractCalculatePriceSerializer(serializers.Serializer):
|
||||
price = serializers.IntegerField()
|
||||
@@ -77,3 +77,5 @@ class IncomeContractCreateSerializer(serializers.ModelSerializer):
|
||||
return income_contract
|
||||
|
||||
|
||||
class IncomeContractCalculatePriceSerializer(serializers.Serializer):
|
||||
price = serializers.IntegerField()
|
||||
@@ -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()),
|
||||
]
|
||||
))
|
||||
]
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user