From ceef207b19dd47c0e1d5d3b277eb20e8ffb798d7 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 13:56:28 +0500 Subject: [PATCH 01/20] change first_name and last_name to full_name on cash_transaction list --- core/apps/finance/serializers/cash_transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/apps/finance/serializers/cash_transaction.py b/core/apps/finance/serializers/cash_transaction.py index 8d1abee..6e840e8 100644 --- a/core/apps/finance/serializers/cash_transaction.py +++ b/core/apps/finance/serializers/cash_transaction.py @@ -21,7 +21,7 @@ class CashTransactionEmployeeListSerializer(serializers.ModelSerializer): class Meta: model = User fields = [ - 'id', 'profile_image', 'first_name', 'last_name', 'username' + 'id', 'profile_image', 'full_name', 'username' ] From e66aa6b213dddc29e15cf19009d881c1735a3b39 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 14:17:40 +0500 Subject: [PATCH 02/20] calculate party process and payment_percentag --- core/apps/orders/models/party.py | 16 ++++++++++++++++ core/apps/orders/serializers/party.py | 2 ++ 2 files changed, 18 insertions(+) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 51b318b..f236db8 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -59,6 +59,22 @@ class Party(BaseModel): def __str__(self): return f'P - {self.number}' + def save(self, *args, **kwargs): + if self.status in ['NEW', 'CANCELLED', 'DRAFT']: + self.process = 0 + elif self.status == 'EXPECTED': + self.process = 25 + elif self.status == 'PROCESS': + self.process = 50 + elif self.status == 'PURCHASED': + self.process = 75 + elif self.status == 'PARTY_IS_MADE': + self.process == 100 + if self.party_amount and self.party_amount.paid_amount > 0: + self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 + self.party_amount.save() + return super().save(args, kwargs) + class Meta: verbose_name = 'Partiya' verbose_name_plural = 'Partiyalar' diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index e6868f1..4ec6fb7 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -123,6 +123,7 @@ class PartyDetailSerializer(serializers.ModelSerializer): "payment_date", "status", "payment_status", + "payment_percentage", "process", "confirmation", "comment", @@ -166,6 +167,7 @@ class PartyListSerializer(serializers.ModelSerializer): "payment_date", "status", "payment_status", + "payment_percentage", "process", "confirmation", "comment", From c691bfea942821af370dc305a59a79f4d5f40bc6 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 14:40:37 +0500 Subject: [PATCH 03/20] fix save method --- core/apps/orders/models/party.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index f236db8..fc708c2 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -69,11 +69,11 @@ class Party(BaseModel): elif self.status == 'PURCHASED': self.process = 75 elif self.status == 'PARTY_IS_MADE': - self.process == 100 - if self.party_amount and self.party_amount.paid_amount > 0: + self.process = 100 + if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0: self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 self.party_amount.save() - return super().save(args, kwargs) + return super().save(*args, **kwargs) class Meta: verbose_name = 'Partiya' From e01017123ca7ab655142eada8077c1bdc07de120 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 14:57:29 +0500 Subject: [PATCH 04/20] fix payment --- core/apps/orders/serializers/party.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 4ec6fb7..f52ff46 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -425,10 +425,10 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.debit_uzs += expence.price expence.counterparty.total_debit += expence.price expence.counterparty.save() - if expence.party.currency == "uzs": - expence.party.party_amount.payment_amount -= expence.price - expence.party.party_amount.paid_amount += expence.price - expence.party.save() + # if expence.party.currency == "uzs": + expence.party.party_amount.payment_amount -= expence.price + expence.party.party_amount.paid_amount += expence.price + expence.party.save() elif validated_data.get("currency") == "usd": cash_transaction.expence_balance_usd += expence.price @@ -453,14 +453,14 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.debit_usd += validated_data.get("price") expence.counterparty.total_debit += expence.price expence.counterparty.save() - if expence.party.currency == "usd": - expence.party.party_amount.payment_amount -= validated_data.get( - "price" - ) - expence.party.party_amount.paid_amount += validated_data.get( - "price" - ) - expence.party.save() + # if expence.party.currency == "usd": + expence.party.party_amount.payment_amount -= validated_data.get( + "price" + ) + expence.party.party_amount.paid_amount += validated_data.get( + "price" + ) + expence.party.save() cash_transaction.save() payment_type.save() From f385bf5d65e0c89f946c3c2c674c33d5f5d6bb17 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:14:13 +0500 Subject: [PATCH 05/20] change party payment --- core/apps/orders/serializers/party.py | 39 ++++++++++++++++++--------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index f52ff46..612ef47 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -383,6 +383,7 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): def create(self, validated_data): with transaction.atomic(): + usd_value = UsdCourse.objects.first().value expence = Expence.objects.create( cash_transaction=validated_data.get("cash_transaction"), payment_type=validated_data.get("payment_type"), @@ -425,10 +426,14 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.debit_uzs += expence.price expence.counterparty.total_debit += expence.price expence.counterparty.save() - # if expence.party.currency == "uzs": - expence.party.party_amount.payment_amount -= expence.price - expence.party.party_amount.paid_amount += expence.price - expence.party.save() + if expence.party.currency == "uzs": + expence.party.party_amount.payment_amount -= expence.price + expence.party.party_amount.paid_amount += expence.price + expence.party.save() + elif expence.party.currency == 'usd': + expence.party.party_amount.payment_amount -= round(expence.price / usd_value) + expence.party.party_amount.paid_amount += round(expence.price / usd_value) + expence.party.save() elif validated_data.get("currency") == "usd": cash_transaction.expence_balance_usd += expence.price @@ -453,14 +458,24 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.debit_usd += validated_data.get("price") expence.counterparty.total_debit += expence.price expence.counterparty.save() - # if expence.party.currency == "usd": - expence.party.party_amount.payment_amount -= validated_data.get( - "price" - ) - expence.party.party_amount.paid_amount += validated_data.get( - "price" - ) - expence.party.save() + + if expence.party.currency == "usd": + expence.party.party_amount.payment_amount -= validated_data.get( + "price" + ) + expence.party.party_amount.paid_amount += validated_data.get( + "price" + ) + expence.party.save() + + elif expence.party.currency == "uzs": + expence.party.party_amount.payment_amount -= validated_data.get( + "price" + ) * usd_value + expence.party.party_amount.paid_amount += validated_data.get( + "price" + ) * usd_value + expence.party.save() cash_transaction.save() payment_type.save() From 1f0af73adede051867725565d11d6cfe1d645e11 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:19:39 +0500 Subject: [PATCH 06/20] change party payment --- core/apps/orders/serializers/party.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 612ef47..5ab3b2b 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -64,10 +64,9 @@ class PartyCreateSerializer(serializers.Serializer): qqs=resource.get("qqs"), ) ) - if validated_data.get("currency") != "uzs": - if resource.get("currency") == "usd": - usd_value = UsdCourse.objects.first().value - total_price += resource.get("amount") * usd_value + if resource.get("currency") == "usd": + usd_value = UsdCourse.objects.first().value + total_price += resource.get("amount") * usd_value else: total_price += resource.get("amount") created_orders = Order.objects.bulk_create(orders) From 66ab98d2591064b1acde14d959661ba5dc18f49d Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:36:32 +0500 Subject: [PATCH 07/20] fiux --- core/apps/orders/models/party.py | 2 +- core/apps/orders/serializers/party.py | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index fc708c2..6a9e13e 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -74,7 +74,7 @@ class Party(BaseModel): self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 self.party_amount.save() return super().save(*args, **kwargs) - + class Meta: verbose_name = 'Partiya' verbose_name_plural = 'Partiyalar' diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 5ab3b2b..555d4ed 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -428,11 +428,10 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): if expence.party.currency == "uzs": expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price - expence.party.save() + print("--------------------------------------------------------------------------------") elif expence.party.currency == 'usd': expence.party.party_amount.payment_amount -= round(expence.price / usd_value) expence.party.party_amount.paid_amount += round(expence.price / usd_value) - expence.party.save() elif validated_data.get("currency") == "usd": cash_transaction.expence_balance_usd += expence.price @@ -465,7 +464,6 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.party.party_amount.paid_amount += validated_data.get( "price" ) - expence.party.save() elif expence.party.currency == "uzs": expence.party.party_amount.payment_amount -= validated_data.get( @@ -474,8 +472,8 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.party.party_amount.paid_amount += validated_data.get( "price" ) * usd_value - expence.party.save() + expence.party.save() cash_transaction.save() payment_type.save() return expence From 9bdd8ca18a93c2b4bc63f4aaa47ed41de69aa842 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:37:45 +0500 Subject: [PATCH 08/20] fix --- core/apps/orders/serializers/party.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 555d4ed..0c668cc 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -429,6 +429,8 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price print("--------------------------------------------------------------------------------") + print(expence.party.party_amount.payment_amount) + print(expence.party.party_amount.paid_amount) elif expence.party.currency == 'usd': expence.party.party_amount.payment_amount -= round(expence.price / usd_value) expence.party.party_amount.paid_amount += round(expence.price / usd_value) From df9bd37f873d9cb926d86de4dcf9f687e93cfd60 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:39:50 +0500 Subject: [PATCH 09/20] fix --- core/apps/orders/serializers/party.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 0c668cc..37fd3e0 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -426,6 +426,9 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.total_debit += expence.price expence.counterparty.save() if expence.party.currency == "uzs": + print(expence.party.party_amount.payment_amount) + print(expence.party.party_amount.paid_amount) + print(expence.price) expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price print("--------------------------------------------------------------------------------") From 61d291e6c6b8da4eb511e679f4cc2340e22d5fdf Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:44:35 +0500 Subject: [PATCH 10/20] fucking calculate party payment is done! --- core/apps/orders/serializers/party.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 37fd3e0..a059364 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -426,14 +426,8 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.total_debit += expence.price expence.counterparty.save() if expence.party.currency == "uzs": - print(expence.party.party_amount.payment_amount) - print(expence.party.party_amount.paid_amount) - print(expence.price) expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price - print("--------------------------------------------------------------------------------") - print(expence.party.party_amount.payment_amount) - print(expence.party.party_amount.paid_amount) elif expence.party.currency == 'usd': expence.party.party_amount.payment_amount -= round(expence.price / usd_value) expence.party.party_amount.paid_amount += round(expence.price / usd_value) From d635dcf5dee12123b9e7cf298551a56b4ebf4f29 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 15:55:41 +0500 Subject: [PATCH 11/20] add api for usd course for Aziz aka --- core/apps/shared/serializers/usd_course.py | 11 ++++++++ core/apps/shared/urls.py | 2 ++ core/apps/shared/views/usd_course.py | 29 ++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 core/apps/shared/serializers/usd_course.py create mode 100644 core/apps/shared/views/usd_course.py diff --git a/core/apps/shared/serializers/usd_course.py b/core/apps/shared/serializers/usd_course.py new file mode 100644 index 0000000..c7ba83d --- /dev/null +++ b/core/apps/shared/serializers/usd_course.py @@ -0,0 +1,11 @@ +from rest_framework import serializers + +from core.apps.shared.models import UsdCourse + + +class UsdCourseSerializer(serializers.ModelSerializer): + class Meta: + model = UsdCourse + fields = [ + 'id', 'value' + ] \ No newline at end of file diff --git a/core/apps/shared/urls.py b/core/apps/shared/urls.py index 1159d48..ce5b7a0 100644 --- a/core/apps/shared/urls.py +++ b/core/apps/shared/urls.py @@ -1,8 +1,10 @@ from django.urls import path, include from core.apps.shared.views import region as region_views +from core.apps.shared.views.usd_course import UsdCourseApiView urlpatterns = [ path('region/list/', region_views.RegionListApiView.as_view()), path('region//districts/', region_views.DistrictListApiView.as_view()), + path('usd_course/', UsdCourseApiView.as_view()), ] \ No newline at end of file diff --git a/core/apps/shared/views/usd_course.py b/core/apps/shared/views/usd_course.py new file mode 100644 index 0000000..6265e0e --- /dev/null +++ b/core/apps/shared/views/usd_course.py @@ -0,0 +1,29 @@ +from django.shortcuts import get_object_or_404 + +from rest_framework import generics +from rest_framework.response import Response + +from core.apps.shared.models import UsdCourse +from core.apps.shared.serializers.usd_course import UsdCourseSerializer +from core.apps.accounts.permissions.permissions import HasRolePermission + + +class UsdCourseApiView(generics.GenericAPIView): + serializer_class = UsdCourseSerializer + queryset = UsdCourse.objects.all() + permission_classes = [HasRolePermission] + + def get(self, request): + value = UsdCourse.objects.first() + serializer = self.serializer_class(value) + return Response(serializer.data, status=200) + + def patch(self, request, id): + usd_cource = get_object_or_404(UsdCourse, id=id) + serializer = self.serializer_class(data=request.data) + if serializer.is_valid(): + return Response(serializer.errors, status=400) + value = serializer.validated_data.get('value') + usd_cource.value = value + usd_cource.save() + return Response({'new_value': usd_cource.value, 'old_value': value}, status=200) From c66942db74f1ea30d765955775619a689abfd776 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:00:29 +0500 Subject: [PATCH 12/20] fix payment --- core/apps/orders/models/party.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 6a9e13e..1e64956 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -70,9 +70,11 @@ class Party(BaseModel): self.process = 75 elif self.status == 'PARTY_IS_MADE': self.process = 100 - if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0: + if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 self.party_amount.save() + else: + self.payment_percentage = 100 return super().save(*args, **kwargs) class Meta: From e726773658c6922b50fa6a2e54dadfb970580eff Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:06:09 +0500 Subject: [PATCH 13/20] fix payment --- core/apps/orders/serializers/party.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index a059364..59683a1 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -428,10 +428,11 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): if expence.party.currency == "uzs": expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price + expence.party.save() elif expence.party.currency == 'usd': expence.party.party_amount.payment_amount -= round(expence.price / usd_value) expence.party.party_amount.paid_amount += round(expence.price / usd_value) - + expence.party.save() elif validated_data.get("currency") == "usd": cash_transaction.expence_balance_usd += expence.price cash_transaction.total_balance_usd = ( @@ -463,7 +464,7 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.party.party_amount.paid_amount += validated_data.get( "price" ) - + expence.party.save() elif expence.party.currency == "uzs": expence.party.party_amount.payment_amount -= validated_data.get( "price" @@ -471,8 +472,7 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.party.party_amount.paid_amount += validated_data.get( "price" ) * usd_value - - expence.party.save() + expence.party.save() cash_transaction.save() payment_type.save() return expence From c7dfe2ed5dd63e35a03cc798e84d4c3be22c869e Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:10:14 +0500 Subject: [PATCH 14/20] commit --- core/apps/orders/serializers/party.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 59683a1..a8869a1 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -426,6 +426,8 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.total_debit += expence.price expence.counterparty.save() if expence.party.currency == "uzs": + print(expence.party.party_amount.payment_amount - expence.price) + print(expence.party.party_amount.paid_amount + expence.price) expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price expence.party.save() From 50e989f8e17c28c6fdc2f9214aeb62b2a5c02fb8 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:17:17 +0500 Subject: [PATCH 15/20] fix --- core/apps/orders/models/party.py | 10 +++++----- core/apps/orders/serializers/party.py | 2 -- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 1e64956..6376c4e 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -70,11 +70,11 @@ class Party(BaseModel): self.process = 75 elif self.status == 'PARTY_IS_MADE': self.process = 100 - if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: - self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 - self.party_amount.save() - else: - self.payment_percentage = 100 + # if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: + # self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 + # self.party_amount.save() + # else: + # self.payment_percentage = 100 return super().save(*args, **kwargs) class Meta: diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index a8869a1..59683a1 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -426,8 +426,6 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.counterparty.total_debit += expence.price expence.counterparty.save() if expence.party.currency == "uzs": - print(expence.party.party_amount.payment_amount - expence.price) - print(expence.party.party_amount.paid_amount + expence.price) expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price expence.party.save() From aa8be776bcc4eb2cbcc1eab93cb489ae1421baec Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:28:28 +0500 Subject: [PATCH 16/20] change type --- ..._partyamount_calculated_amount_and_more.py | 28 +++++++++++++++++++ core/apps/orders/models/party.py | 16 +++++------ 2 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 core/apps/orders/migrations/0027_alter_partyamount_calculated_amount_and_more.py diff --git a/core/apps/orders/migrations/0027_alter_partyamount_calculated_amount_and_more.py b/core/apps/orders/migrations/0027_alter_partyamount_calculated_amount_and_more.py new file mode 100644 index 0000000..ff0127e --- /dev/null +++ b/core/apps/orders/migrations/0027_alter_partyamount_calculated_amount_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 5.2.4 on 2025-10-07 16:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0026_alter_order_qqs_alter_order_qqs_price_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='partyamount', + name='calculated_amount', + field=models.BigIntegerField(default=0), + ), + migrations.AlterField( + model_name='partyamount', + name='cost_amount', + field=models.BigIntegerField(default=0), + ), + migrations.AlterField( + model_name='partyamount', + name='paid_amount', + field=models.BigIntegerField(default=0), + ), + ] diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 6376c4e..9e8f4a6 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -70,11 +70,11 @@ class Party(BaseModel): self.process = 75 elif self.status == 'PARTY_IS_MADE': self.process = 100 - # if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: - # self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 - # self.party_amount.save() - # else: - # self.payment_percentage = 100 + if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: + self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 + self.party_amount.save() + else: + self.payment_percentage = 100 return super().save(*args, **kwargs) class Meta: @@ -85,9 +85,9 @@ class Party(BaseModel): class PartyAmount(BaseModel): party = models.OneToOneField(Party, on_delete=models.CASCADE, related_name='party_amount') total_price = models.PositiveBigIntegerField() - cost_amount = models.PositiveBigIntegerField(default=0) - calculated_amount = models.PositiveBigIntegerField(default=0) - paid_amount = models.PositiveBigIntegerField(default=0) + cost_amount = models.BigIntegerField(default=0) + calculated_amount = models.BigIntegerField(default=0) + paid_amount = models.BigIntegerField(default=0) payment_amount = models.BigIntegerField(default=0) def __str__(self): From 377cc531f6df67f39ad3132631de2deb1d0b7c66 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:32:56 +0500 Subject: [PATCH 17/20] change type --- core/apps/orders/models/party.py | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 9e8f4a6..c3073a6 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -59,23 +59,23 @@ class Party(BaseModel): def __str__(self): return f'P - {self.number}' - def save(self, *args, **kwargs): - if self.status in ['NEW', 'CANCELLED', 'DRAFT']: - self.process = 0 - elif self.status == 'EXPECTED': - self.process = 25 - elif self.status == 'PROCESS': - self.process = 50 - elif self.status == 'PURCHASED': - self.process = 75 - elif self.status == 'PARTY_IS_MADE': - self.process = 100 - if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: - self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 - self.party_amount.save() - else: - self.payment_percentage = 100 - return super().save(*args, **kwargs) + # def save(self, *args, **kwargs): + # if self.status in ['NEW', 'CANCELLED', 'DRAFT']: + # self.process = 0 + # elif self.status == 'EXPECTED': + # self.process = 25 + # elif self.status == 'PROCESS': + # self.process = 50 + # elif self.status == 'PURCHASED': + # self.process = 75 + # elif self.status == 'PARTY_IS_MADE': + # self.process = 100 + # if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: + # self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 + # self.party_amount.save() + # else: + # self.payment_percentage = 100 + # return super().save(*args, **kwargs) class Meta: verbose_name = 'Partiya' From 0a856b05f77b4f5d0f30cf6b649e6eda42430319 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:36:21 +0500 Subject: [PATCH 18/20] fix --- core/apps/orders/models/party.py | 34 +++++++++++++-------------- core/apps/orders/serializers/party.py | 3 +++ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index c3073a6..9e8f4a6 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -59,23 +59,23 @@ class Party(BaseModel): def __str__(self): return f'P - {self.number}' - # def save(self, *args, **kwargs): - # if self.status in ['NEW', 'CANCELLED', 'DRAFT']: - # self.process = 0 - # elif self.status == 'EXPECTED': - # self.process = 25 - # elif self.status == 'PROCESS': - # self.process = 50 - # elif self.status == 'PURCHASED': - # self.process = 75 - # elif self.status == 'PARTY_IS_MADE': - # self.process = 100 - # if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: - # self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 - # self.party_amount.save() - # else: - # self.payment_percentage = 100 - # return super().save(*args, **kwargs) + def save(self, *args, **kwargs): + if self.status in ['NEW', 'CANCELLED', 'DRAFT']: + self.process = 0 + elif self.status == 'EXPECTED': + self.process = 25 + elif self.status == 'PROCESS': + self.process = 50 + elif self.status == 'PURCHASED': + self.process = 75 + elif self.status == 'PARTY_IS_MADE': + self.process = 100 + if hasattr(self, 'party_amount') and self.party_amount.paid_amount > 0 and self.party_amount.payment_amount > 0: + self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 + self.party_amount.save() + else: + self.payment_percentage = 100 + return super().save(*args, **kwargs) class Meta: verbose_name = 'Partiya' diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 59683a1..654d3ba 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -428,7 +428,10 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): if expence.party.currency == "uzs": expence.party.party_amount.payment_amount -= expence.price expence.party.party_amount.paid_amount += expence.price + print(expence.party.party_amount.payment_amount) + print(expence.party.party_amount.paid_amount) expence.party.save() + expence.party.refresh_from_db() elif expence.party.currency == 'usd': expence.party.party_amount.payment_amount -= round(expence.price / usd_value) expence.party.party_amount.paid_amount += round(expence.price / usd_value) From e1c5db8122279f303dc79d1ee092a0ddd69460d5 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 16:48:10 +0500 Subject: [PATCH 19/20] fix --- core/apps/orders/models/party.py | 2 +- core/apps/orders/serializers/party.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 9e8f4a6..c9c13c4 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -74,7 +74,7 @@ class Party(BaseModel): self.payment_percentage = (self.party_amount.paid_amount / self.party_amount.payment_amount) * 100 self.party_amount.save() else: - self.payment_percentage = 100 + self.payment_percentage = 100.0 return super().save(*args, **kwargs) class Meta: diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 654d3ba..ead0848 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -430,8 +430,8 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): expence.party.party_amount.paid_amount += expence.price print(expence.party.party_amount.payment_amount) print(expence.party.party_amount.paid_amount) + expence.party.party_amount.save() expence.party.save() - expence.party.refresh_from_db() elif expence.party.currency == 'usd': expence.party.party_amount.payment_amount -= round(expence.price / usd_value) expence.party.party_amount.paid_amount += round(expence.price / usd_value) @@ -476,6 +476,7 @@ class PartyExpenceCreateSerializer(serializers.ModelSerializer): "price" ) * usd_value expence.party.save() + expence.party.party_amount.save() cash_transaction.save() payment_type.save() return expence From 6ba604ea1b2ff3813345636a8384a9fcdff57dd4 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 7 Oct 2025 17:27:59 +0500 Subject: [PATCH 20/20] change task --- core/apps/orders/models/party.py | 1 + core/apps/orders/views/party.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index c9c13c4..e53e127 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -75,6 +75,7 @@ class Party(BaseModel): self.party_amount.save() else: self.payment_percentage = 100.0 + self.status == 'PURCHASED' return super().save(*args, **kwargs) class Meta: diff --git a/core/apps/orders/views/party.py b/core/apps/orders/views/party.py index 959d694..60c99bc 100644 --- a/core/apps/orders/views/party.py +++ b/core/apps/orders/views/party.py @@ -36,7 +36,7 @@ class PartyCreateApiView(generics.GenericAPIView): class PartyListApiView(generics.GenericAPIView): serializer_class = serializers.PartyListSerializer - queryset = Party.objects.select_related('party_amount').exclude(is_deleted=True).order_by('number') + queryset = Party.objects.select_related('party_amount').exclude(is_deleted=True).order_by('-number') permission_classes = [HasRolePermission] filter_backends = [DjangoFilterBackend] filterset_class = PartyFilter