remove variation coeffisiont sale unti - change structure

This commit is contained in:
2025-07-08 15:48:01 +03:30
parent be08aec2b9
commit cc12faa681
11 changed files with 85 additions and 54 deletions

View File

View File

@@ -1,13 +1,12 @@
from rest_framework import serializers
from apps.product import models as product_models
from apps.product.web.api.v1.product_serializers import QuotaSerializer
from apps.product.web.api.v1.serializers.product_serializers import QuotaSerializer
from django.db import models
from apps.product.exceptions import (
QuotaWeightException,
QuotaClosedException,
QuotaExpiredTimeException
)
from rest_framework import status
class QuotaDistributionSerializer(serializers.ModelSerializer):

View File

@@ -1,5 +1,4 @@
from apps.product.web.api.v1 import quota_distribution_api as distribution_apis
from apps.product.web.api.v1 import product_api as api_views
from apps.product.web.api.v1.viewsets import product_api as api_views, quota_distribution_api as distribution_apis
from rest_framework.routers import DefaultRouter
from django.urls import path, include

View File

@@ -1,6 +1,6 @@
import datetime
from apps.product.web.api.v1 import product_serializers as product_serializers
from apps.product.web.api.v1.serializers import product_serializers as product_serializers
from apps.product.exceptions import QuotaExpiredTimeException
from apps.product.services import get_products_in_warehouse
from common.helpers import get_organization_by_user
@@ -82,48 +82,6 @@ class ProductViewSet(viewsets.ModelViewSet):
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
@action(
methods=['get'],
detail=False,
url_path='quotas_statistics',
url_name='quotas_statistics',
name='quotas_statistics'
)
@transaction.atomic
def quotas_statistics_by_product(self, request):
""" quota statistics of each product in organization warehouse """
product_data = []
organization = get_organization_by_user(request.user)
products = get_products_in_warehouse(organization.id)
for product in products:
product_data.append(product.quota_information())
return Response(product_data, status=status.HTTP_200_OK)
@action(
methods=['get'],
detail=True,
url_path='quotas_information',
url_name='quotas_information',
name='quotas_information'
)
@transaction.atomic
def quotas_information_by_product(self, request, pk=None):
""" get quotas information of a product """
quotas = product_models.Quota.objects.select_related('product').filter(
product_id=pk, is_closed=False
)
try:
quota_serializer = product_serializers.QuotaSerializer(quotas, many=True).data
return Response(quota_serializer, status=status.HTTP_200_OK)
except APIException as e:
raise APIException(detail="data error", code=400)
@action(
methods=['put'],
detail=True,
@@ -611,6 +569,7 @@ class QuotaViewSet(viewsets.ModelViewSet): # noqa
)
def quotas_list_for_assigner(self, request):
""" list of quotas for creator """
assigner = product_models.UserRelations.objects.filter(user=request.user).first()
serializers = self.serializer_class(
self.queryset.filter(registerer_organization=assigner.organization),
@@ -627,6 +586,7 @@ class QuotaViewSet(viewsets.ModelViewSet): # noqa
)
def quotas_list_for_assigned(self, request):
""" list of quotas for assigned organizations """
assigned = product_models.UserRelations.objects.filter(user=request.user).first()
serializer = self.serializer_class(
self.queryset.filter(assigned_organizations=assigned.organization),
@@ -635,6 +595,48 @@ class QuotaViewSet(viewsets.ModelViewSet): # noqa
return Response(serializer.data, status=status.HTTP_200_OK)
@action(
methods=['get'],
detail=False,
url_path='quotas_statistics',
url_name='quotas_statistics',
name='quotas_statistics'
)
@transaction.atomic
def quotas_statistics_by_product(self, request):
""" quota statistics of each product in organization warehouse """
product_data = []
organization = get_organization_by_user(request.user)
products = get_products_in_warehouse(organization.id)
for product in products:
product_data.append(product.quota_information())
return Response(product_data, status=status.HTTP_200_OK)
@action(
methods=['get'],
detail=True,
url_path='quotas_information',
url_name='quotas_information',
name='quotas_information'
)
@transaction.atomic
def quotas_information_by_product(self, request, pk=None):
""" get quotas information of a product """
quotas = self.queryset.select_related('product').filter(
product_id=pk, is_closed=False
)
try:
quota_serializer = self.serializer_class(quotas, many=True).data
return Response(quota_serializer, status=status.HTTP_200_OK)
except APIException as e:
raise APIException(detail="data error", code=400)
@action(
methods=['put'],
detail=True,

View File

@@ -1,14 +1,11 @@
from apps.product.web.api.v1 import quota_distribution_serializers as distribution_serializers
from apps.product.web.api.v1 import product_serializers as product_serializers
from apps.product.web.api.v1.serializers import quota_distribution_serializers as distribution_serializers
from rest_framework.exceptions import APIException
from apps.product import models as product_models
from rest_framework.response import Response
from rest_framework.decorators import action
from common.tools import CustomOperations
from rest_framework import viewsets
from rest_framework import status
from django.db import transaction
from django.db.models import Q
def trash(queryset, pk): # noqa