create bank account for organization

This commit is contained in:
2025-08-06 16:08:07 +03:30
parent e816ac000a
commit 1f8cca7973
11 changed files with 170 additions and 2 deletions

View File

@@ -321,6 +321,21 @@ class BankAccountViewSet(ModelViewSet):
queryset = BankAccountInformation.objects.all()
serializer_class = BankAccountSerializer
@transaction.atomic
def create(self, request, *args, **kwargs):
""" add bank account for each organization """
if 'organization' not in request.data.keys():
organization = get_organization_by_user(request.user)
request.data.update({'organization': organization.id})
serializer = self.serializer_class(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
class GeneralOTPViewSet(ModelViewSet):
""" general OTP user authorization """

View File

@@ -48,6 +48,8 @@ class BankAccountSerializer(serializers.ModelSerializer):
fields = [
'id',
'user',
'organization',
'account_type',
'account',
'name',
'card',
@@ -55,6 +57,8 @@ class BankAccountSerializer(serializers.ModelSerializer):
]
extra_kwargs = {
'user': {'required': False},
'organization': {'required': False},
'account_type': {'required': False},
'account': {'required': False},
'card': {'required': False},
'sheba': {'required': False}
@@ -64,6 +68,8 @@ class BankAccountSerializer(serializers.ModelSerializer):
""" update user bank account information """
instance.name = validated_data.get('name', instance.name)
instance.account = validated_data.get('account', instance.account)
instance.organization = validated_data.get('organization', instance.organization)
instance.account_type = validated_data.get('account_type', instance.account_type)
instance.card = validated_data.get('card', instance.card)
instance.sheba = validated_data.get('sheba', instance.sheba)
instance.save()

View File

@@ -13,6 +13,7 @@ from .api import (
ProvinceViewSet,
OrganizationViewSet,
OrganizationTypeViewSet,
BankAccountViewSet,
GeneralOTPViewSet,
LogoutView
)
@@ -23,11 +24,12 @@ router.register(r'city', CityViewSet, basename='city')
router.register(r'province', ProvinceViewSet, basename='province')
router.register(r'organization', OrganizationViewSet, basename='organization')
router.register(r'organization-type', OrganizationTypeViewSet, basename='organization_type')
router.register(r'bank_account', BankAccountViewSet, basename='bank_account')
router.register(r'otp', GeneralOTPViewSet, basename='otp')
urlpatterns = [
path('login/', CustomizedTokenObtainPairView.as_view(), name='token_obtain_pair'),
path('logout/', LogoutView.as_view(), name='logut'),
path('logout/', LogoutView.as_view(), name='logout'),
path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('token/verify/', TokenVerifyView.as_view(), name='token_verify'),
path('token/revoke/', TokenBlacklistView.as_view(), name='revoke_token'),