diff --git a/apps/pos_device/services/services.py b/apps/pos_device/services/services.py index 3465862..7976fa5 100644 --- a/apps/pos_device/services/services.py +++ b/apps/pos_device/services/services.py @@ -1,12 +1,11 @@ +import typing + +from apps.pos_device.models import Device, StakeHolders from apps.product.models import ( Quota, QuotaDistribution, - Organization, - QuotaPriceCalculationItems, - QuotaFinalPriceTypes + Organization ) -from apps.pos_device.models import Device, StakeHolderShareAmount -import typing def pos_organizations_sharing_information( @@ -95,3 +94,14 @@ def agency_organization_pos_info( }) return pos_sharing_list + + +def get_organization_by_stake_holder(id: int = None, stake_holder: StakeHolders = None) -> typing.Any: + """ get organization object by stake holder """ + + if id: + stake_holder = StakeHolders.objects.get(id=id) + organization = get_organization_by_stake_holder(stake_holder=stake_holder) + return organization + organization = stake_holder.assignment.client.organization + return organization diff --git a/apps/pos_device/web/api/v1/viewsets/device.py b/apps/pos_device/web/api/v1/viewsets/device.py index b9c639f..e62202b 100644 --- a/apps/pos_device/web/api/v1/viewsets/device.py +++ b/apps/pos_device/web/api/v1/viewsets/device.py @@ -22,6 +22,7 @@ from apps.core.mixins.admin_mixin import AdminFilterMixin from apps.core.mixins.search_mixin import DynamicSearchMixin from apps.core.mixins.soft_delete_mixin import SoftDeleteMixin from apps.pos_device import models as pos_models +from apps.pos_device.services.services import get_organization_by_stake_holder from apps.pos_device.web.api.v1.serilaizers import device as device_serializer from apps.pos_device.web.api.v1.viewsets.client import POSClientViewSet from apps.product.models import Broker @@ -376,12 +377,17 @@ class StakeHolderShareAmountViewSet(SoftDeleteMixin, viewsets.ModelViewSet, Dyna data = request.data.copy() + # set registering organization organization = get_organization_by_user(request.user) data.update({'registering_organization': organization.id}) + # set assigner and assigned organization in distribution data assigner_organization = get_organization_by_user(request.user) data['distribution'].update({'assigner_organization': assigner_organization.id}) + assigned_organization = get_organization_by_stake_holder(id=data['stakeholders']) + data['distribution'].update({'assigned_organization': assigned_organization.id}) + # create distribution if 'distribution' in data.keys(): distribution = CustomOperations().custom_create(