def cam_save_booking_details(request): if not request.user.is_authenticated(): return redirect('/corporate/') sid = transaction.savepoint() #pdb.set_trace() try: print 'Request Accepted ' store_user_track(request, "Customer Saving Booking details") # for tracking user activity if request.method == "POST": v_cam_id = request.session['user_id'] guest_name = request.POST.get('guest_name') guest_phone = request.POST.get('phone_number') v_guest_email = request.POST.get('email_id') var_property_id = request.POST.get('property_id') occupancy_type = int(request.POST.get('occupancy_type')) check_in = datetime.datetime.strptime(request.POST.get('check_in'), '%d/%m/%Y') check_out = datetime.datetime.strptime(request.POST.get('check_out'), '%d/%m/%Y') promocode = request.POST.get('promocode') #amount = request.POST.get('amount') #taxes = request.POST.get('taxes') gross_amount= request.POST.get('gross_amount') guest_obj = Guest.objects.get(guest_id=guest_name) guest_obj.guest_contactno = guest_phone guest_obj.guest_email = v_guest_email guest_obj.save() # Getting Property Object property_obj = Property.objects.get(property_id=var_property_id) # Default Property Rate if it is not decided for CAM. default_rate = PropertyRate.objects.get(property_id=property_obj) occupancy_rate =0 # Customer Object cam_obj= Customer.objects.get(id=v_cam_id) # This is for fetching property rates and applying rates according to occupancy type property_rates = CAMPropertyRate.objects.filter(property_id=property_obj, cust_id=cam_obj) if property_rates: for rate in property_rates: if int(rate.occupancy_type) == int(occupancy_type): occupancy_rate = rate.agreed_rate else: if occupancy_type == 0: occupancy_rate = default_rate.single_occupancy_display_rate else: occupancy_rate = default_rate.double_occupancy_display_rate days = check_out - check_in if days.days == 0: day = 1 else: day = days.days booking_obj = Booking( customer_id = cam_obj, guest_id = guest_obj, property_id = property_obj, booking_estimated_checkin_date = check_in, booking_actual_checkin_date = check_in, booking_estimated_checkout_date = check_out, booking_actual_checkout_date = check_out, booking_estimated_checkout_time = datetime.datetime.now().time(), booking_estimated_checkin_time = datetime.datetime.now().time(), booking_estimated_no_of_day_stay = days.days, booking_actual_no_of_day_stay = day, booking_status = BOOKING_OPEN, #BOOKING_BOOKED booking_rate = occupancy_rate ) booking_obj.save() booking_obj.booking_unique_id = 'BK' + datetime.date.today().strftime('%d%m%y') + 'G' + str(guest_obj.guest_id) + str(booking_obj.booking_id).zfill(6) booking_obj.save() # Generating Invoice amount = occupancy_rate * day service_tax_amount = ( amount * SERVICE_TAX )/100 luxury_tax_amount = ( amount * LUXURY_TAX )/100 tax_amount = service_tax_amount + luxury_tax_amount gross_amount = amount + tax_amount invoice = Invoice( booking_id = booking_obj, room_charges = amount, invoice_total_amount = amount, tax_amount = tax_amount, invoice_gross_amount = gross_amount, invoice_status = 0, ) invoice.save() invoice.invoice_unique_id = 'INVBK' + str(booking_obj.booking_id) + str(invoice.invoice_id).zfill(6) invoice.save() corporate_transaction = CorporateTransaction( invoice_id = invoice.invoice_unique_id, corporate_id = cam_obj, transaction_amount= invoice.invoice_gross_amount, transaction_type = 1 ) corporate_transaction.save() # This is for Booking Statistics added on 11 Dec 2015 booking_stat = UserBookingStatisticTrack( user_id = cam_obj, booking_path = request.path, booking_date = datetime.date.today(), booking_id = booking_obj ) booking_stat.save() transaction.savepoint_commit(sid) try: # Sending SMS to vendot regarding booking submission send_booking_submission_sms_to_vendor(property_obj.property_owner_id.cust_contact_no, property_obj.property_owner_id.cust_first_name, booking_obj.booking_unique_id, property_obj.property_actual_name, booking_obj.booking_id) # Sending Booking Submission SMS to Corporate User send_booking_submission_sms_to_customer(cam_obj.cust_contact_no, cam_obj.cust_first_name, booking_obj.booking_unique_id) # Sending Booking Submission Email to Corporate User send_booking_submission_mail_with_template(booking_obj.booking_id) except Exception as err: print 'SMS/ Email not sent to vendor/ customer / ' return redirect('/corporate/cam-booking-details/?booking_id='+ str(booking_obj.booking_unique_id)) else: print 'Hello' transaction.savepoint_rollback(sid) data = {'success':'false', 'error_message':'Invalid Request'} except Exception, e: print 'Error ', e transaction.savepoint_rollback(sid) data = {'success':'false', 'error_message':'Server Error- Please Try Again'}
def save_payment_gateway_response(request): print "save_payment_details" try: print request.POST link='' if request.method == 'POST': print request.POST.get('mmp_txn') payment_obj = PaymentTransaction( mmp_txn = request.POST.get('mmp_txn'), ipg_txn_id = request.POST.get('ipg_txn_id'), transaction_type = request.POST.get('transaction_type'), property_booking_id = request.POST.get('udf4'), discriminator = request.POST.get('discriminator'), srcharge = request.POST.get('surcharge'), customer_name = request.POST.get('udf1'), mer_txn = request.POST.get('mer_txn'), card_number = request.POST.get('CardNumber'), ath_code = request.POST.get('auth_code'), prod = request.POST.get('prod'), bank_name = request.POST.get('bank_name'), date = request.POST.get('date'), merchant_id = request.POST.get('merchant_id'), amount = request.POST.get('amt'), error_description = request.POST.get('desc'), bank_txn = request.POST.get('bank_txn'), f_code = request.POST.get('f_code'), clientcode = request.POST.get('clientcode'), mobile_no = request.POST.get('udf3'), email_id = request.POST.get('udf2'), udf5 = request.POST.get('udf5'), billing_address = request.POST.get('udf4'), udf6 = request.POST.get('udf6'), booking_transaction_create_by = request.POST.get('udf1'), booking_transaction_update_by = request.POST.get('udf1') ) payment_obj.save() print "done" data = { 'success': 'true', 'cust_email':payment_obj.email_id, 'error_message': payment_obj.error_description, 'merchant_id':payment_obj.merchant_id, 'mer_txn':payment_obj.mer_txn, 'amt':payment_obj.amount, 'date':payment_obj.date, } if payment_obj.f_code == OK : # booking_obj = Booking.objects.earliest('-booking_id') # booking_obj = Booking.objects.earliest('-booking_unique_id') booking_obj = Booking.objects.get(booking_unique_id=request.POST.get('udf4')) booking_obj.booking_status = BOOKING_OPEN booking_obj.payment_status = PAID booking_obj.save() send_booking_submission_sms_to_customer(booking_obj.guest_id.guest_contactno, booking_obj.booking_unique_id) data = { 'booking_reference_id': booking_obj.booking_unique_id , 'payment_status': booking_obj.payment_status } return render(request,'web/just-for-test.html', data) # return redirect('/booking-confirmation/?booking_number='+payment_obj.booking_unique_id+'&payment_status='+PAID) else: booking_obj = Booking.objects.get(booking_unique_id=request.POST.get('udf4')) booking_obj.booking_status = BOOKING_OPEN booking_obj.payment_status = UNPAID booking_obj.save() data = { 'booking_reference_id': booking_obj.booking_unique_id , 'payment_status': booking_obj.payment_status } return render(request,'web/just-for-test.html', data) #return redirect('/booking-confirmation/?booking_number='+ payment_obj.booking_unique_id+'&payment_status='+UNPAID) except Exception,e: print e data = {'error_message': 'Oops something went wrong...'} return render( request, 'web/error-page.html', data )
def save_quote_booking(request): #pdb.set_trace() print 'Hello' sid = transaction.savepoint() try: store_user_track(request, 'Customer Doing Booking By Accepting Quotation') # for tracking user activit quotation = QuotationResponse.objects.get(quotation_uid=request.POST.get('quote_uid')) guest_list = request.POST.get('guest_list') guest_list = guest_list.split(',') print guest_list guest_list = [x for x in guest_list if x] # This removes blank values or empty elements if len(guest_list)>=1: guest_obj = Guest.objects.get(guest_id=guest_list[0]) else: guest_obj = None days = quotation.request_id.quote_end_date - quotation.request_id.quote_start_date booking_obj = Booking( customer_id = quotation.request_id.customer_id, guest_id = guest_obj, property_id = quotation.property_id, booking_estimated_checkin_date = quotation.request_id.quote_start_date, booking_actual_checkin_date = quotation.request_id.quote_start_date, booking_estimated_checkout_date = quotation.request_id.quote_end_date, booking_actual_checkout_date = quotation.request_id.quote_end_date, booking_estimated_checkout_time = datetime.datetime.now().time(), booking_estimated_checkin_time = datetime.datetime.now().time(), booking_estimated_no_of_day_stay = days.days, booking_actual_no_of_day_stay = days.days, number_of_person = quotation.request_id.quote_no_of_guest, booking_status = BOOKING_OPEN, #BOOKING_BOOKED booking_rate = quotation.rate, booking_amount = quotation.total_quote_amt, is_from_quote = True, quotation_id = quotation.quotation_uid ) booking_obj.save() booking_obj.booking_unique_id = 'BK' + datetime.date.today().strftime('%d%m%y') + 'Q' + str(quotation.quotation_id) + str(booking_obj.booking_id).zfill(6) booking_obj.remark = 'Guest List : ' + ','.join(guest_list) booking_obj.save() # Generating Invoice invoice = Invoice( booking_id = booking_obj, room_charges = quotation.amount, invoice_total_amount = quotation.amount, tax_amount = quotation.tax_amount, invoice_gross_amount = quotation.total_quote_amt, invoice_status = 0, ) invoice.save() invoice.invoice_unique_id = 'INVBK' + str(booking_obj.booking_id) + str(invoice.invoice_id).zfill(6) invoice.save() corporate_transaction = CorporateTransaction( invoice_id = invoice.invoice_unique_id, corporate_id = quotation.request_id.customer_id, transaction_amount= invoice.invoice_gross_amount, transaction_type = 1 ) corporate_transaction.save() # This is for Booking Statistics added on 11 Dec 2015 booking_stat = UserBookingStatisticTrack( user_id = quotation.request_id.customer_id, booking_path = request.path, booking_date = datetime.date.today(), booking_id = booking_obj ) booking_stat.save() quotation.quotation_status = 'BOOKED' quotation.save() transaction.savepoint_commit(sid) try: # Sending Booking Submission SMS to Corporate User send_booking_submission_sms_to_customer(quotation.request_id.customer_id.cust_contact_no, quotation.request_id.customer_id.cust_first_name, booking_obj.booking_unique_id) store_user_track(request, 'Booking Submission SMS Sent To Customer') # for tracking user activity # SMS to VENDOR send_booking_submission_sms_to_vendor(quotation.property_id.property_owner_id.cust_contact_no, quotation.property_id.property_owner_id.cust_first_name, booking_obj.booking_unique_id, quotation.property_id.property_actual_name, booking_obj.booking_id) store_user_track(request, 'Booking Submission SMS Sent To Vendor') # for tracking user activity # Sending Booking Submission Email to Corporate User send_booking_submission_mail_with_template(booking_obj.booking_id) data = { 'success':'true', 'booking_uid': booking_obj.booking_unique_id } except Exception as err: store_user_track(request, 'Booking Submission SMS or Email Not Sent To Vendor and Corporate') # for tracking user activity print 'Sending SMS or Email not Sent to Corporate Customer : ',err data = { 'success':'true', 'booking_uid': booking_obj.booking_unique_id } except Exception as err: print 'Exception : ',err transaction.savepoint_rollback(sid) data = {'success':'false', 'error_message':'Server Error- Please Try Again'} return HttpResponse(json.dumps(data), content_type='application/json')