import - BankAccountDeviceLink for set device to a bank_account/changes in stakeholders & pos

This commit is contained in:
2025-12-30 16:57:15 +03:30
parent 9a02ad4622
commit e3318b7e1e
8 changed files with 104 additions and 11 deletions

View File

@@ -81,8 +81,12 @@ class StakeHoldersSerializer(ModelSerializer):
def to_representation(self, instance):
representation = super().to_representation(instance)
# get organization bank account that set to a device
bank_account_device_links = instance.organization.bank_account_device_links.filter(device=instance.device)
representation['bank_account'] = BankAccountSerializer(
instance.organization.bank_information.all().first()
if not bank_account_device_links.exists() else bank_account_device_links.first().bank_account
).data
representation['device'] = instance.device.device_identity
@@ -127,3 +131,9 @@ class StakeHolderShareAmountSerializer(ModelSerializer):
representation['stakeholders'] = StakeHoldersSerializer(instance.stakeholders).data
return representation
class BankAccountDeviceLinkSerializer(ModelSerializer):
class Meta:
model = pos_models.BankAccountDeviceLink
fields = '__all__'

View File

@@ -1,5 +1,6 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .viewsets import client as client_views
from .viewsets import device as device_views
@@ -11,7 +12,12 @@ router.register(r'device', device_views.DeviceViewSet, basename='device')
router.register(r'device_assignment', device_views.DeviceAssignmentViewSet, basename='device_assignment')
router.register(r'stake_holders', device_views.StakeHoldersViewSet, basename='stake_holders')
router.register(r'holders_share', device_views.StakeHolderShareAmountViewSet, basename='holders_share')
router.register(
r'bank_account_device_link',
device_views.BankAccountDeviceLinkViewSet,
basename='bank_account_device_link'
)
urlpatterns = [
path('v1/pos/', include(router.urls))
]
]

View File

@@ -24,7 +24,9 @@ from apps.core.mixins.search_mixin import DynamicSearchMixin
from apps.core.mixins.soft_delete_mixin import SoftDeleteMixin
from apps.core.services.visibility_service import apply_visibility_filter_by_org_type
from apps.pos_device import models as pos_models
from apps.pos_device.models import BankAccountDeviceLink
from apps.pos_device.web.api.v1.serilaizers import device as device_serializer
from apps.pos_device.web.api.v1.serilaizers.device import BankAccountDeviceLinkSerializer
from apps.pos_device.web.api.v1.viewsets.client import POSClientViewSet
from apps.product.models import Broker, OrganizationQuotaStats
from apps.product.web.api.v1.viewsets.quota_distribution_api import QuotaDistributionViewSet
@@ -515,3 +517,8 @@ class StakeHolderShareAmountViewSet(viewsets.ModelViewSet, DynamicSearchMixin, S
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
class BankAccountDeviceLinkViewSet(BaseViewSet, viewsets.ModelViewSet, DynamicSearchMixin, SoftDeleteMixin):
queryset = BankAccountDeviceLink.objects.select_related('organization', 'bank_account', 'device')
serializer_class = BankAccountDeviceLinkSerializer