rubel007cse

Untitled

Sep 13th, 2020
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | None | 0 0
  1. from django.http import HttpResponseRedirect
  2. from django.shortcuts import render,redirect,get_object_or_404
  3. from django.contrib.auth.models import User
  4. from django.db.models import Sum
  5. from django.contrib import messages
  6. from graphos.sources.simple import SimpleDataSource
  7. from graphos.renderers.gchart import LineChart, BarChart
  8. from agents.models import NetellerDepositModel, SkrillDepositModel, SkrillSignUpModel, NetellerSignUpModel, AgentListModel, \
  9. AdminCommissionRuleModel,CustomCommissionRangesModel, NetReceiablesModel, PaymentRequestsModel, SupportModel,\
  10. SiteIdAssignModel, LastUpdateDates , AdmingMessagesForAgents
  11. from sadmin import Csvimports
  12. import datetime
  13. from datetime import timedelta
  14. from decimal import *
  15. from django.db.models import Count
  16. from django.db.models.functions import Trunc
  17. from sadmin import RefCalcls
  18. from operator import itemgetter
  19.  
  20.  
  21.  
  22. def statements(request,platform):
  23. if 'agent_username' in request.session:
  24. agentSession = request.session['agent_username']
  25.  
  26. statement = []
  27. current_balance = 0.0
  28.  
  29. # Get agents for sub refs
  30. refsAgents = []
  31. refsAgentsData = AgentListModel.objects.filter(refferded_by=str(agentSession))
  32. for ra in refsAgentsData:
  33. refsAgents.append(ra.username)
  34.  
  35. sdate = datetime.datetime.strptime("2020-06-01", '%Y-%m-%d') # start date
  36. edate = datetime.datetime.today() # end date
  37. delta = edate - sdate # as timedelta
  38.  
  39. for dt in range(delta.days + 1):
  40. day = str((sdate + timedelta(days=dt)).date())
  41.  
  42. ## Adding deposits in statements
  43. net_earning = NetellerDepositModel.objects.filter(
  44. ndm_agent=agentSession, ndm_DepositeDate__gte=day, ndm_DepositeDate__lte=day)
  45. for each in net_earning:
  46. current_balance = round(float(each.ndm_FinalCommission) + current_balance, 2)
  47. statement.append(
  48. (each.ndm_DepositeDate, "Deposit from {}/{}".format(each.ndm_Neteller_ID, each.ndm_Site_ID),
  49. "VDTrn/{}".format(each.id), "", each.ndm_FinalCommission, current_balance))
  50.  
  51. ## Adding Payment Request, pending, paid, declined
  52. net_withdrawl = PaymentRequestsModel.objects.filter(
  53. paymentReq_agent=agentSession, paymentReq_datecreation__gte=day, paymentReq_datecreation__lte=day).order_by("id")
  54. for nt in net_withdrawl:
  55. if nt.paymentReq_status == 1: # Pending
  56. current_balance = round(current_balance-float(nt.paymentReq_amount) , 2)
  57. statement.append(
  58. (nt.paymentReq_datecreation, "<span class='text-primary'>Payment Request/Processing</span>",
  59. "VDPayR/{}".format(nt.id), nt.paymentReq_amount, "", current_balance))
  60.  
  61. elif nt.paymentReq_status == 2: # Paid
  62. current_balance = round(current_balance-float(nt.paymentReq_amount), 2)
  63. statement.append(
  64. (nt.paymentReq_datecreation, "<span class='text-success'>Payment Request/Paid</span>",
  65. "VDPayR/{}".format(nt.id), nt.paymentReq_amount, "", current_balance))
  66.  
  67. elif nt.paymentReq_status == 3: # Declined
  68. current_balance = round(float(nt.paymentReq_amount) + current_balance, 2)
  69. statement.append(
  70. (nt.paymentReq_datecreation, "<span class='text-warning'>Payment Request/Declined</span>",
  71. "VDPayR/{}".format(nt.id), "", nt.paymentReq_amount, current_balance))
  72.  
  73.  
  74.  
  75. ## referral earning
  76. for refa in refsAgents:
  77. refs_deps, refs_toPercent, refs_date, refs_agent = \
  78. RefCalcls.refCalcsSingleAgent("neteller", refa, day, day)
  79.  
  80. if refs_toPercent > 0:
  81. current_balance = round(float(refs_toPercent) + current_balance, 2)
  82. statement.append((day,
  83. "<span class='text-info'>Earning From Sub Affiliate/{}</span>".
  84. format(refs_agent),
  85. "VDPay/{}".format(day+"/"+str(int(refs_deps))), "", refs_toPercent,
  86. current_balance))
  87.  
  88. totalDebit = round(sum([float(pair[3]) for pair in statement if pair[3] !=""]),2)
  89. totalCredit= round(sum([float(pair[4]) for pair in statement if pair[4] !=""]),2)
  90. currentBalance = current_balance
  91.  
  92.  
  93. context = {
  94. "platform": platform,
  95. "agent": AgentListModel.objects.get(username=agentSession),
  96. "statement": reversed(statement),
  97. "totalDebit": totalDebit,
  98. "totalCredit": totalCredit,
  99. "currentBalance": currentBalance
  100. }
  101. return render(request, 'agenttemplates/payments/statement.html', context)
  102. else:
  103. return redirect('login')
  104.  
  105.  
Add Comment
Please, Sign In to add comment