コード例 #1
0
ファイル: views.py プロジェクト: Djandwich/mooringlicensing
    def post(self, request, *args, **kwargs):
        dcv_permit = self.get_object()
        created_by = None if request.user.is_anonymous() else request.user
        dcv_permit_fee = DcvPermitFee.objects.create(
            dcv_permit=dcv_permit,
            created_by=created_by,
            payment_type=DcvPermitFee.PAYMENT_TYPE_TEMPORARY)

        try:
            with transaction.atomic():
                set_session_dcv_permit_invoice(request.session, dcv_permit_fee)

                lines, db_processes_after_success = create_fee_lines(
                    dcv_permit)

                request.session['db_processes'] = db_processes_after_success
                checkout_response = checkout(
                    request,
                    dcv_permit.submitter,
                    lines,
                    return_url_ns='dcv_permit_fee_success',
                    return_preload_url_ns='dcv_permit_fee_success',
                    invoice_text='DCV Permit Fee',
                )

                logger.info(
                    '{} built payment line item {} for DcvPermit Fee and handing over to payment gateway'
                    .format(request.user, dcv_permit.id))
                return checkout_response

        except Exception as e:
            logger.error('Error Creating DcvPermit Fee: {}'.format(e))
            if dcv_permit_fee:
                dcv_permit_fee.delete()
            raise
コード例 #2
0
ファイル: views.py プロジェクト: Djandwich/mooringlicensing
    def post(self, request, *args, **kwargs):
        proposal = self.get_object()
        application_fee = ApplicationFee.objects.create(
            proposal=proposal,
            created_by=request.user,
            payment_type=ApplicationFee.PAYMENT_TYPE_TEMPORARY)

        try:
            with transaction.atomic():
                set_session_application_invoice(request.session,
                                                application_fee)

                lines, db_processes_after_success = create_fee_lines(proposal)

                request.session['db_processes'] = db_processes_after_success
                request.session['auto_renew'] = request.POST.get(
                    'auto_renew', False)
                checkout_response = checkout(
                    request,
                    proposal.submitter,
                    lines,
                    return_url_ns='fee_success',
                    return_preload_url_ns='fee_success',
                    invoice_text='{} ({})'.format(
                        proposal.application_type.description,
                        proposal.proposal_type.description),
                )

                logger.info(
                    '{} built payment line item {} for Application Fee 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 as e:
            logger.error(
                'Error while checking out for the proposal: {}\n{}'.format(
                    proposal.lodgement_number, str(e)))
            if application_fee:
                application_fee.delete()
                logger.info('ApplicationFee: {} has been deleted'.format(
                    application_fee))
            raise
コード例 #3
0
    def post(self, request, *args, **kwargs):
        proposal = self.get_object()
        application_fee = ApplicationFee.objects.create(
            proposal=proposal,
            created_by=request.user,
            payment_type=ApplicationFee.PAYMENT_TYPE_TEMPORARY)

        try:
            with transaction.atomic():
                set_session_application_invoice(request.session,
                                                application_fee)

                lines, db_processes_after_success = create_fee_lines(proposal)

                request.session['db_processes'] = db_processes_after_success
                checkout_response = checkout(
                    request,
                    proposal,
                    lines,
                    return_url_ns='fee_success',
                    return_preload_url_ns='fee_success',
                    invoice_text='DcvPermit Fee',
                )

                logger.info(
                    '{} built payment line item {} for Application Fee 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 as e:
            logger.error('Error Creating Application Fee: {}'.format(e))
            if application_fee:
                application_fee.delete()
            raise
コード例 #4
0
ファイル: views.py プロジェクト: Djandwich/mooringlicensing
    def post(self, request, *args, **kwargs):
        # approval = self.get_object()
        data = request.POST.get('data')
        data = json.loads(data)
        ids = data['sticker_action_detail_ids']

        # 1. Validate data
        # raise forms.ValidationError('Validation error')

        # 2. Store detais in the session
        sticker_action_fee = StickerActionFee.objects.create(
            created_by=request.user,
            payment_type=StickerActionFee.PAYMENT_TYPE_TEMPORARY)
        current_datetime = datetime.datetime.now(pytz.timezone(TIME_ZONE))

        try:
            with transaction.atomic():
                sticker_action_details = StickerActionDetail.objects.filter(
                    id__in=ids)
                sticker_action_details.update(
                    sticker_action_fee=sticker_action_fee)

                set_session_sticker_action_invoice(request.session,
                                                   sticker_action_fee)

                # lines, db_processes_after_success = create_fee_lines(proposal)
                target_datetime_str = current_datetime.astimezone(
                    pytz.timezone(TIME_ZONE)).strftime('%d/%m/%Y %I:%M %p')
                application_type = ApplicationType.objects.get(
                    code=settings.APPLICATION_TYPE_REPLACEMENT_STICKER['code'])
                fee_item = FeeItemStickerReplacement.get_fee_item_by_date(
                    current_datetime.date())

                lines = []
                for sticker_action_detail in sticker_action_details:
                    line = {
                        'ledger_description':
                        'Sticker Replacement Fee, sticker: {} @{}'.format(
                            sticker_action_detail.sticker,
                            target_datetime_str),
                        'oracle_code':
                        application_type.get_oracle_code_by_date(
                            current_datetime.date()),
                        'price_incl_tax':
                        fee_item.amount,
                        'price_excl_tax':
                        calculate_excl_gst(fee_item.amount)
                        if fee_item.incur_gst else fee_item.amount,
                        'quantity':
                        1,
                    }
                    lines.append(line)

                # request.session['db_processes'] = db_processes_after_success
                checkout_response = checkout(
                    request,
                    request.user,
                    lines,
                    return_url_ns='sticker_replacement_fee_success',
                    return_preload_url_ns='sticker_replacement_fee_success',
                    invoice_text='{}'.format(application_type.description),
                )

                logger.info(
                    '{} built payment line item(s) {} for Sticker Replacement Fee and handing over to payment gateway'
                    .format(
                        'User {} with id {}'.format(
                            request.user.get_full_name(), request.user.id),
                        sticker_action_fee))
                return checkout_response

        except Exception as e:
            logger.error('Error handling StickerActionFee: {}'.format(e))
            if sticker_action_fee:
                sticker_action_fee.delete()
            raise