Merge pull request #2 from xoliqberdiyev/test

Test
This commit is contained in:
xoliqberdiyev
2025-10-01 13:33:20 +05:00
committed by GitHub
7 changed files with 36 additions and 4 deletions

View File

@@ -8,13 +8,15 @@ from core.apps.finance.models import Expence
class ExpenceFilter(django_filters.FilterSet): class ExpenceFilter(django_filters.FilterSet):
start_date = django_filters.DateFilter(field_name='created_at', lookup_expr='gte')
end_date = django_filters.DateFilter(field_name='created_at', lookup_expr='lte')
date = django_filters.CharFilter(method='filter_by_created_at') date = django_filters.CharFilter(method='filter_by_created_at')
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' 'audit', 'counterparty', 'start_date', 'end_date'
] ]
def filter_by_created_at(self, queryset, name, value): def filter_by_created_at(self, queryset, name, value):

View File

@@ -8,13 +8,15 @@ from core.apps.finance.models import Income
class IncomeFilter(django_filters.FilterSet): class IncomeFilter(django_filters.FilterSet):
start_date = django_filters.DateFilter(field_name='created_at', lookup_expr='gte')
end_date = django_filters.DateFilter(field_name='created_at', lookup_expr='lte')
date = django_filters.CharFilter(method='filter_by_created_at') date = django_filters.CharFilter(method='filter_by_created_at')
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' 'audit', 'counterparty', 'start_date', 'end_date'
] ]
def filter_by_created_at(self, queryset, name, value): def filter_by_created_at(self, queryset, name, value):

View File

@@ -6,6 +6,7 @@ from core.apps.finance.models import CashTransaction, CashTransactionFolder
from core.apps.accounts.models import User from core.apps.accounts.models import User
from core.apps.finance.models import PaymentType from core.apps.finance.models import PaymentType
from core.apps.finance.serializers.payment_type import PaymentTypeSerializer from core.apps.finance.serializers.payment_type import PaymentTypeSerializer
from core.apps.projects.models import Project
class CashTransactionEmployeeListSerializer(serializers.ModelSerializer): class CashTransactionEmployeeListSerializer(serializers.ModelSerializer):
@@ -43,6 +44,7 @@ class CashTransactionCreateSerializer(serializers.Serializer):
name = serializers.CharField() name = serializers.CharField()
status = serializers.BooleanField() status = serializers.BooleanField()
folder_id = serializers.UUIDField(required=False) folder_id = serializers.UUIDField(required=False)
project_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False)
def validate_name(self, value): def validate_name(self, value):
if CashTransaction.objects.filter(name=value).exists(): if CashTransaction.objects.filter(name=value).exists():
@@ -66,6 +68,11 @@ class CashTransactionCreateSerializer(serializers.Serializer):
status=validated_data.get('status'), status=validated_data.get('status'),
folder=validated_data.get('folder') folder=validated_data.get('folder')
) )
if validated_data.get('project_ids'):
projects = Project.objects.filter(id__in=validated_data.get('project_ids'))
for project in projects:
project.cash_transaction.add(cash_transaction)
project.save()
cash_transaction.employees.set(employee_ids) cash_transaction.employees.set(employee_ids)
cash_transaction.payment_type.set(payment_type_ids) cash_transaction.payment_type.set(payment_type_ids)
cash_transaction.save() cash_transaction.save()

View File

@@ -4,9 +4,12 @@ from core.apps.wherehouse.models import InvalidProduct
class InvalidProductFilter(django_filters.FilterSet): class InvalidProductFilter(django_filters.FilterSet):
expiry_date_start = django_filters.DateFilter(field_name='expiry_date', lookup_expr='gte')
expiry_date_end = django_filters.DateFilter(field_name='expiry_date', lookup_expr='lte')
class Meta: class Meta:
model = InvalidProduct model = InvalidProduct
fields = [ fields = [
'wherehouse', 'project_folder', 'status', 'invalid_status', 'wherehouse', 'project_folder', 'status', 'invalid_status',
'witnesses', 'expiry_date' 'witnesses', 'expiry_date', 'expiry_date_start', 'expiry_date_end',
] ]

