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
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
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
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