diff --git a/apps/authentication/pos/api/v1/api.py b/apps/authentication/pos/api/v1/api.py index 50378b7..08717ab 100644 --- a/apps/authentication/pos/api/v1/api.py +++ b/apps/authentication/pos/api/v1/api.py @@ -18,12 +18,12 @@ class CityViewSet(ModelViewSet, SoftDeleteMixin): # noqa def list(self, request, *args, **kwargs): """ return list of cities by province """ + if 'province' in self.request.query_params.keys(): + query = self.queryset.filter(province_id=int(request.GET['province'])) + else: + query = self.queryset - serializer = self.serializer_class( - self.queryset.filter( - province_id=int(request.GET['province']) - ), many=True - ) + serializer = self.serializer_class(query, many=True) return Response(serializer.data, status=status.HTTP_200_OK) diff --git a/apps/pos_device/services/services.py b/apps/pos_device/services/services.py index 866ae5b..82b673d 100644 --- a/apps/pos_device/services/services.py +++ b/apps/pos_device/services/services.py @@ -1,14 +1,18 @@ -from apps.pos_device.models import Device -from apps.product.models import Quota +from apps.product.models import Quota, QuotaDistribution +from apps.pos_device.models import Device, StakeHolderShareAmount import typing -def pos_organizations_sharing_information(device: Device, quota: Quota = None) -> typing.Any: +def pos_organizations_sharing_information( + device: Device, + quota: Quota = None, + distribution: QuotaDistribution = None +) -> typing.Any: """ pos sharing organizations' information, device have multiple organizations (sub_accounts) for sharing money """ - stake_holders = device.stake_holders.select_related('broker', 'broker_amount', 'organization') + stake_holders = device.stake_holders.select_related('broker', 'organization') sharing_information_list = [{ "organization_name": item.organization.name, @@ -20,7 +24,9 @@ def pos_organizations_sharing_information(device: Device, quota: Quota = None) - "broker": item.broker.name if item.broker else None, "amount": quota.broker_values.filter( broker=item.broker - ).first().value if quota and item.broker else item.share_amount + ).first().value if quota and item.broker else item.holders_share_amount.filter( + quota_distribution=distribution + ).first().share_amount } for item in stake_holders] return sharing_information_list diff --git a/apps/product/pos/api/v1/serializers/quota_distribution_serializers.py b/apps/product/pos/api/v1/serializers/quota_distribution_serializers.py index 1666418..b1fd9f8 100644 --- a/apps/product/pos/api/v1/serializers/quota_distribution_serializers.py +++ b/apps/product/pos/api/v1/serializers/quota_distribution_serializers.py @@ -98,7 +98,11 @@ class QuotaDistributionSerializer(serializers.ModelSerializer): representation['pricing'] = { # noqa 'pricing_attributes': quota_attribute_value(instance.quota), - 'sharing': pos_organizations_sharing_information(self.context['device'], instance.quota), + 'sharing': pos_organizations_sharing_information( + self.context['device'], + instance.quota, + distribution=instance + ), 'base_prices': [ { "text": "قیمت درب کارخانه", # noqa diff --git a/apps/warehouse/pos/api/v1/serializers.py b/apps/warehouse/pos/api/v1/serializers.py index 603ec8c..f28238f 100644 --- a/apps/warehouse/pos/api/v1/serializers.py +++ b/apps/warehouse/pos/api/v1/serializers.py @@ -63,7 +63,11 @@ class InventoryEntrySerializer(serializers.ModelSerializer): representation['pricing'] = { 'pricing_attributes': quota_attribute_value(instance.distribution.quota), - 'sharing': pos_organizations_sharing_information(self.context['device']), + 'sharing': pos_organizations_sharing_information( + self.context['device'], + instance.distribution.quota, + instance.distribution + ), 'base_prices': [ { "text": "قیمت درب کارخانه", # noqa