change party model and serializer

This commit is contained in:
behruz-dev
2025-08-22 11:03:15 +05:00
parent a1cc68045e
commit 2727b9cb88
6 changed files with 56 additions and 13 deletions

View File

@@ -15,20 +15,29 @@ class PartyFilter(django_filters.FilterSet):
('last_year', 'oirgi yil'), ('last_year', 'oirgi yil'),
) )
# delivery date filters
delivery_date = django_filters.ChoiceFilter( delivery_date = django_filters.ChoiceFilter(
choices=DATE_CHOICES, method='filter_by_deliveyer_date' choices=DATE_CHOICES, method='filter_by_deliveyer_date'
) )
start_date = django_filters.DateFilter(field_name="delivery_date", lookup_expr="gte") delivery_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_end_date = django_filters.DateFilter(field_name="delivery_date", lookup_expr="lte")
# payment date filters
payment_date = django_filters.ChoiceFilter( payment_date = django_filters.ChoiceFilter(
choices=DATE_CHOICES, method='filter_by_payment_date' 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: class Meta:
model = Party model = Party
fields = [ fields = [
'delivery_date', 'start_date', 'end_date',
] ]
def filter_by_delivery_date(self, queryset, name, value): 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) end_date = start_date + timedelta(days=6)
return queryset.filter(payment_date__range=(start_date, end_date)) return queryset.filter(payment_date__range=(start_date, end_date))
elif value == 'last_month': 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': 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 return queryset

View File

@@ -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),
),
]

View File

@@ -31,7 +31,7 @@ class Order(BaseModel):
wherehouse = models.ForeignKey( wherehouse = models.ForeignKey(
WhereHouse, on_delete=models.CASCADE, related_name='orders' WhereHouse, on_delete=models.CASCADE, related_name='orders'
) )
date = models.DateField() date = models.DateField(null=True, blank=True)
quantity = models.PositiveBigIntegerField(default=1) quantity = models.PositiveBigIntegerField(default=1)
status = models.CharField(max_length=20, choices=STATUS, default="NEW") status = models.CharField(max_length=20, choices=STATUS, default="NEW")
employee = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders', null=True) employee = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders', null=True)

View File

@@ -44,8 +44,8 @@ class Party(BaseModel):
null=True, blank=True null=True, blank=True
) )
audit_comment = models.TextField(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) discount = models.PositiveBigIntegerField(default=0, null=True, blank=True)
qqs = models.PositiveBigIntegerField(default=0, null=True, blank=True)
def __str__(self): def __str__(self):
return str(self.number) return str(self.number)

View File

@@ -128,7 +128,6 @@ class MultipleOrderAddSerializer(serializers.Serializer):
unit_amount = serializers.IntegerField() unit_amount = serializers.IntegerField()
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')]) currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')])
amount = serializers.IntegerField() amount = serializers.IntegerField()
date = serializers.DateField()
total_price = serializers.IntegerField(required=False) total_price = serializers.IntegerField(required=False)
qqs_summa = serializers.IntegerField(required=False) qqs_summa = serializers.IntegerField(required=False)

View File

@@ -13,12 +13,12 @@ class PartyCreateSerializer(serializers.Serializer):
delivery_date = serializers.DateField() delivery_date = serializers.DateField()
payment_date = serializers.DateField() payment_date = serializers.DateField()
comment = serializers.CharField(required=False) comment = serializers.CharField(required=False)
qqs_price = serializers.IntegerField(required=False)
discount = serializers.IntegerField(required=False) discount = serializers.IntegerField(required=False)
audit = serializers.ChoiceField( audit = serializers.ChoiceField(
choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')], required=False choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')], required=False
) )
audit_comment = serializers.CharField(required=False) audit_comment = serializers.CharField(required=False)
qqs = serializers.IntegerField(required=False)
def validate(self, data): def validate(self, data):
user = User.objects.filter(id=data['mediator_id']).first() user = User.objects.filter(id=data['mediator_id']).first()
@@ -44,7 +44,6 @@ class PartyCreateSerializer(serializers.Serializer):
unit_amount=resource.get('unit_amount'), unit_amount=resource.get('unit_amount'),
currency=resource.get('currency'), currency=resource.get('currency'),
amount=resource.get('amount'), amount=resource.get('amount'),
date=resource.get('date'),
employee=self.context.get('user'), employee=self.context.get('user'),
qqs_price=resource.get('qqs_price'), qqs_price=resource.get('qqs_price'),
total_price=resource.get('total_price'), total_price=resource.get('total_price'),
@@ -58,8 +57,8 @@ class PartyCreateSerializer(serializers.Serializer):
comment=validated_data.get('comment'), comment=validated_data.get('comment'),
audit=validated_data.get('audit'), audit=validated_data.get('audit'),
audit_comment=validated_data.get('audit_comment'), audit_comment=validated_data.get('audit_comment'),
qqs_price=validated_data.get('qqs_price'),
discount=validated_data.get('discount'), discount=validated_data.get('discount'),
qqs=validated_data.get('qqs'),
) )
party.orders.add(*created_orders) party.orders.add(*created_orders)
party.save() party.save()