def get_queryset(self): if is_user_superuser(self.request): return get_payment_request_qs(self.request, all_user=True, all_req=True) else: return get_payment_request_qs(self.request, from_user=True)
def get_commission_display_qs(request): search = request.GET.get('q') req_usr = request.user.zr_admin_user queryset = Commission.objects.select_related( 'commission_user', 'transaction', 'transaction__type').filter(commission_user=None, is_settled=False).order_by('-at_created') query_filter = Q(commission_user__mobile_no__contains=search) | Q( commission_user__first_name__icontains=search) | Q( commission_user__last_name__icontains=search) if user_utils.is_user_superuser(request): if search: queryset = queryset.filter(query_filter).order_by('-at_created') else: if search: queryset = Commission.objects.filter( query_filter, commission_user=req_usr.zr_user, is_settled=False).order_by('-at_created') else: queryset = Commission.objects.filter( commission_user=req_usr.zr_user, is_settled=False).order_by('-at_created') start_date = request.GET.get('startDate', '') end_date = request.GET.get('endDate', '') if start_date != '' and end_date != '': queryset = queryset.filter(at_created__date__gte=start_date) queryset = queryset.filter(at_created__date__lte=end_date) return queryset
def post(self, request): data = dict(json.loads(request.data.keys()[0])) request_id = data.get("request_id") rejection_reason = data.get("rejection_reason") payment_request = PaymentRequest.objects.filter(id=request_id).last() message = "Something went wrong, Please try again!!" if payment_request: if payment_request.status == 0: if request.user.zr_admin_user.zr_user and payment_request.to_user.pk == request.user.zr_admin_user.zr_user.pk: message = "Payment request rejected successfully" payment_request.status = 2 payment_request.reject_comments = rejection_reason payment_request.save() elif is_user_superuser( request ) and payment_request.to_user.role.name == 'ADMINSTAFF': message = "Payment request rejected successfully" payment_request.status = 2 payment_request.reject_comments = rejection_reason payment_request.save() else: message = "Not allowed to accept payment request" else: message = "Payment request already {status}".format( status=payment_request.get_status_display()) return Response({ "message": message, 'success': True }, status=status.HTTP_200_OK)
def get_payment_request_qs(request, from_user=False, to_user=False, all_user=False, all_req=False): q = request.GET.get('q', '') queryset = [] if is_user_superuser(request): if all_user: queryset = PaymentRequest.objects.select_related( 'from_user', 'from_bank', 'to_bank', 'payment_mode') else: queryset = PaymentRequest.objects.select_related( 'from_user', 'from_bank', 'to_bank', 'payment_mode').filter(to_user__role__name='ADMINSTAFF', ) elif request.user.zr_admin_user.role.name in [ 'DISTRIBUTOR', 'SUBDISTRIBUTOR' ]: # To get own payment request if from_user: queryset = PaymentRequest.objects.select_related( 'from_user', 'from_bank', 'to_bank', 'payment_mode').filter( from_user=request.user.zr_admin_user.zr_user) else: queryset = PaymentRequest.objects.select_related( 'from_user', 'from_bank', 'to_bank', 'payment_mode').filter( to_user=request.user.zr_admin_user.zr_user).exclude( from_user=request.user.zr_admin_user.zr_user) if q: query = Q(to_user__first_name__icontains=q) | Q( to_user__last_name__icontains=q) | Q( to_user__mobile_no__contains=q) | Q( from_user__first_name__icontains=q) | Q( from_user__last_name__icontains=q) | Q( from_user__mobile_no__icontains=q) | Q( from_bank__bank_name__icontains=q) | Q( to_bank__bank_name__icontains=q) | Q( amount__contains=q) | Q(ref_no=q) queryset = queryset.filter(query) start_date = request.GET.get('startDate', '') end_date = request.GET.get('endDate', '') to_user_id = request.GET.get('to_user_id', -1) from_user_id = request.GET.get('from_user_id', -1) if start_date != '' and end_date != '': queryset = queryset.filter(at_created__date__gte=start_date) queryset = queryset.filter(at_created__date__lte=end_date) if from_user_id != None and int(from_user_id) > 0: queryset = queryset.filter(from_user_id=from_user_id) if to_user_id != None and int(to_user_id) > 0: queryset = queryset.filter(to_user_id=to_user_id) return queryset.order_by('-at_created')
def get_context_data(self, **kwargs): q = self.request.GET.get('q', '') start_date = self.request.GET.get('startDate', '') end_date = self.request.GET.get('endDate', '') user_payment_id = self.request.GET.get('user_payment_id') context = super(PaymentListView, self).get_context_data(**kwargs) user_list = Payments.objects.select_related('user').distinct('user_id') queryset = self.get_queryset() paginator = Paginator(queryset, self.paginate_by) page = self.request.GET.get('page', 1) try: queryset = paginator.page(page) except PageNotAnInteger: queryset = paginator.page(1) from django.core.urlresolvers import reverse context['startDate'] = start_date context['endDate'] = end_date if user_list: context['user_list'] = user_list if user_payment_id: context['user_payment_id'] = int(user_payment_id) context['main_url'] = reverse('payment-requests:payment-list') context['page_obj'] = queryset context['q'] = q context['url_name'] = "payment-list" context['is_superuser'] = is_user_superuser(self.request) query_string = {} if q: query_string['q'] = q context['has_prev_page'] = context['has_next_page'] = None if queryset.has_next(): query_string['page'] = queryset.next_page_number() context['next_page_qs'] = urlencode(query_string) context['has_next_page'] = queryset.has_next() if queryset.has_previous(): query_string['page'] = queryset.previous_page_number() context['prev_page_qs'] = urlencode(query_string) context['has_prev_page'] = queryset.has_previous() return context
def payment_req_cnt(request): pr_cnt = 0 if is_user_superuser(request): pr_cnt = PaymentRequest.objects.filter( status=0, to_user__role__name='ADMINSTAFF', ).count() elif request.user.zr_admin_user.role.name in [ 'DISTRIBUTOR', 'SUBDISTRIBUTOR' ]: pr_cnt = PaymentRequest.objects.filter( to_user=request.user.zr_admin_user.zr_user, status=0).exclude( from_user=request.user.zr_admin_user.zr_user).count() return pr_cnt
def payments_csv_download(request): if not (request.user.zr_admin_user.role.name == 'ADMINSTAFF' or is_user_superuser(request)): return JsonResponse({"success": False}) email_list = request.POST.get('email', '').split(",") report_params = { "email_list": email_list, "q": request.POST.get('q', ""), "filter": request.POST.get('filter', ""), "period": request.POST.get('period', ""), "user_id": request.user.id, } from zrwallet import tasks as passbook_celery_tasks # passbook_celery_tasks.send_passbook_report(report_params) passbook_celery_tasks.send_passbook_report.apply_async(args=[report_params]) return JsonResponse({"success": True})
def get_transaction_qs(request): queryset = None if is_user_superuser(request): queryset = WalletTransactions.objects.exclude(wallet_id=None).select_related( 'wallet', 'wallet__merchant', 'wallet__merchant__role', 'transaction', 'transaction__beneficiary_user' ).order_by('-id') elif request.user.zr_admin_user.role.name == DISTRIBUTOR: dist_subd = list(zrmappings_models.DistributorSubDistributor.objects.filter( distributor=request.user.zr_admin_user.zr_user).values_list('sub_distributor_id', flat=True)) queryset = WalletTransactions.objects.filter( wallet_id__in=get_merchant_id_list_from_distributor(request.user.zr_admin_user.zr_user) + dist_subd + list(zrmappings_models.SubDistributorMerchant.objects.filter( sub_distributor__in=dist_subd).values_list('merchant_id', flat=True)) + list(ZrUser.objects.filter(id=request.user.zr_admin_user.zr_user.id).values_list( 'id', flat=True))).order_by('-id') elif request.user.zr_admin_user.role.name == SUBDISTRIBUTOR: queryset = WalletTransactions.objects.filter( wallet_id__in=list(zrmappings_models.SubDistributorMerchant.objects.filter( sub_distributor=request.user.zr_admin_user.zr_user).values_list( 'merchant_id', flat=True)) + list(ZrUser.objects.filter(id=request.user.zr_admin_user.zr_user.id).values_list( 'id', flat=True))).order_by('-id') q = request.GET.get('q', '') if q: query_filter = Q(wallet__merchant__first_name__icontains=q) | Q(wallet__merchant__last_name__icontains=q) | \ Q(wallet__merchant__mobile_no__contains=q) queryset = queryset.filter( query_filter ) start_date = request.GET.get('startDate', '') end_date = request.GET.get('endDate', '') user_id = request.GET.get('user_id', -1) if start_date != '' and end_date != '': queryset = queryset.filter(at_created__date__gte=start_date) queryset = queryset.filter(at_created__date__lte=end_date) if user_id is not None and int(user_id) > 0: queryset = queryset.filter(wallet_id=user_id) return queryset
def post(self, request): err_msg = "Something went wrong, please try again" data = {} bank = Bank.objects.all().first() wallet = PaymentMode.objects.all().filter(name='WALLET') for detail, value in request.data.items(): data[detail] = value # return Response(data, status=status.HTTP_200_OK) data['to_user'] = request.user.zr_admin_user.zr_user.id data['payment_type'] = 2 data['payment_mode'] = wallet data['dmt_amount'] = 0 data['non_dmt_amount'] = 0 if data['type'] == "DMT": data['dmt_amount'] = data['amount'] else: data['non_dmt_amount'] = data['amount'] data['from_account_no'] = "xxx_Topup_{0}".format(str(data['to_user'])) data['to_account_no'] = "xxx_Topup_{0}".format(str(data['from_user'])) data['from_bank'] = bank.id data['to_bank'] = bank.id data['comments'] = "TOPUP" data['status'] = 0 topup_form = zr_payment_form.TopupForm(data=data) if not topup_form.is_valid(): to_list = [] distributor_merchant = [] distributor_subdistributor = [] distributor_merchant = zrmappings_models.DistributorMerchant.objects.filter( distributor_id=request.user.zr_admin_user.zr_user) if distributor_merchant: for distributor_merchant_map in distributor_merchant: to_list.append(distributor_merchant_map.merchant) distributor_subdistributor = zrmappings_models.DistributorSubDistributor.objects.filter( distributor_id=request.user.zr_admin_user.zr_user) if distributor_subdistributor: for distributor_subdistributor_map in distributor_subdistributor: to_list.append( distributor_subdistributor_map.sub_distributor) error_message = '{0} {1} {2} {3}'.format(ERROR_MESSAGE_START, err_msg, topup_form.errors, MESSAGE_END) response_data = { "responser": topup_form.errors, "message": error_message, "success": False } return Response(response_data, status=status.HTTP_200_OK) # updating the topup data in zrwallet table payment_request = topup_form.save() if payment_request: if payment_request.status == 0: if is_user_superuser( self.request ) and payment_request.to_user.role.name == 'ADMINSTAFF': zr_wallet = zrwallet_models.Wallet.objects.get( merchant=payment_request.from_user) zr_wallet.dmt_balance += payment_request.dmt_amount zr_wallet.non_dmt_balance += payment_request.non_dmt_amount zr_wallet.save( update_fields=['dmt_balance', 'non_dmt_balance']) wallet_transaction = zrwallet_models.WalletTransactions.objects.create( wallet=zr_wallet, transaction=None, payment_request=payment_request, dmt_balance=payment_request.dmt_amount, non_dmt_balance=payment_request.non_dmt_amount, dmt_closing_balance=zr_wallet.dmt_balance, non_dmt_closing_balance=zr_wallet.non_dmt_balance, is_success=True) # "Wallet updated successfully" payment_request.status = 1 payment_request.save() sms.wallet(wallet_transaction) elif self.request.user.zr_admin_user.role.name in [ 'DISTRIBUTOR', 'SUBDISTRIBUTOR' ]: # Amount from supervisor_wallet transferred to zr_wallet # supervisor_wallet is self(from) wallet for TOPUP supervisor_wallet = zrwallet_models.Wallet.objects.get( merchant=payment_request.to_user) # zr_wallet is other(to) wallet for TOPUP zr_wallet = zrwallet_models.Wallet.objects.get( merchant=payment_request.from_user) updated = False balance_insufficient = [] if (supervisor_wallet.dmt_balance >= payment_request.dmt_amount and supervisor_wallet.non_dmt_balance >= payment_request.non_dmt_amount and supervisor_wallet.dmt_limit >= payment_request.dmt_amount): # For DMT zr_wallet.dmt_balance += payment_request.dmt_amount supervisor_wallet.dmt_balance -= payment_request.dmt_amount # For non dmt zr_wallet.non_dmt_balance += payment_request.non_dmt_amount supervisor_wallet.non_dmt_balance -= payment_request.non_dmt_amount updated = True else: if not (supervisor_wallet.dmt_balance >= payment_request.dmt_amount): balance_insufficient.append('DMT balance') elif not (supervisor_wallet.non_dmt_balance >= payment_request.non_dmt_amount): balance_insufficient.append('NON DMT balance') if updated: # "Wallet updated successfully" zr_wallet.save( update_fields=['dmt_balance', 'non_dmt_balance']) supervisor_wallet.save( update_fields=['dmt_balance', 'non_dmt_balance']) wallet_transaction_supervisor = zrwallet_models.WalletTransactions.objects.create( wallet=supervisor_wallet, transaction=None, payment_request=payment_request, dmt_balance=payment_request.dmt_amount * decimal.Decimal('-1'), non_dmt_balance=payment_request.non_dmt_amount * decimal.Decimal('-1'), dmt_closing_balance=supervisor_wallet.dmt_balance, non_dmt_closing_balance=supervisor_wallet. non_dmt_balance, is_success=True) wallet_transaction = zrwallet_models.WalletTransactions.objects.create( wallet=zr_wallet, transaction=None, payment_request=payment_request, dmt_balance=payment_request.dmt_amount, non_dmt_balance=payment_request.non_dmt_amount, dmt_closing_balance=zr_wallet.dmt_balance, non_dmt_closing_balance=zr_wallet.non_dmt_balance, is_success=True) payment_request.status = 1 payment_request.save() message = '{0} {1} {2}'.format( SUCCESS_MESSAGE_START, "TopUp sent successfully", MESSAGE_END) sms.wallet(wallet_transaction_supervisor) sms.wallet(wallet_transaction) else: if supervisor_wallet.dmt_limit < payment_request.dmt_amount: message = LIMIT_ERR_MSG else: message = "Insufficient balance in (%s), Please recharge you wallet" % ( ','.join(balance_insufficient)) response_data = { "responser": "payment_request", "message": message, "success": True } return Response(response_data, status=status.HTTP_201_CREATED)
def get_context_data(self, **kwargs): q = self.request.GET.get('q', '') start_date = self.request.GET.get('startDate', '') end_date = self.request.GET.get('endDate', '') to_user_id = self.request.GET.get('to_user_id', -1) touser_list = [] context = super(PaymentRequestSentListView, self).get_context_data(**kwargs) queryset = self.get_queryset() paginator = Paginator(queryset, self.paginate_by) page = self.request.GET.get('page_no', 1) try: page = paginator.page(page) except PageNotAnInteger: page = paginator.page(1) context['page_obj'] = page context['q'] = q if is_user_superuser(self.request): touser_list = PaymentRequest.objects.all().distinct('to_user_id') elif self.request.user.zr_admin_user.role.name in [ 'DISTRIBUTOR', 'SUBDISTRIBUTOR' ]: touser_list = PaymentRequest.objects.filter( to_user=self.request.user.zr_admin_user.zr_user) context['startDate'] = start_date context['endDate'] = end_date if touser_list: context['touser_list'] = touser_list context['to_user_id'] = int(to_user_id) wallet = None if not is_user_superuser(self.request): try: wallet = zrwallet_models.Wallet.objects.get( merchant=self.request.user.zr_admin_user.zr_user) except: pass context['wallet'] = wallet context['url_name'] = "payment-request-sent-view" context['is_superuser'] = is_user_superuser(self.request) query_string = {} query_string['q'] = q query_string['user_id'] = int(to_user_id) query_string['startDate'] = start_date query_string['endDate'] = end_date context['has_next_page'] = context['has_prev_page'] = None if page.has_next(): query_string['page_no'] = page.next_page_number() context['next_page_qs'] = urlencode(query_string) context['has_next_page'] = page.has_next() if page.has_previous(): query_string['page_no'] = page.previous_page_number() context['prev_page_qs'] = urlencode(query_string) context['has_prev_page'] = page.has_previous() return context
def get_context_data(self, **kwargs): q = self.request.GET.get('q', '') start_date = self.request.GET.get('startDate', '') end_date = self.request.GET.get('endDate', '') from_user_id = self.request.GET.get('from_user_id', -1) context = super(PaymentRequestListView, self).get_context_data(**kwargs) fromuser_list = PaymentRequest.objects.select_related( 'from_user').filter( to_user__role__name='ADMINSTAFF', ).distinct('from_user_id') distributor_id = self.request.GET.get('distributor-id', -1) queryset = self.get_queryset() if is_user_superuser(self.request): fromuser_list = PaymentRequest.objects.select_related( 'from_user').filter(to_user__role__name='ADMINSTAFF', ).distinct('from_user_id') elif self.request.user.zr_admin_user.role.name in ['DISTRIBUTOR']: fromuser_list = PaymentRequest.objects.all().filter( from_user=self.request.user.zr_admin_user.zr_user).distinct( 'from_user_id') elif self.request.user.zr_admin_user.role.name in ['SUBDISTRIBUTOR']: fromuser_list = PaymentRequest.objects.all().filter( to_user__role__name='SUBDISTRIBUTOR', ).distinct( 'from_user_id') paginator = Paginator(queryset, self.paginate_by) page = self.request.GET.get('page_no', 1) try: page = paginator.page(page) except PageNotAnInteger: page = paginator.page(1) context['queryset'] = page.object_list context['q'] = q wallet = None if not is_user_superuser(self.request): try: wallet = zrwallet_models.Wallet.objects.get( merchant=self.request.user.zr_admin_user.zr_user) except: pass context['wallet'] = wallet context['url_name'] = "payment-request-list" context['is_superuser'] = is_user_superuser(self.request) context['startDate'] = start_date context['endDate'] = end_date context['distributor_id'] = int(distributor_id) context['from_user_id'] = int(from_user_id) context['fromuser_list'] = fromuser_list query_string = {} query_string['q'] = q if from_user_id: query_string['user_id'] = int(from_user_id) query_string['startDate'] = start_date query_string['endDate'] = end_date context['has_next_page'] = context['has_prev_page'] = None if page.has_next(): query_string['page_no'] = page.next_page_number() context['next_page_qs'] = urlencode(query_string) context['has_next_page'] = page.has_next() if page.has_previous(): query_string['page_no'] = page.previous_page_number() context['prev_page_qs'] = urlencode(query_string) context['has_prev_page'] = page.has_previous() return context
def post(self, request): data = dict(json.loads(request.data.keys()[0])) request_id = data.get("request_id") comments = data.get("comments") payment_request = PaymentRequest.objects.filter(id=request_id).last() message = "Something went wrong, Please try again!" if payment_request: if payment_request.status == 0: payment_request.comments = comments payment_request.save() if is_user_superuser( self.request ) and payment_request.to_user.role.name == 'ADMINSTAFF': zr_wallet = zrwallet_models.Wallet.objects.get( merchant=payment_request.from_user) zr_wallet.dmt_balance += payment_request.dmt_amount zr_wallet.non_dmt_balance += payment_request.non_dmt_amount zr_wallet.save() wallet_transaction = zrwallet_models.WalletTransactions.objects.create( wallet=zr_wallet, transaction=None, payment_request=payment_request, dmt_balance=payment_request.dmt_amount, non_dmt_balance=payment_request.non_dmt_amount, dmt_closing_balance=zr_wallet.dmt_balance, non_dmt_closing_balance=zr_wallet.non_dmt_balance, is_success=True) message = "Wallet updated successfully" payment_request.status = 1 payment_request.save() sms.wallet(wallet_transaction) elif self.request.user.zr_admin_user.role.name in [ 'DISTRIBUTOR', 'SUBDISTRIBUTOR' ]: supervisor_wallet = zrwallet_models.Wallet.objects.get( merchant=payment_request.to_user) zr_wallet = zrwallet_models.Wallet.objects.get( merchant=payment_request.from_user) updated = False balance_insufficient = [] if (supervisor_wallet.dmt_balance >= payment_request.dmt_amount and supervisor_wallet.non_dmt_balance >= payment_request.non_dmt_amount and supervisor_wallet.dmt_limit >= payment_request.dmt_amount): # For DMT zr_wallet.dmt_balance += payment_request.dmt_amount supervisor_wallet.dmt_balance -= payment_request.dmt_amount # For non dmt zr_wallet.non_dmt_balance += payment_request.non_dmt_amount supervisor_wallet.non_dmt_balance -= payment_request.non_dmt_amount updated = True else: if not (supervisor_wallet.dmt_balance >= payment_request.dmt_amount): balance_insufficient.append('DMT balance') elif not (supervisor_wallet.non_dmt_balance >= payment_request.non_dmt_amount): balance_insufficient.append('NON DMT balance') if updated: message = "Wallet updated successfully" zr_wallet.save() supervisor_wallet.save() wallet_transaction_supervisor = zrwallet_models.WalletTransactions.objects.create( wallet=supervisor_wallet, transaction=None, payment_request=payment_request, dmt_balance=payment_request.dmt_amount * decimal.Decimal('-1'), non_dmt_balance=payment_request.non_dmt_amount * decimal.Decimal('-1'), dmt_closing_balance=supervisor_wallet.dmt_balance, non_dmt_closing_balance=supervisor_wallet. non_dmt_balance, is_success=True) wallet_transaction = zrwallet_models.WalletTransactions.objects.create( wallet=zr_wallet, transaction=None, payment_request=payment_request, dmt_balance=payment_request.dmt_amount, non_dmt_balance=payment_request.non_dmt_amount, dmt_closing_balance=zr_wallet.dmt_balance, non_dmt_closing_balance=zr_wallet.non_dmt_balance, is_success=True) payment_request.status = 1 payment_request.save() sms.wallet(wallet_transaction) sms.wallet(wallet_transaction_supervisor) else: if supervisor_wallet.dmt_limit < payment_request.dmt_amount: message = LIMIT_ERR_MSG else: message = "Insufficient balance in (%s), Please recharge you wallet" % ( ','.join(balance_insufficient)) else: message = "Payment request already {status}".format( status=payment_request.get_status_display()) return Response({ "message": message, 'success': True }, status=status.HTTP_200_OK)
def get_transactions_qs(request): q = request.GET.get('q', "") q_obj = Q( user__first_name__icontains=q ) | Q( user__last_name__icontains=q ) | Q( user__mobile_no__icontains=q ) start_date = request.GET.get('startDate', '') end_date = request.GET.get('endDate', '') user_transaction_id = request.GET.get('user_transaction_id') if user_utils.is_user_superuser(request): pass # If user is main admin then need to show all listing elif request.user.zr_admin_user.role.name == SUBDISTRIBUTOR: # SUB DISTRIBUTOR # Get merchants for sub-distributor q_obj.add( (Q(user_id__in= # [request.user.zr_admin_user.zr_user_id] + get_sub_distributor_merchant_id_list_from_sub_distributor(request.user.zr_admin_user.zr_user))), q_obj.AND, q_obj.connector ) elif request.user.zr_admin_user.role.name == DISTRIBUTOR: # DISTRIBUTOR # Get merchants for distrubutor and sub-distributor q_obj.add( (Q(user_id__in= # [request.user.zr_admin_user.zr_user_id] + get_merchant_id_list_from_distributor(request.user.zr_admin_user.zr_user) + # get_sub_distributor_id_list_from_distributor(request.user.zr_admin_user.zr_user) + get_sub_distributor_merchant_id_list_from_distributor(request.user.zr_admin_user.zr_user))), q_obj.AND, q_obj.connector ) queryset = Transaction.objects.select_related('user', 'service_provider', 'type').filter(q_obj).order_by('-at_created') if user_transaction_id!=None and int(user_transaction_id) > 0: queryset = queryset.filter(user_id=user_transaction_id) if start_date != '' and end_date != '': queryset = queryset.filter(at_created__date__gte=start_date) queryset = queryset.filter(at_created__date__lte=end_date) distributor_id = request.GET.get('distributor-id') merchant_id = request.GET.get('merchant-id') sub_distributor_id = request.GET.get('sub-distributor-id') if merchant_id != None and int(merchant_id) > 0: queryset = queryset.filter(user_id = merchant_id) if sub_distributor_id != None and int(sub_distributor_id) > 0: subMerchant = zrmappings_models.SubDistributorMerchant.objects.filter(sub_distributor_id=sub_distributor_id) merchantlist = [] if subMerchant: for sub_merchant in subMerchant: merchantlist.append(sub_merchant.merchant_id) if merchantlist: queryset = Transaction.objects.filter(user_id__in= merchantlist) if distributor_id != None and merchant_id == "-1": distmerchantlist = [] DistM = zrmappings_models.DistributorMerchant.objects.filter(distributor_id=distributor_id) if DistM: for dist in DistM: distmerchantlist.append(dist.merchant_id) if distmerchantlist: queryset = Transaction.objects.filter(user_id__in=distmerchantlist) if merchant_id == "-1": distmerchantlist = [] DistM = zrmappings_models.DistributorMerchant.objects.filter(distributor_id=request.user.zr_admin_user.zr_user) if DistM: for dist in DistM: distmerchantlist.append(dist.merchant_id) if distmerchantlist: queryset = Transaction.objects.filter(user_id__in=distmerchantlist) return queryset
def get_context_data(self, *args, **kwargs): context = super(TransactionsListView, self).get_context_data() query_string = {} start_date = self.request.GET.get('startDate', '') end_date = self.request.GET.get('endDate', '') merchant_id = self.request.GET.get('merchant-id', -1) distributor_id = self.request.GET.get('distributor-id', -1) sub_distributor_id = self.request.GET.get('sub-distributor-id', -1) sub_distributor = [] sub_distributor_list = [] sub_dist_merchant = [] merchant = [] subDistMerchant = {} if user_utils.is_user_superuser(self.request): user_transaction_data = Transaction.objects.all().distinct('user_id').exclude(txn_id ='') merchant = zrmappings_models.DistributorMerchant.objects.filter(distributor_id=distributor_id) sub_distributor = zrmappings_models.DistributorSubDistributor.objects.filter(distributor_id=distributor_id) distributor_list = ZrUser.objects.filter(role__name=DISTRIBUTOR) context['distributor_list'] = distributor_list elif self.request.user.zr_admin_user.role.name == SUBDISTRIBUTOR: user_transaction_data = Transaction.objects.filter(user_id__in=get_sub_distributor_merchant_id_list_from_sub_distributor(self.request.user.zr_admin_user.zr_user)).distinct('user_id').exclude(txn_id='') merchant = zrmappings_models.SubDistributorMerchant.objects.filter(sub_distributor=self.request.user.zr_admin_user.zr_user) distributor_list = [] elif self.request.user.zr_admin_user.role.name == DISTRIBUTOR: user_transaction_data = Transaction.objects.filter(user_id__in=get_merchant_id_list_from_distributor(self.request.user.zr_admin_user.zr_user) + get_sub_distributor_merchant_id_list_from_distributor(self.request.user.zr_admin_user.zr_user)).distinct('user_id').exclude(txn_id='') sub_distributor = zrmappings_models.DistributorSubDistributor.objects.filter(distributor=self.request.user.zr_admin_user.zr_user) merchant = zrmappings_models.DistributorMerchant.objects.filter(distributor=self.request.user.zr_admin_user.zr_user) distributor_list = [] user_transaction_id = self.request.GET.get('user_transaction_id', 0) # Search context q = self.request.GET.get('q', '') context['q'] = q if q: query_string['q'] = q # Pagination pg_no = self.request.GET.get('page_no', 1) queryset = self.get_queryset() context['queryset'] = queryset p = Paginator(context['queryset'], self.paginate_by) try: page = p.page(pg_no) except EmptyPage: raise Http404 for t in page.object_list: try: t.service_provider = t.service_provider.name except: t.service_provider = None if sub_distributor: for subdist in sub_distributor: sub_distributor_list.append(subdist.sub_distributor_id) if sub_distributor_list: sub_dist_merchant = zrmappings_models.SubDistributorMerchant.objects.filter( sub_distributor_id__in=sub_distributor_list) if sub_dist_merchant: for sub_merchant in sub_dist_merchant: if sub_merchant.sub_distributor.id in subDistMerchant: subDistMerchant[sub_merchant.sub_distributor.id].append([sub_merchant.sub_distributor.first_name, sub_merchant.merchant.id,sub_merchant.merchant.first_name]) else: subDistMerchant[sub_merchant.sub_distributor.id] = [[sub_merchant.sub_distributor.first_name, sub_merchant.merchant.id,sub_merchant.merchant.first_name]] if merchant: for distmerchant in merchant: if -1 in subDistMerchant: subDistMerchant[-1].append(["MERCHANTS", distmerchant.merchant.id, distmerchant.merchant.first_name]) else: subDistMerchant[-1] = [["MERCHANTS", distmerchant.merchant.id, distmerchant.merchant.first_name]] context['startDate'] = start_date context['endDate'] = end_date if user_transaction_data: context['user_transaction_data'] = user_transaction_data context['user_transaction_id'] =int(user_transaction_id) context['subDistMerchant'] = subDistMerchant context['merchant_id'] = int(merchant_id) context['distributor_id'] =int(distributor_id) context['sub_distributor_id'] = int(sub_distributor_id) context['sub_distributor_id'] = int(merchant_id) context['distributor_list'] = distributor_list context['queryset'] = page.object_list context['url_name'] = "transaction-list" context['has_next_page'] = context['has_prev_page'] = None if page.has_next(): query_string['page_no'] = page.next_page_number() context['next_page_qs'] = urlencode(query_string) context['has_next_page'] = page.has_next() if page.has_previous(): query_string['page_no'] = page.previous_page_number() context['prev_page_qs'] = urlencode(query_string) context['has_prev_page'] = page.has_previous() return context
def get_context_data(self, *args, **kwargs): pg_no = self.request.GET.get('page_no', 1) q = self.request.GET.get('q', '') start_date = self.request.GET.get('startDate', '') end_date = self.request.GET.get('endDate', '') context = super(CommissionDisplay, self).get_context_data(*args, **kwargs) user = None if user_utils.is_user_superuser( self.request) else self.request.user.zr_admin_user.zr_user ids_qs = Commission.objects.filter(commission_user=user, is_settled=False).values_list( 'id', flat=True).order_by('id') ids = [comm_id for comm_id in ids_qs] context['ids'] = ids total_commission = Commission.objects.filter(id__in=ids).aggregate( commission=Sum(F('user_commission') - F('user_tds')))['commission'] if total_commission: context['total_commission'] = '%.2f' % total_commission else: context['total_commission'] = '%.2f' % 0 context['q'] = q context['is_user_superuser'] = is_user_superuser(request=self.request) context['user_id'] = -1 if is_user_superuser(self.request) else user.id context['startDate'] = start_date context['endDate'] = end_date query_result = self.get_queryset() p = Paginator(query_result, self.paginated_by) page = None try: if pg_no: page = p.page(pg_no) else: page = p.page(1) except: page = p.page(1) context['commissions'] = page context['url_name'] = "display-commission" query_string = {} if q: query_string['q'] = q if page.has_next(): query_string['page_no'] = page.next_page_number() context['next_page_qs'] = urlencode(query_string) context['has_next_page'] = page.has_next() if page.has_previous(): query_string['page_no'] = page.previous_page_number() context['prev_page_qs'] = urlencode(query_string) context['has_prev_page'] = page.has_previous() return context
def get_context_data(self, *args, **kwargs): context = super(PassbookListView, self).get_context_data() user_list = None q = self.request.GET.get('q', '') queryset = self.get_queryset() pg_no = self.request.GET.get('page_no', 1) start_date = self.request.GET.get('startDate', '') end_date = self.request.GET.get('endDate', '') user_id = self.request.GET.get('user_id', -1) if is_user_superuser(self.request): user_list = WalletTransactions.objects.select_related('wallet__merchant').distinct('wallet_id') elif self.request.user.zr_admin_user.role.name == DISTRIBUTOR: dist_subd = list(zrmappings_models.DistributorSubDistributor.objects.filter( distributor=self.request.user.zr_admin_user.zr_user).values_list('sub_distributor_id', flat=True)) user_list = WalletTransactions.objects.filter( wallet_id__in=get_merchant_id_list_from_distributor(self.request.user.zr_admin_user.zr_user) + dist_subd + list(zrmappings_models.SubDistributorMerchant.objects.filter( sub_distributor__in=dist_subd).values_list('merchant_id', flat=True)) + list(ZrUser.objects.filter(id=self.request.user.zr_admin_user.zr_user.id).values_list( 'id', flat=True))).distinct('wallet_id') elif self.request.user.zr_admin_user.role.name == SUBDISTRIBUTOR: user_list = WalletTransactions.objects.filter( wallet_id__in=list(zrmappings_models.SubDistributorMerchant.objects.filter( sub_distributor=self.request.user.zr_admin_user.zr_user).values_list( 'merchant_id', flat=True)) + list(ZrUser.objects.filter(id=self.request.user.zr_admin_user.zr_user.id).values_list( 'id', flat=True))).distinct('wallet_id') context['q'] = q context['startDate'] = start_date context['endDate'] = end_date context['user_id'] = int(user_id) context['user_list'] = user_list p = Paginator(queryset, self.paginate_by) try: page = p.page(pg_no) except EmptyPage: raise Http404 for w in page.object_list: try: w.type = w.transaction.type except: w.type = None try: w.bank_ref = w.transaction.transaction_response_json['data']['bank_ref_num'] except: w.bank_ref = None try: w.customer = w.transaction.customer except: w.customer = None try: w.beneficiary = w.transaction.beneficiary except: w.beneficiary = None try: w.account_no = w.transaction.account_no except: w.account_no = None try: w.status = w.transaction.status except: w.status = None context['queryset'] = page.object_list context['url_name'] = "passbook-list" query_string = {} if q: query_string['q'] = q if user_id: query_string['user_id'] = int(user_id) if start_date: query_string['startDate'] = start_date if end_date: query_string['endDate'] = end_date context['has_next_page'] = None context['has_prev_page'] = None if page.has_next(): query_string['page_no'] = page.next_page_number() context['next_page_qs'] = urlencode(query_string) context['has_next_page'] = page.has_next() if page.has_previous(): query_string['page_no'] = page.previous_page_number() context['prev_page_qs'] = urlencode(query_string) context['has_prev_page'] = page.has_previous() return context