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, 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', 'organization') sharing_information_list = [{ "organization_name": item.organization.name, "bank_account": { "credit_card": item.organization.bank_information.first().card, "sheba": item.organization.bank_information.first().sheba, "account": item.organization.bank_information.first().account, } if item.organization.bank_information.exists() else {}, "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.holders_share_amount.filter(quota_distribution=distribution).first().share_amount if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None ), "default_account": item.default } for item in stake_holders] return sharing_information_list