1217 lines
52 KiB
Python
Executable File
1217 lines
52 KiB
Python
Executable File
import razorpay
|
|
import stripe
|
|
from django.contrib.auth import get_user_model
|
|
from django.db.models import Q
|
|
from django.shortcuts import render
|
|
from rest_framework.response import Response
|
|
# from harkat.models import HarkatClubDatabase
|
|
from lpp.models import MNFLPPDDatabase
|
|
# from institutional.models import *
|
|
|
|
# from institutional.views import get_discount
|
|
# from institutional.views import get_discount, make_transaction
|
|
from MNF import settings
|
|
from payment.models import privilegedUser1
|
|
# from mnfapp.models import (Author, MNFScriptDatabase, Notifications,
|
|
# PaymentData, PitchVector, SampleScript,
|
|
# centralDatabase)
|
|
# from conversion.models import (BookConversion, StoryConversion, UploadScript,
|
|
# pptconversion)
|
|
# from MNF.settings import (RUNNING_DISCOUNT_SUBTITLE,SUBTITLE_LPP,SUBTITLE_PER_SEC,GetMongoDBUrl,discount_limit_handler,CONVERSION_PER_PAGE, COUNTRY_KEY, EMAIL_HOST_USER,
|
|
# EMPLOY_DISCOUNT, LIFE_MEMBER_ADDITIONAL,
|
|
# LPP_PER_PAGE, RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET,
|
|
# RAZORPAY_PLATFORM_FEE, RUNNING_DISCOUNT_CONVERSION,
|
|
# STRIPE_PLATFORM_FEE, STRIPE_PUBLISHABLE_KEY,
|
|
# STRIPE_SECRET_KEY, T_RAZORPAY_KEY_ID,
|
|
# T_RAZORPAY_KEY_SECRET, YEARLY_MEMBER_ADDITIONAL,
|
|
# BasePath)
|
|
from MNF.settings import discount_limit_handler
|
|
from .models import *
|
|
from .serializers import *
|
|
# from pymongo import MongoClient
|
|
# from datetime import datetime, timedelta
|
|
# import pytz
|
|
# import pandas as pd
|
|
# from relationshipmanager.models import RMDatabase
|
|
|
|
# MongoDBUrl = GetMongoDBUrl()
|
|
# client = MongoClient(MongoDBUrl)
|
|
# db = client["DB"]
|
|
# User = get_user_model()
|
|
DISCOUNT = settings.DISCOUNT
|
|
import json
|
|
import requests
|
|
basePath = settings.BasePath()
|
|
from mnfapp.models import centralDatabase
|
|
|
|
# def excelLoader(path:str):
|
|
# file_path = path
|
|
# df = pd.read_excel(file_path)
|
|
# return df
|
|
|
|
# def fetchMembership(df):
|
|
# memberdict = {}
|
|
# memberdict[df['Unnamed: 0'][2]] = df['Unnamed: 1'][2]
|
|
# memberdict[df['Unnamed: 0'][3]] = df['Unnamed: 1'][3]
|
|
# memberdict[df['Unnamed: 0'][4]] = df['Unnamed: 1'][4]
|
|
# return memberdict
|
|
|
|
# def is_valid_time():
|
|
# ist = pytz.timezone('Asia/Kolkata')
|
|
# current_time = datetime.now(ist).time()
|
|
# start_time = datetime.strptime('19:30:00', '%H:%M:%S').time()
|
|
# end_time = datetime.strptime('21:30:00', '%H:%M:%S').time()
|
|
# return start_time <= current_time <= end_time
|
|
|
|
# def apply_discount(original_price):
|
|
# if is_valid_time():
|
|
# return 47.5
|
|
# else:
|
|
# return original_price
|
|
|
|
def razorkey(request):
|
|
RAZOR_KEY = settings.RAZORPAY_KEY_ID
|
|
RAZOR_SECRET = settings.RAZORPAY_KEY_SECRET
|
|
|
|
if request.user.is_superuser:
|
|
RAZOR_KEY = settings.T_RAZORPAY_KEY_ID
|
|
RAZOR_SECRET = settings.T_RAZORPAY_KEY_SECRET
|
|
return RAZOR_KEY,RAZOR_SECRET
|
|
|
|
def stripeKey(request):
|
|
api_key = settings.STRIPE_SECRET_KEY
|
|
pub_key = settings.STRIPE_PUBLISHABLE_KEY
|
|
if request.user.is_superuser:
|
|
api_key = settings.T_STRIPE_SECRET_KEY
|
|
pub_key = settings.T_STRIPE_PUBLISHABLE_KEY
|
|
|
|
return api_key, pub_key
|
|
|
|
# def centralPayment_get_discounts11(request,amount,combo_discount=None,combo_discount_calculate=None, service=None):
|
|
# pricelist = {}
|
|
# data_user = centralDatabase.objects.get(user_id=request.user)
|
|
# if data_user.contact != " ":
|
|
# pricelist["contact"] = data_user.contact
|
|
# else:
|
|
# pricelist["contact"] = " "
|
|
|
|
# if data_user.address != " ":
|
|
# pricelist["address"] = data_user.address
|
|
# else:
|
|
# pricelist["address"] = " "
|
|
|
|
# # Get today's date
|
|
# # today = datetime.date.today()
|
|
# # pricelist["date"] = today
|
|
|
|
# # if data_user.city != " " or data_user.state != " " or data_user.country != " ":
|
|
# # pricelist["address"] = data_user.city + data_user.state + data_user.country
|
|
# # else:
|
|
# # pricelist["address"] = " "
|
|
# total_amount = amount
|
|
|
|
# if combo_discount == None:
|
|
# combo_discount = 0
|
|
# combo_discount_calculate = 0
|
|
# else:
|
|
# combo_discount = combo_discount
|
|
# combo_discount_calculate = combo_discount_calculate
|
|
# pricelist["early_bird"] = discount_limit_handler(DISCOUNT["early_bird"])
|
|
# pricelist["early_bird_calculate"] = round(float((total_amount-combo_discount_calculate)*pricelist["early_bird"]/100),2)
|
|
|
|
|
|
# user = User.objects.get(id=request.user.id)
|
|
|
|
# #staff discount
|
|
# # rm = RMDatabase.objects.get(user_id=request.user.id)
|
|
# # if rm.is_accepted:
|
|
# # pass
|
|
# from harkat.models import HarkatClubDatabase
|
|
# from lpp.models import MNFLPPDDatabase
|
|
# if RMDatabase.objects.filter(id=request.user.id,is_accepted = True).exists() or MNFLPPDDatabase.objects.filter(user_id=request.user.id).exists() or HarkatClubDatabase.objects.filter(user_id=request.user.id).exists() or User.objects.get(id=request.user.id).is_staff :
|
|
# pricelist["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
# pricelist["staff_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"])*pricelist["sdiscount"]/100),2)
|
|
# else:
|
|
# pricelist["sdiscount"] = 0
|
|
# pricelist["staff_discount_calculate"] = 0
|
|
|
|
|
|
|
|
# # if User.objects.get(id=request.user.id).is_staff: # changes done by manoj
|
|
|
|
# # pricelist["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
# # pricelist["staff_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"])*pricelist["sdiscount"]/100),2)
|
|
# # else:
|
|
# # pricelist["sdiscount"] = 0
|
|
# # pricelist["staff_discount_calculate"] = 0
|
|
|
|
# # manoj updated code for priviledged user
|
|
|
|
# try:
|
|
# memberType = privilegedUser1.objects.filter(user=user, is_active="yes") # changes done by manoj
|
|
# if memberType:
|
|
# memberType = memberType.first().memberType
|
|
# pricelist["membershipNarration"] = 0
|
|
# if memberType == "normal":
|
|
# pricelist["pdiscount"] = 0
|
|
# pricelist["membership_discount_calculate"] = 0
|
|
|
|
# elif memberType == "yearly":
|
|
# pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"])
|
|
# pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
|
|
# elif memberType == "Life Member":
|
|
# pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["life_member_additional"])
|
|
# pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
# if not privilegedUser1.objects.filter(user=request.user,is_active="yes").exists():
|
|
# pricelist["membershipNarration"] = 1
|
|
# pricelist["pdiscount"] = 0
|
|
# pricelist["membership_discount_calculate"] = 0
|
|
# except:
|
|
# pricelist["pdiscount"] = 0
|
|
# pricelist["membership_discount_calculate"] = 0
|
|
|
|
|
|
# # Student discount
|
|
# from institutional.views import get_discount
|
|
# get_student_discount = get_discount(request.user.id,total_amount)
|
|
# if get_student_discount == 0:
|
|
# pricelist["student_discount"] = 0
|
|
# pricelist["student_discount_calculate"] = 0
|
|
# else:
|
|
# pricelist["student_discount"] = get_student_discount
|
|
# pricelist["student_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"]-pricelist["membership_discount_calculate"])*pricelist["student_discount"]/100),2)
|
|
|
|
|
|
|
|
# pricelist["total_discount"] = round(float(combo_discount_calculate + pricelist["early_bird_calculate"] + pricelist["staff_discount_calculate"] + pricelist["membership_discount_calculate"] + pricelist["student_discount_calculate"]),2)
|
|
# pricelist["net_service_charge"] = round(float(total_amount - pricelist["total_discount"]),2)
|
|
# pricelist["total_payable"] = round(float(pricelist["net_service_charge"]+pricelist["membershipNarration"]),2)
|
|
# # GST
|
|
# pricelist["gst"] = discount_limit_handler(DISCOUNT["gst"])
|
|
# pricelist["gst_calculate"] = round(float(pricelist["total_payable"]*pricelist["gst"]/100),2)
|
|
# pricelist["gross_payable"] = round(float(pricelist["total_payable"] + pricelist["gst_calculate"] + pricelist["services_used"]),2)
|
|
|
|
# return pricelist
|
|
|
|
|
|
# ########################################################################################################################
|
|
# def centralPayment(request, services:dict, redirectOnSucess:str, redirectOnFailed:str):
|
|
|
|
# if services.keys == "narration":
|
|
# totalAmount = narrationHandler(request, services["script_id"])
|
|
# finalAmount = discountHandler(totalAmount)
|
|
# indent_context = create_indent(request,"Pitchdeck",script_id,len(service_use), "",pricelist["total_amount"], context["net_payable"],pricelist["Total_discount"])
|
|
# sucess = invoiceGenrator(totalAmount, indent_context, invoiceGenrator, redirectOnSucess, redirectOnFailed)
|
|
# _ = afterInvoiceHandler(request)
|
|
# if sucess:
|
|
# create_indent()
|
|
# callback()
|
|
# else:
|
|
# return "Error"
|
|
|
|
|
|
# elif services.keys == "projectCenter":
|
|
# totalAmount = projectCenterHandler(request, services["script_id"])
|
|
# finalAmount = projectcenterdiscountHandler(totalAmount)
|
|
# context = create_indent(request,'projectcenter',sr.data["projectid"],1,'',amount,sr.data["charges"],sr.data["discount"])
|
|
|
|
# sucess = invoiceGenrator(totalAmount, invoiceGenrator,redirectOnSucess,redirectOnFailed)
|
|
# if sucess:
|
|
# create_indent()
|
|
# callback()
|
|
# else:
|
|
# return "Error"
|
|
|
|
# elif services.keys == "massiha":
|
|
# totalAmount == massihaHandler()
|
|
# inalAmount = discountHandler(totalAmount)
|
|
# sucess = invoiceGenrator(totalAmount, invoiceGenrator,redirectOnSucess,redirectOnFailed)
|
|
# if sucess:
|
|
# create_indent()
|
|
# callback()
|
|
# else:
|
|
# return "Error"
|
|
|
|
# else:
|
|
# assert "services Name Invalid"
|
|
|
|
|
|
# def narrationHandler(request, script_id="scr_1691823380"):
|
|
# script_info = MNFScriptDatabase.objects.get(script_id=script_id)
|
|
# vector_info = PitchVector.objects.get(script_id=script_id)
|
|
# numPages = script_info.numPages
|
|
# amt_linebyline = 0
|
|
# amt_character_intro = 0
|
|
# amt_screenplay_analysis = 0
|
|
# amt_elevator_pitch = 0
|
|
# amt_onepager = 0
|
|
# amt_characterwise_narration = 0
|
|
|
|
# if script_info.linebyline == "True":
|
|
# amt_linebyline = settings.LINE_BY_LINE * numPages
|
|
|
|
# if script_info.onepager == "True":
|
|
# if numPages > 0 and numPages <= 15:
|
|
# amt_onepager = settings.ONE_PAGER1
|
|
# if numPages >= 16 and numPages <= 50:
|
|
# amt_onepager = settings.ONE_PAGER2
|
|
# if numPages >= 51 and numPages <= 100:
|
|
# amt_onepager = settings.ONE_PAGER3
|
|
# if numPages > 100:
|
|
# amt_onepager = settings.ONE_PAGER4
|
|
|
|
# if script_info.elevator_pitch == "True":
|
|
# if numPages > 0 and numPages <= 15:
|
|
# amt_elevator_pitch = settings.ELEVATOR_PITCH1
|
|
# if numPages >= 16 and numPages <= 50:
|
|
# amt_elevator_pitch = settings.ELEVATOR_PITCH2
|
|
# if numPages >= 51 and numPages <= 100:
|
|
# amt_elevator_pitch = settings.ELEVATOR_PITCH3
|
|
# if numPages > 100:
|
|
# amt_elevator_pitch = settings.ELEVATOR_PITCH4
|
|
|
|
# if script_info.screenplay_analysis == "True":
|
|
# if numPages > 0 and numPages <= 15:
|
|
# amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS1
|
|
# if numPages >= 16 and numPages <= 50:
|
|
# amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS2
|
|
# if numPages >= 51 and numPages <= 100:
|
|
# amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS3
|
|
# if numPages > 100:
|
|
# amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS4
|
|
|
|
# if script_info.character_intro == "True":
|
|
# if numPages > 0 and numPages <= 15:
|
|
# amt_character_intro = settings.CHARACTER_INTRODUCTION1
|
|
# if numPages >= 16 and numPages <= 50:
|
|
# amt_character_intro = settings.CHARACTER_INTRODUCTION2
|
|
# if numPages >= 51 and numPages <= 100:
|
|
# amt_character_intro = settings.CHARACTER_INTRODUCTION3
|
|
# if numPages > 100:
|
|
# amt_character_intro = settings.CHARACTER_INTRODUCTION4
|
|
|
|
# if script_info.characterwise_narration == "True":
|
|
# amt_characterwise_narration = settings.CHARACTERWISE_NARATION * numPages
|
|
|
|
# total_amount = (
|
|
# amt_linebyline
|
|
# + amt_onepager
|
|
# + amt_elevator_pitch
|
|
# + amt_screenplay_analysis
|
|
# + amt_character_intro
|
|
# + amt_characterwise_narration
|
|
# )
|
|
# amount_charged = total_amount
|
|
|
|
# amount_list = {}
|
|
# if amt_linebyline > 0:
|
|
# amount_list["amt_linebyline"] = amt_linebyline
|
|
|
|
# if amt_onepager > 0:
|
|
# amount_list["amt_onepager"] = amt_onepager
|
|
|
|
# if amt_elevator_pitch > 0:
|
|
# amount_list["amt_elevator_pitch"] = amt_elevator_pitch
|
|
|
|
# if amt_screenplay_analysis > 0:
|
|
# amount_list["amt_screenplay_analysis"] = amt_screenplay_analysis
|
|
|
|
# if amt_character_intro > 0:
|
|
# amount_list["amt_character_intro"] = amt_character_intro
|
|
|
|
# if amt_characterwise_narration > 0:
|
|
# amount_list["amt_characterwise_narration"] = amt_characterwise_narration
|
|
|
|
# data = {
|
|
# "total_amount": total_amount,
|
|
# "amount_list": amount_list
|
|
# }
|
|
|
|
# return data
|
|
|
|
# #---------------------------------------------------project center payment---------------------------------------------------
|
|
# def projectCenterHandler(script_id):
|
|
# script_info = MNFScriptDatabase.objects.get(script_id=script_id)
|
|
# numPages = script_info.numPages
|
|
|
|
# if numPages <= 10:
|
|
# net_payment = 10
|
|
# return net_payment
|
|
|
|
# else:
|
|
# net_payment = numPages
|
|
# return net_payment
|
|
|
|
|
|
# def projectcenterdiscountHandler(request,script_id):
|
|
# paymentdata={}
|
|
# paymentdata["net_payment"] = projectCenterHandler(script_id)
|
|
# paymentdata["early_bird"] = discount_limit_handler(DISCOUNT["early_bird"])
|
|
# paymentdata["early_bird_calculate"] = round(float( paymentdata["net_payment"] * paymentdata["early_bird"] / 100),2)
|
|
|
|
# #staff discount 30%
|
|
# if User.objects.get(id=request.user.id).is_staff: # changes done by manoj
|
|
# paymentdata["staff_discount"] = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
# paymentdata["staff_discount_calculate"] = round(float((paymentdata["net_payment"]-paymentdata["early_bird_calculate"])*paymentdata["staff_discount"]/100),2)
|
|
|
|
# else:
|
|
# paymentdata["staff_discount"] = 0
|
|
# paymentdata["staff_discount_calculate"] = 0
|
|
|
|
# # membership discount
|
|
# paymentdata["membership_discount"] = 0
|
|
# paymentdata["membership_discount_calculate"] = 0
|
|
|
|
# memberType = privilegedUser1.objects.filter(user=request.user, is_active="yes") # changes done by manoj
|
|
# if memberType:
|
|
# memberType = memberType.first().memberType
|
|
# paymentdata["membership_amount"] = 0
|
|
|
|
# if memberType == "normal":
|
|
# paymentdata["membership_discount"] = 0
|
|
# paymentdata["membership_discount_calculate"] = 0
|
|
|
|
|
|
# elif memberType == "yearly":
|
|
# paymentdata["membership_discount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"])
|
|
# paymentdata["membership_discount_calculate"] = round(float((paymentdata["net_payment"]-paymentdata["early_bird_calculate"]-paymentdata["staff_discount_calculate"])*paymentdata["membership_discount"]/100),2)
|
|
|
|
# elif memberType == "Life Member":
|
|
# paymentdata["membership_discount"] = discount_limit_handler(DISCOUNT["life_member_additional"])
|
|
# paymentdata["membership_discount_calculate"] = round(float((paymentdata["net_payment"]-paymentdata["early_bird_calculate"]-paymentdata["staff_discount_calculate"])*paymentdata["membership_discount"]/100),2)
|
|
|
|
# if not privilegedUser1.objects.filter(user=request.user,is_active="yes").exists():
|
|
# paymentdata["membership_amount"] = 1
|
|
# paymentdata["membership_discount"] = 0
|
|
# paymentdata["membership_discount_calculate"] = 0
|
|
|
|
|
|
# from institutional.views import get_discount
|
|
# # Student discount
|
|
# get_student_discount = get_discount(request.user.id)
|
|
# if get_student_discount == 0:
|
|
# paymentdata["student_discount"] = 0
|
|
# paymentdata["student_discount_calculate"] = 0
|
|
|
|
# else:
|
|
# paymentdata["student_discount"] = get_student_discount
|
|
# paymentdata["student_discount_calculate"] = float((paymentdata["net_payment"]-paymentdata["early_bird_calculate"]-paymentdata["staff_discount_calculate"]-paymentdata["membership_discount_calculate"])*paymentdata["student_discount"]/100)
|
|
|
|
# # paymentdata["Total_discount"] = paymentdata["early_bird"] + paymentdata["staff_discount"] + paymentdata["membership_discount"] + paymentdata["student_discount"]
|
|
|
|
# paymentdata["Total_discount"] = round(float(paymentdata["early_bird_calculate"] + paymentdata["staff_discount_calculate"] + paymentdata["membership_discount_calculate"] + paymentdata["student_discount_calculate"]),2)
|
|
# paymentdata["remaining_amount"] =round(float(paymentdata["net_payment"]- paymentdata["Total_discount"]),2)
|
|
# # GST
|
|
# paymentdata["GST"] = settings.GST
|
|
# paymentdata["GST_calculate"] = round(float(paymentdata["remaining_amount"]*paymentdata["GST"]/100),2)
|
|
# paymentdata["Total_amount"] = round(float(paymentdata["remaining_amount"] + paymentdata["GST_calculate"]+paymentdata["membership_amount"]),2)
|
|
|
|
|
|
# return paymentdata
|
|
|
|
# from django.shortcuts import HttpResponse, render
|
|
|
|
|
|
# def projectCenterScriptDetail(request,projectid,script_id):
|
|
# y = MNFScriptDatabase.objects.get(script_id=script_id)
|
|
|
|
# gmodel = db["projectcenter_generatedmodel"]
|
|
# gdata=gmodel.find_one({"projectid":projectid})
|
|
# # gdata=Generatedmodel.objects.get(scriptid=script_id)
|
|
# paymentdata={
|
|
# "owner":gdata['owner'],
|
|
# "script":gdata['project_name'],
|
|
# "page_no":y.numPages,
|
|
# "budget":gdata['budget'],
|
|
# "date":gdata['date'],
|
|
# # "email":udata['user_email'],
|
|
|
|
# }
|
|
|
|
|
|
# return paymentdata
|
|
|
|
# def invoiceGenratorproject(request,script_id="scr_1695826846",projectid="31601"):
|
|
# context = {}
|
|
# context["temp"] = projectCenterHandler(script_id=script_id)
|
|
# # context.update({"amount_list":temp.get("amount_list",{})})
|
|
# # context.update({"total_amount":temp["total_amount"]})
|
|
# context["user_discount_data"] = projectcenterdiscountHandler(request,script_id)
|
|
# # context.update({"discount":user_discount_data["total_discount"]})
|
|
# # context.update(user_discount_data.get("discount_list",{}))
|
|
# # context.update(user_discount_data.get("discount_amount",{}))
|
|
# context["script_details"] = projectCenterScriptDetail(request,projectid=projectid,script_id=script_id)
|
|
# # context.update(script_details)
|
|
# data_json = json.dumps(context)
|
|
|
|
# return HttpResponse(data_json, content_type="application/json")
|
|
|
|
# # return context
|
|
# # return render(request, "Pitchdeck/narration_checkoutnew.html", context)
|
|
|
|
|
|
# #------------------------------------------------------end-----------------------------------------------------------
|
|
|
|
# #--------------------------------------subtitiling payment-----------------------------------------------------------
|
|
# from subtitling3.models import Subtitles
|
|
|
|
# def subtitleHandler(s_id):
|
|
# script = Subtitles.objects.get(s_id=s_id)
|
|
# service_charges = settings.SUBTITLE_PER_SEC
|
|
# duration=script.video_duration
|
|
# service_lpp = settings.SUBTITLE_LPP
|
|
# pass
|
|
# def subtitlediscountHandler():
|
|
# pass
|
|
# def subtitleScriptDetail():
|
|
# pass
|
|
# def invoiceGenratorSubtitle():
|
|
# pass
|
|
|
|
|
|
|
|
# def conversionHandler():
|
|
# pass
|
|
# from conversion.models import pptconversion
|
|
# def conversionpptHandler(ppt_string="1672222204.0831811-ppt"):
|
|
# ppt_data = pptconversion.objects.get(ppt_string=ppt_string)
|
|
# with open("/home/user/mnf/project/MNF/projectcenter/error_check.txt","a") as file01:
|
|
# file01.write("f: " + str(ppt_data) + "\n")
|
|
|
|
# context={}
|
|
# if ppt_data.lpp == True:
|
|
# amt = ppt_data.slide_count * CONVERSION_PER_PAGE
|
|
# context["total"] = round(amt, 2)
|
|
|
|
# lppamt = (ppt_data.slide_count * CONVERSION_PER_PAGE) + (
|
|
# ppt_data.slide_count * LPP_PER_PAGE
|
|
# )
|
|
# context["onlylppfee"] = round((ppt_data.slide_count * LPP_PER_PAGE), 2)
|
|
# # amount_to_be_given_to_lpp = round(
|
|
# # mdiscount * context["onlylppfee"] * pdiscount * sdiscount, 2
|
|
# # )
|
|
# context["subtotal"] = round(lppamt, 2)
|
|
|
|
# else:
|
|
|
|
# amt = ppt_data.slide_count * CONVERSION_PER_PAGE
|
|
# context["total"] = round(amt, 2)
|
|
# context["subtotal"] = round(amt, 2)
|
|
|
|
# data_json = json.dumps(context)
|
|
|
|
# return HttpResponse(data_json, content_type="application/json")
|
|
|
|
|
|
# def massihaHandler():
|
|
# pass
|
|
|
|
# def discountHandler(request):
|
|
# total_discount = 0
|
|
# discount_list = {}
|
|
# user = request.user
|
|
|
|
# # Staff discount
|
|
# if user.is_staff:
|
|
# staff_discount = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
# else:
|
|
# staff_discount = 0
|
|
|
|
# # Previleged user discount
|
|
# try:
|
|
# memberType = privilegedUser1.objects.filter(user=user, is_active="yes")
|
|
# if memberType:
|
|
# memberType = memberType.first().memberType
|
|
# if memberType == "normal":
|
|
# pu_discount = 0
|
|
|
|
# elif memberType == "yearly":
|
|
# pu_discount = discount_limit_handler(DISCOUNT["yearly_member_additional"])
|
|
|
|
# elif memberType == "Life Member":
|
|
# pu_discount = discount_limit_handler(DISCOUNT["life_member_additional"])
|
|
|
|
|
|
# if not privilegedUser1.objects.filter(user=request.user, is_active="yes").exists():
|
|
# pu_discount = 0
|
|
|
|
# except:
|
|
# pu_discount = 0
|
|
|
|
# # Student discount
|
|
# from institutional.views import get_discount
|
|
# get_student_discount = get_discount(request.user.id)
|
|
|
|
# if get_student_discount == 0:
|
|
# student_discount = 0
|
|
|
|
# else:
|
|
# student_discount = get_student_discount
|
|
|
|
# total_discount = (staff_discount + pu_discount + student_discount)
|
|
|
|
# if staff_discount > 0:
|
|
# discount_list["staff_discount"] = staff_discount
|
|
|
|
# if pu_discount > 0:
|
|
# discount_list["pu_discount"] = pu_discount
|
|
|
|
# if student_discount > 0:
|
|
# discount_list["student_discount"] = student_discount
|
|
|
|
# data = {
|
|
# "total_discount": total_discount,
|
|
# "discount_list": discount_list
|
|
# }
|
|
# data_json = json.dumps(data)
|
|
|
|
# return HttpResponse(data_json, content_type="application/json")
|
|
|
|
# def invoiceGenrator(request,context):
|
|
# return render(request, "Pitchdeck/narration_checkoutnew.html", context)
|
|
|
|
|
|
|
|
#########################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_location(request):
|
|
try:
|
|
ip_address = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get('REMOTE_ADDR')
|
|
url = f"https://ipinfo.io/{ip_address}/json"
|
|
response = requests.get(url)
|
|
data = response.json()
|
|
return data['country']
|
|
except:
|
|
location = "others"
|
|
return location
|
|
|
|
def create_indent(request,services_used,services_id,qtn,promo_code,total_amount,amount_charged,discount):
|
|
context = {}
|
|
if not request and services_used and services_id and qtn and total_amount and amount_charged and discount:
|
|
context['error'] = 'invalied request'
|
|
return context
|
|
|
|
location = get_user_location(request)
|
|
user = User.objects.get(id=request.user.id)
|
|
|
|
# from institutional.views import get_discount
|
|
# get_student_discount = get_discount(request.user.id,total_amount)
|
|
# if get_student_discount == 0:
|
|
# pass
|
|
# else:
|
|
# amount_charged = round(float((amount_charged*get_student_discount/100),2)
|
|
|
|
# monthly_user = make_transaction(request.user.id, services_used, services_id,amount_charged)
|
|
monthly_user = False
|
|
if monthly_user:
|
|
pay_instance = CentralPayment()
|
|
pay_instance.promo_code = promo_code
|
|
pay_instance.services_used = services_used
|
|
pay_instance.services_id = services_id
|
|
pay_instance.user_id = user
|
|
pay_instance.qtn = qtn
|
|
pay_instance.total_amount = total_amount
|
|
pay_instance.amount_charged = amount_charged
|
|
pay_instance.discount = discount
|
|
# pay_instance.im_discount = im_discount
|
|
pay_instance.payment_status = "monthly_user"
|
|
pay_instance.save()
|
|
context['monthly_user'] = 'bill added to the transaction account'
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
return context
|
|
|
|
|
|
|
|
# member_type = privilegedUser1.objects.filter(user=request.user).exists()
|
|
# if not member_type:
|
|
# amount_charged += 1
|
|
# total_amount += 1
|
|
|
|
# with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c:
|
|
# curr = json.load(c)
|
|
# try:
|
|
# rate = curr["rates"]["INR"]
|
|
# except Exception as e:
|
|
# rate = 80
|
|
|
|
# Gateway charge
|
|
rate = 80
|
|
amount_charged += 0.03
|
|
|
|
if location == "IN":
|
|
amount = amount_charged * rate
|
|
RAZOR_KEY,RAZOR_SECRET = razorkey(request)
|
|
razorpay_client = razorpay.Client(auth=(RAZOR_KEY, RAZOR_SECRET))
|
|
razorpay_order = razorpay_client.order.create(
|
|
{
|
|
"amount": int(amount) * 100,
|
|
"currency": "INR",
|
|
"payment_capture": "1",
|
|
}
|
|
)
|
|
pay_instance = CentralPayment()
|
|
pay_instance.promo_code = promo_code
|
|
pay_instance.services_used = services_used
|
|
pay_instance.services_id = services_id
|
|
pay_instance.user_id = user
|
|
pay_instance.qtn = qtn
|
|
pay_instance.total_amount = total_amount
|
|
pay_instance.amount_charged = amount_charged
|
|
pay_instance.discount = discount
|
|
# pay_instance.im_discount = im_discount
|
|
pay_instance.gateway_fee = 0.03
|
|
pay_instance.currency = "INR"
|
|
pay_instance.payment_gateway = "razorPay"
|
|
pay_instance.payment_status = "init"
|
|
pay_instance.order_id = razorpay_order["id"]
|
|
pay_instance.save()
|
|
|
|
context['orderId'] = pay_instance.order_id
|
|
context['currency'] = pay_instance.currency
|
|
context['amount'] = pay_instance.amount_charged
|
|
context['merchantId'] = RAZOR_KEY
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
else:
|
|
api_key, pub_key = stripeKey(request)
|
|
stripe.api_key = api_key
|
|
amount = amount_charged * rate
|
|
customer = stripe.Customer.create(email=request.user.email,)
|
|
intent = stripe.PaymentIntent.create(
|
|
description="MNF Software services",
|
|
amount=int(amount * 100),
|
|
currency='INR',
|
|
automatic_payment_methods={'enabled': True},
|
|
customer=customer.id,
|
|
)
|
|
pay_instance = CentralPayment()
|
|
pay_instance.promo_code = promo_code
|
|
pay_instance.services_used = services_used
|
|
pay_instance.services_id = services_id
|
|
pay_instance.user_id = user
|
|
pay_instance.qtn = qtn
|
|
pay_instance.total_amount = total_amount
|
|
pay_instance.amount_charged = amount_charged
|
|
pay_instance.discount = discount
|
|
pay_instance.gateway_fee = 0.03
|
|
pay_instance.currency = 'USD'
|
|
pay_instance.payment_gateway = "Stripe"
|
|
pay_instance.payment_status = "init"
|
|
pay_instance.order_id = intent.client_secret
|
|
pay_instance.save()
|
|
|
|
context['client_secret'] = pay_instance.order_id
|
|
context['currency'] = pay_instance.currency
|
|
context['amount'] = pay_instance.amount_charged
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
context['pub_key'] = pub_key
|
|
|
|
return context
|
|
|
|
def callback(response, request):
|
|
context = {}
|
|
|
|
if "razorpay_signature" in response:
|
|
print("respoonse")
|
|
RAZOR_KEY,RAZOR_SECRET = razorkey(request)
|
|
razorpay_client = razorpay.Client(auth=(RAZOR_KEY, RAZOR_SECRET))
|
|
verify = razorpay_client.utility.verify_payment_signature(response)
|
|
payDetail = razorpay_client.payment.fetch(response["razorpay_payment_id"])
|
|
pay_instance = CentralPayment.objects.get(order_id=response["razorpay_order_id"])
|
|
|
|
if verify:
|
|
print("verify")
|
|
pay_instance.payment_id = response["razorpay_payment_id"]
|
|
pay_instance.signature_id = response["razorpay_signature"]
|
|
pay_instance.payment_status = "success"
|
|
pay_instance.save()
|
|
|
|
member_type = privilegedUser1.objects.filter(user=request.user).exists()
|
|
if not member_type:
|
|
user = User.objects.get(id=request.user.id)
|
|
lasto = privilegedUser1.objects.order_by('-id').first()
|
|
subcription = privilegedUser1()
|
|
# last_entry = Testmodel.objects.order_by('-id').first()
|
|
subcription.id = int(lasto.id) + 1
|
|
subcription.user = user
|
|
subcription.is_active = "yes"
|
|
subcription.memberType = "normal"
|
|
subcription.months = 1
|
|
subcription.save()
|
|
context['payment_status'] = "success"
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
context['payment_id'] = pay_instance.payment_id
|
|
else:
|
|
pay_instance.payment_status = "failed"
|
|
pay_instance.save()
|
|
|
|
context['payment_status'] = "failed"
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
|
|
elif "client_secret" in response :
|
|
pay_instance = CentralPayment.objects.get(order_id=response["client_secret"])
|
|
if response["status"]=="succeeded":
|
|
pay_instance.payment_id = response["id"]
|
|
pay_instance.signature_id = ""
|
|
pay_instance.payment_status = "success"
|
|
pay_instance.save()
|
|
member_type = privilegedUser1.objects.filter(user=request.user).exists()
|
|
if not member_type:
|
|
user = User.objects.get(id=request.user.id)
|
|
lasto = privilegedUser1.objects.order_by('-id').first()
|
|
subcription = privilegedUser1()
|
|
# last_entry = Testmodel.objects.order_by('-id').first()
|
|
subcription.id = int(lasto.id) + 1
|
|
subcription.user = user
|
|
subcription.is_active = "yes"
|
|
subcription.memberType = "normal"
|
|
subcription.months = 1
|
|
subcription.save()
|
|
|
|
context['payment_status'] = "success"
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
context['payment_id'] = pay_instance.payment_id
|
|
|
|
else:
|
|
pay_instance.payment_status = "failed"
|
|
pay_instance.save()
|
|
|
|
context['payment_status'] = "failed"
|
|
context['central_pay_id'] = str(pay_instance.id)
|
|
else:
|
|
context['payment_status'] = "failed"
|
|
return context
|
|
|
|
def auto_refund(id, custom_amount=None):
|
|
refund_object = CentralPayment.objects.get(id=id)
|
|
if refund_object.payment_status == "refunded":
|
|
return True
|
|
|
|
try:
|
|
gateway = refund_object.payment_gateway
|
|
if gateway == "razorPay":
|
|
RAZOR_KEY = settings.RAZORPAY_KEY_ID
|
|
RAZOR_SECRET = settings.RAZORPAY_KEY_SECRET
|
|
client = razorpay.Client(auth=(RAZOR_KEY, RAZOR_SECRET))
|
|
amount = custom_amount if custom_amount else float(refund_object.amount_charged)
|
|
amount_in_cents = str(int(amount * 100))
|
|
refund = client.payment.refund(refund_object.payment_id, {'amount': amount_in_cents})
|
|
if refund.get('status') == 'processed':
|
|
refund_object.payment_status = "refunded"
|
|
refund_object.save()
|
|
return True
|
|
else:
|
|
refund_object.payment_status = "refunded-rejected"
|
|
refund_object.save()
|
|
return False
|
|
elif gateway == "Stripe":
|
|
amount = custom_amount if custom_amount else float(refund_object.amount_charged)
|
|
amount_in_cents = str(int(amount * 100))
|
|
refund = stripe.Refund.create(charge=refund_object.payment_id,amount=amount_in_cents)
|
|
if refund.status == 'succeeded':
|
|
refund_object.payment_status = "refunded"
|
|
refund_object.save()
|
|
return True
|
|
else:
|
|
refund_object.payment_status = "refunded-rejected"
|
|
refund_object.save()
|
|
return False
|
|
else:
|
|
return False
|
|
except Exception as error:
|
|
return False
|
|
|
|
|
|
def afterInvoiceHandler(request):
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from rest_framework import status, viewsets
|
|
from rest_framework.exceptions import PermissionDenied
|
|
from rest_framework.pagination import PageNumberPagination
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework_simplejwt.authentication import JWTAuthentication
|
|
|
|
from .models import *
|
|
from .serializers import *
|
|
from rest_framework.decorators import (api_view, authentication_classes,
|
|
permission_classes)
|
|
|
|
class CPAPIPagination(PageNumberPagination):
|
|
page_size = 15
|
|
page_size_query_param = 'page_size'
|
|
|
|
|
|
# API to filter all data based on user
|
|
|
|
class CPUserViewSet(viewsets.ModelViewSet):
|
|
queryset = CentralPayment.objects.all()
|
|
serializer_class = CentralPaymentSerializer
|
|
permission_classes = (IsAuthenticated,)
|
|
authentication_classes = (JWTAuthentication,)
|
|
pagination_class = CPAPIPagination
|
|
|
|
|
|
def get_queryset(self):
|
|
user = self.request.user
|
|
if user:
|
|
print("cp line288", user)
|
|
|
|
queryset = CentralPayment.objects.filter(user_id=user)
|
|
return queryset
|
|
|
|
|
|
class CPAdminViewSet(viewsets.ModelViewSet):
|
|
queryset = CentralPayment.objects.all()
|
|
serializer_class = CentralPaymentSerializer
|
|
permission_classes = (IsAuthenticated,)
|
|
authentication_classes = (JWTAuthentication,)
|
|
pagination_class = CPAPIPagination
|
|
|
|
def get_queryset(self):
|
|
user = self.request.user
|
|
if not user.is_superuser:
|
|
raise PermissionDenied("You are not authorized to access this data.")
|
|
|
|
else:
|
|
pay_status = self.request.query_params.get("payment_status")
|
|
queryset = CentralPayment.objects.filter(payment_status="pay_status").order_by('-date')
|
|
return CentralPayment.objects.all()
|
|
|
|
|
|
# Admin Actions
|
|
class AdminAction(APIView):
|
|
permission_classes = (IsAuthenticated,)
|
|
authentication_classes = (JWTAuthentication,)
|
|
|
|
def post(self, request):
|
|
sr = AdminActionSerializer(data=request.data)
|
|
if sr.is_valid(raise_exception=True):
|
|
instance = CentralPayment.objects.get(id=sr.data['id'])
|
|
action = sr.data['action']
|
|
if action == 'accept':
|
|
if request.user.is_superuser:
|
|
cp_status = auto_refund(sr.data['id'])
|
|
if cp_status:
|
|
instance.payment_status = "refunded"
|
|
instance.save()
|
|
return Response({"status": "refund accepted"}, status=status.HTTP_200_OK)
|
|
else:
|
|
instance.payment_status = "refund-claimed"
|
|
instance.save()
|
|
return Response({"status": "something went wrong!"}, status=status.HTTP_400_BAD_REQUEST)
|
|
else:
|
|
return Response({"status": "invalid request!"}, status=status.HTTP_400_BAD_REQUEST)
|
|
elif action =='reject':
|
|
instance.payment_status = "refunded-rejected"
|
|
instance.save()
|
|
return Response({"status": "refund rejected"}, status=status.HTTP_200_OK)
|
|
else:
|
|
return Response({"status": "invalid request!"}, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
class ClimedRefund(APIView):
|
|
permission_classes = (IsAuthenticated,)
|
|
authentication_classes = (JWTAuthentication,)
|
|
|
|
def get(self,request,pk):
|
|
instance = CentralPayment.objects.get(id=pk)
|
|
if instance.user_id.id == request.user.id:
|
|
instance.payment_status = "refund-claimed"
|
|
instance.save()
|
|
return Response({"status": "climed successfully"}, status=status.HTTP_200_ok)
|
|
else:
|
|
return Response({"status": "invalid request!"}, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
|
|
|
|
|
|
|
|
# @api_view(["GET", "DELETE", "POST", "PUT", "PATCH"])
|
|
# # @authentication_classes([JWTAuthentication])
|
|
# # @permission_classes([IsAuthenticated])
|
|
# def juggernautapi(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautPackage.objects.all().filter(user_id=pk)
|
|
# serializer = JuggernautPackageSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautPackage.objects.all()
|
|
# serializer = JuggernautPackageSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# if request.method == "POST":
|
|
# serializer = JuggernautPackageSerializer(data=request.data)
|
|
# if serializer.is_valid():
|
|
# serializer.save()
|
|
# return Response("data created")
|
|
# return Response(serializer.errors)
|
|
# if request.method == "PUT":
|
|
# main = JuggernautPackage.objects.get(id=pk)
|
|
# serializer = JuggernautPackageSerializer(main, data=request.data)
|
|
# if serializer.is_valid():
|
|
# serializer.save()
|
|
# return Response("complete data updated")
|
|
# return Response(serializer.errors)
|
|
# if request.method == "PATCH":
|
|
# main = JuggernautPackage.objects.get(id=pk)
|
|
# serializer = JuggernautPackageSerializer(main, data=request.data, partial=True)
|
|
# if serializer.is_valid():
|
|
# serializer.save()
|
|
# return Response("partial data updated")
|
|
# return Response(serializer.errors)
|
|
# if request.method == "DELETE":
|
|
# if id is not None:
|
|
# main = JuggernautPackage.objects.filter(id=pk)
|
|
# # else:
|
|
# # main = MemberProfile.objects.filter(projectid=pk)
|
|
# main.delete()
|
|
# return Response("data deleted")
|
|
|
|
# @api_view(["GET"])
|
|
# def juggernaut_project_center_api(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautProjectCenter.objects.all().filter(package=pk)
|
|
# serializer = JuggernautProjectCenterSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautProjectCenter.objects.all()
|
|
# serializer = JuggernautProjectCenterSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
|
|
# @api_view(["GET"])
|
|
# def juggernaut_narration_api(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautNarration.objects.all().filter(project_name=pk)
|
|
# serializer = JuggernautNarrationSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautNarration.objects.all()
|
|
# serializer = JuggernautNarrationSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
|
|
|
|
# @api_view(["GET"])
|
|
# def juggernaut_pitchdeck_api(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautPitchdeck.objects.all().filter(project_name=pk)
|
|
# serializer = JuggernautPitchdeckSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautPitchdeck.objects.all()
|
|
# serializer = JuggernautPitchdeckSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
|
|
# @api_view(["GET"])
|
|
# def juggernaut_conversion_api(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautConversion.objects.all().filter(package=pk)
|
|
# serializer = JuggernautConversionSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautConversion.objects.all()
|
|
# serializer = JuggernautConversionSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
|
|
# @api_view(["GET"])
|
|
# def juggernaut_subtitle_api(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautSubtitling.objects.all().filter(package=pk)
|
|
# serializer = JuggernautSubtitleSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautSubtitling.objects.all()
|
|
# serializer = JuggernautSubtitleSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
|
|
# @api_view(["GET"])
|
|
# def juggernaut_beatsheet_api(request,pk=None):
|
|
# if request.method == "GET":
|
|
# if pk is not None:
|
|
# main = JuggernautBeatSheet.objects.all().filter(project_name=pk)
|
|
# serializer = JuggernautBeatSheetSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
# main = JuggernautBeatSheet.objects.all()
|
|
# serializer = JuggernautBeatSheetSerializer(main, many=True)
|
|
# return Response(serializer.data)
|
|
|
|
|
|
|
|
|
|
|
|
def centralPayment_get_discounts(request,amount,combo_discount=None,combo_discount_calculate=None, service=None):
|
|
pricelist = {
|
|
"sdiscount": 0,
|
|
"staff_discount_calculate":0,
|
|
"pdiscount":0,
|
|
"membership_discount_calculate":0,
|
|
"student_discount_calculate":0,
|
|
"student_discount":0,
|
|
"membershipNarration":1,
|
|
}
|
|
|
|
data_user = centralDatabase.objects.get(user_id=request.user)
|
|
if data_user.contact != " ":
|
|
pricelist["contact"] = data_user.contact
|
|
else:
|
|
pricelist["contact"] = " "
|
|
|
|
if data_user.address != " ":
|
|
pricelist["address"] = data_user.address
|
|
else:
|
|
pricelist["address"] = " "
|
|
|
|
total_amount = amount
|
|
|
|
if combo_discount == None:
|
|
combo_discount = 0
|
|
combo_discount_calculate = 0
|
|
else:
|
|
combo_discount = combo_discount
|
|
combo_discount_calculate = combo_discount_calculate
|
|
# pricelist["early_bird"] = discount_limit_handler(DISCOUNT["early_bird"])
|
|
pricelist["early_bird"] = 30
|
|
|
|
pricelist["early_bird_calculate"] = round(float((total_amount-combo_discount_calculate)*pricelist["early_bird"]/100),2)
|
|
|
|
|
|
user = User.objects.get(id=request.user.id)
|
|
|
|
if RMDatabase.objects.filter(id=request.user.id,is_accepted = True).exists() or MNFLPPDDatabase.objects.filter(user_id=request.user.id).exists() or HarkatClubDatabase.objects.filter(user_id=request.user.id).exists() or User.objects.get(id=request.user.id).is_staff :
|
|
#------------team discount
|
|
if RMDatabase.objects.filter(id=request.user.id,is_accepted = True).exists() or MNFLPPDDatabase.objects.filter(user_id=request.user.id).exists() or HarkatClubDatabase.objects.filter(user_id=request.user.id).exists() or User.objects.get(id=request.user.id).is_staff :
|
|
pricelist["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
pricelist["staff_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"])*pricelist["sdiscount"]/100),2)
|
|
else:
|
|
pricelist["sdiscount"] = 0
|
|
pricelist["staff_discount_calculate"] = 0
|
|
#---------membership discount
|
|
memberType = privilegedUser1.objects.filter(user=user, is_active="yes") # changes done by manoj
|
|
if memberType:
|
|
memberType = memberType.first().memberType
|
|
pricelist["early_birdteamembershipNarration"] = 0
|
|
if memberType == "normal":
|
|
pricelist["pdiscount"] = 0
|
|
pricelist["membership_discount_calculate"] = 0
|
|
|
|
elif memberType == "yearly":
|
|
pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"])
|
|
pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
|
|
elif memberType == "Life Member":
|
|
pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["life_member_additional"])
|
|
pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
if not privilegedUser1.objects.filter(user=request.user,is_active="yes").exists():
|
|
pricelist["membershipNarration"] = 1
|
|
pricelist["pdiscount"] = 0
|
|
pricelist["membership_discount_calculate"] = 0
|
|
|
|
elif UnaffiliatedStudent.objects.filter(user=user).exists() or WaitForInstituteStudent.objects.filter(user=user).exists() or AffiliatedStudent.objects.filter(user=user).exists():
|
|
|
|
#-------------Annual discount
|
|
memberType = privilegedUser1.objects.filter(user=user, is_active="yes") # changes done by manoj
|
|
if memberType:
|
|
memberType = memberType.first().memberType
|
|
|
|
if memberType == "yearly":
|
|
pricelist["membershipNarration"] = 0
|
|
pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"])
|
|
pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
else:
|
|
pricelist["membershipNarration"] = 0
|
|
pricelist["pdiscount"] = 0
|
|
pricelist["membership_discount_calculate"] = 0
|
|
if not privilegedUser1.objects.filter(user=request.user,is_active="yes").exists():
|
|
pricelist["membershipNarration"] = 1
|
|
pricelist["pdiscount"] = 0
|
|
pricelist["membership_discount_calculate"] = 0
|
|
|
|
#---------------student discount
|
|
get_student_discount = get_discount(request.user.id,total_amount)
|
|
if get_student_discount == 0:
|
|
pricelist["student_discount"] = 0
|
|
pricelist["student_discount_calculate"] = 0
|
|
else:
|
|
pricelist["student_discount"] = 50
|
|
pricelist["student_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"]-pricelist["membership_discount_calculate"])*pricelist["student_discount"]/100),2)
|
|
|
|
|
|
elif privilegedUser1.objects.filter(user=user, is_active="yes").exists():
|
|
memberType = privilegedUser1.objects.filter(user=user, is_active="yes") # changes done by manoj
|
|
if memberType:
|
|
memberType = memberType.first().memberType
|
|
pricelist["membershipNarration"] = 0
|
|
# if memberType == "normal":
|
|
# pricelist["pdiscount"] = 0
|
|
# pricelist["membership_discount_calculate"] = 0
|
|
|
|
|
|
if memberType == "yearly":
|
|
|
|
#------------team discount
|
|
if RMDatabase.objects.filter(id=request.user.id,is_accepted = True).exists() or MNFLPPDDatabase.objects.filter(user_id=request.user.id).exists() or HarkatClubDatabase.objects.filter(user_id=request.user.id).exists() or User.objects.get(id=request.user.id).is_staff :
|
|
pricelist["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
pricelist["staff_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"])*pricelist["sdiscount"]/100),2)
|
|
else:
|
|
pricelist["sdiscount"] = 0
|
|
pricelist["staff_discount_calculate"] = 0
|
|
#-----member discount
|
|
pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"])
|
|
pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
#---------student discount
|
|
if UnaffiliatedStudent.objects.filter(user=user).exists() or WaitForInstituteStudent.objects.filter(user=user).exists() or AffiliatedStudent.objects.filter(user=user).exists():
|
|
|
|
get_student_discount = get_discount(request.user.id,total_amount)
|
|
if get_student_discount == 0:
|
|
pricelist["student_discount"] = 0
|
|
pricelist["student_discount_calculate"] = 0
|
|
else:
|
|
pricelist["student_discount"] = 50
|
|
pricelist["student_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"]-pricelist["membership_discount_calculate"])*pricelist["student_discount"]/100),2)
|
|
|
|
if memberType == "Life Member":
|
|
#------------stafff discount
|
|
if RMDatabase.objects.filter(id=request.user.id,is_accepted = True).exists() or MNFLPPDDatabase.objects.filter(user_id=request.user.id).exists() or HarkatClubDatabase.objects.filter(user_id=request.user.id).exists() or User.objects.get(id=request.user.id).is_staff :
|
|
pricelist["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"])
|
|
pricelist["staff_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"])*pricelist["sdiscount"]/100),2)
|
|
else:
|
|
pricelist["sdiscount"] = 0
|
|
pricelist["staff_discount_calculate"] = 0
|
|
pricelist["pdiscount"] = discount_limit_handler(DISCOUNT["life_member_additional"])
|
|
pricelist["membership_discount_calculate"] = round(float((total_amount-combo_discount_calculate-pricelist["early_bird_calculate"]-pricelist["staff_discount_calculate"])*pricelist["pdiscount"]/100),2)
|
|
|
|
|
|
if not privilegedUser1.objects.filter(user=request.user,is_active="yes").exists():
|
|
pricelist["membershipNarration"] = 1
|
|
pricelist["pdiscount"] = 0
|
|
pricelist["membership_discount_calculate"] = 0
|
|
|
|
|
|
pricelist["total_discount"] = round(float(combo_discount_calculate + pricelist["early_bird_calculate"] + pricelist["staff_discount_calculate"] + pricelist["membership_discount_calculate"] + pricelist["student_discount_calculate"]),2)
|
|
pricelist["net_service_charge"] = round(float(total_amount - pricelist["total_discount"]),2)
|
|
pricelist["total_payable"] = round(float(pricelist["net_service_charge"]+pricelist["membershipNarration"]),2)
|
|
# GST
|
|
pricelist["gst"] = discount_limit_handler(DISCOUNT["gst"])
|
|
pricelist["gst_calculate"] = round(float(pricelist["total_payable"]*pricelist["gst"]/100),2)
|
|
pricelist["gross_payable"] = round(float(pricelist["total_payable"] + pricelist["gst_calculate"]),2)
|
|
|
|
return pricelist
|
|
|
|
class paymentTestView(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def get(self, request):
|
|
context = create_indent(request,'Subtitle','pk',1,'',10,10,0)
|
|
return Response(context, status=status.HTTP_200_OK) |