add party list api

This commit is contained in:
behruz-dev
2025-08-21 14:47:15 +05:00
parent 9e391f1c45
commit 74e3e7a03c
5 changed files with 59 additions and 5 deletions

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2.4 on 2025-08-21 14:37
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders', '0010_party_coled_date_party_confirmation_party_number_and_more'),
]
operations = [
migrations.RenameField(
model_name='party',
old_name='coled_date',
new_name='closed_date',
),
]

View File

@@ -11,7 +11,7 @@ class Party(BaseModel):
mediator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parties') mediator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parties')
# dates # dates
delivery_date = models.DateField() delivery_date = models.DateField()
coled_date = models.DateField(null=True, blank=True) closed_date = models.DateField(null=True, blank=True)
order_date = models.DateField(auto_now_add=True) order_date = models.DateField(auto_now_add=True)
payment_date = models.DateField() payment_date = models.DateField()

View File

@@ -3,7 +3,7 @@ from django.db import transaction
from rest_framework import serializers from rest_framework import serializers
from core.apps.orders.models import Party, PartyAmount, Order from core.apps.orders.models import Party, PartyAmount, Order
from core.apps.orders.serializers.order import MultipleOrderAddSerializer from core.apps.orders.serializers.order import MultipleOrderAddSerializer, OrderListSerializer
from core.apps.accounts.models import User from core.apps.accounts.models import User
@@ -44,6 +44,7 @@ class PartyCreateSerializer(serializers.Serializer):
currency=resource.get('currency'), currency=resource.get('currency'),
total_price=resource.get('amount'), total_price=resource.get('amount'),
date=resource.get('date'), date=resource.get('date'),
employee=self.context.get('user'),
)) ))
total_price += resource.get('amount') total_price += resource.get('amount')
created_orders = Order.objects.bulk_create(orders) created_orders = Order.objects.bulk_create(orders)
@@ -62,3 +63,24 @@ class PartyCreateSerializer(serializers.Serializer):
party=party, party=party,
) )
return party return party
class PartyAmountSerializer(serializers.ModelSerializer):
class Meta:
model = PartyAmount
fields = [
'id', 'total_price', 'cost_amount', 'calculated_amount', 'paid_amount', 'payment_amount'
]
class PartyListSerializer(serializers.ModelSerializer):
orders = OrderListSerializer(many=True)
party_amount = PartyAmountSerializer()
class Meta:
model = Party
fields = [
'id', 'number', 'delivery_date', 'closed_date', 'order_date', 'payment_date', 'status',
'payment_status', 'process', 'confirmation', 'comment', 'audit', 'audit_comment',
'orders', 'party_amount'
]

View File

@@ -28,6 +28,7 @@ urlpatterns = [
path('party/', include( path('party/', include(
[ [
path('create/', party_views.PartyCreateApiView.as_view()), path('create/', party_views.PartyCreateApiView.as_view()),
path('list/', party_views.PartyListApiView.as_view()),
] ]
)), )),
] ]

View File

@@ -13,7 +13,7 @@ class PartyCreateApiView(generics.GenericAPIView):
required_permissions = [] required_permissions = []
def post(self, request): def post(self, request):
serializer = self.serializer_class(data=request.data) serializer = self.serializer_class(data=request.data, context={'user': request.user})
if serializer.is_valid(raise_exception=True): if serializer.is_valid(raise_exception=True):
serializer.save() serializer.save()
return Response( return Response(
@@ -24,3 +24,16 @@ class PartyCreateApiView(generics.GenericAPIView):
{'success': False, 'message': 'error while party created', 'error': serializer.errors}, {'success': False, 'message': 'error while party created', 'error': serializer.errors},
status=400 status=400
) )
class PartyListApiView(generics.GenericAPIView):
serializer_class = serializers.PartyListSerializer
queryset = Party.objects.select_related('party_amount').prefetch_related('orders')
permission_classes = [HasRolePermission]
required_permissions = []
def get(self, request):
parties = self.get_queryset()
serializer = self.serializer_class(parties, many=True)
return Response(serializer.data, status=200)