party payment history api added
This commit is contained in:
@@ -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
|
||||||
@@ -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()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
]
|
]
|
||||||
@@ -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
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user