From d992ea5962ec60ec876759c6eda8387218ef858c Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Mon, 8 Sep 2025 14:48:32 +0500 Subject: [PATCH] add: add cash transaction delete and update apis --- .../finance/serializers/cash_transaction.py | 7 +++ core/apps/finance/urls.py | 2 + core/apps/finance/views/cash_transaction.py | 48 ++++++++++++++++++- 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/core/apps/finance/serializers/cash_transaction.py b/core/apps/finance/serializers/cash_transaction.py index 54a16b1..5f8667d 100644 --- a/core/apps/finance/serializers/cash_transaction.py +++ b/core/apps/finance/serializers/cash_transaction.py @@ -32,6 +32,13 @@ class CashTransactionListSerializer(serializers.ModelSerializer): } +class CashTransactionUpdateSerializer(serializers.ModelSerializer): + class Meta: + model = CashTransaction + fields = [ + 'name', 'payment_type', 'employees', 'status', 'folder', + ] + class CashTransactionCreateSerializer(serializers.Serializer): payment_type_id = serializers.UUIDField() employee_ids = serializers.ListSerializer(child=serializers.UUIDField()) diff --git a/core/apps/finance/urls.py b/core/apps/finance/urls.py index 96067d6..ed9dd2d 100644 --- a/core/apps/finance/urls.py +++ b/core/apps/finance/urls.py @@ -10,6 +10,8 @@ urlpatterns = [ [ path('list/', cash_views.CashTransactionListApiView.as_view()), path('create/', cash_views.CashTransactionCreateApiView.as_view()), + path('/delete/', cash_views.CashTransactionDeleteApiView.as_view()), + path('/update/', cash_views.CashTransactionUpdateApiView.as_view()), ] )), path('cash_transaction_folder/', include( diff --git a/core/apps/finance/views/cash_transaction.py b/core/apps/finance/views/cash_transaction.py index 4cecc05..89b93dd 100644 --- a/core/apps/finance/views/cash_transaction.py +++ b/core/apps/finance/views/cash_transaction.py @@ -1,4 +1,7 @@ -from rest_framework import generics +from django.shortcuts import get_object_or_404 + +from rest_framework import generics, views +from rest_framework.response import Response from core.apps.finance.models import CashTransaction from core.apps.finance.serializers import cash_transaction as serializers @@ -18,4 +21,45 @@ class CashTransactionCreateApiView(generics.CreateAPIView): serializer_class = serializers.CashTransactionCreateSerializer queryset = CashTransaction.objects.all() permission_classes = [HasRolePermission] - required_permissions = ['project', 'project_folder'] \ No newline at end of file + required_permissions = ['project', 'project_folder'] + + +class CashTransactionUpdateApiView(generics.GenericAPIView): + serializer_class = serializers.CashTransactionUpdateSerializer + queryset = CashTransaction.objects.all() + permission_classes = [HasRolePermission] + + def patch(self, request, id): + obj = get_object_or_404(CashTransaction, id=id) + ser = self.serializer_class(data=request.data, instance=obj, partial=True) + if ser.is_valid(raise_exception=True): + ser.save() + return Response( + { + 'success': True, + 'message': 'Cash Transaction successfully updated!' + }, + status=200, + ) + return Response( + { + 'success': False, + 'message': ser.errors + }, + status=400 + ) + + +class CashTransactionDeleteApiView(views.APIView): + permission_classes = [HasRolePermission] + + def delete(self, request, id): + obj = get_object_or_404(CashTransaction, id=id) + obj.delete() + return Response( + { + 'success': True, + 'message': 'Cash Transaction deleted' + }, + status=204 + ) \ No newline at end of file