From 4aea353b75e7afb8c5530c241ddbb58ec67b8b53 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 11 Nov 2025 16:56:35 +0500 Subject: [PATCH] orders: fixed old bugs --- ..._payment_percentage_alter_party_process.py | 23 +++++++++++++++++++ core/apps/orders/models/party.py | 9 +++----- core/apps/orders/views/party.py | 12 ++++++---- 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 core/apps/orders/migrations/0038_alter_party_payment_percentage_alter_party_process.py diff --git a/core/apps/orders/migrations/0038_alter_party_payment_percentage_alter_party_process.py b/core/apps/orders/migrations/0038_alter_party_payment_percentage_alter_party_process.py new file mode 100644 index 0000000..cf52f89 --- /dev/null +++ b/core/apps/orders/migrations/0038_alter_party_payment_percentage_alter_party_process.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.4 on 2025-11-11 16:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0037_deletedparty_user'), + ] + + operations = [ + migrations.AlterField( + model_name='party', + name='payment_percentage', + field=models.FloatField(default=0.0), + ), + migrations.AlterField( + model_name='party', + name='process', + field=models.FloatField(default=0.0), + ), + ] diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index d170c71..ab495cb 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -42,8 +42,8 @@ class Party(BaseModel): confirmation = models.CharField(max_length=20, choices=CONFIRMATION, default='EXPECTED') currency = models.CharField(choices=[('usd', 'usd'), ('uzs', 'uzs')], max_length=3, default='uzs') # percentages - payment_percentage = models.FloatField(null=True, blank=True) - process = models.FloatField(null=True, blank=True) + payment_percentage = models.FloatField(default=0.0) + process = models.FloatField(default=0.0) comment = models.TextField(null=True, blank=True) audit = models.CharField( @@ -70,10 +70,7 @@ class Party(BaseModel): elif self.status == 'PURCHASED': self.process = 75 elif self.status == 'PARTY_IS_MADE': - percentage = 0.0 - for order in self.orders.all(): - percentage += order.completion_percentage - self.process = percentage + self.process == 100 return super().save(*args, **kwargs) class Meta: diff --git a/core/apps/orders/views/party.py b/core/apps/orders/views/party.py index fe89813..ee73691 100644 --- a/core/apps/orders/views/party.py +++ b/core/apps/orders/views/party.py @@ -160,10 +160,8 @@ class PartyChangeStatusToIsMadeApiView(generics.GenericAPIView): if not serializer.is_valid(raise_exception=True): return Response({"success": False, "message": serializer.errors}, status=400) party = get_object_or_404(Party, id=party_id) - party.status = 'PARTY_IS_MADE' - party.closed_date = now().date() - party.save() data = serializer.validated_data + percentage = 0 for item in data['product']: order_id = item['order_id'] product_quantity = item['product_quantity'] @@ -185,7 +183,13 @@ class PartyChangeStatusToIsMadeApiView(generics.GenericAPIView): order.received_count += product_quantity order.received_date = product_receive_date order.comletion_percentage = completion_percentage - return Response( + percentage += completion_percentage + if percentage == 100: + party.status = 'PARTY_IS_MADE' + party.process = percentage + party.closed_date = now().date() + party.save() + return Response( {'success': True, 'message': 'party updated'}, status=200 )