View File

@@ -4,8 +4,12 @@ from core.apps.wherehouse.models.stock_movemend import StockMovemend
class StockMovemendFilter(django_filters.FilterSet): class StockMovemendFilter(django_filters.FilterSet):
start_date = django_filters.DateFilter(field_name='date', lookup_expr='gte')
end_date = django_filters.DateFilter(field_name='date', lookup_expr='lte')
class Meta: class Meta:
model = StockMovemend model = StockMovemend
fields = [ fields = [
'wherehouse_to', 'wherehouse_from', 'project_folder', 'project', 'movemend_type', 'date' 'wherehouse_to', 'wherehouse_from', 'project_folder', 'project', 'movemend_type', 'date',
'start_date', 'end_date'
] ]

View File

@@ -5,6 +5,7 @@ from rest_framework import serializers
from core.apps.wherehouse.models.wherehouse import WhereHouse from core.apps.wherehouse.models.wherehouse import WhereHouse
from core.apps.accounts.models import User from core.apps.accounts.models import User
from core.apps.accounts.serializers.user import UserListSerializer from core.apps.accounts.serializers.user import UserListSerializer
from core.apps.projects.models.project import Project
class WhereHouseListSerializer(serializers.ModelSerializer): class WhereHouseListSerializer(serializers.ModelSerializer):
@@ -29,10 +30,12 @@ class WhereHouseCreateSerializer(serializers.Serializer):
name = serializers.CharField() name = serializers.CharField()
address = serializers.CharField() address = serializers.CharField()
user_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False) user_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False)
project_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False)
def create(self, validated_data): def create(self, validated_data):
with transaction.atomic(): with transaction.atomic():
user_ids = validated_data.pop('user_ids', []) user_ids = validated_data.pop('user_ids', [])
project_ids = validated_data.pop('project_ids', [])
wherehouse = WhereHouse.objects.create( wherehouse = WhereHouse.objects.create(
name=validated_data.get('name'), name=validated_data.get('name'),
address=validated_data.get('address'), address=validated_data.get('address'),
@@ -40,6 +43,13 @@ class WhereHouseCreateSerializer(serializers.Serializer):
if user_ids: if user_ids:
users = User.objects.filter(id__in=user_ids) users = User.objects.filter(id__in=user_ids)
wherehouse.users.set(users) wherehouse.users.set(users)
if project_ids:
projects = Project.objects.filter(id__in=project_ids)
for project in projects:
project.wherehouse.add(wherehouse)
project.save()
return wherehouse return wherehouse

View File

@@ -24,6 +24,8 @@ class InventoryListApiView(generics.GenericAPIView):
project_folder_ids = request.query_params.getlist('project_folder_id') project_folder_ids = request.query_params.getlist('project_folder_id')
project_ids = request.query_params.getlist('project_ids') project_ids = request.query_params.getlist('project_ids')
product_exists = request.query_params.get('product_exist') product_exists = request.query_params.get('product_exist')
start_date = request.query_params.get('start_date')
end_date = request.query_params.get('end_date')
inventories = self.filter_queryset(self.queryset) inventories = self.filter_queryset(self.queryset)
if wherehouse_ids: if wherehouse_ids:
@@ -36,6 +38,8 @@ class InventoryListApiView(generics.GenericAPIView):
inventories = inventories.exclude(quantity=0) inventories = inventories.exclude(quantity=0)
elif product_exists == 'false': elif product_exists == 'false':
inventories = inventories.filter(quantity=0) inventories = inventories.filter(quantity=0)
if start_date and end_date:
inventories = inventories.filter(created_at__range=(start_date, end_date))
page = self.paginate_queryset(inventories) page = self.paginate_queryset(inventories)
if page is not None: if page is not None:
serializer = self.serializer_class(page, many=True) serializer = self.serializer_class(page, many=True)