add pos devices sharing informations to list of rancher inventories

This commit is contained in:
2025-08-31 15:35:46 +03:30
parent 27046f20e9
commit 11786cd2a5
3 changed files with 23 additions and 2 deletions

View File

@@ -0,0 +1,18 @@
from apps.pos_device.models import Device
import typing
def pos_organizations_sharing_information(device: Device) -> 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')
sharing_information_list = [{
"organization_name": item.organization.name,
"broker": item.broker.name,
"amount": item.broker_amount.value
} for item in stake_holders]
return sharing_information_list

View File

@@ -60,6 +60,7 @@ class InventoryEntryViewSet(viewsets.ModelViewSet, DynamicSearchMixin, POSDevice
def rancher_inventory_entries(self, request): def rancher_inventory_entries(self, request):
""" """ """ """
organization = self.get_device_organization() organization = self.get_device_organization()
device = self.get_pos_device()
rancher = Rancher.objects.filter(national_code=request.GET['national_code']).first() rancher = Rancher.objects.filter(national_code=request.GET['national_code']).first()
entries = self.queryset.filter(organization=organization) entries = self.queryset.filter(organization=organization)
@@ -68,7 +69,7 @@ class InventoryEntryViewSet(viewsets.ModelViewSet, DynamicSearchMixin, POSDevice
# paginate & response # paginate & response
page = self.paginate_queryset(available_entries) page = self.paginate_queryset(available_entries)
if page is not None: if page is not None:
serializer = self.get_serializer(page, many=True, context={'rancher': rancher}) serializer = self.get_serializer(page, many=True, context={'rancher': rancher, 'device': device})
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)

View File

@@ -5,6 +5,7 @@ from apps.product.services.services import (
quota_brokers_value, quota_brokers_value,
quota_attribute_value quota_attribute_value
) )
from apps.pos_device.services.services import pos_organizations_sharing_information
from apps.pos_device.pos.api.v1.serializers.device import DeviceSerializer from apps.pos_device.pos.api.v1.serializers.device import DeviceSerializer
from apps.herd.pos.api.v1.serializers import RancherSerializer from apps.herd.pos.api.v1.serializers import RancherSerializer
from apps.warehouse.exceptions import ( from apps.warehouse.exceptions import (
@@ -61,7 +62,8 @@ class InventoryEntrySerializer(serializers.ModelSerializer):
representation['pricing'] = { representation['pricing'] = {
'brokers_info': quota_brokers_value(instance.distribution.quota), 'brokers_info': quota_brokers_value(instance.distribution.quota),
'pricing_attributes': quota_attribute_value(instance.distribution.quota) 'pricing_attributes': quota_attribute_value(instance.distribution.quota),
'sharing': pos_organizations_sharing_information(self.context['device'])
} }
if 'rancher' in self.context.keys(): if 'rancher' in self.context.keys():