remove bank account when remove org

This commit is contained in:
2025-11-05 12:33:53 +03:30
parent 82e004166b
commit 1942042a2b
3 changed files with 61 additions and 48 deletions

View File

@@ -231,7 +231,7 @@ class OrganizationTypeViewSet(BaseViewSet, SoftDeleteMixin, ModelViewSet):
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)
class OrganizationViewSet(BaseViewSet, SoftDeleteMixin, ModelViewSet, DynamicSearchMixin): class OrganizationViewSet(BaseViewSet, ModelViewSet, DynamicSearchMixin):
""" Crud operations for organization model """ # """ Crud operations for organization model """ #
queryset = Organization.objects.all() queryset = Organization.objects.all()
serializer_class = OrganizationSerializer serializer_class = OrganizationSerializer
@@ -384,6 +384,19 @@ class OrganizationViewSet(BaseViewSet, SoftDeleteMixin, ModelViewSet, DynamicSea
serializer = self.serializer_class(page, many=True) serializer = self.serializer_class(page, many=True)
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)
@transaction.atomic
def destroy(self, request, pk=None, *args, **kwargs):
""" remove organization with bank accounts """
org = self.get_object()
org.bank_information.all().update(trash=True)
org.soft_delete()
return Response(
{"detail": "رکورد با موفقیت حذف شد (Soft Delete)."}, # noqa
status=status.HTTP_204_NO_CONTENT
)
class BankAccountViewSet(SoftDeleteMixin, ModelViewSet): class BankAccountViewSet(SoftDeleteMixin, ModelViewSet):
""" Crud operations for bank account model """ # """ Crud operations for bank account model """ #

View File

@@ -22,48 +22,48 @@ def pos_organizations_sharing_information(
sharing_information_list = [] sharing_information_list = []
for item in stake_holders: for item in stake_holders:
if item.broker and not owner_org.type.name == 'AGC': # if stakeholder is not an agency, it is a broker # if item.broker and not owner_org.type.name == 'AGC': # if stakeholder is not an agency, it is a broker
sharing_information_list.append({ sharing_information_list.append({
"organization_name": item.organization.name, "organization_name": item.organization.name,
"bank_account": { "bank_account": {
"credit_card": item.organization.bank_information.first().card, "credit_card": item.organization.bank_information.first().card,
"sheba": item.organization.bank_information.first().sheba, "sheba": item.organization.bank_information.first().sheba,
"account": item.organization.bank_information.first().account, "account": item.organization.bank_information.first().account,
} if item.organization.bank_information.exists() else {}, } if item.organization.bank_information.exists() else {},
"broker": item.broker.name if item.broker else None, "broker": item.broker.name if item.broker else None,
"amount": quota.broker_values.filter( "amount": quota.broker_values.filter(
broker=item.broker broker=item.broker
).first().value if quota and item.broker else None, ).first().value if quota and item.broker else None,
# """ # """
# if we will need to get agencies share amount, we can use this bellow code # if we will need to get agencies share amount, we can use this bellow code
# #
# # item.holders_share_amount.filter(quota_distribution=distribution).first().share_amount # # item.holders_share_amount.filter(quota_distribution=distribution).first().share_amount
# # if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None # # if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None
# """ # """
"agency": False, "agency": False,
"default_account": item.default "default_account": item.default
}) })
else: # else:
sharing_information_list.append({ # sharing_information_list.append({
"organization_name": "تعاونی دامداران فامنین", # "organization_name": "تعاونی دامداران فامنین",
"bank_account": { # "bank_account": {
"credit_card": "2222222222222222", # "credit_card": "2222222222222222",
"sheba": "666666666666666666", # "sheba": "666666666666666666",
"account": "4444444444444444444444", # "account": "4444444444444444444444",
}, # },
"broker": "تعاونی", # "broker": "تعاونی",
"amount": 1600, # "amount": 1600,
#
# """ # # """
# if we will need to get agencies share amount, we can use this bellow code # # if we will need to get agencies share amount, we can use this bellow code
# # #
# # item.holders_share_amount.filter(quota_distribution=distribution).first().share_amount # # # item.holders_share_amount.filter(quota_distribution=distribution).first().share_amount
# # if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None # # # if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None
# """ # # """
"agency": False, # "agency": False,
"default_account": True # "default_account": True
}) # })
# if device owner is an agency organization # if device owner is an agency organization
print(sharing_information_list) print(sharing_information_list)
@@ -90,12 +90,13 @@ def agency_organization_pos_info(
""" """
# get agency share amount # get agency share amount
agc_share_amount = agency.pos_stake_holders.filter( agc_share_amount = (agency.pos_stake_holders.filter(
device=device, device=device,
).first().holders_share_amount.filter( ))
quota_distribution=distribution # .holders_share_amount.filter(
) # quota_distribution=distribution
# ))
print(agc_share_amount, device)
agc_share_amount = agc_share_amount.first().share_amount if agc_share_amount else None agc_share_amount = agc_share_amount.first().share_amount if agc_share_amount else None
# calculate agency parent share amount # calculate agency parent share amount

View File

@@ -101,7 +101,6 @@ class QuotaDistributionViewSet(viewsets.ModelViewSet, DynamicSearchMixin, POSDev
can_buy_from_inventory(rancher.first(), distribution=distribution) & rancher.exists() can_buy_from_inventory(rancher.first(), distribution=distribution) & rancher.exists()
) )
] ]
print(device)
# paginate & response # paginate & response
page = self.paginate_queryset(available_distributions) # noqa page = self.paginate_queryset(available_distributions) # noqa