示例#1
0
 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)
示例#2
0
文件: views.py 项目: Sherly14/zrupee
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
示例#3
0
    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)
示例#4
0
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')
示例#5
0
    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
示例#6
0
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
示例#7
0
文件: views.py 项目: Sherly14/zrupee
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})
示例#8
0
文件: views.py 项目: Sherly14/zrupee
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
示例#9
0
    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)
示例#10
0
    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
示例#11
0
    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
示例#12
0
    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)
示例#13
0
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
示例#14
0
    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
示例#15
0
文件: views.py 项目: Sherly14/zrupee
    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
示例#16
0
文件: views.py 项目: Sherly14/zrupee
    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