@@ -13,7 +13,8 @@ class ExpenceFilter(django_filters.FilterSet):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Expence
|
model = Expence
|
||||||
fields = [
|
fields = [
|
||||||
'payment_type', 'project_folder', 'project', 'user', 'expence_type', 'cash_transaction', 'date'
|
'payment_type', 'project_folder', 'project', 'user', 'expence_type', 'cash_transaction', 'date',
|
||||||
|
'audit', 'counterparty'
|
||||||
]
|
]
|
||||||
|
|
||||||
def filter_by_created_at(self, queryset, name, value):
|
def filter_by_created_at(self, queryset, name, value):
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ class IncomeFilter(django_filters.FilterSet):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Income
|
model = Income
|
||||||
fields = [
|
fields = [
|
||||||
'payment_type', 'project_folder', 'project', 'user', 'type_income', 'date', 'cash_transaction'
|
'payment_type', 'project_folder', 'project', 'user', 'type_income', 'date', 'cash_transaction',
|
||||||
|
'audit', 'counterparty'
|
||||||
]
|
]
|
||||||
|
|
||||||
def filter_by_created_at(self, queryset, name, value):
|
def filter_by_created_at(self, queryset, name, value):
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 5.2.4 on 2025-09-29 15:28
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('finance', '0030_incomechat_incomemessage'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='expence',
|
||||||
|
name='audit',
|
||||||
|
field=models.CharField(blank=True, choices=[('CHECKED', 'tekshirildi'), ('PROCESS', 'jarayonda')], max_length=20, null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='income',
|
||||||
|
name='audit',
|
||||||
|
field=models.CharField(blank=True, choices=[('CHECKED', 'tekshirildi'), ('PROCESS', 'jarayonda')], max_length=20, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -38,7 +38,10 @@ class Expence(BaseModel):
|
|||||||
)
|
)
|
||||||
date = models.DateField(null=True, blank=True)
|
date = models.DateField(null=True, blank=True)
|
||||||
comment = models.TextField(null=True, blank=True)
|
comment = models.TextField(null=True, blank=True)
|
||||||
audit = models.CharField(max_length=200, null=True, blank=True)
|
audit = models.CharField(
|
||||||
|
max_length=20, choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')],
|
||||||
|
null=True, blank=True
|
||||||
|
)
|
||||||
file = models.FileField(null=True, blank=True, upload_to='finance/expence/files/')
|
file = models.FileField(null=True, blank=True, upload_to='finance/expence/files/')
|
||||||
status = models.CharField(max_length=20, choices=STATUS, default='PENDING', null=True, blank=True)
|
status = models.CharField(max_length=20, choices=STATUS, default='PENDING', null=True, blank=True)
|
||||||
is_deleted = models.BooleanField(default=False)
|
is_deleted = models.BooleanField(default=False)
|
||||||
|
|||||||
@@ -31,7 +31,10 @@ class Income(BaseModel):
|
|||||||
date = models.DateField(null=True, blank=True)
|
date = models.DateField(null=True, blank=True)
|
||||||
comment = models.TextField(null=True, blank=True)
|
comment = models.TextField(null=True, blank=True)
|
||||||
file = models.FileField(upload_to='finance/income/file/', null=True, blank=True)
|
file = models.FileField(upload_to='finance/income/file/', null=True, blank=True)
|
||||||
audit = models.CharField(max_length=200, null=True, blank=True)
|
audit = models.CharField(
|
||||||
|
max_length=20, choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')],
|
||||||
|
null=True, blank=True
|
||||||
|
)
|
||||||
is_deleted = models.BooleanField(default=False)
|
is_deleted = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|||||||
@@ -33,13 +33,38 @@ class PartyFilter(django_filters.FilterSet):
|
|||||||
order_start_date = django_filters.DateFilter(field_name='order_date', lookup_expr='gte')
|
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')
|
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:
|
class Meta:
|
||||||
model = Party
|
model = Party
|
||||||
fields = [
|
fields = [
|
||||||
'status', 'payment_status', 'confirmation',
|
'status', 'payment_status', 'confirmation',
|
||||||
'orders__wherehouse', 'orders__project', 'orders__project_folder',
|
'orders__wherehouse', 'orders__project', 'orders__project_folder',
|
||||||
'mediator', 'orders__counterparty',
|
'mediator', 'orders__counterparty', 'min_price', 'max_price',
|
||||||
|
'qqs', 'discount', 'payment_type', 'audit'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def filter_by_qqs(self, queryset, name, value):
|
||||||
|
if value == True:
|
||||||
|
queryset = queryset.filter(orders__qqs__isnull=False)
|
||||||
|
return queryset
|
||||||
|
else:
|
||||||
|
return queryset
|
||||||
|
|
||||||
|
def filter_by_discount(self, queryset, name, value):
|
||||||
|
if value == True:
|
||||||
|
return queryset.filter(discount__isnull=False)
|
||||||
|
else:
|
||||||
|
return queryset
|
||||||
|
|
||||||
def filter_by_delivery_date(self, queryset, name, value):
|
def filter_by_delivery_date(self, queryset, name, value):
|
||||||
today = now().date()
|
today = now().date()
|
||||||
|
|||||||
@@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -44,10 +44,10 @@ class Order(BaseModel):
|
|||||||
choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True, max_length=3
|
choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True, max_length=3
|
||||||
)
|
)
|
||||||
total_price = models.PositiveBigIntegerField(default=0, null=True, blank=True)
|
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)
|
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):
|
def __str__(self):
|
||||||
return f"{self.product} {self.unity} quantity order"
|
return f"{self.product} {self.unity} quantity order"
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ 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)
|
||||||
discount = models.PositiveBigIntegerField(default=0, null=True, blank=True)
|
discount = models.PositiveBigIntegerField(null=True, blank=True)
|
||||||
discount_currency = models.CharField(
|
discount_currency = models.CharField(
|
||||||
max_length=3, choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True
|
max_length=3, choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user