add party list api
This commit is contained in:
@@ -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',
|
||||
),
|
||||
]
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -62,3 +63,24 @@ class PartyCreateSerializer(serializers.Serializer):
|
||||
party=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'
|
||||
]
|
||||
@@ -28,6 +28,7 @@ urlpatterns = [
|
||||
path('party/', include(
|
||||
[
|
||||
path('create/', party_views.PartyCreateApiView.as_view()),
|
||||
path('list/', party_views.PartyListApiView.as_view()),
|
||||
]
|
||||
)),
|
||||
]
|
||||
@@ -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(
|
||||
@@ -24,3 +24,16 @@ class PartyCreateApiView(generics.GenericAPIView):
|
||||
{'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)
|
||||
|
||||
Reference in New Issue
Block a user