diff --git a/core/apps/finance/filters/expence.py b/core/apps/finance/filters/expence.py index f4d8412..a0ec760 100644 --- a/core/apps/finance/filters/expence.py +++ b/core/apps/finance/filters/expence.py @@ -8,13 +8,15 @@ from core.apps.finance.models import Expence 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') class Meta: model = Expence fields = [ '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): diff --git a/core/apps/finance/filters/income.py b/core/apps/finance/filters/income.py index 0184ed2..f05c9fd 100644 --- a/core/apps/finance/filters/income.py +++ b/core/apps/finance/filters/income.py @@ -8,13 +8,15 @@ from core.apps.finance.models import Income 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') class Meta: model = Income fields = [ '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): diff --git a/core/apps/finance/serializers/cash_transaction.py b/core/apps/finance/serializers/cash_transaction.py index a364366..09aa831 100644 --- a/core/apps/finance/serializers/cash_transaction.py +++ b/core/apps/finance/serializers/cash_transaction.py @@ -6,6 +6,7 @@ from core.apps.finance.models import CashTransaction, CashTransactionFolder from core.apps.accounts.models import User from core.apps.finance.models import PaymentType from core.apps.finance.serializers.payment_type import PaymentTypeSerializer +from core.apps.projects.models import Project class CashTransactionEmployeeListSerializer(serializers.ModelSerializer): @@ -43,6 +44,7 @@ class CashTransactionCreateSerializer(serializers.Serializer): name = serializers.CharField() status = serializers.BooleanField() folder_id = serializers.UUIDField(required=False) + project_ids = serializers.ListField(child=serializers.UUIDField(required=False), required=False) def validate_name(self, value): if CashTransaction.objects.filter(name=value).exists(): @@ -66,6 +68,11 @@ class CashTransactionCreateSerializer(serializers.Serializer): status=validated_data.get('status'), 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.payment_type.set(payment_type_ids) cash_transaction.save() diff --git a/core/apps/wherehouse/filters/invalid_product.py b/core/apps/wherehouse/filters/invalid_product.py index 918f5f1..18f6824 100644 --- a/core/apps/wherehouse/filters/invalid_product.py +++ b/core/apps/wherehouse/filters/invalid_product.py @@ -4,9 +4,12 @@ from core.apps.wherehouse.models import InvalidProduct 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: model = InvalidProduct fields = [ 'wherehouse', 'project_folder', 'status', 'invalid_status', - 'witnesses', 'expiry_date' + 'witnesses', 'expiry_date', 'expiry_date_start', 'expiry_date_end', ] \ No newline at end of file diff --git a/core/apps/wherehouse/filters/stock_movemend.py b/core/apps/wherehouse/filters/stock_movemend.py index 48a54f0..4f0163c 100644 --- a/core/apps/wherehouse/filters/stock_movemend.py +++ b/core/apps/wherehouse/filters/stock_movemend.py @@ -4,8 +4,12 @@ from core.apps.wherehouse.models.stock_movemend import StockMovemend 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: model = StockMovemend 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' ] \ No newline at end of file diff --git a/core/apps/wherehouse/serializers/wherehouse.py b/core/apps/wherehouse/serializers/wherehouse.py index b01ef0f..b62665b 100644 --- a/core/apps/wherehouse/serializers/wherehouse.py +++ b/core/apps/wherehouse/serializers/wherehouse.py @@ -5,6 +5,7 @@ from rest_framework import serializers from core.apps.wherehouse.models.wherehouse import WhereHouse from core.apps.accounts.models import User from core.apps.accounts.serializers.user import UserListSerializer +from core.apps.projects.models.project import Project class WhereHouseListSerializer(serializers.ModelSerializer): @@ -29,10 +30,12 @@ class WhereHouseCreateSerializer(serializers.Serializer): name = serializers.CharField() address = serializers.CharField() 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): with transaction.atomic(): user_ids = validated_data.pop('user_ids', []) + project_ids = validated_data.pop('project_ids', []) wherehouse = WhereHouse.objects.create( name=validated_data.get('name'), address=validated_data.get('address'), @@ -40,6 +43,13 @@ class WhereHouseCreateSerializer(serializers.Serializer): if user_ids: users = User.objects.filter(id__in=user_ids) 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 diff --git a/core/apps/wherehouse/views/inventory.py b/core/apps/wherehouse/views/inventory.py index 3a277f5..51dba94 100644 --- a/core/apps/wherehouse/views/inventory.py +++ b/core/apps/wherehouse/views/inventory.py @@ -24,6 +24,8 @@ class InventoryListApiView(generics.GenericAPIView): project_folder_ids = request.query_params.getlist('project_folder_id') project_ids = request.query_params.getlist('project_ids') 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) if wherehouse_ids: @@ -36,6 +38,8 @@ class InventoryListApiView(generics.GenericAPIView): inventories = inventories.exclude(quantity=0) elif product_exists == 'false': 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) if page is not None: serializer = self.serializer_class(page, many=True)