rancher incentive plan

This commit is contained in:
2025-09-23 15:46:05 +03:30
parent 607a59a900
commit 73111950b4
5 changed files with 92 additions and 9 deletions

View File

@@ -155,3 +155,9 @@ class IncentivePlanSerializer(serializers.ModelSerializer): # noqa
class Meta:
model = product_models.IncentivePlan
fields = '__all__'
class IncentivePlanRancherSerializer(serializers.ModelSerializer):
class Meta:
model = product_models.IncentivePlanRancher
fields = '__all__'

View File

@@ -14,6 +14,7 @@ router.register(r'attribute_value', product_api.AttributeValueViewSet, basename=
router.register(r'broker', product_api.BrokerViewSet, basename='broker')
router.register(r'sale_unit', product_api.SaleUnitViewSet, basename='sale_unit')
router.register(r'incentive_plan', product_api.IncentivePlanViewSet, basename='incentive_plan')
router.register(r'rancher_incentive_plan', product_api.IncentivePlanRancherViewSet, basename='rancher_incentive_plan')
router.register(r'stats', product_api.ProductStatsViewSet, basename='stats')
router.register(r'quota', quota_api.QuotaViewSet, basename='quota')
router.register(r'quota_distribution', distribution_apis.QuotaDistributionViewSet, basename='quota_distribution')

View File

@@ -2,12 +2,14 @@ import datetime
from apps.product.web.api.v1.serializers import product_serializers as product_serializers
from apps.product.web.api.v1.serializers import quota_serializers
from apps.core.mixins.soft_delete_mixin import SoftDeleteMixin
from apps.core.mixins.search_mixin import DynamicSearchMixin
from common.helpers import get_organization_by_user
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 rest_framework import viewsets, filters
from common.tools import CustomOperations
from rest_framework import status
from django.db import transaction
from django.db.models import Q
@@ -27,7 +29,7 @@ def delete(queryset, pk):
obj.delete()
class ProductCategoryViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class ProductCategoryViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
queryset = product_models.ProductCategory.objects.all()
serializer_class = product_serializers.ProductCategorySerializer
filter_backends = [filters.SearchFilter]
@@ -65,7 +67,7 @@ class ProductCategoryViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
return Response(e, status=status.HTTP_204_NO_CONTENT)
class ProductViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class ProductViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
queryset = product_models.Product.objects.all()
serializer_class = product_serializers.ProductSerializer
filter_backends = [filters.SearchFilter]
@@ -144,7 +146,7 @@ class ProductViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
return Response(e, status=status.HTTP_204_NO_CONTENT)
class ProductStatsViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class ProductStatsViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
""" product statistics by its quotas """
queryset = product_models.ProductStats.objects.all()
@@ -175,7 +177,7 @@ class ProductStatsViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
raise e
class AttributeViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class AttributeViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
""" attributes of reference product """ #
queryset = product_models.Attribute.objects.select_related('product').all()
@@ -233,7 +235,7 @@ class AttributeViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
return Response(e, status=status.HTTP_204_NO_CONTENT)
class AttributeValueViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class AttributeValueViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
""" apis for attribute values of child products """ # noqa
queryset = product_models.AttributeValue.objects.all()
@@ -271,7 +273,7 @@ class AttributeValueViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
return Response(e, status=status.HTTP_204_NO_CONTENT)
class BrokerViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class BrokerViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
""" apis of product brokers """ # noqa
queryset = product_models.Broker.objects.all()
@@ -311,7 +313,7 @@ class BrokerViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
return Response(e, status=status.HTTP_204_NO_CONTENT)
class SaleUnitViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
class SaleUnitViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
""" apis of unit of sale for products """ # noqa
queryset = product_models.SaleUnit.objects.all()
@@ -351,7 +353,7 @@ class SaleUnitViewSet(viewsets.ModelViewSet, SoftDeleteMixin):
return Response(e, status=status.HTTP_204_NO_CONTENT)
class IncentivePlanViewSet(viewsets.ModelViewSet, SoftDeleteMixin): # noqa
class IncentivePlanViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin): # noqa
""" apis for incentive plan """
queryset = product_models.IncentivePlan.objects.all()
@@ -439,3 +441,8 @@ class IncentivePlanViewSet(viewsets.ModelViewSet, SoftDeleteMixin): # noqa
return Response(status=status.HTTP_200_OK)
except APIException as e:
return Response(e, status=status.HTTP_204_NO_CONTENT)
class IncentivePlanRancherViewSet(viewsets.ModelViewSet, SoftDeleteMixin, DynamicSearchMixin):
queryset = product_models.IncentivePlanRancher.objects.all()
serializer_class = product_serializers.IncentivePlanRancherSerializer