Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.http import HttpResponseRedirect
- from django.shortcuts import render,redirect,get_object_or_404
- from django.contrib.auth.models import User
- from django.db.models import Sum
- from django.contrib import messages
- from graphos.sources.simple import SimpleDataSource
- from graphos.renderers.gchart import LineChart, BarChart
- from agents.models import NetellerDepositModel, SkrillDepositModel, SkrillSignUpModel, NetellerSignUpModel, AgentListModel, \
- AdminCommissionRuleModel,CustomCommissionRangesModel, NetReceiablesModel, PaymentRequestsModel, SupportModel,\
- SiteIdAssignModel, LastUpdateDates , AdmingMessagesForAgents
- from sadmin import Csvimports
- import datetime
- from datetime import timedelta
- from decimal import *
- from django.db.models import Count
- from django.db.models.functions import Trunc
- from sadmin import RefCalcls
- from operator import itemgetter
- def statements(request,platform):
- if 'agent_username' in request.session:
- agentSession = request.session['agent_username']
- statement = []
- current_balance = 0.0
- # Get agents for sub refs
- refsAgents = []
- refsAgentsData = AgentListModel.objects.filter(refferded_by=str(agentSession))
- for ra in refsAgentsData:
- refsAgents.append(ra.username)
- sdate = datetime.datetime.strptime("2020-06-01", '%Y-%m-%d') # start date
- edate = datetime.datetime.today() # end date
- delta = edate - sdate # as timedelta
- for dt in range(delta.days + 1):
- day = str((sdate + timedelta(days=dt)).date())
- ## Adding deposits in statements
- net_earning = NetellerDepositModel.objects.filter(
- ndm_agent=agentSession, ndm_DepositeDate__gte=day, ndm_DepositeDate__lte=day)
- for each in net_earning:
- current_balance = round(float(each.ndm_FinalCommission) + current_balance, 2)
- statement.append(
- (each.ndm_DepositeDate, "Deposit from {}/{}".format(each.ndm_Neteller_ID, each.ndm_Site_ID),
- "VDTrn/{}".format(each.id), "", each.ndm_FinalCommission, current_balance))
- ## Adding Payment Request, pending, paid, declined
- net_withdrawl = PaymentRequestsModel.objects.filter(
- paymentReq_agent=agentSession, paymentReq_datecreation__gte=day, paymentReq_datecreation__lte=day).order_by("id")
- for nt in net_withdrawl:
- if nt.paymentReq_status == 1: # Pending
- current_balance = round(current_balance-float(nt.paymentReq_amount) , 2)
- statement.append(
- (nt.paymentReq_datecreation, "<span class='text-primary'>Payment Request/Processing</span>",
- "VDPayR/{}".format(nt.id), nt.paymentReq_amount, "", current_balance))
- elif nt.paymentReq_status == 2: # Paid
- current_balance = round(current_balance-float(nt.paymentReq_amount), 2)
- statement.append(
- (nt.paymentReq_datecreation, "<span class='text-success'>Payment Request/Paid</span>",
- "VDPayR/{}".format(nt.id), nt.paymentReq_amount, "", current_balance))
- elif nt.paymentReq_status == 3: # Declined
- current_balance = round(float(nt.paymentReq_amount) + current_balance, 2)
- statement.append(
- (nt.paymentReq_datecreation, "<span class='text-warning'>Payment Request/Declined</span>",
- "VDPayR/{}".format(nt.id), "", nt.paymentReq_amount, current_balance))
- ## referral earning
- for refa in refsAgents:
- refs_deps, refs_toPercent, refs_date, refs_agent = \
- RefCalcls.refCalcsSingleAgent("neteller", refa, day, day)
- if refs_toPercent > 0:
- current_balance = round(float(refs_toPercent) + current_balance, 2)
- statement.append((day,
- "<span class='text-info'>Earning From Sub Affiliate/{}</span>".
- format(refs_agent),
- "VDPay/{}".format(day+"/"+str(int(refs_deps))), "", refs_toPercent,
- current_balance))
- totalDebit = round(sum([float(pair[3]) for pair in statement if pair[3] !=""]),2)
- totalCredit= round(sum([float(pair[4]) for pair in statement if pair[4] !=""]),2)
- currentBalance = current_balance
- context = {
- "platform": platform,
- "agent": AgentListModel.objects.get(username=agentSession),
- "statement": reversed(statement),
- "totalDebit": totalDebit,
- "totalCredit": totalCredit,
- "currentBalance": currentBalance
- }
- return render(request, 'agenttemplates/payments/statement.html', context)
- else:
- return redirect('login')
Add Comment
Please, Sign In to add comment