party payment history api added

This commit is contained in:
behruz-dev
2025-10-08 14:03:42 +05:00
parent 1fae231fc1
commit b78d7d38c7
3 changed files with 50 additions and 1 deletions

View File

@@ -480,3 +480,27 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer):
cash_transaction.save() cash_transaction.save()
payment_type.save() payment_type.save()
return expence return expence
class PartyPaymentHistorySerializer(serializers.ModelSerializer):
counterparty = serializers.SerializerMethodField(method_name='get_counterparty')
user = serializers.SerializerMethodField(method_name='get_user')
class Meta:
model = Expence
fields = [
'id', 'counterparty', 'price', 'created_at', 'date', 'user'
]
def get_counterparty(self, obj):
return {
'id': obj.counterparty.id,
'name': obj.counterparty.name,
} if obj.counterparty else None
def get_user(self, obj):
return {
'id': obj.user.id,
'full_name': obj.user.full_name,
'profile_image': obj.user.profile_image,
} if obj.user else None

View File

@@ -44,6 +44,7 @@ urlpatterns = [
path('statistics/', party_views.PartyStatisticsApiView.as_view()), path('statistics/', party_views.PartyStatisticsApiView.as_view()),
path('bulk-delete/', party_views.DeleteMultiplePartyApiView.as_view()), path('bulk-delete/', party_views.DeleteMultiplePartyApiView.as_view()),
path('<uuid:id>/change-confirmation/', party_views.ChangeConfirmationPartyApiView.as_view()), path('<uuid:id>/change-confirmation/', party_views.ChangeConfirmationPartyApiView.as_view()),
path('<uuid:id>/payment-history/', party_views.PartyPaymentHistoryApiView.as_view()),
] ]
)), )),
] ]

View File

@@ -1,17 +1,23 @@
# django
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.db.models import Sum, Q, F from django.db.models import Sum, Q, F
from django.utils.timezone import now from django.utils.timezone import now
# django rest framework
from rest_framework import generics, views from rest_framework import generics, views
from rest_framework.response import Response from rest_framework.response import Response
# django filters
from django_filters.rest_framework.backends import DjangoFilterBackend from django_filters.rest_framework.backends import DjangoFilterBackend
# accounts app
from core.apps.accounts.permissions.permissions import HasRolePermission from core.apps.accounts.permissions.permissions import HasRolePermission
# orders app
from core.apps.orders.serializers import party as serializers from core.apps.orders.serializers import party as serializers
from core.apps.orders.models import Party, PartyAmount, DeletedParty, Order from core.apps.orders.models import Party, DeletedParty
from core.apps.orders.filters.party import PartyFilter from core.apps.orders.filters.party import PartyFilter
from core.apps.orders.tasks.order import create_inventory from core.apps.orders.tasks.order import create_inventory
# finance app
from core.apps.finance.models import Expence from core.apps.finance.models import Expence
@@ -258,3 +264,21 @@ class ChangeConfirmationPartyApiView(views.APIView):
}, },
status=200 status=200
) )
class PartyPaymentHistoryApiView(generics.GenericAPIView):
permission_classes = [HasRolePermission]
serializer_class = serializers.PartyPaymentHistorySerializer
queryset = Expence.objects.select_related('counterparty', 'user')
pagination_class = None
def get(self, request, id):
party = get_object_or_404(Party, id=id)
expences = self.queryset.filter(party=party)
serializer = self.serializer_class(expences, many=True)
return Response(
{
'success': True,
'data': serializer.data,
}, status=200
)