From 2727b9cb881543a53aab95ac5530ee6ecce01b93 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Fri, 22 Aug 2025 11:03:15 +0500 Subject: [PATCH] change party model and serializer --- core/apps/orders/filters/party.py | 36 +++++++++++++++---- ...me_qqs_price_party_qqs_alter_order_date.py | 23 ++++++++++++ core/apps/orders/models/order.py | 2 +- core/apps/orders/models/party.py | 2 +- core/apps/orders/serializers/order.py | 1 - core/apps/orders/serializers/party.py | 5 ++- 6 files changed, 56 insertions(+), 13 deletions(-) create mode 100644 core/apps/orders/migrations/0015_rename_qqs_price_party_qqs_alter_order_date.py diff --git a/core/apps/orders/filters/party.py b/core/apps/orders/filters/party.py index b0d4691..30eafbb 100644 --- a/core/apps/orders/filters/party.py +++ b/core/apps/orders/filters/party.py @@ -15,20 +15,29 @@ class PartyFilter(django_filters.FilterSet): ('last_year', 'oirgi yil'), ) + # delivery date filters delivery_date = django_filters.ChoiceFilter( choices=DATE_CHOICES, method='filter_by_deliveyer_date' ) - start_date = django_filters.DateFilter(field_name="delivery_date", lookup_expr="gte") - end_date = django_filters.DateFilter(field_name="delivery_date", lookup_expr="lte") - + delivery_start_date = django_filters.DateFilter(field_name="delivery_date", lookup_expr="gte") + delivery_end_date = django_filters.DateFilter(field_name="delivery_date", lookup_expr="lte") + # payment date filters payment_date = django_filters.ChoiceFilter( choices=DATE_CHOICES, method='filter_by_payment_date' ) - + payment_start_date = django_filters.DateFilter(field_name='payment_date', lookup_expr='gte') + payment_end_date = django_filters.DateFilter(field_name='payment_date', lookup_expr='lte') + # order date filters + order_date = django_filters.ChoiceFilter( + choices=DATE_CHOICES, method='filter_by_order_date' + ) + order_start_date = django_filters.DateFilter(field_name='order_date', lookup_expr='gte') + order_end_date = django_filters.DateFilter(field_name='order_date', lookup_expr='lte') + class Meta: model = Party fields = [ - 'delivery_date', 'start_date', 'end_date', + ] def filter_by_delivery_date(self, queryset, name, value): @@ -72,9 +81,22 @@ class PartyFilter(django_filters.FilterSet): end_date = start_date + timedelta(days=6) return queryset.filter(payment_date__range=(start_date, end_date)) elif value == 'last_month': - ... + if today.month == 1: + last_month_year = today.year - 1 + last_month = 12 + else: + last_month_year = today.year + last_month = today.moth - 1 + + start_last_month = today.replace(year=last_month_year, month=last_month, day=1) + days_in_last_month = monthrange(last_month_year, last_month)[1] + end_last_month = start_last_month.replace(day=days_in_last_month) + + return queryset.filter(payment_date__range=(start_last_month, end_last_month)) elif value == 'last_year': - ... + start_year = today.replace(year=today.year - 1, month=1, day=1) + end_year = today.replace(year=today.year - 1, month=12, day=31) + return queryset.filter(payment_date__range=(start_year, end_year)) return queryset diff --git a/core/apps/orders/migrations/0015_rename_qqs_price_party_qqs_alter_order_date.py b/core/apps/orders/migrations/0015_rename_qqs_price_party_qqs_alter_order_date.py new file mode 100644 index 0000000..c8d1970 --- /dev/null +++ b/core/apps/orders/migrations/0015_rename_qqs_price_party_qqs_alter_order_date.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.4 on 2025-08-22 11:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0014_order_amount'), + ] + + operations = [ + migrations.RenameField( + model_name='party', + old_name='qqs_price', + new_name='qqs', + ), + migrations.AlterField( + model_name='order', + name='date', + field=models.DateField(blank=True, null=True), + ), + ] diff --git a/core/apps/orders/models/order.py b/core/apps/orders/models/order.py index 2b55fa0..0c5b868 100644 --- a/core/apps/orders/models/order.py +++ b/core/apps/orders/models/order.py @@ -31,7 +31,7 @@ class Order(BaseModel): wherehouse = models.ForeignKey( WhereHouse, on_delete=models.CASCADE, related_name='orders' ) - date = models.DateField() + date = models.DateField(null=True, blank=True) quantity = models.PositiveBigIntegerField(default=1) status = models.CharField(max_length=20, choices=STATUS, default="NEW") employee = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders', null=True) diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 88d5766..0ce7401 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -44,8 +44,8 @@ class Party(BaseModel): null=True, blank=True ) audit_comment = models.TextField(null=True, blank=True) - qqs_price = models.PositiveBigIntegerField(default=0, null=True, blank=True) discount = models.PositiveBigIntegerField(default=0, null=True, blank=True) + qqs = models.PositiveBigIntegerField(default=0, null=True, blank=True) def __str__(self): return str(self.number) diff --git a/core/apps/orders/serializers/order.py b/core/apps/orders/serializers/order.py index dcd57c0..8f83358 100644 --- a/core/apps/orders/serializers/order.py +++ b/core/apps/orders/serializers/order.py @@ -128,7 +128,6 @@ class MultipleOrderAddSerializer(serializers.Serializer): unit_amount = serializers.IntegerField() currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')]) amount = serializers.IntegerField() - date = serializers.DateField() total_price = serializers.IntegerField(required=False) qqs_summa = serializers.IntegerField(required=False) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 467b146..2bbe664 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -13,12 +13,12 @@ class PartyCreateSerializer(serializers.Serializer): delivery_date = serializers.DateField() payment_date = serializers.DateField() comment = serializers.CharField(required=False) - qqs_price = serializers.IntegerField(required=False) discount = serializers.IntegerField(required=False) audit = serializers.ChoiceField( choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')], required=False ) audit_comment = serializers.CharField(required=False) + qqs = serializers.IntegerField(required=False) def validate(self, data): user = User.objects.filter(id=data['mediator_id']).first() @@ -44,7 +44,6 @@ class PartyCreateSerializer(serializers.Serializer): unit_amount=resource.get('unit_amount'), currency=resource.get('currency'), amount=resource.get('amount'), - date=resource.get('date'), employee=self.context.get('user'), qqs_price=resource.get('qqs_price'), total_price=resource.get('total_price'), @@ -58,8 +57,8 @@ class PartyCreateSerializer(serializers.Serializer): comment=validated_data.get('comment'), audit=validated_data.get('audit'), audit_comment=validated_data.get('audit_comment'), - qqs_price=validated_data.get('qqs_price'), discount=validated_data.get('discount'), + qqs=validated_data.get('qqs'), ) party.orders.add(*created_orders) party.save()