add: income-expence delete api

This commit is contained in:
behruz-dev
2025-09-25 16:37:41 +05:00
parent e854e5a7fe
commit 7ee8531aee
13 changed files with 214 additions and 7 deletions

View File

@@ -6,7 +6,7 @@ from rest_framework.response import Response
from django_filters.rest_framework.backends import DjangoFilterBackend
from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.finance.models import Expence
from core.apps.finance.models import Expence, DeletedExpence
from core.apps.finance.serializers import expence as serializers
from core.apps.finance.filters.expence import ExpenceFilter
from core.apps.counterparty.models import Counterparty
@@ -107,4 +107,39 @@ class ChangeExpenceStatusApiView(views.APIView):
'message': 'expence status successfully updated',
},
status=200
)
)
class ExpenceDeleteApiView(generics.GenericAPIView):
serializer_class = serializers.ExpenceDeleteSerializer
queryset = Expence.objects.all()
permission_classes = [HasRolePermission]
def post(self, request, id):
expence = get_object_or_404(Expence, id=id)
serializer = self.serializer_class(data=request.data)
if serializer.is_valid(raise_exception=True):
comment = serializer.validated_data.get('comment')
DeletedExpence.objects.create(
expence=expence,
comment=comment
)
expence.is_deleted = True
if expence.currency == 'uzs':
expence.cash_transaction.expence_balance_uzs += expence.price
expence.cash_transaction.total_balance_uzs += expence.price
expence.payment_type.total_uzs += expence.price
else:
expence.cash_transaction.expence_balance_usd += expence.price
expence.cash_transaction.total_balance_usd += expence.price
expence.payment_type.total_usd += expence.price
expence.cash_transaction.save()
expence.payment_type.save()
expence.save()
return Response(
{
'success': True,
'message': 'Expence deleted',
}, status=200
)