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')
|
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()
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
|
]
|
||||||
@@ -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()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
]
|
]
|
||||||
@@ -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)
|
||||||
|
|
||||||
Reference in New Issue
Block a user