Пример #1
0
    def post(self, request, *args, **kwargs):

        proposal_id = int(kwargs['proposal_pk'])
        proposal = Proposal.objects.get(id=proposal_id)

        try:
            booking = create_booking(
                request, proposal, booking_type=Booking.BOOKING_TYPE_TEMPORARY)
            with transaction.atomic():
                set_session_booking(request.session, booking)
                #lines = create_lines(request)
                checkout_response = checkout(
                    request,
                    proposal,
                    #lines,
                    booking.as_line_items,
                    return_url_ns='public_booking_success',
                    return_preload_url_ns='public_booking_success',
                    invoice_text='Payment Invoice',
                )

                logger.info(
                    '{} built payment line items {} for Park Bookings and handing over to payment gateway'
                    .format(
                        'User {} with id {}'.format(
                            proposal.submitter.get_full_name(),
                            proposal.submitter.id), proposal.id))
                return checkout_response

        except Exception, e:
            logger.error('Error Creating booking: {}'.format(e))
            if booking:
                booking.delete()
            raise
Пример #2
0
    def post(self, request, *args, **kwargs):
        #import ipdb; ipdb.set_trace()

        proposal_id = int(kwargs['proposal_pk'])
        proposal = Proposal.objects.get(id=proposal_id)

        try:
            booking = create_booking(request, proposal_id)
            with transaction.atomic():
                set_session_booking(request.session,booking)
                lines = create_lines(request)
                checkout_response = checkout(
                    request,
                    proposal,
                    lines,
                    return_url_ns='public_booking_success',
                    return_preload_url_ns='public_booking_success',
                    invoice_text='Payment Invoice'
                )

                logger.info('{} built payment line items {} for Park Bookings and handing over to payment gateway'.format('User {} with id {}'.format(proposal.submitter.get_full_name(),proposal.submitter.id), proposal.id))
                #import ipdb; ipdb.set_trace()
                return checkout_response

#                # FIXME: replace with session check
#                invoice = None
#                if 'invoice=' in checkout_response.url:
#                    invoice = checkout_response.url.split('invoice=', 1)[1]
#                else:
#                    for h in reversed(checkout_response.history):
#                        if 'invoice=' in h.url:
#                            invoice = h.url.split('invoice=', 1)[1]
#                            break
#                print ("-== internal_booking ==-")
#                self.internal_create_booking_invoice(booking, invoice)
#                delete_session_booking(request.session)
#
#                return checkout_response

        except Exception, e:
            logger.error('Error Creating booking: {}'.format(e))
            if booking:
                booking.delete()
            raise
Пример #3
0
    def post(self, request, *args, **kwargs):

        payment_method = self.request.POST.get('method')
        context = template_context(self.request)
        proposal_id = int(kwargs['proposal_pk'])
        proposal = Proposal.objects.get(id=proposal_id)
        try:
            recipient = proposal.applicant.email
            submitter = proposal.applicant
        except:
            recipient = proposal.submitter.email
            submitter = proposal.submitter

        if isinstance(proposal.org_applicant, Organisation):
            try:
                if proposal.org_applicant.bpay_allowed and payment_method == 'bpay':
                    booking_type = Booking.BOOKING_TYPE_INTERNET
                elif proposal.org_applicant.monthly_invoicing_allowed and payment_method == 'monthly_invoicing':
                    booking_type = Booking.BOOKING_TYPE_MONTHLY_INVOICING
                #elif proposal.org_applicant.other_allowed and payment_method=='other':
                else:
                    booking_type = Booking.BOOKING_TYPE_RECEPTION

                booking = create_booking(request,
                                         proposal,
                                         booking_type=booking_type)
                invoice_reference = None
                if booking and payment_method == 'bpay':
                    # BPAY/OTHER invoice are created immediately. Monthly invoices are created later by Cron
                    ret = create_bpay_invoice(submitter, booking)
                    invoice_reference = booking.invoice.reference

                if booking and payment_method == 'other':
                    # BPAY/Other invoice are created immediately. Monthly invoices are created later by Cron
                    ret = create_other_invoice(submitter, booking)
                    invoice_reference = booking.invoice.reference

                logger.info(
                    '{} Created Park Bookings with payment method {} for Proposal ID {}'
                    .format(
                        'User {} with id {}'.format(
                            proposal.submitter.get_full_name(),
                            proposal.submitter.id), payment_method,
                        proposal.id))
                #send_monthly_invoicing_confirmation_tclass_email_notification(request, booking, invoice, recipients=[recipient])
                context.update({
                    'booking':
                    booking,
                    'booking_id':
                    booking.id,
                    'submitter':
                    submitter,
                    'monthly_invoicing':
                    True if payment_method == 'monthly_invoicing' else False,
                    'invoice_reference':
                    invoice_reference
                })
                if payment_method == 'other':
                    return HttpResponseRedirect(
                        reverse('payments:invoice-payment') +
                        '?invoice={}'.format(invoice_reference))
                else:
                    return render(request, self.template_name, context)

            except Exception, e:
                logger.error('Error Creating booking: {}'.format(e))
                if booking:
                    booking.delete()
                raise