def transfer(): form = TransferForm(request.form) if form.validate_on_submit(): sender_account = Account.get(Account.account_number == form.sender_account_number.data) receiver_account = Account.get(Account.account_number == form.receiver_account_number.data) Account.update( balance = Account.balance - form.amount.data, updated_at = datetime.now() ).where(Account.account_number == form.sender_account_number.data).execute() Account.update( balance = Account.balance + form.amount.data, updated_at = datetime.now() ).where(Account.account_number == form.receiver_account_number.data).execute() Transaction.insert( account_number = form.sender_account_number.data, reference_number = form.receiver_account_number.data, amount = form.amount.data, type = 'FUND TRANSFER' ).execute() flash('Fund Transfer successful') return redirect(url_for('admin.transfer')) return render_template('admin/transfer.html', form=form)
def transfer(): accounts = Account.select().where( (Account.user_id == session['user']['id']) & (Account.type != 3)).execute() form = UserTransferForm(request.form) form.sender_account_number.choices = [ (account.account_number, "{} ({})".format(account.account_number, 'Savings' if account.type == 1 else 'ATM')) for account in accounts ] if form.validate_on_submit(): sender_account = Account.get( Account.account_number == form.sender_account_number.data) receiver_account = Account.get( Account.account_number == form.receiver_account_number.data) Account.update(balance=Account.balance - form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.sender_account_number.data).execute() Account.update(balance=Account.balance + form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.receiver_account_number.data).execute() Transaction.insert(account_number=form.sender_account_number.data, reference_number=form.receiver_account_number.data, amount=form.amount.data, type='FUND TRANSFER').execute() flash('Fund Transfer successful') return redirect(url_for('main.transfer')) return render_template('main/transfer.html', form=form)
def withdraw(): if request.method == 'POST': account = Account.get(Account.id == session['atm_auth']) total_amount = (Transaction.select(fn.Sum(Transaction.amount).alias('amounts')) .where( (Transaction.account_number == account.account_number) & (Transaction.created_at >= datetime.combine(datetime.today(), time.min)) & (Transaction.type == 'ATM WITHDRAW') ) .get() ).amounts or 0 if float(total_amount) + float(request.form.get('amount')) > 25000: flash('You have reached the daily maximum withdraw limit') elif int(request.form.get('amount')) < 500: flash('Amount must be greater than Php 500.00') else: Account.update(balance = Account.balance - request.form.get('amount')).where(Account.id == session['atm_auth']).execute() Transaction.insert( account_number = account.account_number, reference_number = account.account_number, amount = request.form.get('amount'), type = 'ATM WITHDRAW' ).execute() return redirect(url_for('teller.inquiry')) return render_template('teller/withdraw.html')
def deposit(): if request.method == 'POST': account = Account.get(Account.id == session['atm_auth']) Account.update(balance = Account.balance + request.form.get('amount')).where(Account.id == session['atm_auth']).execute() Transaction.insert( account_number = account.account_number, reference_number = account.account_number, amount = request.form.get('amount'), type = 'ATM DEPOSIT' ).execute() return redirect(url_for('teller.inquiry')) return render_template('teller/deposit.html')
def change_pin(): form = ChangePinForm(request.form) if form.validate_on_submit(): account = Account.get(Account.id == session['atm_auth']) if check_password_hash(account.pin, form.current_pin.data): Account.update( pin = generate_password_hash(form.new_pin.data) ).where(Account.id == session['atm_auth']).execute() flash('PIN successfully updated') return redirect(url_for('teller.index')) else: flash('PIN does not match') return render_template('teller/change_pin.html', form=form)
def transfer(): form = TransactionForm(request.form) if form.validate_on_submit(): account = Account.get(Account.id == session['atm_auth']) if form.account_number.data == account.account_number: flash('You cannot transfer funds to your own account') else: Account.update(balance = Account.balance - form.amount.data).where(Account.id == session['atm_auth']).execute() Account.update(balance = Account.balance + form.amount.data).where(Account.account_number == form.account_number.data).execute() Transaction.insert( account_number = account.account_number, reference_number = form.account_number.data, amount = request.form.get('amount'), type = 'ATM FUND TRANSFER' ).execute() return redirect(url_for('teller.inquiry')) return render_template('teller/transfer.html', form=form)
def withdraw(): form = TransactionForm(request.form) if form.validate_on_submit(): account = Account.get( Account.account_number == form.account_number.data) if account.balance - form.amount.data <= 0: flash('Withdraw amount is greater than account remaining balance') else: Account.update(balance=Account.balance - form.amount.data, updated_at=datetime.now()).where( Account.account_number == form.account_number.data).execute() Transaction.insert(account_number=form.account_number.data, reference_number=form.account_number.data, amount=form.amount.data, type='WITHDRAW').execute() flash('Withdraw successful') return redirect(url_for('main.withdraw')) return render_template('main/withdraw.html', form=form)
def inquiry(): balance = "{0:,.2f}".format(Account.get(Account.id == session['atm_auth']).balance) return render_template('teller/inquiry.html', balance=balance)