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')
# dates
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)
payment_date = models.DateField()

View File

@@ -3,7 +3,7 @@ from django.db import transaction
from rest_framework import serializers
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
@@ -44,6 +44,7 @@ class PartyCreateSerializer(serializers.Serializer):
currency=resource.get('currency'),
total_price=resource.get('amount'),
date=resource.get('date'),
employee=self.context.get('user'),
))
total_price += resource.get('amount')
created_orders = Order.objects.bulk_create(orders)
@@ -61,4 +62,25 @@ class PartyCreateSerializer(serializers.Serializer):
total_price=total_price,
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('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 = []
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):
serializer.save()
return Response(
@@ -23,4 +23,17 @@ class PartyCreateApiView(generics.GenericAPIView):
return Response(
{'success': False, 'message': 'error while party created', 'error': serializer.errors},
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)