From c9ef7b762095820e4632de7048405429348d218a Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Thu, 11 Sep 2025 15:20:56 +0500 Subject: [PATCH] add: add new api --- core/apps/orders/serializers/party.py | 4 ++++ core/apps/orders/urls.py | 1 + core/apps/orders/views/party.py | 26 ++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 596cffe..11bb618 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -357,6 +357,10 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.debit_usd += validated_data.get('price') expence.counterparty.total_debit += expence.price expence.counterparty.save() + if expence.party.currency == 'usd': + expence.party.party_amount.payment_amount -= validated_data.get('price') + expence.party.party_amount.paid_amount += validated_data.get('price') + expence.party.save() cash_transaction.save() payment_type.save() diff --git a/core/apps/orders/urls.py b/core/apps/orders/urls.py index 8e4bf63..58d5f29 100644 --- a/core/apps/orders/urls.py +++ b/core/apps/orders/urls.py @@ -37,6 +37,7 @@ urlpatterns = [ '/order//remove/', party_views.OrderDeleteToPartyApiView.as_view() ), path('/is_made/', party_views.PartyChangeStatusToIsMadeApiView.as_view()), + path('pay/', party_views.PartyPaymentApiView.as_view()), ] )), ] \ No newline at end of file diff --git a/core/apps/orders/views/party.py b/core/apps/orders/views/party.py index 854a20f..d34c54c 100644 --- a/core/apps/orders/views/party.py +++ b/core/apps/orders/views/party.py @@ -10,6 +10,7 @@ from core.apps.orders.serializers import party as serializers from core.apps.orders.models import Party, PartyAmount, DeletedParty, Order from core.apps.orders.filters.party import PartyFilter from core.apps.orders.tasks.order import create_inventory +from core.apps.finance.models import Expence class PartyCreateApiView(generics.GenericAPIView): @@ -165,3 +166,28 @@ class PartyChangeStatusToIsMadeApiView(generics.GenericAPIView): status=200 ) + +class PartyPaymentApiView(generics.GenericAPIView): + serializer_class = serializers.PartyExpenceCreateSerializer + queryset = Expence.objects.all() + permission_classes = [HasRolePermission] + + def post(self, request): + ser = self.serializer_class(data=request.data) + if ser.is_valid(): + ser.save() + return Response( + { + 'success': True, + 'message': 'partiyage tolov qilindi' + }, + status=200 + ) + return Response( + { + 'success': False, + 'message': 'partiyaga tolov qilishda xatolik yuz berdi', + 'error': ser.errors, + }, + status=400 + ) \ No newline at end of file