diff --git a/core/apps/orders/filters/party.py b/core/apps/orders/filters/party.py index 30eafbb..acee842 100644 --- a/core/apps/orders/filters/party.py +++ b/core/apps/orders/filters/party.py @@ -33,11 +33,11 @@ class PartyFilter(django_filters.FilterSet): ) 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 = [ - + 'status', 'payment_status' ] def filter_by_delivery_date(self, queryset, name, value): @@ -99,4 +99,30 @@ class PartyFilter(django_filters.FilterSet): return queryset.filter(payment_date__range=(start_year, end_year)) return queryset - + def filter_by_order_date(self, queryset, name, value): + today = now().date() + + if value == 'today': + return queryset.filter(order_date=today) + elif value == 'last_week': + start_date = today - timedelta(days=today.weekday() + 7) + end_date = start_date + timedelta(days=6) + return queryset.filter(order_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(order_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(order_date__range=(start_year, end_year)) + return queryset diff --git a/core/apps/orders/migrations/0016_remove_party_qqs_order_qqs.py b/core/apps/orders/migrations/0016_remove_party_qqs_order_qqs.py new file mode 100644 index 0000000..73ffb5d --- /dev/null +++ b/core/apps/orders/migrations/0016_remove_party_qqs_order_qqs.py @@ -0,0 +1,22 @@ +# Generated by Django 5.2.4 on 2025-08-22 11:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('orders', '0015_rename_qqs_price_party_qqs_alter_order_date'), + ] + + operations = [ + migrations.RemoveField( + model_name='party', + name='qqs', + ), + migrations.AddField( + model_name='order', + name='qqs', + field=models.PositiveBigIntegerField(blank=True, default=0, null=True), + ), + ] diff --git a/core/apps/orders/models/order.py b/core/apps/orders/models/order.py index 0c5b868..ce4ebff 100644 --- a/core/apps/orders/models/order.py +++ b/core/apps/orders/models/order.py @@ -45,6 +45,7 @@ class Order(BaseModel): total_price = models.PositiveBigIntegerField(default=0, null=True, blank=True) qqs_price = models.PositiveBigIntegerField(default=0, null=True, blank=True) amount = models.PositiveBigIntegerField(default=0, null=True, blank=True) + qqs = models.PositiveBigIntegerField(default=0, null=True, blank=True) def __str__(self): return f"{self.product} {self.unity} quantity order" diff --git a/core/apps/orders/models/party.py b/core/apps/orders/models/party.py index 0ce7401..dd13596 100644 --- a/core/apps/orders/models/party.py +++ b/core/apps/orders/models/party.py @@ -45,7 +45,6 @@ class Party(BaseModel): ) audit_comment = models.TextField(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 2a91840..f64755e 100644 --- a/core/apps/orders/serializers/order.py +++ b/core/apps/orders/serializers/order.py @@ -130,6 +130,7 @@ class MultipleOrderAddSerializer(serializers.Serializer): amount = serializers.IntegerField() total_price = serializers.IntegerField(required=False) qqs_price = serializers.IntegerField(required=False) + qqs = serializers.IntegerField(required=False) def validate(self, data): product = Product.objects.filter(id=data['product_id']).first() diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 2bbe664..48c6294 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -18,7 +18,6 @@ class PartyCreateSerializer(serializers.Serializer): 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() @@ -47,6 +46,7 @@ class PartyCreateSerializer(serializers.Serializer): employee=self.context.get('user'), qqs_price=resource.get('qqs_price'), total_price=resource.get('total_price'), + qqs=resource.get('qqs'), )) total_price += resource.get('amount') created_orders = Order.objects.bulk_create(orders) @@ -58,7 +58,6 @@ class PartyCreateSerializer(serializers.Serializer): audit=validated_data.get('audit'), audit_comment=validated_data.get('audit_comment'), discount=validated_data.get('discount'), - qqs=validated_data.get('qqs'), ) party.orders.add(*created_orders) party.save()