add: add two new api for finance
This commit is contained in:
@@ -81,3 +81,7 @@ class ExpenceContractCreateSerializer(serializers.ModelSerializer):
|
|||||||
)
|
)
|
||||||
return expence_contract
|
return expence_contract
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ExpenceContractCalculatePriceSerializer(serializers.Serializer):
|
||||||
|
price = serializers.IntegerField()
|
||||||
@@ -77,3 +77,5 @@ class IncomeContractCreateSerializer(serializers.ModelSerializer):
|
|||||||
return income_contract
|
return income_contract
|
||||||
|
|
||||||
|
|
||||||
|
class IncomeContractCalculatePriceSerializer(serializers.Serializer):
|
||||||
|
price = serializers.IntegerField()
|
||||||
@@ -72,6 +72,7 @@ urlpatterns = [
|
|||||||
path('list/', ic_views.IncomeContractListApiView.as_view()),
|
path('list/', ic_views.IncomeContractListApiView.as_view()),
|
||||||
path('create/', ic_views.IncomeContractCreateApiView.as_view()),
|
path('create/', ic_views.IncomeContractCreateApiView.as_view()),
|
||||||
path('statistics/', ic_views.IncomeContractStatisticsApiView.as_view()),
|
path('statistics/', ic_views.IncomeContractStatisticsApiView.as_view()),
|
||||||
|
path('<uuid:id>/calculate_price/', ic_views.IncomeContractCalculatePriceApiView.as_view()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
path('expence_contract/', include(
|
path('expence_contract/', include(
|
||||||
@@ -79,6 +80,7 @@ urlpatterns = [
|
|||||||
path('list/', ec_views.ExpenceContractListApiView.as_view()),
|
path('list/', ec_views.ExpenceContractListApiView.as_view()),
|
||||||
path('create/', ec_views.ExpenceContractCreateApiView.as_view()),
|
path('create/', ec_views.ExpenceContractCreateApiView.as_view()),
|
||||||
path('statistics/', ec_views.ExpenceContractStatisticsApiView.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.utils.timezone import now
|
||||||
from django.db.models import Sum, Q, F
|
from django.db.models import Sum, Q, F
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from django_filters.rest_framework.backends import DjangoFilterBackend
|
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 rest_framework.response import Response
|
||||||
|
|
||||||
from core.apps.finance.models import ExpenceContract
|
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
|
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||||
|
|
||||||
|
|
||||||
@@ -99,3 +100,22 @@ class ExpenceContractStatisticsApiView(views.APIView):
|
|||||||
'usd': usd
|
'usd': usd
|
||||||
}
|
}
|
||||||
return Response(res, status=200)
|
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.accounts.permissions.permissions import HasRolePermission
|
||||||
from core.apps.finance.models import IncomeContract
|
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):
|
class IncomeContractCreateApiView(generics.GenericAPIView):
|
||||||
@@ -100,3 +100,22 @@ class IncomeContractStatisticsApiView(views.APIView):
|
|||||||
'usd': usd
|
'usd': usd
|
||||||
}
|
}
|
||||||
return Response(res, status=200)
|
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