add: add filter for party list

This commit is contained in:
behruz-dev
2025-09-29 14:49:23 +05:00
parent 1538fc1b19
commit c7e3a8d266
4 changed files with 58 additions and 5 deletions

View File

@@ -33,14 +33,39 @@ 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')
# total price filter (range)
min_price = django_filters.NumberFilter(field_name='party_amount__total_price', lookup_expr='gte')
max_price = django_filters.NumberFilter(field_name='party_amount__total_price', lookup_expr='lte')
# qqs and discount
qqs = django_filters.BooleanFilter(method='filter_by_qqs')
discount = django_filters.BooleanFilter(method='filter_by_discount')
# payment_type
payment_type = django_filters.UUIDFilter(field_name='expences__payment_type')
class Meta:
model = Party
fields = [
'status', 'payment_status', 'confirmation',
'orders__wherehouse', 'orders__project', 'orders__project_folder',
'mediator', 'orders__counterparty',
'mediator', 'orders__counterparty', 'min_price', 'max_price',
'qqs', 'discount', 'payment_type'
]
def filter_by_qqs(self, queryset, name, value):
if value == True:
queryset = queryset.filter(orders__qqs__isnull=True)
return queryset
else:
return queryset
def filter_by_discount(self, queryset, name, value):
if value == True:
return queryset.filter(discount__isnull=True)
else:
return queryset
def filter_by_delivery_date(self, queryset, name, value):
today = now().date()

View File

@@ -0,0 +1,28 @@
# Generated by Django 5.2.4 on 2025-09-29 14:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0025_alter_offer_status'),
]
operations = [
migrations.AlterField(
model_name='order',
name='qqs',
field=models.PositiveBigIntegerField(blank=True, null=True),
),
migrations.AlterField(
model_name='order',
name='qqs_price',
field=models.PositiveBigIntegerField(blank=True, null=True),
),
migrations.AlterField(
model_name='party',
name='discount',
field=models.PositiveBigIntegerField(blank=True, null=True),
),
]

View File

@@ -44,9 +44,9 @@ class Order(BaseModel):
choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True, max_length=3
)
total_price = models.PositiveBigIntegerField(default=0, null=True, blank=True)
qqs_price = models.PositiveBigIntegerField(default=0, null=True, blank=True)
qqs_price = models.PositiveBigIntegerField(null=True, blank=True)
amount = models.PositiveBigIntegerField(default=0, null=True, blank=True)
qqs = models.PositiveBigIntegerField(default=0, null=True, blank=True)
qqs = models.PositiveBigIntegerField(null=True, blank=True)
def __str__(self):
return f"{self.product} {self.unity} quantity order"

View File

@@ -50,7 +50,7 @@ class Party(BaseModel):
null=True, blank=True
)
audit_comment = models.TextField(null=True, blank=True)
discount = models.PositiveBigIntegerField(default=0, null=True, blank=True)
discount = models.PositiveBigIntegerField(null=True, blank=True)
discount_currency = models.CharField(
max_length=3, choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True
)