make default stake holder when creating assignment

This commit is contained in:
2025-08-25 13:09:17 +03:30
parent 64d19e9028
commit 7722ddfc84
3 changed files with 26 additions and 13 deletions

View File

@@ -258,6 +258,7 @@ class StakeHolders(BaseModel):
null=True
)
share_percent = models.FloatField(default=0)
default = models.BooleanField(default=False)
def __str__(self):
return f'Device: {self.assignment.device.serial}-organization: {self.organization.name}'

View File

@@ -182,13 +182,14 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
if client.exists():
request.data.update({'client': client.first().id})
else:
client = CustomOperations().custom_create(
request=request,
view=POSClientViewSet(),
data=request.data['client_data']
)
request.data.update({'client': client['id']})
# create client
client = CustomOperations().custom_create(
request=request,
view=POSClientViewSet(),
data=request.data['client_data']
)
request.data.update({'client': client['id']})
# create assignment
serializer = self.serializer_class(data=request.data)
@@ -204,6 +205,15 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
assignment.client.organization.has_pos = True
assignment.client.organization.save()
# after pos device assignment, must set owner
# as default stake holder
pos_models.StakeHolders.objects.create(
assignment=assignment,
device=assignment.device,
organization=assignment.client.organization,
default=True
)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
@@ -225,6 +235,12 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
if serializer.is_valid():
assignment = serializer.save()
if assignment.client.organization:
# update default stake holder for device (assignment)
stake_holder = assignment.stake_holders.filter(default=True).first()
stake_holder.organization = assignment.client.organization
stake_holder.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)

View File

@@ -3,15 +3,11 @@ from apps.warehouse.services.services import can_buy_from_inventory
from apps.pos_device.mixins.pos_device_mixin import POSDeviceMixin
from apps.core.mixins.search_mixin import DynamicSearchMixin
from apps.warehouse import models as warehouse_models
from common.helpers import get_organization_by_user
from rest_framework.permissions import AllowAny
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework import viewsets, filters
from rest_framework import viewsets
from apps.herd.models import Rancher
from django.db import transaction
from rest_framework import status
import typing
class InventoryEntryViewSet(viewsets.ModelViewSet, DynamicSearchMixin, POSDeviceMixin):
@@ -113,4 +109,4 @@ class InventoryQuotaSaleTransactionViewSet(viewsets.ModelViewSet, DynamicSearchM
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
return self.get_paginated_response(serializer.data)